如何在Python中用带约束的最小化函数实现卡车停靠优化?
配送路径停靠次数优化问题
现有配送数据
| 卡车编号 | 货物 | 数量 | 配送地点 |
|---|---|---|---|
| 1 | item1 | 2 | location1 |
| 2 | item1 | 3 | location2 |
| 2 | item2 | 3 | location1 |
| 3 | item3 | 2 | location2 |
| 3 | item2 | 2 | location3 |
| 4 | item1 | 3 | location2 |
| 4 | item3 | 2 | location3 |
| 5 | item2 | 5 | location3 |
| 5 | item1 | 5 | location2 |
优化目标
通过合并同类货物配送,最小化卡车的停靠次数。
停靠次数 = 单辆卡车对应的唯一配送地点数量
例如:将卡车1中发往location1的item1与卡车2中发往location2的item1互换,两辆卡车此后都只需前往一个地点,可减少一次停靠。
约束条件
- 每个货物-地点组合的总配送量不能超过可用库存,可用库存如下:
availability = {('item1', 'location1'): 15, ('item1', 'location2'): 28, ('item1', 'location3'): 18, ('item2', 'location1'): 10, ('item2', 'location2'): 28, ('item2', 'location3'): 12, ('item3', 'location1'): 8, ('item3', 'location2'): 10, ('item3', 'location3'): 12 }
- 每辆卡车装载的货物种类不可变更,仅能调整货物的配送地点。比如卡车2原本装载item1和item2,调整后仍需保留这两种货物,仅修改它们的配送地点。
问题需求
不清楚如何构建这类带动态约束的优化问题,需要拆解问题并得到最优的卡车-货物-地点配送组合,最终输出应为满足约束前提下的最优配送组合。
示例优化方案
针对前两辆卡车的优化结果如下:
| 卡车编号 | 货物 | 数量 | 配送地点 |
|---|---|---|---|
| 1 | item1 | 2 | location2 |
| 2 | item1 | 3 | location1 |
| 2 | item2 | 3 | location1 |
此方案中卡车2只需前往一个地点,达成了停靠次数减少的目标。
内容的提问来源于stack exchange,提问作者Lars
相关产品推荐
相关产品推荐

