微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

谷歌 ortools 旅行推销员按顺序访问

如何解决谷歌 ortools 旅行推销员按顺序访问

我在 python 中使用谷歌的 ortools 库来找到一组点之间的最佳路径。点集被分解为子集。例如,集合 A 可能包含 10 个点,集合 B 包含 6 个点,集合 C 包含 48 个点。必须按顺序访问点集,即必须在移动到集合 B 中的点之前访问 A 中的所有点,并且必须在访问 C 中的点之前访问 B 中的所有点。我通过运行算法有一个可行的解决方案在集合 A 上,注意结束位置(通过使用虚拟节点并将任何点到该节点的距离设置为零来任意选择)。然后从A的最后一点开始,作为B的起点。

有没有办法让算法优化所有集合并应用顺序约束?

解决方法

只禁止任何弧 B->A、C->B 或 C->A。

您可以通过返回大于车辆容量的值或直接从 NextVar() 列表中删除节点来实现。 routing.NextVar(index).RemoveValues([...])

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。