Drools最小化规则-还有其他方法吗?

Drools最小化规则-还有其他方法吗?,drools,optaplanner,Drools,Optaplanner,我有一个相似的系统。我正在通过以下方式最小化it中使用的房间数量: rule "minimize #rooms used" when $room : Room() exists MeetingAssignment(room==$room, meeting!=null) then scoreHolder.addSoftConstraintMatch(kcontext, -10); end 因此,最终,OptaPlanner宁愿选择一个已经安排好会议的房间,而不是一个新的房间

我有一个相似的系统。我正在通过以下方式最小化it中使用的房间数量:

rule "minimize #rooms used"
when
    $room : Room()
    exists MeetingAssignment(room==$room, meeting!=null)
then scoreHolder.addSoftConstraintMatch(kcontext, -10);  
end
因此,最终,OptaPlanner宁愿选择一个已经安排好会议的房间,而不是一个新的房间

有没有其他/更好的方法?我在后端结合了许多规则——我的规则没有“副作用”(更新等) 相互依赖,所以这是可行的。我希望速度表现的规则少一些。我看不到将此规则合并到其他规则的方法

有什么想法吗

蒂亚

A)是的,有:反负载平衡。在文档中,查找关于公平性的章节(也称为负载平衡),并颠倒其对分数的影响

这将激励it部门在同一个房间里尽可能多地挤满会议,先排干使用率较低的房间,即使它不会立即排干使用率较低的房间(这样以后就更容易做到)。 catch22是当您希望在最少的房间数内进行负载平衡时

B) 或者不要做A)并引入消耗房间的粗粒度移动。从增加支柱更换动作开始——但这肯定是不够的,因为它们不会分散消耗空间的负荷(它们都落在同一个房间里)