示例#1
0
        public void RandomTest()
        {
            for (int i = 0; i < 5; i++)
            {
                AdjacencyMatrix testMatrix = new AdjacencyMatrix(8);
                BranchAndBound  solver     = new BranchAndBound();
                testMatrix.GenerateRandomMatrix();
                DynamicTSP dynamicSolver = new DynamicTSP(testMatrix, 0);
                dynamicSolver.SetVariables(testMatrix);
                dynamicSolver.Solve();
                solver.SetVariables(testMatrix);
                solver.Solve();

                if (((int)dynamicSolver.minTourCost != solver.max))
                {
                    testMatrix.print();
                }
                Assert.AreEqual((int)dynamicSolver.minTourCost, solver.max);
            }
        }
示例#2
0
        public void FirstBoundTest()
        {
            AdjacencyMatrix testMatrix = new AdjacencyMatrix(4);

            for (int i = 0; i < 100000; i++)
            {
                BranchAndBound solver = new BranchAndBound();
                testMatrix.GenerateRandomMatrix();
                DynamicTSP dynamicSolver = new DynamicTSP(testMatrix, 0);
                solver.SetVariables(testMatrix);
                dynamicSolver.Solve();
                solver.Solve();
                if (dynamicSolver.minTourCost < solver.firstBound)
                {
                    Console.WriteLine("BestTour :" + dynamicSolver.minTourCost + "<= To bound" + solver.firstBound);
                    testMatrix.print();
                    dynamicSolver.printTour();
                    Assert.Fail();
                }
            }
        }