对于我的模型,我有大约 120 个人和 650 个任务。我现在想用 choco 3.3.3 分配这些任务。为此,我有一个 boolMatrix "assignment" 120x650,如果任务分配给该人,则为 1,否则为 0。但现在我必须以不同的标准进行优化,例如尽量减少加班,遵守人民的意愿等等。最好的方法是什么?
我的直觉:我看不到只累积惩罚的方法,所以我的直觉是有一个矩阵,其中每个人都有一系列“惩罚”,所以如果我有加班,惩罚[i][0]有例如,惩罚 5,如果他不想执行任务,惩罚 [i][1] 有惩罚 4。然后我有一个 IntVar 分数,这是惩罚的总和,我优化分数。
- 惩罚矩阵是要走的路吗?
- 以及如何初始化这些变量?
- 是否可以在合理的时间内使用 choco 进行优化(每个可行的解决方案都有分数)?
在护士调度示例中,使用了此策略:solver.set(IntStrategyFactory.domOverWDeg(ArrayUtils.flatten(assignment), System.currentTimeMillis())); - 我应该使用什么策略?阅读 choco 用户指南并没有帮助我获得一个好主意......