Optaplanner 默认会重复 PlanningVariable 范围内的值
Optaplanner, by default, will values in PlanningVariable range be repeated
像往常一样,我的 PlanningSolution class 有一个 PlanningEntity 列表,PlanningEntity class 有一个 Integer PlanningVariable 成员变量。现在我在 PlanningEntity 列表中有 2 个元素,PlanningVariable 的范围可以是 1 或 2。肯定 (1,2) 和 (2,1) 是潜在的解决方案,我的问题是,默认情况下,将 (1,1 ) 和 (2,2) 也是潜在的解决方案吗?如果不是,我怎样才能使 (1,1) 和 (2,2) 成为潜在的解决方案?
是的,OptaPlanner 将重复使用某个值范围内的值。
请注意,仅使用一个值一次的要求是一个约束,它在某些用例中有意义,但并非在所有用例中都有意义。需要这种行为的人可以使用约束流将这种需求表达为硬约束。
OptaPlanner 开箱即用,没有任何限制,因此它可以自由探索 space 搜索。
在您的情况下,您不必采取任何额外步骤来允许重复值。以下都是OptaPlanner最终会找到的解决方案:
- (1, 1)
- (1, 2)
- (2, 1)
- (2, 2)
像往常一样,我的 PlanningSolution class 有一个 PlanningEntity 列表,PlanningEntity class 有一个 Integer PlanningVariable 成员变量。现在我在 PlanningEntity 列表中有 2 个元素,PlanningVariable 的范围可以是 1 或 2。肯定 (1,2) 和 (2,1) 是潜在的解决方案,我的问题是,默认情况下,将 (1,1 ) 和 (2,2) 也是潜在的解决方案吗?如果不是,我怎样才能使 (1,1) 和 (2,2) 成为潜在的解决方案?
是的,OptaPlanner 将重复使用某个值范围内的值。
请注意,仅使用一个值一次的要求是一个约束,它在某些用例中有意义,但并非在所有用例中都有意义。需要这种行为的人可以使用约束流将这种需求表达为硬约束。
OptaPlanner 开箱即用,没有任何限制,因此它可以自由探索 space 搜索。
在您的情况下,您不必采取任何额外步骤来允许重复值。以下都是OptaPlanner最终会找到的解决方案:
- (1, 1)
- (1, 2)
- (2, 1)
- (2, 2)