2014-11-07 2 views
0

Я использую конфигурацию MoveSelector в ConstructionHeuristic Phase. Он отлично работает с настройкой filterClass и comparatorClass в EntitySelector.OptaPlanner: ValueSelector не может использовать ValueRangeType.FROM_PLANNING_ENTITY_PROPERTY

Однако в сеансе ValueSelector я не могу использовать переменную планирования ValueRangeType.FROM_PLANNING_ENTITY_PROPERTY. Это бросает это исключение: java.lang.IllegalArgumentException: valueSelectorConfig (ValueSelectorConfig (строка)) с resolvedCacheType (фаза) и resolvedSelectionOrder (отсортированный) должно быть основано на EntityIndependentValueSelector (FromEntityPropertyValueSelector (строка)). Проверьте аннотации @ValueRangeProvider.

Пример NQueen Config: ...

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

....

** Мне нужно использовать valueRange зависит от моего планирования Entity, чтобы использовать PossibleRowList для каждой королевы (для ради производительности) Любое предложение пожалуйста? Заранее спасибо.

+0

«ValueRangeType.FROM_PLANNING_ENTITY_PROPERTY» - это optaplanner 6.0 IIRC, вы можете обновить до 6.1 или 6.2, просто следуйте [рецепту обновления] (https://github.com/droolsjbpm/optaplanner/blob/master/optaplanner-distribution /src/main/assembly/filtered-resources/UpgradeFromPreviousVersionRecipe.txt) –

ответ

0

Это значениеSelector SORTED, поэтому его необходимо кэшировать (чтобы иметь возможность сортировать их). Но кеширование с помощью @ValueRangeProvider для каждого объекта не поддерживается, если я правильно помню.

Это означает, что CH с @ValueRangeProvider на объект поддерживает только FIRST_FIT и FIRST_FIT_DECREASING, но не WEAKEST_FIT или STRONGEST_FIT. Я считаю, что для этого уже есть джира (свяжи его здесь, если найдешь). Мы должны это исправить.

Между тем: обходным решением было бы не использовать SORTED, но уже сортировать их в списке диапазонов значений каждого объекта.

Смежные вопросы