【问题标题】:IncrementalScore produces unfeasible solution in Optaplanner增量分数在 Optaplanner 中产生不可行的解决方案
【发布时间】:2014-12-20 07:57:48
【问题描述】:

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

我已经初始化了一个 IncrementalScore 来解决我的运行时问题,但是有些东西不能正常工作,我无法找到原因。 (带调试、system.out...等...)

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

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

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

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

【问题讨论】:

    标签: java optimization optaplanner scoring drools-planner


    【解决方案1】:

    请参阅手册中的“5.3.6. 无效分数检测”一章,了解简单和增量分数计算何时不同步。

    <environmentMode>FULL_ASSERT</environmentMode>
    ...
    <scoreDirectorFactory>
      <scoreDefinitionType>...</scoreDefinitionType>
      <incrementalScoreCalculatorClass>...IncrementalScoreCalculator</incrementalScoreCalculatorClass>
      <assertionScoreDirectorFactory>
        <easyScoreCalculatorClass>...EasyScoreCalculator</easyScoreCalculatorClass>
      </assertionScoreDirectorFactory>
    </scoreDirectorFactory>
    

    然后将两个实现中的约束类型注释为零,以不同方式实现的约束。看起来这是您计算无效的硬约束之一。

    【讨论】:

      猜你喜欢
      • 2023-03-18
      • 2022-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-11
      相关资源
      最近更新 更多