有没有办法在 OR-Tools 路由中设置特定的出发点和到达点?
Posted
技术标签:
【中文标题】有没有办法在 OR-Tools 路由中设置特定的出发点和到达点?【英文标题】:Is there a way to set specific leave and arrive points in OR-Tools routing? 【发布时间】:2019-06-14 15:18:32 【问题描述】:我正在优化使用 G 代码文件的 CNC 机床所采用的路线。当机器钻孔时,解决方案很简单。但是,如果我想优化必须遵循静态路线的文本和形状的绘制呢?
例如,假设我正在尝试绘制单词“TAX”。绘制它的 G 代码如下所示:
(TAX)
(T)
N10 G0 Z2
N20 G0 X0 Y30
N30 G1 Z-1
N40 G1 X16.667 Y30
N50 G0 Z2
N60 G0 X8.333 Y30
N70 G1 Z-1
N80 G1 X8.333 Y0
(A)
N90 G0 Z2
N100 G0 X26.667 Y0
N110 G1 Z-1
N120 G1 X36.667 Y30
N130 G1 X46.667 Y0
N140 G0 Z2
N150 G0 X43.888 Y8.333
N160 G1 Z-1
N170 G1 X29.445 Y8.333
(X)
N180 G0 Z2
N190 G0 X56.667 Y0
N200 G1 Z-1
N210 G1 X76.667 Y30
N220 G0 Z2
N230 G0 X56.667 Y30
N240 G1 Z-1
N250 G1 X76.667 Y0
在这个例子中,我们可以从以下任何一点出发:
X16.667 Y30
X8.333 Y0
X46.667 Y0
X29.445 Y8.333
X76.667 Y30
X76.667 Y0
...到以下任何一点:
X16.667 Y30
X8.333 Y0
X46.667 Y0
X29.445 Y8.333
X76.667 Y30
X76.667 Y0
...按任意顺序。
我一直在阅读OR-Tools 的文档和示例,但我没有看到任何可以解决此问题的选项。
【问题讨论】:
【参考方案1】:RoutingIndexManager 的起点/终点过载。它解决了你的问题吗?
manager = pywrapcp.RoutingIndexManager(
len(data.locations), data.num_vehicles, data.starts, data.ends)
【讨论】:
没有。一些点可能会路由到任何点,而其他点必须路由到特定点。现在,我在距离矩阵中必须相互连接的点之间手动强制执行 0,但这是一种丑陋的 hack,我希望它会中断。以上是关于有没有办法在 OR-Tools 路由中设置特定的出发点和到达点?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 google or-tools vrptw 中设置时间窗口?