Java OptaPlanner规划实体,即使没有可用的移动

Java OptaPlanner规划实体,即使没有可用的移动,java,optaplanner,Java,Optaplanner,我正在尝试使用MoveSelectionFilter从计划中排除一些计划实体实例 然而,根据调试输出,即使我拒绝所有移动,实例仍然在构造启发式阶段得到最初的计划。我使用的是最弱的拟合启发式,两个自定义MoveListFactory(目前根本不生成任何移动)和没有默认MoveListFactory 如何防止OptaPlanner规划这些实体?我已经看了护士排班的例子,如果你提前了日期,但无法重现这种行为,它正是我想要做的 编辑:过滤器肯定正在应用。我已经检查了移动列表的大小,它们都是空的 我的过滤

我正在尝试使用MoveSelectionFilter从计划中排除一些计划实体实例

然而,根据调试输出,即使我拒绝所有移动,实例仍然在构造启发式阶段得到最初的计划。我使用的是最弱的拟合启发式,两个自定义MoveListFactory(目前根本不生成任何移动)和没有默认MoveListFactory

如何防止OptaPlanner规划这些实体?我已经看了护士排班的例子,如果你提前了日期,但无法重现这种行为,它正是我想要做的

编辑:过滤器肯定正在应用。我已经检查了移动列表的大小,它们都是空的

我的过滤器如下所示:

public boolean accept(PatientAdmissionSchedule patientAdmissionSchedule, BedDesignation bedDesignation) {
    return false;
}
并且是这样应用的:

if (filter.accept(patientAdmissionSchedule, bedDesignation)) {
            for (Bed bed : bedList) {
                moveList.add(new BedChangeMove(bedDesignation, bed));
            }
        }

我认为这进一步表明,没有选择的行动

计划实体与患者入院计划示例中的实体基本相同:

@PlanningEntity(difficultyWeightFactoryClass = BedDesignationDifficultyWeightFactory.class)
@XStreamAlias("BedDesignation")
public class BedDesignation extends AbstractPersistable {

private Admission admission;
private Bed bed;
private Night night;

@PlanningVariable(nullable = true, valueRangeProviderRefs = {"bedRange"},
        strengthComparatorClass = BedStrengthComparator.class)
public Bed getBed() {
    return bed;
}
我还尝试只使用一个MoveListFactory,它返回一个空的MoveList。但还是有像这样的动作

2017-03-14 19:40:59,305 [SwingWorker-pool-4-thread-1] DEBUG     CH step (31), time spent (173), score (0hard/0medium/0soft), selected move count (7), picked move (Patient6(Night(7),null) {null -> 15(0)})

在构造启发式阶段选择的属性。

@PlanningEntity

@PlanningEntity(movableEntitySelectionFilter = MovableLectureSelectionFilter.class, ...)
public class Lecture ...

你能发布相关代码吗?我怀疑未应用您的筛选。有关详细信息,请参阅我的编辑。缺少规划实体类代码。我添加了(我希望是相关的)规划实体代码。
2017-03-14 19:40:59,305 [SwingWorker-pool-4-thread-1] DEBUG     CH step (31), time spent (173), score (0hard/0medium/0soft), selected move count (7), picked move (Patient6(Night(7),null) {null -> 15(0)})
@PlanningEntity(movableEntitySelectionFilter = MovableLectureSelectionFilter.class, ...)
public class Lecture ...