如何在 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_matrixtime_windows 中的时间都没有绑定到特定的时间单位(例如分钟或小时)。因此,如果time_matrix中的值具有一定的单位,time_windows中的值应该相同。

在您的示例中,您可以将挂钟时间调整为与您在 time_matrix 中的时间单位相同的时间单位,从第一个可能的出发时间开始。请注意,求解器希望仓库也有时间限制。

我想您已经阅读过 this OR-tools example,其中的示例(具有误导性)将时间单位称为“单位”和“分钟”。

我希望这会有所帮助!

【讨论】:

以上是关于如何在 google or-tools vrptw 中设置时间窗口?的主要内容,如果未能解决你的问题,请参考以下文章

OR-Tools:有资源限制但没有解决方案的 VRPTW

Google OR-Tools:最小化总时间

OR-TOOLS RL VRPTW 问题中的移位长度约束?

Google Or-Tools 路由 - 解决方案为空

如何在 Mac 上安装 Google OR-Tools?

如何在 MiniZinc 中安装 Google 的 CP 求解器 OR-Tools?