optaplanner drools得分腐败

时间:2015-11-12 06:52:12

标签: constraints drools optaplanner scoring

我有一个简化的drools文件,对于过度约束的问题有严格的约束条件;我将计划变量注释为nullable = true。在解决开始,本地搜索和解决结束时,最好的分数是0hard / 0medium / 0soft。但是,当我打印出规划实体及其值以获得最佳解决方案时,存在严格的约束违规行为。这是我的硬约束(总结):

when 
    Task (interval!=null, $interval1 : interval, $id : id)
    Task (interval!=null, $interval2 : interval, id > $id, ..., interval.getOverlap($interval1))

then
    scoreHolder.addHardConstraintMatch(kcontext,-1 *$interval1.getOverlap($interval2));

在更复杂的规则集中,我有中等约束,可以降低任何具有空间隔的任务的分数。

我已经在这里阅读了几个评分损坏线程,并且相信它更有可能是我的实现问题,而不是optaplanner / drools错误。我试过了:

  1. 将规则缩减为一个硬约束
  2. 启用TRACE记录
  3. 启用FULL_ASSERT
  4. 基准
  5. 我正在寻找更多的故障排除方法。

    问题2:我看到很多不可行的动作,如下所示。我没有任何自定义动作,也无法确定为什么这些动作不可行。该文档指出,不可行的移动的两个原因是1)解决方案没有变化(显然不是每个对象id的情况和我在toString()中打印的值)或2)这是不可能的移动 - 我不知道#39; t有一个自定义isDoable所以我不知道那是怎么回事。

    2015-11-11 22:48:42,143 [main] TRACE         Move index (0) not doable, ignoring move (...Task@26b1a589@ {132865 3754 3766 20724} <-> ...Task@7b7a17ed@ {44312 27525 27542 19090}).
    

    除了强度和难度比较器之外,只有真正自定义的代码我才能在规划实体类值范围提供程序中返回特定于该实体的所有可能规划值的子集。

    使用Optaplanner 6.3 / Drools 6.3

    我将计划变量注释设为nullable = false,并且无法理解在违反两种硬约束的情况下最佳得分如何为0/0/0。

    2015-11-13 21:35:17,269 [main] INFO  Solving started: time spent (305), best score (uninitialized/0hard/-2795medium/0soft), environment mode (REPRODUCIBLE), random (WELL44497B with seed 4409383736).
    2015-11-13 21:35:21,458 [main] INFO  Construction Heuristic phase (0) ended: step total (559), time spent (4496), best score (0hard/0medium/0soft).
    2015-11-13 21:35:26,962 [main] INFO  Local Search phase (1) ended: step total (5106), time spent (10000), best score (0hard/0medium/0soft).
    2015-11-13 21:35:26,962 [main] INFO  Solving ended: time spent (10000), best score (0hard/0medium/0soft), average calculate count per second (3271), environment mode (REPRODUCIBLE).
    

    我从计划解算器配置中删除了ONLY_DOWN并且更改了评分,但我仍然看到0表示硬约束,尽管在最佳解决方案中出现了一些硬约束。 E.g:

    2015-11-15 13:54:49,058 [main] INFO  Solving started: time spent (352), best score (uninitialized/0hard/-1095medium/0soft), environment mode (REPRODUCIBLE), random (WELL44497B with seed 4409383736).
    2015-11-15 13:55:07,634 [main] INFO  Construction Heuristic phase (0) ended: step total (219), time spent (18930), best score (0hard/0medium/-5052665soft).
    2015-11-15 13:55:18,704 [main] INFO  Local Search phase (1) ended: step total (5862), time spent (30000), best score (0hard/0medium/-4958070soft).
    2015-11-15 13:55:18,704 [main] INFO  Solving ended: time spent (30000), best score (0hard/0medium/-4958070soft), average calculate count per second (11905), environment mode (REPRODUCIBLE).
    

0 个答案:

没有答案