Optaplanner:我们可以将两个规划变量与 (nullable = true) 一起使用吗?
Optaplanner: Can we use two planning variables with (nullable = true)?
我们可以使用两个规划变量,每个变量 (nullable = true)
吗?
如果是这样,我们如何在 Drools 规则文件中处理它们?
我知道当我们使用一个计划变量时,我们用 (nullable = true) 定义它,然后在规则中我们使用 $planningVariable != null 与“pas”示例一样,我尝试了这个并且效果很好,但是使用两个规划变量怎么样?
我们可以在 curriculumCourse 中应用这个吗?如果是这样,过度约束的数据应该在输出中显示为未分配给两个规划变量,还是只出现在其中一个?
是的,当然可以。但像往常一样,您必须确定您的分数限制(=分数规则)penalize/reward您想要达到的目标。
例如,在 CurriculumCourse 上,如果 room
或 period
是 null
,我假设你有一个负面的媒介约束来惩罚 Lecture
。如果两者都是null
,就不要再惩罚它了,否则你最终会得到很多半分配的实体。但是尽管如此,您仍然可能会得到一些半分配的实体,因此要解决这个问题:
- 要么做一些post-处理以使所有那些根本没有分配(=两个变量
null
)作为半分配是无用的。
- 或者添加针对半赋值的硬约束以完全避免它们(即使在中间解决方案状态)。
可以从以下方面获得额外的有效求解:
- 同时移动空间和周期的 ChangeMove 选择器,因为仅更改一个 to/from null 永远不会产生更好的解决方案。
我们可以使用两个规划变量,每个变量 (nullable = true)
吗?
如果是这样,我们如何在 Drools 规则文件中处理它们?
我知道当我们使用一个计划变量时,我们用 (nullable = true) 定义它,然后在规则中我们使用 $planningVariable != null 与“pas”示例一样,我尝试了这个并且效果很好,但是使用两个规划变量怎么样?
我们可以在 curriculumCourse 中应用这个吗?如果是这样,过度约束的数据应该在输出中显示为未分配给两个规划变量,还是只出现在其中一个?
是的,当然可以。但像往常一样,您必须确定您的分数限制(=分数规则)penalize/reward您想要达到的目标。
例如,在 CurriculumCourse 上,如果 room
或 period
是 null
,我假设你有一个负面的媒介约束来惩罚 Lecture
。如果两者都是null
,就不要再惩罚它了,否则你最终会得到很多半分配的实体。但是尽管如此,您仍然可能会得到一些半分配的实体,因此要解决这个问题:
- 要么做一些post-处理以使所有那些根本没有分配(=两个变量
null
)作为半分配是无用的。 - 或者添加针对半赋值的硬约束以完全避免它们(即使在中间解决方案状态)。
可以从以下方面获得额外的有效求解:
- 同时移动空间和周期的 ChangeMove 选择器,因为仅更改一个 to/from null 永远不会产生更好的解决方案。