如何在 google or-tools vrptw 中设置时间窗口?
Posted
技术标签:
【中文标题】如何在 google or-tools vrptw 中设置时间窗口?【英文标题】:How to set time window in google or-tools vrptw? 【发布时间】:2020-06-11 06:03:41 【问题描述】:我正在用 Python 解决 VRPTW
这是从我的坐标获得的时间矩阵:
0 1 2 3 4 5
0 0 1130 1206 635 1072 977 1 1142 0 242 537 608 253 2 1225 156 0 658 645 409 3 808 781 856 0 1014 588 4 1248 686 703 1012 0 720 5 990 441 545 618 426 0
如何为我的客户设置时间窗口。例如。
仓库 - 时间窗口(上午 4:30 至上午 9:30) Loc1 - 时间窗口(上午 5:00 至上午 9:00) Loc2 - 时间窗口(5:00 AM 到 7:00 AM) Loc2 - 时间窗口(5:00 AM 到 7:00 AM) Loc4 - 时间窗口(早上 5:00 到早上 6:00)
def create_data_model():
"""Stores the data for the problem."""
data =
data['time_matrix'] = [[0, 1130, 1206, 635, 1072, 977, 1315], [1142, 0, 242, 537, 608, 253, 257], [1225, 156, 0, 658, 645, 409, 105], [808, 781, 856, 0, 1014, 588, 927], [1248, 686, 703, 1012, 0, 720, 664], [990, 441, 545, 618, 426, 0, 506], [1194, 51, 181, 588, 561, 304, 0]]
data['time_windows'] = [
(0, 5), # depot
(7, 12), # 1
(10, 15), # 2
(16, 18), # 3
(10, 13), # 4
(0, 5), # 5
(5, 10) # 6
]
data['num_vehicles'] = 2
data['depot'] = 0
return data
【问题讨论】:
【参考方案1】:欢迎来到堆栈溢出! time_matrix
和 time_windows
中的时间都没有绑定到特定的时间单位(例如分钟或小时)。因此,如果time_matrix
中的值具有一定的单位,time_windows
中的值应该相同。
在您的示例中,您可以将挂钟时间调整为与您在 time_matrix
中的时间单位相同的时间单位,从第一个可能的出发时间开始。请注意,求解器希望仓库也有时间限制。
我想您已经阅读过 this OR-tools example,其中的示例(具有误导性)将时间单位称为“单位”和“分钟”。
我希望这会有所帮助!
【讨论】:
以上是关于如何在 google or-tools vrptw 中设置时间窗口?的主要内容,如果未能解决你的问题,请参考以下文章