我正在建立一个旅游计划者。该旅行计划者将获得所有地点行程的旅行时间矩阵,所有地点的开放和关闭时间以及每个地点的停留/处理时间。我正在使用Google的OR工具来解决问题
我已经成功添加了时间窗口约束,但是无法将停留/处理时间约束添加到求解器中。谷歌OR工具上的文档显示了如何解决具有时间窗约束的车辆路径问题,但是没有提及如何为该问题添加更多约束。
到目前为止,我一直在关注本教程。 https://developers.google.com/optimization/routing/vrptw
计划者的预期输出应考虑上述所有三个时间限制,即开放时间,关闭时间和停留/处理时间
答案 0 :(得分:1)
这实际上非常简单。由于停留时间/处理时间仅取决于目标节点,因此可以将其直接添加到将用于解决问题的时间矩阵中。对于N * N时间矩阵(其中N是问题中的节点数)和1 * N停留时间矩阵,必须将停留时间矩阵添加到时间矩阵的每一行中,以获得同时包含两个矩阵的矩阵。时间矩阵和停留时间矩阵。将此留给可能遇到相同问题的任何人。
答案 1 :(得分:0)
您的公交回调应返回服务时间和旅行时间的总和。
即transit(i, j) == service_time(i) + travel_time(i, j)
如果您的服务时间取决于车辆,则可以针对每种车辆类型注册运输回调,然后使用AddDimension()
重载,该超载采用运输回调索引数组。