Drools Planner:计划员未根据最佳分数提供预期结果

Drools Planner:计划员未根据最佳分数提供预期结果,drools,drools-planner,Drools,Drools Planner,我曾尝试在用户论坛上发布Drools,但没有得到任何回应(我确信他们很忙),所以我希望在这里吸引更多的观众 我对我得到的结果感到非常困惑,因为他们似乎没有给我提供“最佳分数”。以下是一些日志输出: [construction steps] 2013-03-13 08:00:08,305 [com....] INFO Phase constructionHeuristic ended: step total (60), time spend (2222), best score (-200ha

我曾尝试在用户论坛上发布Drools,但没有得到任何回应(我确信他们很忙),所以我希望在这里吸引更多的观众

我对我得到的结果感到非常困惑,因为他们似乎没有给我提供“最佳分数”。以下是一些日志输出:

[construction steps] 
2013-03-13 08:00:08,305 [com....] INFO  Phase constructionHeuristic ended: step total (60), time spend (2222), best score (-200hard/-2780soft). 
[local search steps] 
2013-03-13 08:00:21,807 [com....] INFO  Phase localSearch ended: step total (42), time spend (15724), best score (0hard/-2495soft). 
2013-03-13 08:00:21,807 [com....] INFO  Solving ended: time spend (15724), best score (0hard/-2495soft), average calculate count per second (3748). 
但是,它返回的结果包含一个不完整的硬约束(即使日志清楚地指出“解决结束:时间花费(15724)、最佳分数(0hard/-2495soft)”)-它给我的结果分数为-200hard/-2495soft(似乎是构建阶段的硬分数和本地搜索阶段的软分数)。应该是这样吗?我是否遗漏了手册中的内容(我已经读过,但还没有完全理解)

以下是我的大部分解算器配置(只是可能相关的部分):


最有可能的是,您的cloneSolution()方法已损坏(或者它调用的entity.clone()方法已损坏)。仔细检查这些方法


这是我们的建议。看起来它没有在邮件列表中出现,这是因为那些不可靠的东西。我们正在寻找消除这些障碍。感谢Geoffrey,我将尝试修复我的克隆方法并报告结果。我已经看过几篇关于6.0的博客文章,并期待它的发布(一旦发布,我将尝试beta版)。杰弗里,我确实在我的解决方案和solutionEquals/solutionHashCode中发现了equals/hashCode的一个小问题-我已经修复了它,但仍然没有解决问题。我发现规划实体上的克隆和克隆解决方案()都没有问题。你能想到其他可能导致问题的原因吗?Geoffrey,我在上面添加了一个编辑,显示作为结果提供的解决方案包含硬约束冲突。。。我很困惑为什么它似乎没有给我基于分数的“最佳”解决方案。@PaulP1975它应该给你基于分数的“最佳”解决方案,所以这显然是个问题。我很有信心它不在Planner中(除非被证明不是这样)。要尝试的几件事:启用environmentMode FULL_ASSERT(参见文档)。如果它没有崩溃,请再次关闭它并调试BestSolutionRecaller.in 5.5.x FULL_断言仍然称为跟踪
<termination>
        <terminationCompositionStyle>OR</terminationCompositionStyle>
        <maximumSecondsSpend>60</maximumSecondsSpend>
        <scoreAttained>0hard/0soft</scoreAttained>
</termination>

<constructionHeuristic>
        <constructionHeuristicType>FIRST_FIT_DECREASING</constructionHeuristicType>
    <constructionHeuristicPickEarlyType>FIRST_LAST_STEP_SCORE_EQUAL_OR_IMPROVING</constructionHeuristicPickEarlyType>  
</constructionHeuristic>

<localSearch>
        <termination>
                <terminationCompositionStyle>OR</terminationCompositionStyle>
                <maximumUnimprovedStepCount>20</maximumUnimprovedStepCount>
                <scoreAttained>0hard/0soft</scoreAttained>
        </termination>
        <unionMoveSelector>
            <changeMoveSelector>
              <entitySelector>
                <entityFilterClass>com.....RequiredTypeEntityFilter</entityFilterClass>
              </entitySelector>
            </changeMoveSelector>
            <swapMoveSelector>
              <entitySelector>
                <entityFilterClass>com.....RequiredTypeEntityFilter</entityFilterClass>
              </entitySelector>
            </swapMoveSelector>
        </unionMoveSelector>
        <acceptor>
              <solutionTabuSize>1000</solutionTabuSize>
              <planningEntityTabuSize>7</planningEntityTabuSize>
        </acceptor>
        <forager>
                <minimalAcceptedSelection>1000</minimalAcceptedSelection>
        </forager>
</localSearch>
ConstraintType: NEGATIVE_HARD, RuleID: endLocationMustMatchStartLocation, Causes:...