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

Python OR Tools调用SCIP求解MIP的可行解存储与终止条件设置问题

OR-Tools 搭配 SCIP 求解 MIP 问题操作指南

1、获取分支定界迭代过程中的中间可行解

要保存分支定界输出中标注*的局部最优可行解,可通过OR-Tools提供的求解器回调机制实现,在每次SCIP找到新的改进可行解时自动触发回调执行保存逻辑,示例代码如下:

from ortools.linear_solver import pywraplp

# 自定义回调类
class SaveIntermediateSolutionsCallback(pywraplp.SolverCallback):
    def __init__(self, solver, variables):
        super().__init__()
        self.solver = solver
        self.variables = variables
        # 用于存储所有中间可行解,可自行修改为落盘等逻辑
        self.intermediate_solutions = []
    
    def Run(self):
        # 监听「找到新原可行解」事件,对应输出中带*的解
        if self.Event() == pywraplp.Solver.BRANCHING_SOLUTION:
            current_obj = self.ObjectiveValue()
            current_var_vals = {var.name(): self.SolutionValue(var) for var in self.variables}
            self.intermediate_solutions.append({
                "objective_value": current_obj,
                "variable_values": current_var_vals
            })

# ------------- 调用示例 -------------
# 初始化SCIP求解器
solver = pywraplp.Solver.CreateSolver('SCIP')
# 此处省略你自己的建模逻辑(变量定义、约束添加、目标函数设置)
# ...

# 注册回调
all_vars = [你建模时定义的所有变量对象]
callback = SaveIntermediateSolutionsCallback(solver, all_vars)
solver.SetCallback(callback)

# 启动求解
status = solver.Solve()
# 求解结束后可直接读取所有中间解
print(callback.intermediate_solutions)

2、设置终止条件(%gap/运行时长)

两个终止条件可单独或同时配置,先触发的条件会优先结束求解,配置方法如下:

2.1 设置最长运行时长

调用求解器的SetTimeLimit方法即可,入参单位为毫秒,示例:

# 示例设置最长求解时间为1小时
solver.SetTimeLimit(3600 * 1000)

2.2 设置MIP gap阈值

可通过两种方式配置,效果一致:

  • 方式一:使用通用MIP参数配置
from ortools.linear_solver.pywraplp import MPSolverParameters

params = MPSolverParameters()
# 设置相对gap为1%,即上下界差距小于1%时终止
params.SetDoubleParam(MPSolverParameters.RELATIVE_MIP_GAP, 0.01)
# 如需设置绝对gap,使用ABSOLUTE_MIP_GAP参数即可
# params.SetDoubleParam(MPSolverParameters.ABSOLUTE_MIP_GAP, 5)

# 求解时传入参数
status = solver.Solve(params)
  • 方式二:使用SCIP专属参数配置
# 直接设置SCIP参数,同时配置相对gap 1%、绝对gap 5
solver.SetSolverSpecificParametersAsString("limits/gap=0.01, limits/absgap=5")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:27:04