OptaPlanner - Cloud Balance 附加硬约束

OptaPlanner - Cloud Balance additonal hard-constraint

我是 OptaPlanner 的新手。 我的分配问题与 OptaPlanner 示例中给出的 "Cloud Balance" 问题非常相似。但是有一个额外的硬约束。

进程可以分组并且同一组中的进程不应分配给同一个CPU。

这个约束应该在分数计算器中(EasyScoreCalculator)。它可以检查进程组是否分配给解决方案中的相同 CPU 并对其进行评分吗?

有没有其他更好的方法,比如使用 ValueSelector?

即使无法将进程分配给 CPU(由于限制),我也会默认获得解决方案。这就是规划师的工作方式吗?

这样做:

class Service {} // ProcessGroup
class Process {
    private Service service;
    ... // Existing properties
}

然后 drl 看起来像这样:

when
    Process($id : id, $s : service, $c : computer)
    Process(id > $id, service == $s, computer == $c)
then
    // hard constraint broken
    ...
end

当然你也可以使用 EasyJavaScoreCalculation