使用或工具的不同车辆类型的 VRP

VRP with different vehicle types using or-tools

我正在尝试使用 OR-Tools 优化最佳路线 VRP。我在 documentation 中找不到合适的函数。

CASE: 有些客户只接受皮卡,有些只接受卡车,有些同时接受卡车、皮卡和货车。有一个单一的仓库位置,车辆应将订单运送到具有已接受车辆的正确客户。

我有那些车

客户接受这些车型

应将这些车辆定向到相应的客户。

您对此有什么想法或有任何工具功能吗?

您可以使用 RoutingModel::VehicleVar(index)

Python中的伪代码(使用customer_id作为node_id)

# Vehicles list
trucks = [1, 3, 6, 7, 9, 10]
vans = [4, 5]
pickups = [2, 8]

# location list with a tuple (location, truck, van pickup)
locations = [
  (1, True, True, True), # C-01
  (2, True, True, False), # C-02
  (3, True, False, False), # C-03
  (4, True, True, True), # C-04
  ...
  ] 

for location, truck_allowed, van_allowed, pickup_allowed in locations:
  index = manager.NodeToIndex(location)
  allowed_vehicles = [] # you can add -1 iff the location can be dropped
  if truck_allowed:
    allowed_vehicles.extend(trucks)
  if van_allowed:
    allowed_vehicles.extend(vans)
  if pickup_allowed:
    allowed_vehicles.extend(pickups)
  routing.VehicleVar(index).SetValues(allowed_vehicles)

参考:https://github.com/google/or-tools/blob/b37d9c786b69128f3505f15beca09e89bf078a89/ortools/constraint_solver/routing.h#L1224-L1226

旁注:求解器车辆 ID 从 0 开始,但在这里我遵循了你 vehicle_id 约定从 1 开始...