You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将现有系统的求解结果作为Optaplanner的规划起始输入

完全可以实现,Optaplanner原生支持导入外部生成的可行解作为求解起始点,不需要依赖重复规划相关能力,具体操作步骤如下:

步骤1:构造符合规范的初始解对象

把现有系统输出的最优结果,逐字段映射到你定义的@PlanningSolution类对应属性中,需要保证:

  • 所有标注@PlanningEntity的实体集合、@ProblemFactCollectionProperty标注的问题事实赋值完整
  • 所有规划变量的取值和现有系统的输出完全对齐
  • 优先保证构造的初始解为可行解:即满足Optaplanner约束定义中的所有硬约束,若存在硬约束不满足的情况,Optaplanner默认会先进入构造启发式阶段修复不可行性,不会直接以传入解为起点运行元启发式迭代。

步骤2:关闭默认构造启发式阶段

Optaplanner默认会自动运行构造启发式阶段生成初始解,你需要手动关闭该阶段:

  • XML配置示例:
<solver xmlns="https://www.optaplanner.org/xsd/solver" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="https://www.optaplanner.org/xsd/solver https://www.optaplanner.org/xsd/solver/optaplanner-solver-8.38.xsd">
  <!-- 保留其他常规求解配置 -->
  <constructionHeuristic>
    <enabled>false</enabled>
  </constructionHeuristic>
  <!-- 正常配置你需要的元启发式算法阶段,比如本地搜索、禁忌搜索等 -->
  <localSearch>
    <!-- 元启发式参数配置 -->
  </localSearch>
</solver>
  • Java代码配置示例:
SolverConfig solverConfig = new SolverConfig()
  .withConstructionHeuristicPhaseConfig(new ConstructionHeuristicPhaseConfig().withEnabled(false))
  // 其他求解配置、元启发式阶段配置
  ;

如果是通过Quarkus、Spring Boot Starter集成Optaplanner,仅需对应修改求解器配置文件即可,逻辑完全一致。

步骤3:传入初始解启动求解

直接把你构造完成的@PlanningSolution实例传入Solver.solve()方法,Optaplanner会自动跳过构造启发式阶段,直接以该解为起点运行后续的元启发式迭代优化。

如果现有系统输出的解无法保证全量满足硬约束,也可以额外配置忽略初始解不可行性校验,直接启动元启发式迭代,不过该场景下前期迭代会优先修复硬约束,整体优化效率会略低。

内容的提问来源于stack exchange,提问作者sindeaf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 23:51:01