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

如何让PYOMO调用的带AMPL的SCIP求解器在.sol文件输出迭代数据

SCIP求解器输出迭代明细数据的解决方案

首先明确:AMPL规范定义的.sol文件本身仅用于存储求解最终结果,迭代日志不会写入该文件,你需要的迭代明细会输出到单独的日志文件或者控制台标准输出中,可通过以下SCIP参数配置开启:

Pyomo调用AMPL版SCIP的配置方法

你在Pyomo中构造求解器时传入对应SCIP参数即可,示例代码如下:

from pyomo.environ import SolverFactory

# 构造SCIP求解器,替换为你本地的scipampl可执行文件路径
solver = SolverFactory('scip', executable='path/to/your/scipampl')

# 基础输出配置
solver.options['display/verblevel'] = 5  # 日志输出等级,取值0-5,5为最高级,输出所有迭代明细
solver.options['display/freq'] = 1  # 每迭代1步输出一次日志,避免信息延迟输出
solver.options['log/file'] = "scip_iteration.log"  # 指定迭代日志输出到单独文件,不填则默认输出到控制台
solver.options['log/append'] = False  # 每次求解覆盖旧日志文件,不需要覆盖可设为True

# 输出IPOPT子求解器迭代明细(即你示例中包含iter、objective、inf_pr等指标的内点法迭代表)
# 若你的问题为非连续整数规划不需要该配置
solver.options['nlpi/ipopt/print_level'] = 5 

# 可选:输出分支定界过程更多细节(仅整数/混合整数规划需要)
solver.options['display/nodeselinfo'] = True
solver.options['display/cutinfo'] = True
solver.options['display/lpinfo'] = True

注意事项

  • 你之前.sol文件中出现的WARNING: unknown parameter <output_file>是因为传入了AMPL通用的output_file参数,SCIP的AMPL接口不识别该参数,输出日志请使用上述log/file参数
  • 高等级输出会额外增加求解耗时,大规模问题可按需调低display/verblevel等级或者调大display/freq的取值,减少IO开销
  • 若直接在命令行调用scipampl,参数写法与上述一致,格式为scipampl -<参数名> <参数值> 问题文件名.nl

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 17:15:05