예제 #1
0
        public void DivideProblemOfSize15Test()
        {
            var file = File.ReadAllText("test_of_size_15.vrp");
            var problemBytes = Encoding.UTF8.GetBytes(file);

            var dvrpTaskSolver = new DVRPTaskSolver.DVRPTaskSolver(problemBytes);

            var partialProblemsBytes = dvrpTaskSolver.DivideProblem(0);

            Assert.AreEqual(32768, partialProblemsBytes.Length);
        }
예제 #2
0
        public void DivideProblemOfSize1Test()
        {
            var file = File.ReadAllText("test_of_size_1.vrp");
            var problemBytes = Encoding.UTF8.GetBytes(file);

            var dvrpTaskSolver = new DVRPTaskSolver.DVRPTaskSolver(problemBytes);

            var partialProblemsBytes = dvrpTaskSolver.DivideProblem(0);

            var partialProblems = new int[partialProblemsBytes.Length][];
            for (var i = 0; i < partialProblemsBytes.Length; i++)
                partialProblems[i] = DVRPLocationsSubset.GetFromByteArray(partialProblemsBytes[i]).Locations;

            var expected = new int[2][];
            expected[0] = new int[0];
            expected[1] = new[] { 1 };

            Assert.AreEqual(expected.Length, partialProblemsBytes.Length);
            for (var i = 0; i < expected.Length; i++)
                CollectionAssert.AreEqual(expected[i], partialProblems[i]);
        }
예제 #3
0
        private DVRPPartialSolution CalculatePartialProblem(string fileName, int[] subset)
        {
            var file = File.ReadAllText(fileName);
            var problemBytes = Encoding.UTF8.GetBytes(file);

            var dvrpTaskSolver = new DVRPTaskSolver.DVRPTaskSolver(problemBytes);
            var subsetBytes = DVRPLocationsSubset.Serialize(subset);

            var solutionBytes = dvrpTaskSolver.Solve(subsetBytes, new TimeSpan());
            return DVRPPartialSolution.GetFromByteArray(solutionBytes);
        }