首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在链式计划变量中将任务修复给员工

在链式计划变量中将任务修复给员工
EN

Stack Overflow用户
提问于 2017-10-17 12:48:48
回答 1查看 357关注 0票数 2

这是任务规划问题的上下文,其中任务链(T1、T2、T3等)分配给员工(锚),比如E1。因此,计划的结果大致如下:

代码语言:javascript
复制
E1 -> T1 -> T2 -> T3

T1、T2和T3可以来自任何任务列表。现在,我想要的是来自T1,T2,T3,T4,T5,T6的列表。,必须将T3分配给E1。简单地说,T3必须连接在(可能不是第一个)锚E1链之间的某个地方。Optaplanner只能选择在链式计划变量中选择先前的entityOrAnchor,如果我希望将第一个任务分配给员工,但我希望在一天晚些时候执行任务,所以在任务链之间的某个位置,它会工作。

我能想到的解决办法:

  1. 保留一个额外的变量“转让人雇员”。
  2. 保持严格的约束,以便assignEmployee与锚(雇员)匹配。

这同样适用于同样的情况,我必须保持一个非常强(加权)高的约束,但问题是我不想将它作为约束,因为不可能将该任务分配给其他员工,而且我希望对其建模,以便将特定任务分配给特定的员工。我们还有其他选择吗?

我想要什么?

这是因为上面的T3中的任务是一种特定于该员工的休息,而我之所以保持休息,是因为休息地点也是一个位置,应该根据附近的任务来规划,以避免完全不同的驾驶时间。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-25 06:36:55

以下是对我有效的解决方案:

如果T3是您希望分配员工E1的链中的任务,那么在向Optaplanner提交之前,使用以下方法将T3分配给E1:

  • E1.setNextTask(T3) --InverseShadowVar
  • T3.preTaskOrEmployee(E1)-真正的var
  • T3.setEmployee(E1) -- Anchor Shadow var
  • T3.setEmployeeLoced(真)

这使得T3已经用员工E1初始化了,所以CH不会改变它。现在,过滤所有的LS移动(更改/交换/链),这样他们就不会尝试将带有锁定的员工的任务移动到其他员工。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46790549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档