OptaPlanner:当未分配任务中的规划变量为空时,是否有可能知道哪个约束被破坏了?

OptaPlanner: is it possible to know which constraint broke when planning variables are null in unassigned tasks?

我在 OptaPlanner 中使用 Drools 引擎。当 OptaPlanner 在某些任务未分配的情况下将空值分配给计划变量时,我试图找出 Drools 中的哪条规则被破坏了。

我知道为什么它会为计划变量分配一个空值,就像员工轮班问题的例子一样,您宁愿不分配一些班次,也不愿让员工因更多班次而超载。

所以,我想知道是哪个规则(或约束)导致了这种取消分配。

通过 ConstraintMatchTotalIndictement API,您可以找出违反了哪些约束(= 规则)。

但无法大致查明某些内容未分配的原因。除了责怪所有其他实体。有时您可以指出这一点——轮班需要一种技能,而没有员工具备这种技能。但通常它要复杂得多。 我在这次演讲中谈到了那个谜团:https://www.youtube.com/watch?v=GnnMHkY6vKk