使用或工具的不同车辆类型的 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)
旁注:求解器车辆 ID 从 0 开始,但在这里我遵循了你 vehicle_id 约定从 1 开始...
我正在尝试使用 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)
旁注:求解器车辆 ID 从 0 开始,但在这里我遵循了你 vehicle_id 约定从 1 开始...