有没有办法在 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 中设置时间窗口?

有没有办法在铬启动选项中设置特定的显示?

Windows系统中设置默认路由的作用是啥?

Xamarin.Forms:有没有办法在xaml中设置派生样式的默认字体(系列)?

在 SwiftUI TextEditor 中设置光标位置

如何在 CSS 中设置图像的最大宽度