optaplanner - 在运行时禁用规划变量

optaplanner - disable PlanningVariable at runntime

在我的课程项目中,我有 2 个规划变量:时间段和房间。 现在我希望用户能够选择他是想同时计划它们(现在正在发生)还是他只想计划时间段或房间从而禁用两者之一作为计划变量。

我现在使用 2 个注释:

@PlanningVariable(valueRangeProviderRefs = {"roomRange"})
public Room getRoom() 
 ..
@PlanningVariable(valueRangeProviderRefs = {"timeslotRange"})
public Timeslot getTimeslot() 

但是如何在运行时禁用其中之一?

OptaPlanner 的 @PlanningPin 等尚不支持开箱即用。投票给 https://issues.redhat.com/browse/PLANNER-124

解决方法建议:

A​​) 添加一个硬性约束,如果计划实体的一个变量被固定,则在将其分配给不同的东西时对其进行惩罚。 不是最有效的。

B) 带有自定义着法选择的建议 A(= 深兔子洞)