Ejemplo n.º 1
0
 def test_leg_bounds(self):
     with self.assertRaises(Exception):
         solution = Solution("p 1 v 0")
         check_solution(self.instance, solution)
     with self.assertRaises(Exception):
         solution = Solution("p 1 v 8")
         check_solution(self.instance, solution)
Ejemplo n.º 2
0
 def test_leg_graph(self):
     with self.assertRaises(Exception):
         solution = Solution("p 1 v 1 2")
         check_solution(self.instance, solution)
     with self.assertRaises(Exception):
         solution = Solution("p 1 v 1 3 4")
         check_solution(self.instance, solution)
Ejemplo n.º 3
0
    def test_solution(self):
        str0 = "p 1 v 1"
        str1 = "p 1 v 1 4 6\np 2 v 2 3\np 3 v 5 7"

        solution0 = Solution(str0)
        self.assertEqual(1, len(solution0.planes))
        self.assertEqual(1, len(solution0.rotations))
        self.assertListEqual([1], solution0.planes)
        self.assertListEqual([1], solution0.rotations[0])

        solution1 = Solution(str1)
        self.assertEqual(3, len(solution1.planes))
        self.assertEqual(3, len(solution1.rotations))
        self.assertListEqual([1, 2, 3], solution1.planes)
        self.assertListEqual([1, 4, 6], solution1.rotations[0])
        self.assertListEqual([2, 3], solution1.rotations[1])
        self.assertListEqual([5, 7], solution1.rotations[2])
Ejemplo n.º 4
0
 def test_case0(self):
     solution = Solution("p 1 v 1")
     # leg 1 : plane 1 = cost 12
     # 6 legs not done = cost 3000
     # no maintenance = cost 0
     # no repeated legs = cost 0
     # total cost 3012
     score = evaluate_solution(self.instance, solution)
     self.assertEqual(3012, score)
Ejemplo n.º 5
0
 def test_case1(self):
     solution = Solution("p 1 v 1 4")
     # leg 1 : plane 1 = cost 12
     # leg 4 : plane 1 = cost 2
     # 5 legs not done = cost 2500
     # no maintenance = cost 0
     # no repeated legs = cost 0
     # total cost 2514
     score = evaluate_solution(self.instance, solution)
     self.assertEqual(2514, score)
Ejemplo n.º 6
0
 def test_case3(self):
     solution = Solution("p 1 v 1 4\np 2 v 4")
     # leg 1 : plane 1 = cost 12
     # leg 4 : plane 1 = cost 2
     # leg 4 : plane 2 = cost 3
     # 5 legs not done = cost 2500
     # no maintenance = cost 0
     # 1 leg is done twice = cost 500
     # total cost 3017
     score = evaluate_solution(self.instance, solution)
     self.assertEqual(3017, score)
Ejemplo n.º 7
0
    def test_case4(self):
        # no base in this test case to provoke maintenance cost
        for correspondence in self.instance.correspondences:
            correspondence[2] = 0
        self.instance.correspondences[1][3] = self.instance.K

        solution = Solution("p 1 v 1 4 7")
        # leg 1 : plane 1 = cost 12
        # leg 4 : plane 1 = cost 2
        # leg 7 : plane 1 = cost 1
        # 4 legs not done = cost 2000
        # 2 legs not maintained = cost 200
        # no repeated legs = cost 0
        # total cost 2215
        score = evaluate_solution(self.instance, solution)
        self.assertEqual(2215, score)
Ejemplo n.º 8
0
 def test_plane_bound(self):
     with self.assertRaises(Exception):
         solution = Solution("p 0 v 1 4 6")
         check_solution(self.instance, solution)
Ejemplo n.º 9
0
 def test_plane_duplicate(self):
     with self.assertRaises(Exception):
         solution = Solution("p 1 v 1 4 6\np 1 v 2 3")
         check_solution(self.instance, solution)
Ejemplo n.º 10
0
 def test_check_fine(self):
     solution = Solution("p 1 v 1 4 6\np 2 v 2 3\np 3 v 5 7")
     check_solution(self.instance, solution)