Optaplanner 需要每天输入条目
Optaplanner needs to put entries on each day
我有一个每周时间表,我让 Optaplanner 添加条目。有时它会发现它只会在可用的 5 天中的 4 天添加条目。我应该如何编写规则来检查时间表中每天是否至少有 1 个条目?
这样的结果通常需要进行实验。如果您手动将课程设置为星期三,然后 运行 再次评分,会发生什么情况?我的预期是一些约束会被打破,那个约束的权重会比较重。所以OptaPlanner宁愿避开那一天。
假设您的约束得到很好的平衡并且它们不会以这种方式相互干扰,还有一些其他方法可以获得更好的结果:
- 运行 OptaPlanner 更长,
- 提高评分性能,使其在相同的时间内完成更多工作
- 或者通过引入更多移动类型来为求解器引入更多变化。
第二个可以通过改进您的 DRL(我知道您在之前的回答中使用过)或启用多线程求解来实现。
第三个可以通过启用所有通用移动(更改、交换、支柱更改、支柱交换)来实现,如果不够,则为一些更复杂的更改实施自定义移动。
也就是说,我的钱是在不平衡的约束条件下。
编辑:如果您绝对需要确保课程在几天之间保持平衡,您可能需要查看 fairness. The OptaPlanner Tennis example shows that in practice。
我有一个每周时间表,我让 Optaplanner 添加条目。有时它会发现它只会在可用的 5 天中的 4 天添加条目。我应该如何编写规则来检查时间表中每天是否至少有 1 个条目?
这样的结果通常需要进行实验。如果您手动将课程设置为星期三,然后 运行 再次评分,会发生什么情况?我的预期是一些约束会被打破,那个约束的权重会比较重。所以OptaPlanner宁愿避开那一天。
假设您的约束得到很好的平衡并且它们不会以这种方式相互干扰,还有一些其他方法可以获得更好的结果:
- 运行 OptaPlanner 更长,
- 提高评分性能,使其在相同的时间内完成更多工作
- 或者通过引入更多移动类型来为求解器引入更多变化。
第二个可以通过改进您的 DRL(我知道您在之前的回答中使用过)或启用多线程求解来实现。
第三个可以通过启用所有通用移动(更改、交换、支柱更改、支柱交换)来实现,如果不够,则为一些更复杂的更改实施自定义移动。
也就是说,我的钱是在不平衡的约束条件下。
编辑:如果您绝对需要确保课程在几天之间保持平衡,您可能需要查看 fairness. The OptaPlanner Tennis example shows that in practice。