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

如何在Google OR-Tools(SCIP)中找到解后终止所有线程?

解决SCIP求解器找到第一个可行解后立即终止的问题

你可以通过设置SCIP求解器的专属参数,让它在找到第一个可行解后立刻终止所有线程,无需依赖时间限制。具体操作如下:

核心方案

利用SCIP的limits/solutions参数,指定找到的可行解数量达到1时就停止求解。同时可配合focus/focusnode参数让求解器优先聚焦于寻找可行解,加快触发终止的速度。

完整代码示例

from ortools.linear_solver import pywraplp

# 初始化SCIP求解器
solver = pywraplp.Solver("assignment", pywraplp.Solver.SCIP_MIXED_INTEGER_PROGRAMMING)
# 设置多线程数
solver.SetNumThreads(4)

# 设置找到1个可行解后立即终止
solver.SetSolverSpecificParameters("limits/solutions = 1")
# 可选:让求解器优先聚焦寻找可行解,加速找到第一个解
solver.SetSolverSpecificParameters("focus/focusnode = 1")

# --- 此处添加你的变量、约束、目标函数定义代码 ---

# 执行求解
status = solver.Solve()

# 根据求解状态处理结果
if status == pywraplp.Solver.FEASIBLE:
    print("已找到可行解")
    # 编写解的处理逻辑
elif status == pywraplp.Solver.OPTIMAL:
    print("已找到最优解")
    # 编写解的处理逻辑
else:
    print("未找到可行解")

参数说明

  • limits/solutions = 1:SCIP的核心终止参数,当求解器找到1个可行解时,会立即停止所有线程的求解过程,不管是否存在更优解。
  • focus/focusnode = 1:辅助参数,让求解器优先投入资源寻找第一个可行解,而非一开始就尝试优化目标值,能更快触发终止条件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:01:39