Java IncrementalScore在Optaplanner中生成不可行的解决方案

Java IncrementalScore在Optaplanner中生成不可行的解决方案,java,optimization,optaplanner,scoring,drools-planner,Java,Optimization,Optaplanner,Scoring,Drools Planner,我仍在使用OptaPlanner优化一个链式规划问题,该问题类似于VehiclerRoutingExample。我的规划实体有一个规划变量,它是另一个规划实体。分数是硬分数 我已经初始化了一个IncrementalCore来解决我的运行时问题,但是有些东西不正常,我无法找到原因。(带调试、系统输出等) 问题是,解算器没有使用IncrementalScore为我的测试数据集创建可行的解决方案。我知道找到可行的解决方案是可能的,因为解算器用我的EasyScore创建了一个 EasyScore创建的最

我仍在使用OptaPlanner优化一个链式规划问题,该问题类似于VehiclerRoutingExample。我的规划实体有一个规划变量,它是另一个规划实体。分数是硬分数

我已经初始化了一个IncrementalCore来解决我的运行时问题,但是有些东西不正常,我无法找到原因。(带调试、系统输出等)

问题是,解算器没有使用IncrementalScore为我的测试数据集创建可行的解决方案。我知道找到可行的解决方案是可能的,因为解算器用我的EasyScore创建了一个

EasyScore创建的最佳解决方案给了我分数:(0hard/-151763soft)当IncrementalCore求解时,我得到一些奇怪的值

由solver.getBestsolution().getScore()给出的分数是(-25hard/-20711soft),当我实例化一个额外的IncrementalCoreCalculator并让它计算最佳解决方案的分数时,我得到的值是(-34hard/-20711soft)。我检查了解决方案,发现第一个值是错误的,但第二个值是“正确的”(但不可行)

有人知道错误在哪里吗?或者是否有其他方法可以找到原因?

在手册中,请参阅“5.3.6.无效分数检测”一章,以了解轻松和增量分数计算何时不同步

<environmentMode>FULL_ASSERT</environmentMode>
...
<scoreDirectorFactory>
  <scoreDefinitionType>...</scoreDefinitionType>
  <incrementalScoreCalculatorClass>...IncrementalScoreCalculator</incrementalScoreCalculatorClass>
  <assertionScoreDirectorFactory>
    <easyScoreCalculatorClass>...EasyScoreCalculator</easyScoreCalculatorClass>
  </assertionScoreDirectorFactory>
</scoreDirectorFactory>
FULL\u断言
...
...
…增量Core计算器
…EasyScore计算器
然后注释掉两个实现中的约束类型,将其归零到不同实现的约束上。看起来这是你的一个硬约束,计算无效