我有一个用
@PlanningVariable(nullable = true)
注释的计划变量。我正在使用穷举搜索(强力),因为这是用于单元测试,我需要确保每次结果都相同。
我打开了跟踪日志记录以查看搜索是如何发生的。
在 OptaPlanner 9.44.0 中,搜索的开头如下所示:
Move treeId (1-0), score (null), expandable (true), move ({null -> null}).
Move treeId (1-1), score (null), expandable (true), move ({null -> <something not null>}}).
Move treeId (1-2), score (null), expandable (true), move ({null -> <something not null>}).
Move treeId (1-3), score (null), expandable (true), move ({null -> <something not null>}}).
在 TimeFold 1.2.0 中,搜索的开始看起来像这样:
Move (... {null -> null}) filtered out by a selection filter (Doable moves only).
Move treeId (1-0), score (null), expandable (true), move (... {null -> <something not null>}).
Move treeId (1-1), score (null), expandable (true), move (... {null -> <something not null>}).
Move treeId (1-2), score (null), expandable (true), move (... {null -> <something not null>}).
不同的是,TimeFold 中过滤掉了空赋值。
我需要将 null 作为搜索的一部分。我没有定义任何选择过滤器——这只是默认行为。如何让 null 包含在搜索中?或者也许我误解了输出的含义? (但肯定是在 OptaPlanner 中通过的一堆测试在 TimeFold 中失败了。)