with_optimizer方法工作原理及未定义错误的解决办法
with_optimizer机制说明与错误解决
一、with_optimizer的工作机制
- 这是JuMP v0.19及更早版本的专属API,核心作用是关联优化器与JuMP模型
- 它会把优化器的构造函数(比如
GLPK.Optimizer)以及可选的配置参数打包,传递给Model()函数,让JuMP明确后续求解时使用的优化器后端 - 旧版示例写法:
model = Model(with_optimizer(GLPK.Optimizer, msg_lev=GLPK.MSG_ON))
二、UndefVarError的解决方法
你遇到的错误本质是版本不兼容:新版JuMP(v1.0+)已彻底移除with_optimizer函数,无需再用这个包装函数,直接将优化器构造函数传入Model()即可。修改后的代码如下:
using Pkg Pkg.add("Ipopt") Pkg.add("Clp") Pkg.add("GLPK") using JuMP, Ipopt, Clp, GLPK # 直接传入优化器构造函数,替代with_optimizer model = Model(GLPK.Optimizer) optimize!(model)
补充选项(不推荐)
如果因特殊需求必须使用with_optimizer,可以指定安装旧版JuMP:
Pkg.add(name="JuMP", version="0.19")
但旧版已停止维护,优先建议适配新版API。
内容的提问来源于stack exchange,提问作者Edwin Meriaux
相关产品推荐
相关产品推荐

