Ejemplo n.º 1
0
        public void TestClone()
        {
            var routeEnumerable = new int[] { 0, 1, 3, 2, 4 };
            var route           = new Optimization.Tours.Tour(routeEnumerable, 0);
            var cloned          = route.Clone() as Optimization.Tours.Tour;

            Assert.AreEqual(route.First, cloned.First);
            Assert.AreEqual(route.Last, cloned.Last);
            Assert.AreEqual(route.Count, cloned.Count);

            ExtraAssert.ItemsAreEqual(route, cloned);

            routeEnumerable = new int[] { 0, 1, 3, 2, 4 };
            route           = new Optimization.Tours.Tour(routeEnumerable, 4);
            cloned          = route.Clone() as Optimization.Tours.Tour;

            Assert.AreEqual(route.First, cloned.First);
            Assert.AreEqual(route.Last, cloned.Last);
            Assert.AreEqual(route.Count, cloned.Count);

            ExtraAssert.ItemsAreEqual(route, cloned);

            routeEnumerable = new int[] { 0, 1, 3, 2, 4 };
            route           = new Optimization.Tours.Tour(routeEnumerable, null);
            cloned          = route.Clone() as Optimization.Tours.Tour;

            Assert.AreEqual(route.First, cloned.First);
            Assert.AreEqual(route.Last, cloned.Last);
            Assert.AreEqual(route.Count, cloned.Count);

            ExtraAssert.ItemsAreEqual(route, cloned);
        }
Ejemplo n.º 2
0
        public void TestShiftOpen()
        {
            RandomGeneratorExtensions.GetGetNewRandom = () => new RandomGenerator(116542346);

            // create a new empty route.
            var testCount = 10;
            var customers = new List <int>(new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 });
            var route     = new Optimization.Tours.Tour(customers, null);

            // remove customers.
            int testIdx = 0;

            while (testIdx < testCount)
            {
                var customerIdx = RandomGeneratorExtensions.GetRandom().Generate(
                    customers.Count);
                var insertIdx = RandomGeneratorExtensions.GetRandom().Generate(
                    customers.Count - 2);
                if (customerIdx <= insertIdx)
                {
                    insertIdx = insertIdx + 1;
                }

                var customer = customers[customerIdx];
                var insert   = customers[insertIdx];
                if (customer != route.First &&
                    customer != route.Last)
                {
                    if (customerIdx < insertIdx)
                    {
                        customers.Insert(insertIdx + 1, customer);
                        customers.RemoveAt(customerIdx);
                    }
                    else
                    {
                        customers.RemoveAt(customerIdx);
                        customers.Insert(insertIdx + 1, customer);
                    }

                    route.ShiftAfter(customer, insert);

                    Assert.AreEqual(customers.Count, route.Count);
                    Assert.AreEqual(0, route.First);
                    Assert.AreEqual(null, route.Last);

                    ExtraAssert.ItemsAreEqual(customers, route);

                    testIdx++;
                }
            }
        }
Ejemplo n.º 3
0
        public void TestReplaceClosed()
        {
            var customers = new List <int>(new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 });
            var route     = new Optimization.Tours.Tour(customers, 0);

            route.Replace(0, 10);

            ExtraAssert.ItemsAreEqual(new int[] { 10, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, route);

            route.Replace(5, 15);

            ExtraAssert.ItemsAreEqual(new int[] { 10, 1, 2, 3, 4, 15, 6, 7, 8, 9 }, route);

            route.Replace(9, 19);

            ExtraAssert.ItemsAreEqual(new int[] { 10, 1, 2, 3, 4, 15, 6, 7, 8, 19 }, route);
        }