我是OptaPlanner的新手。 我的分配问题与OptaPlanner示例中给出的“云平衡”问题非常相似。但有一个额外的硬约束。
进程可以 分组,同一组中的进程不应分配给同一个CPU。
此约束应该在分数计算器中(EasyScoreCalculator
)。是否可以检查进程组是否已分配给解决方案中的同一CPU并对其进行评分?
还有其他更好的方法,比如使用ValueSelector?
即使无法将进程分配给CPU(因为约束),我也会默认获得解决方案。这是规划师的工作方式吗?
答案 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