Optaplanner:我们可以使用两个计划变量(nullable = true)吗?

时间:2015-10-29 09:56:04

标签: optimization optaplanner

我们可以为每个使用(nullable = true)使用两个计划变量吗?

如果是这样,我们如何在Drools规则文件中处理它们?

我知道当我们使用一个计划变量时,我们用(nullable = true)定义它,然后在规则中我们使用 $ planningVariable!= null "的 PAS "例如,我试过这个并且效果很好,但是使用两个计划变量呢?

我们可以在 CurriculumCourse 上应用此功能吗?如果是这样,过度约束的数据应该在输出中显示为两个计划变量的未分配数据,或者只显示在其中一个中?

1 个答案:

答案 0 :(得分:0)

是的,当然可以。但是像往常一样,你必须确保你的分数限制(=分数规则)惩罚/奖励你想要达到的目标。

例如,在CurriculumCourse上,如果Lectureroomperiod,我认为您有一个负面的媒介约束,会对null进行惩罚。如果两者都是null,请不要对它进行更多惩罚,否则最终将会有很多半分配的实体。但尽管如此,你仍然可能最终得到一些半分配的实体,所以要解决这个问题:

  • 要么进行一些后期处理以使所有未分配的(=两个变量null)作为半分配是无用的。
  • 或者对半分配添加硬约束以完全避免它们(即使在中间解决方案状态下)。

可以从以下方面有效地进行额外解决:

  • 一个移动房间和句点的ChangeMove选择器,因为只改变一个/从null将永远不会产生更好的解决方案。