python-3.x - 容量约束检查仅在 OR-Tools 中的节点级别
问题描述
我们将提货配送模块与容量限制相结合。在这里,我们继续在路线上拾取和放下物品(可以在同一个节点上拾取和放下)。因此,即使他的容量较小,一个人也将能够接受更多订单,因为在下一个节点他将丢弃它。
例如:让我们假设:
Vehicle capacity is 10 kg.
Total nodes = 11 (0 to 10)
Pickup Nodes: 1, 3, 8, 10
Drop Nodes: 5, 2, 4
我们维护了两个数组“ data['pickup_demand'] ”用于拾取节点的需求,“ data['delivery_demand'] ”用于放置节点的需求。我们还减去它以获得最终数据 (即:“ data['demands'] = data['pickup_demand'] - data['delivery_demand'] ”)。
data['pickup_demand'] = [0, 8, 0, 2, 0, 0, 0, 0, 5, 0, 6]
data['delivery_demand'] = [0, 0, 6, 10, 0, 5, 0, 0, 0, 0, 0]
Expected Routing:-
0(0) -> 1(8) -> 3(2) -> 5(5) -> 8(5) -> 2(6) -> 10(6) -> 3(10) -> 0(0)
| | | | | | | | |
Depot Pickup Pickup Drop Pickup Drop Pickup Drop Depot
在这里,如果我们看到,即使它是最大的,同一辆车也能够完成这项总任务。重量为10 公斤。
我们不想考虑它承载的所有订单的总重量是多少(即在这里加上所有的皮卡,它是21 公斤)。但是,检查应仅基于节点,其不应大于 10 公斤。通过这种方式,车辆可以完成更多任务。
尽管路由不像上面显示的那样,但是,我们的要求是考虑最大。仅在节点上进行权重检查。
我想,我需要修改这个吗?
routing.AddDimensionWithVehicleCapacity(
demand_callback_index,
0, # null capacity slack
data['vehicle_capacities'], # vehicle maximum capacities
True, # start cumul to zero
'Capacity')
解决方案
推荐阅读
- c# - 在运行新测试之前重新复制到输出目录
- python - ImportError:导入open3d时DLL加载失败:找不到指定的模块
- transform - Godot/Gdscript 旋转 + 从本地空间转换到世界空间
- cart - 修剪回归树cp选择或其他方式
- java - Vaadin Flow 网格添加一个空行
- visual-studio - 在 VS Studio Code 中损失了一整天的进度
- java - Camera2 android - 相机设备遇到致命错误。相机设备需要重新打开才能再次使用
- c++ - 错误 C2679:二进制“<<”:未找到采用“std::vector”类型的右侧操作数的运算符
>' - jmeter - JMeter灵活的文件编写器试图将requestbody保存到csv文件中的单个单元格
- google-sheets - 无法将文本强制转换为数字