车辆路径问题,其中距离约束将取决于第一个访问的节点

问题描述

我正在尝试使用 OR-Tools 解决出租车接送员工的车辆路线问题。

其中一个要求是任何员工都不应在路线外多花“x”公里,即如果 x = 10 公里,而员工 A 住在离办公室 10 公里的地方,那么在接员工后乘出租车行驶的距离A 不应超过 20 公里(x 的 10 公里 + 从 A 到办公室的距离 10 公里)。

所以,如果为了最佳路线,出租车需要接员工A,然后是B,然后是C,但是总距离变成25km,那么它是不允许的,如果最多20它是很好。

因此,任何出租车允许行驶的最大距离将取决于第一个接载者是谁。有没有办法使用 OR 工具来实现这样的场景??

解决方法

在python中,它应该是这样的:

x_pickup = manager.NodeToIndex(x_index)
x_drop = manager.NodeToIndex(y_index)
routing.solver().Add(
  distance_dimension.CumulVar(x_pickup) + 10 <=  
  distance_dimension.CumulVar(y_drop))