【发布时间】:2020-04-18 16:41:57
【问题描述】:
我想解决一个看起来像载客车辆路线问题 (CVRP) 的问题,但可以多次拜访客户以满足他们的需求。
我有:
- 包含供应商和押金的完整图 G(V,A)
- cost_matrix M
- 4辆车,容量为Q
- V 上的正函数 f,表示必须为每个客户提供的数量。
我的目标是为所有客户提供这 4 辆车。可以乘坐两辆车拜访客户。
总路由距离必须最小化。
我想用python解决这个问题。
我已经查阅了一些文档(流程问题、TSP、VRP、CVRP 装箱...)。但没有成功。
你知道这个问题是否有名字吗?如果记录在案?否则,我应该如何制定问题? 我应该使用哪个 Python 库?
谢谢!
【问题讨论】:
-
这不只是旅行推销员的变种吗? afaik 这个问题空间是 np-hard 并且需要完全探索,任何捷径都可能导致非最佳解决方案......展示你的输入(可能是简化版本)和你的预期输出也很好......无论你在这个问题上取得了什么进展
-
我不确定它的正确名称是什么,可能类似于多次访问的 vrp。与@JoranBeasley 所说的相反,该解决方案不需要完全探索,因为枚举所有解决方案确实是 np-hard 和不可行的。我之前使用 Optaplanner 模拟了一个类似的问题,实现它的一种方法可能是将每个停靠点的需求视为离散数字(例如 1)。这样,可以将单个需求分配给任何车辆。如果这会导致计划变量的爆炸式增长,您可以想出更聪明的方法将它们聚合在一起。希望这会有所帮助。
-
非常感谢 Joran 和 k88。这段时间,由于没有找到满意的文章,我使用库 docplex.mp.model 编写了自己的优化问题。它看起来像一个流程问题(我很快就会在这里写出来)。我负担得起 Branch and Bonds 解决方案,因为我的实例很少(5 个供应商和 5 辆汽车)。尽管如此,我还是会按照建议阅读有关 VRP 的文章,并进行多次访问。非常感谢您的帮助。
标签: python optimization vehicle-routing