通过转换在 Job Shop 中获得空闲时间

Getting slack time in Job Shop with Transitions

我是 运行 一个灵活的工作车间问题,有替代方案和过渡时间。

是否可以确定机器上的松弛时间;那是它既不工作也不过渡的时间?工作时间很明显,但过渡时间取决于前后工作(从矩阵中选择,如路由旅行时间),因此不是常数。

我可以在 or-tools 之外的 python 中很容易地计算出这个,我只是想知道 or-tools 是否有可能 return 这个?

如果你使用电路约束来编码转换,你可以扩展它:

model.Add(start[i] >= end[j] + transition[j, i]).OnlyEnforceIf(next[j][i])

进入

model.Add(start[i] == end[j] + transition[j, i] + slack[i]).OnlyEnforceIf(next[j][i])

因此slack[i]将被设置为开始任务i之前的等待时间。 然后你需要决定如何处理初始松弛。