如何在 Choco Solver 上使用强度函数对区间变量进行建模?

问题描述 投票:0回答:1

我正在尝试使用 Choco 求解器解决调度优化问题。它需要根据劳动力的轮班安排任务。它包括一种功能,可以允许某些任务在轮班中断时停止,然后再次恢复。在 Choco 求解器上对此类约束进行建模的最佳方法是什么?

我已经能够使用 CPLEX 上的阶跃函数和强度函数来实现它。但是,我在 Choco 上找不到类似的功能。

java job-scheduling constraint-programming choco
1个回答
0
投票

目前(将来情况可能会发生变化),在 Choco Solver 中对此进行建模的最佳方法是使用表约束将任务的持续时间限制为initial_duration,或者(initial_duration + shift_duration)(如果其开始时间介于如果任务在shift_start + i 处开始,则为shift_start - initial_duration + 1 和shift_start - 1,或者(initial_duration + shift_duration - i)。

您还可以通过从任务的开始域中删除移位来避免最后一部分(第三部分)(如果开始变量具有枚举域,则直接删除,或者通过约束)。

© www.soinside.com 2019 - 2024. All rights reserved.