0

我在 ConstructionHeuristic 阶段使用 MoveSelector 配置。它适用于在 EntitySelector 中配置 filterClass 和 compareClass。

但是,在 ValueSelector 会话中,我无法使用“ValueRangeType.FROM_PLANNING_ENTITY_PROPERTY”计划变量。它抛出这个异常: java.lang.IllegalArgumentException : 具有resolvedCacheType (PHASE) 和resolvedSelectionOrder (SORTED) 的valueSelectorConfig (ValueSelectorConfig(row)) 需要基于EntityIndependentValueSelector (FromEntityPropertyValueSelector(row))。检查您的 @ValueRangeProvider 注释。

示例 NQueen 配置:...

<changeMoveSelector>
    <entitySelector mimicSelectorRef="placerEntitySelector">
    </entitySelector>
    <valueSelector>
       <variableName>row</variableName>
       <cacheType>PHASE</cacheType>
       <selectionOrder>SORTED</selectionOrder>
       <sorterComparatorClass>..RowWeightStrength</sorterComparatorClass>
    </valueSelector>
</changeMoveSelector>

……

** 我需要使用 valueRange 取决于我的计划实体,以便为每个 Queen 使用 PossibleRowList(为了性能)有什么建议吗?提前致谢。

4

1 回答 1

0

该 valueSelector 已排序,因此需要缓存(以便能够对它们进行排序)。但是,如果我没记错的话,不支持每个实体使用 @ValueRangeProvider 进行缓存。

这意味着每个实体具有 @ValueRangeProvider 的 CH 仅支持 FIRST_FIT 和 FIRST_FIT_DECREASING,但不支持 WEAKEST_FIT 或 STRONGEST_FIT。我相信已经有一个 jira(如果你找到它,请在此处链接)。我们需要解决这个问题。

同时:一种解决方法是不使用 SORTED,但已经在每个实体的值范围列表中对它们进行了排序。

于 2014-11-07T17:10:35.823 回答