OptaPlanner:ValueSelector中的FilterClass配置

时间:2014-11-06 08:13:21

标签: optaplanner drools-planner

我正在使用OptaPlanner 6.1.0.Final。当我尝试在ValueSelector配置中使用FilterClass时,我遇到了这个异常:

引起:com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter $ UnknownFieldException:没有这样的字段org.optaplanner.core.config.heuristic.selector.value.ValueSelectorConfig.filterClass

根据OptaPlanner文档(在7.2.4。过滤选择中),FilterClass也应该在ValueSelector上工作。

...apply it on a lower levels, such as a filterClass on the entitySelector or valueSelector:

 <changeMoveSelector>
  <entitySelector>
    <filterClass>...EntityFilter</filterClass>
  </entitySelector>
</changeMoveSelector>

这是规划师的错误吗?或者任何其他方式为Planning Variables提供Filtering类? 提前感谢您的时间和建议。

以下是我的配置:

<changeMoveSelector>
                <entitySelector mimicSelectorRef="placerEntitySelector">
                </entitySelector>
                <valueSelector>
                    <variableName>room</variableName>
                    <cacheType>PHASE</cacheType>
                    <selectionOrder>SORTED</selectionOrder>
      <filterClass>..SelectionFilter</filterClass>
                    </valueSelector>
            </changeMoveSelector>

1 个答案:

答案 0 :(得分:0)

<valueSelector>尚不支持过滤器(请参阅TODO ValueSelectorConfig.java)。这是否有用是值得商榷的:如果你有一个好的用例,请分享。

请注意,周围的<moveSelector>支持过滤。在这种情况下,你要过滤移动(在这种情况下为ChangeMove),而不是值 - 所以有更多信息,即实体和值,而不仅仅是值。