Конструкция Drools PlannerЭвристика java.lang.ClassCastException

Я попытался инициализировать решение с помощью Drools Planner 5.4.Final эвристического типа построения BEST_FIT.

<constructionHeuristic>
    <constructionHeuristicType>BEST_FIT</constructionHeuristicType>
</constructionHeuristic>

Во время оценки во время выполнения возникает следующая ошибка

java.lang.ClassCastException: org.drools.planner.config.constructionheuristic.ConstructionHeuristicSolverPhaseConfig cannot be cast to org.drools.planner.config.localsearch.LocalSearchSolverPhaseConfig

У кого-нибудь есть подсказки?

Спасибо

Это трассировка стека

com.thoughtworks.xstream.converters.ConversionException: Element constructionHeuristic of type org.drools.planner.config.constructionheuristic.ConstructionHeuristicSolverPhaseConfig is not defined as field in type org.drools.planner.config.localsearch.LocalSearchSolverPhaseConfig
---- Debugging information ----
class               : org.drools.planner.config.localsearch.LocalSearchSolverPhaseConfig
required-type       : org.drools.planner.config.localsearch.LocalSearchSolverPhaseConfig
converter-type      : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
line number         : 23
class[1]            : org.drools.planner.config.solver.SolverConfig
version             : null
-------------------------------
com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter: writeValueToImplicitCollection (line:399)
com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter: doUnmarshal (line:330)
com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter: unmarshal (line:230)
com.thoughtworks.xstream.core.TreeUnmarshaller: convert (line:72)
com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller: convert (line:65)
com.thoughtworks.xstream.core.TreeUnmarshaller: convertAnother (line:66)
com.thoughtworks.xstream.core.TreeUnmarshaller: convertAnother (line:50)
com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter: doUnmarshal (line:318)
com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter: unmarshal (line:230)
com.thoughtworks.xstream.core.TreeUnmarshaller: convert (line:72)
com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller: convert (line:65)
com.thoughtworks.xstream.core.TreeUnmarshaller: convertAnother (line:66)
com.thoughtworks.xstream.core.TreeUnmarshaller: convertAnother (line:50)
com.thoughtworks.xstream.core.TreeUnmarshaller: start (line:134)
com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy: unmarshal (line:32)
com.thoughtworks.xstream.XStream: unmarshal (line:1035)
com.thoughtworks.xstream.XStream: unmarshal (line:1019)
com.thoughtworks.xstream.XStream: fromXML (line:895)
org.drools.planner.config.XmlSolverFactory: configure (line:95)
org.drools.planner.config.XmlSolverFactory: configure (line:85)
org.drools.planner.config.XmlSolverFactory: configure (line:78)

person Tommaso Taruffi    schedule 03.10.2013    source источник
comment
Что такое полная трассировка стека? Кстати: действительно стоит обновиться до 5.5 (для JIT), а затем до 6.0 (для ускорения и т. д.). Просто следуйте рецепту обновления txt.   -  person Geoffrey De Smet    schedule 03.10.2013


Ответы (1)


Согласно трассировке стека, вы делаете что-то вроде

<solver>
  ...
  <localSearch>
    <constructionHeuristic>
       ...    
    </constructionHeuristic>
    ...
  </localSearch>
<solver>

в то время как это должно быть что-то вроде:

<solver>
  ...
  <constructionHeuristic>
    ...    
  </constructionHeuristic>
  <localSearch>
    ...
  </localSearch>
<solver>
person Geoffrey De Smet    schedule 03.10.2013
comment
Привет, спасибо за ваше предложение. Я прикрепил неправильную трассировку стека, потому что сделал несколько попыток. Проблема была (в моем коде) в этой строке: LocalSearchSolverPhaseConfig localSearchSolverPhaseConfig = (LocalSearchSolverPhaseConfig) configurer.getSolverConfig().getSolverPhaseConfigList().get(0); localSearchSolverPhaseConfig.getForagerConfig().setMinimalAcceptedSelection(options.getDepthSearch()); - person Tommaso Taruffi; 03.10.2013
comment
Потому что раньше в config.xml у меня была только одна фаза солвера. Я исправил свой код, но, к сожалению, в моей проблеме у меня есть 2 объекта планирования, а эвристика поддерживает только один: java.lang.UnsupportedOperationException: В настоящее время реализация greedyFit поддерживает только 1 PlanningEntityImplementationClass. - person Tommaso Taruffi; 03.10.2013
comment
@TommasoTaruffi Обновите до OptaPlanner (= Drools Planner) 6.0.0.CR4 или более поздней версии, которая поддерживает CH с несколькими объектами планирования. - person Geoffrey De Smet; 04.10.2013
comment
Следуйте рецепту обновления. - person Geoffrey De Smet; 04.10.2013