我目前正在使用 timefold.ai 优化 java 框架进行一些测试。
我有以下场景:我有需要在特定时间执行的任务。然而,它们是可选的,不必进行安排。但如果有安排,他们必须在特定时间开始。
此外,还有其他任务(相同类型的任务,因此它们位于同一集合中)并由相同的
PlanningEntity
表示,它们在开始时间以及是否已安排上都完全灵活。
据我所知,常规固定不起作用,因为它固定了整个规划实体。我的简化设置看起来像这样(不包括其他不相关的约束)。
@PlanningEntity
public class Task {
@PlanningVariable(valueRangeProviderRefs = ["myValueRangeProvider"], nullable = true)
private BigDecimal start;
@PlanningPin
private boolean pinned;
}
@PlanningSolution
class PlanningProblem {
@ValueRangeProvider(id = "myValueRangeProvider")
private CountableValueRange<BigDecimal> possibleStarts;
@PlanningEntityCollectionProperty
private List<Task> tasks;
}
有人知道如何很好地建模吗?有没有办法部分固定变量?我还考虑过有两个规划变量,一个
isScheduled
和另一个 start
,并以某种方式为每个实体使用特定的值范围提供程序,但我只能为我假设的每个实体类型提供一个?
谢谢!