根据文档
计划器将自动将null值添加到值范围
我在VariableListener中打印出计划变量,某些空值将分配给计划变量。
就我而言,我尝试从“值选择”中过滤空值。 我尝试对valueSelector使用过滤器类来过滤空值。参考:https://docs.optaplanner.org/7.12.0.Final/optaplanner-docs/html_single/index.html#filteredValueSelection 但是不能调用BUT过滤器类。实体选择的过滤器类工作正常。
还有另一种方法可以从默认值范围中删除空值,或者如何为值选择创建过滤器?
代码:
public class NumberSelectionFilter implements SelectionFilter<BoxAssignment,Integer> {
@Override
public boolean accept(ScoreDirector<BoxAssignment> scoreDirector, Integer number) {
System.out.println("print out filter");
return true;
}
}
xml配置:
<localSearch>
<unionMoveSelector>
<changeMoveSelector>
<valueSelector>
<filterClass>org.optaplanner.examples.box.domain.solver.NumberSelectionFilter</filterClass>
</valueSelector>
</changeMoveSelector>
</unionMoveSelector>
</localSearch>