我是OptaPlanner的新手,在配置解决方案方面有一些困难。我已经正确地分配了所有类,但是当解算器运行时我收到以下错误。
A planning entity is an instance of a entitySubclass (class
org.optaplanner.core.impl.score.director.drools.DroolsScoreDirector) that is not
configured as a planning entity.
If that class (DroolsScoreDirector) (or superclass thereof) is not a entityClass
([...Part]), check your Solution implementation's annotated methods.
If it is, check your solver configuration
这是我目前正在使用的xml配置。
<?xml version="1.0" encoding="UTF-8"?>
<solver>
<solutionClass>(package name).SheetNesting</solutionClass>
<planningEntityClass>(package name).Part</planningEntityClass>
<scoreDirectorFactory>
<scoreDefinitionType>HARD_SOFT</scoreDefinitionType>
<scoreDrl>/Resources/Drools/NestingRules.drl</scoreDrl>
</scoreDirectorFactory>
<termination>
<maximumSecondsSpend>500</maximumSecondsSpend>
</termination>
<constructionHeuristic>
<constructionHeuristicType>FIRST_FIT_DECREASING</constructionHeuristicType>
</constructionHeuristic>
<localSearch>
<unionMoveSelector>
<changeMoveSelector>
<valueSelector>
<variableName>sheet</variableName>
</valueSelector>
</changeMoveSelector>
<moveListFactory>
<moveListFactoryClass>(package name).XPosMoveFactory</moveListFactoryClass>
</moveListFactory>
<moveListFactory>
<moveListFactoryClass>(package name).YPosMoveFactory</moveListFactoryClass>
</moveListFactory>
</unionMoveSelector>
<acceptor>
<lateAcceptanceSize>600</lateAcceptanceSize>
</acceptor>
<forager>
<acceptedCountLimit>4</acceptedCountLimit>
</forager>
</localSearch>
</solver>
输出显示解决方案建立(可能评估阶段(0)但随后抛出错误。任何帮助将不胜感激。
*编辑 首先感谢您的意见。 Part类的定义如下
@PlanningEntity(difficultyComparatorClass = PartComparator.class)
public class Part
{
....
@PlanningVariable(valueRangeProviderRefs = {"sheetRange"})
public Sheet getSheet()
{
....
}
@PlanningVariable(valueRangeProviderRefs = {"xPosRange"})
public double getXCenter()
{
....
}
@PlanningVariable(valueRangeProviderRefs = {"yPosRange"})
public double getYCenter()
{
....
}
}
如您所见,该类已完全注释。这就是为什么我认为这个问题与配置有关。
答案 0 :(得分:1)
似乎错误它告诉你你的(包名).Part类没有使用@PlanningEntity和@PlanningVariable注释,如文档中所述: http://docs.jboss.org/drools/release/6.0.1.Final/optaplanner-docs/html_single/index.html#planningEntity
如果您的课程已正确注释,请在您的问题中与我们分享。
答案 1 :(得分:0)
该问题的错误消息有点误导。但是,这是准确的。问题是由配置的一个组成部分引起的,并且是我的完全疏忽。
自定义移动方法将得分导向器传递给beforeVariableChanged(对象,字符串)方法,而不是Part类。
感谢您的帮助。