python: Update routing tests

This commit is contained in:
Mizux Seiha
2021-02-18 17:39:19 +01:00
parent 415403926f
commit bf0807e1aa
2 changed files with 65 additions and 35 deletions

View File

@@ -16,6 +16,9 @@ class TestRoutingIndexManager(unittest.TestCase):
self.assertEqual(42, manager.GetNumberOfNodes())
self.assertEqual(3, manager.GetNumberOfVehicles())
self.assertEqual(42+3*2-1, manager.GetNumberOfIndices())
for i in range(manager.GetNumberOfVehicles()):
self.assertEqual(7, manager.IndexToNode(manager.GetStartIndex(i)))
self.assertEqual(7, manager.IndexToNode(manager.GetEndIndex(i)))
def test_ctor_multi_same(self):
manager = pywrapcp.RoutingIndexManager(42, 3, [0,0,0], [0,0,0])
@@ -23,6 +26,9 @@ class TestRoutingIndexManager(unittest.TestCase):
self.assertEqual(42, manager.GetNumberOfNodes())
self.assertEqual(3, manager.GetNumberOfVehicles())
self.assertEqual(42+3*2-1, manager.GetNumberOfIndices())
for i in range(manager.GetNumberOfVehicles()):
self.assertEqual(0, manager.IndexToNode(manager.GetStartIndex(i)))
self.assertEqual(0, manager.IndexToNode(manager.GetEndIndex(i)))
def test_ctor_multi_all_diff(self):
manager = pywrapcp.RoutingIndexManager(42, 3, [1,2,3], [4,5,6])
@@ -30,6 +36,9 @@ class TestRoutingIndexManager(unittest.TestCase):
self.assertEqual(42, manager.GetNumberOfNodes())
self.assertEqual(3, manager.GetNumberOfVehicles())
self.assertEqual(42, manager.GetNumberOfIndices())
for i in range(manager.GetNumberOfVehicles()):
self.assertEqual(i+1, manager.IndexToNode(manager.GetStartIndex(i)))
self.assertEqual(i+4, manager.IndexToNode(manager.GetEndIndex(i)))
class TestRoutingModel(unittest.TestCase):
@@ -47,7 +56,11 @@ class TestRoutingModel(unittest.TestCase):
self.assertIsNotNone(manager)
routing = pywrapcp.RoutingModel(manager)
self.assertIsNotNone(routing)
self.assertTrue(routing.Solve())
self.assertEqual(routing.ROUTING_NOT_SOLVED, routing.status())
assignment = routing.Solve()
self.assertEqual(routing.ROUTING_SUCCESS, routing.status())
self.assertIsNotNone(assignment)
self.assertEqual(0, assignment.ObjectiveValue())
def test_unary_transit_vector(self):
manager = pywrapcp.RoutingIndexManager(5, 2, 0)
@@ -57,7 +70,11 @@ class TestRoutingModel(unittest.TestCase):
transit_id = routing.RegisterUnaryTransitVector([i+1 for i in range(5)])
self.assertEqual(1, transit_id)
routing.SetArcCostEvaluatorOfAllVehicles(transit_id)
self.assertTrue(routing.Solve())
self.assertEqual(routing.ROUTING_NOT_SOLVED, routing.status())
assignment = routing.Solve()
self.assertEqual(routing.ROUTING_SUCCESS, routing.status())
self.assertIsNotNone(assignment)
self.assertEqual(15, assignment.ObjectiveValue())
def test_unary_transit_callback(self):
manager = pywrapcp.RoutingIndexManager(5, 2, 0)
@@ -67,7 +84,11 @@ class TestRoutingModel(unittest.TestCase):
transit_id = routing.RegisterUnaryTransitCallback(lambda from_index: 1)
self.assertEqual(1, transit_id)
routing.SetArcCostEvaluatorOfAllVehicles(transit_id)
self.assertTrue(routing.Solve())
self.assertEqual(routing.ROUTING_NOT_SOLVED, routing.status())
assignment = routing.Solve()
self.assertEqual(routing.ROUTING_SUCCESS, routing.status())
self.assertIsNotNone(assignment)
self.assertEqual(5, assignment.ObjectiveValue())
def test_transit_matrix(self):
manager = pywrapcp.RoutingIndexManager(5, 2, 0)
@@ -78,7 +99,11 @@ class TestRoutingModel(unittest.TestCase):
transit_id = routing.RegisterTransitMatrix(matrix)
self.assertEqual(1, transit_id)
routing.SetArcCostEvaluatorOfAllVehicles(transit_id)
self.assertTrue(routing.Solve())
self.assertEqual(routing.ROUTING_NOT_SOLVED, routing.status())
assignment = routing.Solve()
self.assertEqual(routing.ROUTING_SUCCESS, routing.status())
self.assertIsNotNone(assignment)
self.assertEqual(15, assignment.ObjectiveValue())
def test_transit_callback(self):
manager = pywrapcp.RoutingIndexManager(5, 2, 0)
@@ -88,32 +113,30 @@ class TestRoutingModel(unittest.TestCase):
transit_id = routing.RegisterTransitCallback(lambda from_index, to_indx: 1)
self.assertEqual(1, transit_id)
routing.SetArcCostEvaluatorOfAllVehicles(transit_id)
self.assertTrue(routing.Solve())
def test_pair(self):
p = pywrapcp.IntBoolPair(5, True)
if __debug__:
print(f"class IntBoolPair: {dir(p)}")
self.assertEqual(5, p[0])
self.assertEqual(True, p[1])
self.assertEqual(routing.ROUTING_NOT_SOLVED, routing.status())
assignment = routing.Solve()
self.assertEqual(routing.ROUTING_SUCCESS, routing.status())
self.assertIsNotNone(assignment)
self.assertEqual(5, assignment.ObjectiveValue())
def test_vector_dimension(self):
manager = pywrapcp.RoutingIndexManager(5, 2, 0)
self.assertIsNotNone(manager)
routing = pywrapcp.RoutingModel(manager)
self.assertIsNotNone(routing)
res = routing.AddVectorDimension(
transit_id, success = routing.AddVectorDimension(
[i+1 for i in range(5)],
10, # capacity
True, # fix_start_cumul_to_zero
"DimensionName")
if __debug__:
print(f"class IntBoolPair: {dir(res)}")
print(f"result: {res}")
self.assertEqual(res[0], 1)
self.assertEqual(res[1], True)
routing.SetArcCostEvaluatorOfAllVehicles(res[0])
self.assertTrue(routing.Solve())
self.assertTrue(success)
self.assertEqual(transit_id, 1)
routing.SetArcCostEvaluatorOfAllVehicles(transit_id)
self.assertEqual(routing.ROUTING_NOT_SOLVED, routing.status())
assignment = routing.Solve()
self.assertEqual(routing.ROUTING_SUCCESS, routing.status())
self.assertIsNotNone(assignment)
self.assertEqual(16, assignment.ObjectiveValue())
def test_matrix_dimension(self):
manager = pywrapcp.RoutingIndexManager(5, 2, 0)
@@ -121,18 +144,19 @@ class TestRoutingModel(unittest.TestCase):
routing = pywrapcp.RoutingModel(manager)
self.assertIsNotNone(routing)
matrix = [[i+1 for i in range(5)] for j in range(5)]
res = routing.AddMatrixDimension(
transit_id, success = routing.AddMatrixDimension(
matrix,
10, # capacity
True, # fix_start_cumul_to_zero
"DimensionName")
if __debug__:
print(f"class IntBoolPair: {dir(res)}")
print(f"result: {res}")
self.assertEqual(res[0], 1)
self.assertEqual(res[1], True)
routing.SetArcCostEvaluatorOfAllVehicles(res[0])
self.assertTrue(routing.Solve())
self.assertTrue(success)
self.assertEqual(transit_id, 1)
routing.SetArcCostEvaluatorOfAllVehicles(transit_id)
self.assertEqual(routing.ROUTING_NOT_SOLVED, routing.status())
assignment = routing.Solve()
self.assertEqual(routing.ROUTING_SUCCESS, routing.status())
self.assertIsNotNone(assignment)
self.assertEqual(16, assignment.ObjectiveValue())
def test_matrix_dimension_2(self):
manager = pywrapcp.RoutingIndexManager(5, 2, 0)
@@ -140,15 +164,21 @@ class TestRoutingModel(unittest.TestCase):
routing = pywrapcp.RoutingModel(manager)
self.assertIsNotNone(routing)
matrix = [[i+1 for i in range(5)] for j in range(5)]
routing.AddMatrixDimension(
transit_id, success = routing.AddMatrixDimension(
matrix,
10, # capacity
True, # fix_start_cumul_to_zero
"DimensionName")
transit_id = routing.RegisterTransitMatrix(matrix)
self.assertEqual(2, transit_id)
routing.SetArcCostEvaluatorOfAllVehicles(transit_id)
self.assertTrue(routing.Solve())
self.assertTrue(success)
self.assertEqual(transit_id, 1)
transit2_id = routing.RegisterTransitMatrix(matrix)
self.assertEqual(transit2_id, 2)
routing.SetArcCostEvaluatorOfAllVehicles(transit2_id)
self.assertEqual(routing.ROUTING_NOT_SOLVED, routing.status())
assignment = routing.Solve()
self.assertEqual(routing.ROUTING_SUCCESS, routing.status())
self.assertIsNotNone(assignment)
self.assertEqual(16, assignment.ObjectiveValue())
if __name__ == '__main__':
unittest.main(verbosity=2)

View File

@@ -31,8 +31,8 @@ DEFINE_INDEX_TYPE_TYPEDEF(operations_research::RoutingNodeIndex,
namespace operations_research {
%unignore RoutingIndexManager;
%unignore RoutingIndexManager::GetStartIndex(int);
%unignore RoutingIndexManager::GetEndIndex(int);
%unignore RoutingIndexManager::GetStartIndex;
%unignore RoutingIndexManager::GetEndIndex;
%unignore RoutingIndexManager::IndexToNode;
%unignore RoutingIndexManager::NodeToIndex;
%unignore RoutingIndexManager::RoutingIndexManager(