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

OptaPlanner 7.24.0能否分阶段设置线程数:构造启发式单线程、局部搜索多线程?

OptaPlanner 7.24.0 分阶段线程数配置方案

在OptaPlanner 7.24.0中,完全可以实现构造启发式单线程、局部搜索多线程的线程配置需求,以下是具体实现方式:

配置方式

1. XML配置文件方式

在Solver配置的<constructionHeuristic>标签中显式设置单线程,在<localSearch>标签中指定目标线程数(比如4线程):

<solver>
  <!-- 其他全局配置,如终止条件、评分器等 -->
  <constructionHeuristic>
    <threadCount>1</threadCount>
    <!-- 构造启发式的其他配置,比如算法类型选择等 -->
  </constructionHeuristic>
  <localSearch>
    <threadCount>4</threadCount>
    <!-- 局部搜索的其他配置,比如接受机制、邻域策略等 -->
  </localSearch>
</solver>

2. Java API方式

如果通过代码动态配置Solver,可分别为两个阶段单独设置线程数:

SolverFactory<YourSolution> solverFactory = SolverFactory.createFromXmlResource("yourSolverConfig.xml");
SolverConfig solverConfig = solverFactory.getSolverConfig();

// 配置构造启发式单线程
ConstructionHeuristicPhaseConfig chPhaseConfig = new ConstructionHeuristicPhaseConfig();
chPhaseConfig.setThreadCount(1);
// 可补充构造启发式的其他参数,如指定算法类型
// chPhaseConfig.setConstructionHeuristicType(ConstructionHeuristicType.FIRST_FIT);

// 配置局部搜索4线程
LocalSearchPhaseConfig lsPhaseConfig = new LocalSearchPhaseConfig();
lsPhaseConfig.setThreadCount(4);
// 可补充局部搜索的其他参数,如指定搜索类型
// lsPhaseConfig.setLocalSearchType(LocalSearchType.LATE_ACCEPTANCE);

solverConfig.setPhaseConfigList(Arrays.asList(chPhaseConfig, lsPhaseConfig));

Solver<YourSolution> solver = solverFactory.buildSolver();

关于构造启发式线程数影响结果的说明

构造启发式在多线程模式下,因线程执行顺序的不确定性,会导致每次生成的初始解存在差异,这是正常的多线程执行特性。而单线程模式下算法执行顺序固定,因此每次运行结果一致,与你的观察完全相符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:55:18