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

SCIP/OR-Tools:求解器达到指定目标值后停止的功能配置问题

SCIP目标值停止功能相关问题解答

1. SCIP是否支持「达到指定目标值即停止」功能

支持,SCIP原生提供完全对等GUROBI BestObjStop的功能,对应原生参数为 limits/objective:

  • 求解最小化MILP问题时:当求解器搜索到目标值 ≤ 你设定的参数值的可行解时,会直接终止求解
  • 求解最大化MILP问题时:当求解器搜索到目标值 ≥ 你设定的参数值的可行解时,会直接终止求解

补充:如果你需要基于上下界的间隙阈值停止,可额外使用SCIP的limits/stoppinggap参数,该参数可设置目标间隙达到指定值时终止求解。


2. C++环境下通过or-tools调用该功能的方法

可以直接调用,or-tools的SCIP后端支持透传所有SCIP原生参数,无需额外适配,参考代码片段如下:

#include "ortools/linear_solver/linear_solver.h"

int main() {
  // 初始化SCIP求解器实例
  std::unique_ptr<operations_research::MPSolver> solver(
      operations_research::MPSolver::CreateSolver("SCIP"));
  
  // 此处省略你的MILP模型构建逻辑(变量、约束、目标函数定义)

  // 设置目标值停止阈值,例:最小化问题目标到150即停止
  solver->SetSolverSpecificParameter("limits/objective", "150");

  // 执行求解
  operations_research::MPSolver::ResultStatus solve_status = solver->Solve();

  // 后续处理求解结果逻辑
  return 0;
}
  • 注意SetSolverSpecificParameter的第二个参数为字符串类型,按照你的实际需求修改对应数值即可
  • 触发目标阈值停止后,求解返回状态为MPSolver::FEASIBLE,你可以通过solver->Objective().Value()获取到达到阈值的可行解目标值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:57:02