pythonor-toolsvehicle-routing

How to deal with floats in Google OR Tools?


I would like to use Google OR tools to solve a vehicle routing problem with time windows (https://developers.google.cn/optimization/routing/vrptw?hl=lt#program). My time matrix contains floats and it provides information about distance in hours between two points. See example of a time_matrix:

[[0.0, 1.5666666666666667, 1.3166666666666667, 1.35, 1.35, 1.5666666666666667, 1.3166666666666667, 1.2166666666666666, 1.1166666666666667, 0.11666666666666667]
[1.6, 0.0, 0.6, 0.6666666666666666, 0.6833333333333333, 0.9, 0.7833333333333333, 0.7166666666666667, 0.9166666666666666, 1.5666666666666667]
[1.35, 0.6, 0.0, 0.11666666666666667, 0.23333333333333334, 0.4666666666666667, 0.5, 0.45, 0.6833333333333333, 1.3166666666666667]
[1.3666666666666667, 0.65, 0.11666666666666667, 0.0, 0.18333333333333332, 0.43333333333333335, 0.5166666666666667, 0.4666666666666667, 0.7, 1.3333333333333333]
[1.3666666666666667, 0.6666666666666666, 0.21666666666666667, 0.18333333333333332, 0.0, 0.25, 0.35, 0.4666666666666667, 0.7166666666666667, 1.3333333333333333]
[1.5833333333333333, 0.8833333333333333, 0.45, 0.4166666666666667, 0.25, 0.0, 0.5, 0.6833333333333333, 0.9333333333333333, 1.55]
[1.3166666666666667, 0.7833333333333333, 0.48333333333333334, 0.5166666666666667, 0.3333333333333333, 0.48333333333333334, 0.0, 0.3333333333333333, 0.55, 1.2833333333333334]
[1.2333333333333334, 0.7166666666666667, 0.43333333333333335, 0.45, 0.4666666666666667, 0.6833333333333333, 0.3333333333333333, 0.0, 0.3, 1.2]
[1.15, 0.9166666666666666, 0.6833333333333333, 0.7, 0.7166666666666667, 0.9333333333333333, 0.5666666666666667, 0.3, 0.0, 1.1166666666666667]
[0.11666666666666667, 1.55, 1.3, 1.3333333333333333, 1.3333333333333333, 1.55, 1.2833333333333334, 1.2, 1.1, 0.0]]

Time windows are also in hours, see example:

[[7, 24], [8, 18], [8, 18], [8, 18], [8, 18], [8, 18], [8, 18], [8, 18], [13, 18], [8, 14]]

The problem is that the output is a nonsense:

Route for vehicle 0:
0 Time(7,7) -> 0 Time(7,7)
Time of the route: 7min

The vehicle 0 stayed at home so the time should be 0. Other time of the route seems to be also wrong. Do you have any idea why? Is the problem because I use floats instead of integers in the time_matrix? If yes, how can I modify time windows in hours to minutes (integers), please? Thanks a lot.


Solution

  • Comment:

    The problem is that 0 Time(7,7) -> 0 Time(7,7), OR tools always adds 7 to the result.