コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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)));
        }
コード例 #4
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));
        }
コード例 #5
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]);
            }
        }