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