OptaPlanner - 云平衡附加硬约束

时间:2015-03-24 12:08:19

标签: drools optaplanner

我是OptaPlanner的新手。 我的分配问题与OptaPlanner示例中给出的“云平衡”问题非常相似。但有一个额外的硬约束。

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

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

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

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

1 个答案:

答案 0 :(得分:1)

这样做:

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