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

Pyomo调用Ipopt报错返回码1:未知关键字max_cpu_time求解异常

解决Pyomo+MindtPy+Ipopt报错:Unknown keyword "max_cpu_time"

问题原因

你使用的Ipopt版本(3.5.5)过于老旧,不支持Pyomo默认传递的max_cpu_time参数,导致求解器启动失败。

解决思路

1. 升级Ipopt到兼容版本

老版本Ipopt(如3.5.5)没有max_cpu_time参数,建议升级到3.12.x及以上版本。使用conda可直接安装最新兼容版本:

conda install -c conda-forge ipopt

安装完成后,执行conda list ipopt确认版本是否更新。

2. 手动禁用max_cpu_time参数传递

如果暂时无法升级Ipopt,可在代码中配置Ipopt求解器,移除max_cpu_time选项后再传给MindtPy:

import pyomo.environ as pe

model = pe.ConcreteModel()

model.x = pe.Var(bounds=(1.0,10.0),initialize=5.0)
model.y = pe.Var(within=pe.Binary)

model.c1 = pe.Constraint(expr=(model.x-4.0)**2 - model.x <= 50.0*(1-model.y))
model.c2 = pe.Constraint(expr=model.x*pe.log(model.x)+5.0 <= 50.0*(model.y))

model.objective = pe.Objective(expr=model.x, sense=pe.minimize)

# 初始化Ipopt求解器并移除不支持的参数
ipopt_solver = pe.SolverFactory('ipopt')
ipopt_solver.options.pop('max_cpu_time', None)

# 调用MindtPy时使用配置好的Ipopt求解器
pe.SolverFactory('mindtpy').solve(model, mip_solver='glpk', nlp_solver=ipopt_solver)

3. 确认版本兼容性

Pyomo 6.6.1与较新版本的Ipopt兼容性更好,尽量避免混用过旧的Ipopt版本。若使用pip安装Ipopt,优先选择带预编译二进制的包(如ipopt-bin),避免源码编译带来的版本适配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 20:50:29