optaplanner-在运行时禁用PlanningVariable

问题描述 投票:0回答:1

在我的课程项目中,我有2个计划变量:时隙和房间。现在,我希望用户能够选择是要立即计划它们(现在正在发生)还是要仅计划时隙或仅计划房间,从而禁用这两个计划之一作为计划变量。

我现在使用2个注释:

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

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

optaplanner
1个回答
0
投票

OptaPlanner的@PlanningPin等尚不支持此功能。投票https://issues.redhat.com/browse/PLANNER-124

解决方法建议:

A)添加一个硬约束,即如果固定了计划实体的一个变量,则将其分配给其他变量会对其进行惩罚。不是最有效的。

B)具有自定义移动选择的建议A(=深兔子洞)

© www.soinside.com 2019 - 2024. All rights reserved.