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

Optimization Optaplanner:我们可以使用两个规划变量(nullable=true)吗?,optimization,optaplanner,Optimization,Optaplanner,我们可以为每个规划变量使用两个(nullable=true)规划变量吗 如果是这样,我们如何在Drools规则文件中处理它们 我知道当我们使用一个计划变量时,我们用(nullable=true)来定义它,然后在规则中使用$planningVariable!=null在“pas”示例中,我尝试了这个方法,效果很好,但是使用两个计划变量怎么样 我们可以将此应用到课程中吗?如果是这样,过度约束的数据应该在输出中显示为两个计划变量的未分配数据,或者只在其中一个变量中显示?是的,当然可以。但和往常一样,你

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

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

我知道当我们使用一个计划变量时,我们用(nullable=true)来定义它,然后在规则中使用$planningVariable!=null在“pas”示例中,我尝试了这个方法,效果很好,但是使用两个计划变量怎么样


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

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

例如,在课程课程中,如果
房间
时段
,我认为你会受到负面的媒体约束,惩罚
讲座
。如果两者都是空的,不要再惩罚它,否则你会得到很多半指定的实体。但尽管如此,您最终可能还是会得到一些半指定实体,因此要解决这一问题:

  • 或者进行一些后处理,使所有未赋值的变量(=两个变量都
    null
    )作为半赋值是无用的
  • 或者对半赋值添加硬约束以完全避免它们(即使在中间解决方案状态下)
可通过以下方式获得额外的有效解决方案:

  • 同时移动房间和时段的ChangeMove选择器,因为只将其中一个更改为null或从null更改为null,永远不会产生更好的解决方案
我想最大化指定讲座的收益(这是讲座中的一个属性)。结合你的回答,我该怎么做?