如何解决optaplanner与固定实体的冲突
在我的optaplanner课程安排项目中,用户在计划算法开始之前添加了一些固定课程。使用@PlanningPin
使它们无法移动。
问题是:一旦固定,它们就不会沿ConstratinsStream传播。因此,碰撞约束不起作用,并且它们不会与非固定实体碰撞。 这是最小的无法正常工作的hello-world-constraint:
约束定义:
factory.from(Lecture.class).filter(t -> helloWorld(t)).penalize...
hello world函数:
public static boolean helloWorld(Lecture m) {
if (m.isFixed()) {System.out.println("hello world"); }
return true;
}
我是否正确地假设应该将固定实体向下传播,如果可以,有人可以提供有关我的错误可能出在哪里的提示吗?
解决方法
实体沿流传播,无论它们是否固定。
但是,如果某个实体被固定并且计划变量为null
,则与非固定实体一样,它不会与.from()
一起传播,而只会与.fromUnfiltered()
一起传播。区别在于,非固定实体将通过构造启发式方法变为非空。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。