0

ConstructionHeuristic フェーズで MoveSelector 構成を使用しています。EntitySelector で filterClass と comparisonClass を構成すると問題なく動作します。

ただし、ValueSelector セッションでは、「ValueRangeType.FROM_PLANNING_ENTITY_PROPERTY」計画変数を使用できません。この例外がスローされます: java.lang.IllegalArgumentException : resolveCacheType (PHASE) および resolveSelectionOrder (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>

....

** クイーンごとにPossibleRowListを使用するには、計画エンティティに応じてvalueRangeを使用する必要があります(パフォーマンス上の理由から)何か提案はありますか? 前もって感謝します。

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 に答える