如何更好的在OptaPlanner中应用过约束规划?
How to apply overconstrained planning in OptaPlanner in a better way?
在会议安排示例中,我试图应用过度约束的计划。我检查了文档并在 Whosebug 中找到了答案,然后将 nullable = true 应用于 MeetingAssignment 中的 @PlanningVariable:
@PlanningVariable(valueRangeProviderRefs = { "roomRange" }, nullable = true)
public Room getRoom() {
return room;
}
我还添加了一个规则到流口水:
rule "Assign Every Person To A Room"
when
$meetingAssignment : MeetingAssignment(room == null)
then
scoreHolder.addMediumConstraintMatch(kcontext, -100);
end
我的记分员是:HardMediumSoftScoreHolder
但是我运行申请的时候,六个不同的人只能分配一个人。如果 nullable 为 false 并且每个人都可以分配,则不会发生这种情况。也这六人不打破硬约束。
您对过度约束规划解决问题有什么想法吗?
谢谢!
我终于找到了解决办法。我只有硬和中等约束条件。我已经将所有 mediumConstraint 惩罚更改为 softConstraint,除了 "Assign Every Person To A Room" 规则。现在我可以分配每个人了。
谢谢
在会议安排示例中,我试图应用过度约束的计划。我检查了文档并在 Whosebug 中找到了答案,然后将 nullable = true 应用于 MeetingAssignment 中的 @PlanningVariable:
@PlanningVariable(valueRangeProviderRefs = { "roomRange" }, nullable = true)
public Room getRoom() {
return room;
}
我还添加了一个规则到流口水:
rule "Assign Every Person To A Room"
when
$meetingAssignment : MeetingAssignment(room == null)
then
scoreHolder.addMediumConstraintMatch(kcontext, -100);
end
我的记分员是:HardMediumSoftScoreHolder
但是我运行申请的时候,六个不同的人只能分配一个人。如果 nullable 为 false 并且每个人都可以分配,则不会发生这种情况。也这六人不打破硬约束。 您对过度约束规划解决问题有什么想法吗?
谢谢!
我终于找到了解决办法。我只有硬和中等约束条件。我已经将所有 mediumConstraint 惩罚更改为 softConstraint,除了 "Assign Every Person To A Room" 规则。现在我可以分配每个人了。
谢谢