1

我正在使用 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. Filtered selection 中),FilterClass 也应该适用于 ValueSelector。

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

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

这是 Planner 上的错误吗?或任何其他方式为计划变量提供过滤类?提前感谢您的时间和建议。

下面是我的配置:

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

1 回答 1

0

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

请注意,周围<moveSelector>确实支持过滤。在这种情况下,您正在过滤移动(ChangeMove在这种情况下为 a),而不是值 - 因此有更多信息,即实体和值,而不仅仅是值。

于 2014-11-06T15:34:06.617 回答