optaplanner 与固定实体的碰撞

optaplanner collision with pinned entities

在我的 optaplanner 课程安排项目中,用户在计划算法开始之前添加了一些固定讲座。使用 @PlanningPin.

使它们不可移动

问题是:一旦它们被固定,它们就不会沿着 ConstratinsStream 传播。所以碰撞约束不起作用,它们不会与非固定实体发生碰撞。 这是一个最小的非工作 hello-world-constraint:

约束定义:

factory.from(Lecture.class).filter(t -> helloWorld(t)).penalize...

你好世界功能:

public static boolean helloWorld(Lecture m) {
     if (m.isFixed()) {System.out.println("hello world"); }
     return true;
}

我假设固定实体应该沿着流传播是正确的吗?如果是的话,有人可以提示我的错误可能在哪里吗?

实体在流中传播,无论它们是否固定。

但是如果一个实体被固定并且计划变量是 null,那么就像 non-pinned 个实体一样,它不会被 .from() 传播,只有 [=12] =].不同之处在于 non-pinned 实体将由 Construction Heuristic 生成 non-null。