Optaplanner :动态添加/删除约束



我们可以在optaplanner中使用Java动态添加/删除约束吗?有没有例子。 我希望允许用户在运行时使用某些 UI 添加或删除此约束。

下面的链接用口水说了一些关于它的东西。 可以使用Java完成吗? 如何在 OptaPlanner 中动态添加/删除约束

1(通常非硬编码约束就足够了。例如,而不是有一个约束说:

  • "当安周五工作时,惩罚">

有:

  • 具有员工和每周一天的一周不喜欢数据类。 ** 输入数据有一个实例,其中包含员工 Ann 和每周星期五的一天。
  • 有一个约束说:"当有一个星期不喜欢并且该员工有轮班分配到这样的一周日时,惩罚">

在大多数用例中,这种方法足以避免动态约束。请注意,您可以使用Solver.addProblemFactChange()实时添加/删除每周不喜欢的 DayOfLike 数据。

2(接下来,@ConstraintConfiguration可以使用@ConstraintWeight通过Solver.addProblemFactChange()实时禁用/启用约束。将约束权重设置为零分数以禁用它。

3(如果1(和2(都失败了,你真的需要动态约束。我还没有看到任何用例需要走这么远,但我们可以支持它。如果您确实需要这种方法,您的用例是什么?

最新更新