我正在为 Job-Shop 问题实施一个类似的解决方案,但有一个区别:我不知道必须执行每项任务的机器。解决这个问题也是问题的一部分。事实上,我们可以说,我正在尝试解决护士问题和工作车间问题的组合。
更具体地说,我有一些持续时间为 D 的任务 T,由于他们的性质 N(假设前端任务、后端任务等),这些任务必须由某些特定员工 E 以特定顺序 O 执行。
我有:
解决这个问题的一种方法是:先解决分配问题,然后安排任务。我已经做到了这一点。
但是我想将它作为一个独特的解决方案来实现。
我被困在这个:如何创建一个依赖于我之前创建的 int vars 的析取约束?
对于那些需要查看代码的人:
for i in range(number_employees):
disj = solver.DisjunctiveConstraint([interval_var[task_id] if int_var[task_id] == i] ,'i_name')
[...]
Run Code Online (Sandbox Code Playgroud)
当然,那是行不通的。
我真的很感激任何建议。
应该看看 CP-SAT 求解器。它支持半具体化约束。
也就是说,(在Python中):
model.AddNoOverlap([间隔列表]).OnlyEnforceIf(boolvar)
model.Add(x == i).OnlyEnforceIf(boolvar)
model.Add(x != i).OnlyEnforceIf(boolvar.Not())
请参阅:https ://github.com/google/or-tools/blob/master/ortools/sat/doc/index.md
| 归档时间: |
|
| 查看次数: |
2478 次 |
| 最近记录: |