问题描述
我已经为具有多种车辆类型的工作代码定义了各种约束。现在,我想添加一个新约束。
对于给定的车辆,它不应该为低于给定需求的节点提供服务。因此,当此约束应用于一种类型的车辆时,任何小于该需求的节点都将由其他车辆提供服务[不会有此约束。]
需要帮助。我目前被困在这个问题上。
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)
- 不确定如何继续设置约束,即 Vehicle_type_2 不应为任何需求小于或等于 20 的节点提供服务。
- 还有未使用的车辆。因此,它们的容量/需求将为 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 访问。