这是任务规划问题的上下文,其中任务链(T1、T2、T3等)分配给员工(锚),比如E1。因此,计划的结果大致如下:
E1 -> T1 -> T2 -> T3T1、T2和T3可以来自任何任务列表。现在,我想要的是来自T1,T2,T3,T4,T5,T6的列表。,必须将T3分配给E1。简单地说,T3必须连接在(可能不是第一个)锚E1链之间的某个地方。Optaplanner只能选择在链式计划变量中选择先前的entityOrAnchor,如果我希望将第一个任务分配给员工,但我希望在一天晚些时候执行任务,所以在任务链之间的某个位置,它会工作。
我能想到的解决办法:
这同样适用于同样的情况,我必须保持一个非常强(加权)高的约束,但问题是我不想将它作为约束,因为不可能将该任务分配给其他员工,而且我希望对其建模,以便将特定任务分配给特定的员工。我们还有其他选择吗?
我想要什么?
这是因为上面的T3中的任务是一种特定于该员工的休息,而我之所以保持休息,是因为休息地点也是一个位置,应该根据附近的任务来规划,以避免完全不同的驾驶时间。
发布于 2017-10-25 06:36:55
以下是对我有效的解决方案:
如果T3是您希望分配员工E1的链中的任务,那么在向Optaplanner提交之前,使用以下方法将T3分配给E1:
这使得T3已经用员工E1初始化了,所以CH不会改变它。现在,过滤所有的LS移动(更改/交换/链),这样他们就不会尝试将带有锁定的员工的任务移动到其他员工。
https://stackoverflow.com/questions/46790549
复制相似问题