public void ExtractTimeSliceUseLocationsFromTarget() { var network = GetNetwork(); var networkCoverage = new NetworkCoverage("test", true) { Network = network }; DateTime[] dateTimes = new DateTime[10]; for (int i = 0; i < 10; i++) { dateTimes[i] = new DateTime(2000, 1, 1, 1, /* minute */ i, 0); networkCoverage[dateTimes[i], new NetworkLocation(network.Branches[0], 10.0)] = 10.0 + i; networkCoverage[dateTimes[i], new NetworkLocation(network.Branches[0], 50.0)] = 50.0 + i; networkCoverage[dateTimes[i], new NetworkLocation(network.Branches[0], 90.0)] = 90.0 + i; networkCoverage[dateTimes[i], new NetworkLocation(network.Branches[1], 10.0)] = 110.0 + i; networkCoverage[dateTimes[i], new NetworkLocation(network.Branches[1], 50.0)] = 150.0 + i; networkCoverage[dateTimes[i], new NetworkLocation(network.Branches[1], 90.0)] = 190.0 + i; } var slice = new NetworkCoverage("slice", false) { Network = network }; Assert.AreEqual(false, slice.IsTimeDependent); slice[new NetworkLocation(network.Branches[0], 20.0)] = 2; slice[new NetworkLocation(network.Branches[0], 80.0)] = 8; slice[new NetworkLocation(network.Branches[1], 20.0)] = 12; slice[new NetworkLocation(network.Branches[1], 80.0)] = 18; NetworkCoverageHelper.ExtractTimeSlice(networkCoverage, slice, new DateTime(2000, 1, 1, 1, /* minute */ 0, 0), false); // expected results at time step 0 are 20 80 120 180; this are interpolated values Assert.AreEqual(4, slice.Locations.Values.Count); Assert.AreEqual(10 /*20*/, slice.Evaluate(new NetworkLocation(network.Branches[0], 20.0)), 1.0e-6); Assert.AreEqual(50 /*80*/, slice.Evaluate(new NetworkLocation(network.Branches[0], 80.0)), 1.0e-6); Assert.AreEqual(90 /*120*/, slice.Evaluate(new NetworkLocation(network.Branches[1], 20.0)), 1.0e-6); Assert.AreEqual(110 /*180*/, slice.Evaluate(new NetworkLocation(network.Branches[1], 80.0)), 1.0e-6); NetworkCoverageHelper.ExtractTimeSlice(networkCoverage, slice, new DateTime(2000, 1, 1, 1, /* minute */ 3, 0), false); // expected results at time step 3 are 23 83 123 183; this are interpolated values Assert.AreEqual(4, slice.Locations.Values.Count); Assert.AreEqual(13 /*23*/, slice.Evaluate(new NetworkLocation(network.Branches[0], 20.0)), 1.0e-6); Assert.AreEqual(53 /*83*/, slice.Evaluate(new NetworkLocation(network.Branches[0], 80.0)), 1.0e-6); Assert.AreEqual(93 /*123*/, slice.Evaluate(new NetworkLocation(network.Branches[1], 20.0)), 1.0e-6); Assert.AreEqual(113 /*183*/, slice.Evaluate(new NetworkLocation(network.Branches[1], 80.0)), 1.0e-6); }
public void ExtraTimeSliceFromNonTimeDependentNetworkCoverage() { var network = GetNetwork(); var networkCoverage = new NetworkCoverage("test", false) { Network = network }; networkCoverage[new NetworkLocation(network.Branches[0], 10.0)] = 10.0; networkCoverage[new NetworkLocation(network.Branches[0], 90.0)] = 90.0; networkCoverage[new NetworkLocation(network.Branches[1], 10.0)] = 110.0; networkCoverage[new NetworkLocation(network.Branches[1], 90.0)] = 190.0; // networkcoverage is not time dependent thus expect an argumentexception NetworkCoverageHelper.ExtractTimeSlice(networkCoverage, DateTime.Now); }
public void ExtractTimeSlice() { var network = GetNetwork(); var networkCoverage = new NetworkCoverage("test", true) { Network = network }; DateTime [] dateTimes = new DateTime[10]; for (int i = 0; i < 10; i++) { dateTimes[i] = new DateTime(2000, 1, 1, 1, /* minute */ i, 0); networkCoverage[dateTimes[i], new NetworkLocation(network.Branches[0], 10.0)] = 10.0 + i; networkCoverage[dateTimes[i], new NetworkLocation(network.Branches[0], 90.0)] = 90.0 + i; networkCoverage[dateTimes[i], new NetworkLocation(network.Branches[1], 10.0)] = 110.0 + i; networkCoverage[dateTimes[i], new NetworkLocation(network.Branches[1], 90.0)] = 190.0 + i; } INetworkCoverage slice = NetworkCoverageHelper.ExtractTimeSlice(networkCoverage, new DateTime(2000, 1, 1, 1, /* minute */ 0, 0)); Assert.AreEqual(false, slice.IsTimeDependent); Assert.AreEqual(10.0 + 0, slice.Evaluate(new NetworkLocation(network.Branches[0], 10.0))); Assert.AreEqual(90.0 + 0, slice.Evaluate(new NetworkLocation(network.Branches[0], 90.0))); Assert.AreEqual(110.0 + 0, slice.Evaluate(new NetworkLocation(network.Branches[1], 10.0))); Assert.AreEqual(190.0 + 0, slice.Evaluate(new NetworkLocation(network.Branches[1], 90.0))); //slice = NetworkCoverageHelper.ExtractTimeSlice(networkCoverage, new DateTime(2000, 1, 1, 1, /* minute */9, 0)); slice = new NetworkCoverage(networkCoverage.Name, false); NetworkCoverageHelper.ExtractTimeSlice(networkCoverage, slice, new DateTime(2000, 1, 1, 1, /* minute */ 9, 0), true); Assert.AreEqual(false, slice.IsTimeDependent); Assert.AreEqual(10.0 + 9, slice.Evaluate(new NetworkLocation(network.Branches[0], 10.0))); Assert.AreEqual(90.0 + 9, slice.Evaluate(new NetworkLocation(network.Branches[0], 90.0))); Assert.AreEqual(110.0 + 9, slice.Evaluate(new NetworkLocation(network.Branches[1], 10.0))); Assert.AreEqual(190.0 + 9, slice.Evaluate(new NetworkLocation(network.Branches[1], 90.0))); // just repeat the previous action; refilling a coverage should also work NetworkCoverageHelper.ExtractTimeSlice(networkCoverage, slice, new DateTime(2000, 1, 1, 1, /* minute */ 9, 0), true); Assert.AreEqual(false, slice.IsTimeDependent); Assert.AreEqual(10.0 + 9, slice.Evaluate(new NetworkLocation(network.Branches[0], 10.0))); Assert.AreEqual(90.0 + 9, slice.Evaluate(new NetworkLocation(network.Branches[0], 90.0))); Assert.AreEqual(110.0 + 9, slice.Evaluate(new NetworkLocation(network.Branches[1], 10.0))); Assert.AreEqual(190.0 + 9, slice.Evaluate(new NetworkLocation(network.Branches[1], 90.0))); }
public void ExtractNonExistingTimeSliceFromNetworkCoverage() { var network = GetNetwork(); var networkCoverage = new NetworkCoverage("test", true) { Network = network }; DateTime dateTime = DateTime.Now; networkCoverage[dateTime, new NetworkLocation(network.Branches[0], 10.0)] = 10.0; networkCoverage[dateTime, new NetworkLocation(network.Branches[0], 90.0)] = 90.0; networkCoverage[dateTime, new NetworkLocation(network.Branches[1], 10.0)] = 110.0; networkCoverage[dateTime, new NetworkLocation(network.Branches[1], 90.0)] = 190.0; // networkcoverage is time dependent but queried time is not available. NetworkCoverageHelper.ExtractTimeSlice(networkCoverage, dateTime + new TimeSpan(1, 0, 0)); }
public void ExtractTimeSliceNoDataValues() { var network = GetNetwork(); var networkCoverage = new NetworkCoverage("test", true) { Network = network }; DateTime dateTime = DateTime.Now; networkCoverage[dateTime, new NetworkLocation(network.Branches[0], 10.0)] = 10.0; networkCoverage[dateTime, new NetworkLocation(network.Branches[0], 90.0)] = 90.0; networkCoverage[dateTime, new NetworkLocation(network.Branches[1], 10.0)] = 110.0; networkCoverage[dateTime, new NetworkLocation(network.Branches[1], 90.0)] = 190.0; networkCoverage.Components[0].NoDataValues.Add(16.0); INetworkCoverage slice = NetworkCoverageHelper.ExtractTimeSlice(networkCoverage, dateTime); Assert.AreEqual(networkCoverage.Components[0].NoDataValues.Count, slice.Components[0].NoDataValues.Count); for (int i = 0; i < slice.Components[0].NoDataValues.Count; i++) { Assert.AreEqual(networkCoverage.Components[0].NoDataValues[i], slice.Components[0].NoDataValues[i]); } }