ORTools:多车辆:大型车辆不应为低于给定需求的节点提供服务

问题描述

我已经为具有多种车辆类型的工作代码定义了各种约束。现在,我想添加一个新约束。

对于给定的车辆,它不应该为低于给定需求的节点提供服务。因此,当此约束应用于一种类型的车辆时,任何小于该需求的节点都将由其他车辆提供服务[不会有此约束。]

需要帮助。我目前被困在这个问题上。

2 种车辆的示例代码

for i in range(vehicle_type_1_starting_index,vehicle_type_1_ending_index):        
    # [my constraints here,setting arc costs etc]


for i in range(vehicle_type_2_starting_index,vehicle_type_2_ending_index):        
    # [my constraints here,setting arc costs etc]
    # NEW CONSTRAINT LIKE: routing.solver().Add((routing.ActiveVehicleVar(int(i)) * capacity_dimension.[? minimum demand each visited node ?] >= 20)

  1. 不确定如何继续设置约束,即 Vehicle_type_2 不应为任何需求小于或等于 20 的节点提供服务。
  2. 还有未使用的车辆。因此,它们的容量/需求将为 0,但这将与上述无节点少于 20 个需求的约束冲突。如何使其仅适用于二手车?

解决方法

解决方案:

for node_index in range(len(nodes)): 
    if nodes[node_index] according to criteria:
        routing.SetAllowedVehiclesForIndex(list(allowed_vehicle_list)),node_index)

我刚刚禁止我的车辆类型 B 访问需求小于 X 的节点。它们被没有此类限制的车辆类型 A 访问。