【问题标题】:Optaplanner: Can we use two planning variables with (nullable = true)?Optaplanner:我们可以将两个规划变量与 (nullable = true) 一起使用吗?
【发布时间】:2015-10-29 22:31:58
【问题描述】:

我们可以使用两个计划变量和(nullable = true) 来分别表示它们吗?

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

我知道,当我们使用一个计划变量时,我们用 (nullable = true) 定义它,然后在规则中我们使用 $planningVariable != null 就像在“pas”的例子,我试过了,效果很好,但是使用两个计划变量呢?

我们可以将它应用到 课程课程 上吗?如果是这样,过度约束的数据应该在输出中显示为未分配给两个计划变量,还是只出现在其中一个变量中?

【问题讨论】:

    标签: optimization optaplanner


    【解决方案1】:

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

    例如,在 CurriculumCourse 中,如果 roomperiodnull,我假设你会有一个负面的中等约束,它会惩罚 Lecture。如果两者都是null,不要再惩罚它,否则你最终会得到很多半分配实体。但尽管如此,您最终可能仍会得到一些半分配实体,因此要解决这个问题:

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

    有效的额外求解可以从:

    • ChangeMove 选择器可以同时移动房间和周期,因为仅将一个更改为/从 null 将永远不会产生更好的解决方案。

    【讨论】:

    • 我想最大化分配讲座的增益(这是讲座中的一个属性)。结合您的回答,我该如何做到这一点?
    猜你喜欢
    • 2022-12-16
    • 2019-12-22
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    • 2022-01-04
    • 2012-07-13
    • 1970-01-01
    • 2021-06-02
    相关资源
    最近更新 更多