将 Optaplanner 升级到 8.25+ 会导致性能非常慢

问题描述 投票:0回答:1

过了一段时间,我又开始做一个使用 Optaplanner 8.20 的副项目了。

由于我们现在处于 V8.42(或带有 quakus 3/java17 的 9.42),我尝试将应用程序升级到最新版本(我很想使用 quarkus 3),但遇到了多个问题。

其中之一是导致性能大幅下降。

特定数据集上的计算分数过去是这样的(optaplanner v8.24.1.Final):

2023-08-10 15:28:44,678 INFO  [io.fde.pla.bac.sol.ser.sch.SolverService] (executor-thread-0) running schedule problem febd43c7-54ae-4a9e-aea6-05e52ef8a175
2023-08-10 15:28:44,781 INFO  [org.opt.cor.imp.sol.DefaultSolver] (pool-10-thread-1) Solving started: time spent (92), best score (-2544hard/-1116medium/0soft), environment mode (REPRODUCIBLE), move thread count (NONE), random (JDK with seed 0).
2023-08-10 15:28:47,842 INFO  [org.opt.cor.imp.con.DefaultConstructionHeuristicPhase] (pool-10-thread-1) Construction Heuristic phase (0) ended: time spent (3153), best score (-1569hard/-682medium/-2314921soft), score calculation speed (25529/sec), step total (1116).
2023-08-10 15:28:47,843 INFO  [io ... thread-1)) -1569hard/-682medium/-2314921soft
2023-08-10 15:28:48,210 INFO  [io ... thread-1) -1520hard/-698medium/-2266062soft
2023-08-10 15:28:50,369 INFO  [io ... thread-1) -1201hard/-762medium/-2057769soft
2023-08-10 15:28:52,706 INFO  [io ... thread-1) -904hard/-808medium/-1914728soft
2023-08-10 15:28:55,170 INFO  [io ... thread-1) -685hard/-818medium/-2005894soft
2023-08-10 15:28:56,964 INFO  [io ... thread-1) -567hard/-827medium/-1899323soft
2023-08-10 15:28:58,717 INFO  [io ... thread-1) -485hard/-831medium/-2032438soft
2023-08-10 15:29:00,482 INFO  [io ... thread-1) -409hard/-833medium/-1994180soft
2023-08-10 15:29:02,220 INFO  [io ... thread-1) -350hard/-830medium/-1949107soft
2023-08-10 15:29:03,913 INFO  [io ... thread-1) -303hard/-831medium/-1908639soft
2023-08-10 15:29:05,689 INFO  [io ... thread-1) -263hard/-835medium/-1944460soft
2023-08-10 15:29:07,442 INFO  [io ... thread-1) -210hard/-836medium/-2005530soft
2023-08-10 15:29:09,693 INFO  [io ... thread-1) -186hard/-833medium/-1966828soft
2023-08-10 15:29:11,538 INFO  [io ... thread-1) -155hard/-833medium/-1953647soft
2023-08-10 15:29:13,601 INFO  [io ... thread-1) -139hard/-826medium/-2065612soft
2023-08-10 15:29:15,684 INFO  [io ... thread-1) -120hard/-829medium/-2059968soft
2023-08-10 15:29:17,603 INFO  [io ... thread-1) -106hard/-840medium/-1835454soft
2023-08-10 15:29:19,450 INFO  [io ... thread-1) -96hard/-823medium/-2125307soft
...

升级到 8.25(或更高版本,例如我尝试使用 8.42)后,我得到了:

    2023-08-10 15:31:17,032 INFO  [io.fde.pla.bac.sol.ser.sch.SolverService] (executor-thread-0) running schedule problem a164dcde-393f-42e2-a2e3-c19b967b12f5
    2023-08-10 15:31:17,140 INFO  [org.opt.cor.imp.sol.DefaultSolver] (pool-10-thread-1) Solving started: time spent (96), best score (-2544hard/-1116medium/0soft), environment mode (REPRODUCIBLE), move thread count (NONE), random (JDK with seed 0).
    2023-08-10 15:31:20,343 INFO  [org.opt.cor.imp.con.DefaultConstructionHeuristicPhase] (pool-10-thread-1) Construction Heuristic phase (0) ended: time spent (3298), best score (-1569hard/-682medium/-2314921soft), score calculation speed (24405/sec), step total (1116).
    2023-08-10 15:31:20,343 INFO  [io ... thread-1) -1569hard/-682medium/-2314921soft
    2023-08-10 15:31:20,856 INFO  [io ... thread-1) -1569hard/-682medium/-2314603soft
    2023-08-10 15:31:23,609 INFO  [io ... thread-1) -1569hard/-682medium/-2307795soft
    2023-08-10 15:31:25,961 INFO  [io ... thread-1) -1569hard/-682medium/-2303770soft
    2023-08-10 15:31:28,604 INFO  [io ... thread-1) -1569hard/-682medium/-2301149soft
    2023-08-10 15:31:32,712 INFO  [io ... thread-1) -1569hard/-682medium/-2301060soft
    2023-08-10 15:31:35,349 INFO  [io ... thread-1) -1569hard/-682medium/-2296655soft
    2023-08-10 15:31:38,208 INFO  [io ... thread-1) -1569hard/-681medium/-2313953soft
    2023-08-10 15:31:51,813 INFO  [io ... thread-1) -1569hard/-680medium/-2351427soft
    2023-08-10 15:32:17,974 INFO  [io ... thread-1) -1569hard/-679medium/-2550884soft
    2023-08-10 15:32:20,601 INFO  [io ... thread-1) -1569hard/-679medium/-2545967soft
    2023-08-10 15:32:23,293 INFO  [io ... thread-1) -1569hard/-679medium/-2535134soft
    2023-08-10 15:32:45,319 INFO  [io ... thread-1) -1569hard/-678medium/-2607937soft
    2023-08-10 15:32:48,158 INFO  [io ... thread-1) -1569hard/-678medium/-2600937soft
    2023-08-10 15:32:50,932 INFO  [io ... thread-1) -1569hard/-678medium/-2578577soft
    2023-08-10 15:33:47,104 INFO  [io ... thread-1) -1569hard/-678medium/-2543732soft
    2023-08-10 15:33:53,129 INFO  [io ... thread-1) -1569hard/-678medium/-2542668soft
...

我找不到有关 8.25 optaplanner 版本的任何更改日志。

您知道从哪里开始看吗?

我想这与求解器尝试优化问题所使用的方法有关,但是......我不能说为什么。

我正在考虑迁移到 timefold 1.0,但我需要首先在我的应用程序上修复这个主要的性能下降问题

quarkus optaplanner timefold
1个回答
0
投票

来自您之前的日志:

2023-08-10 15:28:47,842 INFO  [org.opt.cor.imp.con.DefaultConstructionHeuristicPhase] (pool-10-thread-1) Construction Heuristic phase (0) ended: ..., score calculation speed (25529/sec), ...

来自您的后续日志:

2023-08-10 15:31:20,343 INFO  [org.opt.cor.imp.con.DefaultConstructionHeuristicPhase] (pool-10-thread-1) Construction Heuristic phase (0) ended: ... score calculation speed (24405/sec) ...

这2个分数计算速度相似。您是否发现“解决结束”的分数计算速度有差异?

需要检查的事项:

  • 环境模式(可重复)正如您的“解算器已启动”日志所示,效果良好。如果其中之一使用 FAST_ASSERT 或 FULL_ASSERT,那么就会人为地变慢。
  • 日志级别应该是信息(或者可能是调试)。不踪迹。对于 org.optaplanner、org.drools 和 org.kie。
  • 事实上,你那里有一堆 System.out 也可能 放慢解决速度。

要做的事情:

  • 尝试 optaplanner 8.38。我还没有尝试过 8.42,drools 的变化对 optaplanner 每月发布的 automatic 版本产生性能影响并不是不可理解的。

  • 尝试时间折叠 0.8 或 1.0。 运行这些指令需要 2 分钟。 它不使用 drools,并且团队已经验证了每个版本的质量。 Timefold 开箱即用比 OptaPlanner 快得多。

© www.soinside.com 2019 - 2024. All rights reserved.