Optimization 使用Ipopt未解决最优性错误

Optimization 使用Ipopt未解决最优性错误,optimization,julia,nonlinear-optimization,Optimization,Julia,Nonlinear Optimization,尝试运行以下程序,以求解受约束的NL方程组: using JuMP using Ipopt m=Model(solver=IpoptSolver()) @variable(m,k,start=0.1) @variable(m,c,start=1.2) @variable(m,l,start=0.3) @NLparameter(m,α==0.21) @NLparameter(m,β==0.99) @NLparameter(m,γ==0.4) @NLparameter(m,μ==0.2) @NLpa

尝试运行以下程序,以求解受约束的NL方程组:

using JuMP
using Ipopt
m=Model(solver=IpoptSolver())
@variable(m,k,start=0.1)
@variable(m,c,start=1.2)
@variable(m,l,start=0.3)
@NLparameter(m,α==0.21)
@NLparameter(m,β==0.99)
@NLparameter(m,γ==0.4)
@NLparameter(m,μ==0.2)
@NLparameter(m,δ==0.14)
@NLparameter(m,θ==0.25)
@NLconstraint(m,c-c*β*(1-δ+((α/μ)*(k^(α-1))*l^(1-α)))==0)
@NLconstraint(m,θ*c*l^(1/γ)-((1-α)/μ)*k^α*l^-α ==0)
@NLconstraint(m,c+δ*k-k^α*l^(1-α)==0)
@NLconstraint(m,l==0.33)
@NLconstraint(m,(1-δ+((α/μ)*(k^(α-1))*l^(1-α)))-(1.05)^(1/4)==0)
@NLobjective(m,Max,1.0)
solve(m)
println("k=", getvalue(k),"c=", getvalue(c),"l=", getvalue(l))
status=solve(m)
但是,我收到以下错误消息:

警告:iPot已完成,状态为自由度不足 警告:未解决优化问题,状态:错误 警告:iPot已完成,状态为自由度不足 警告:未解决优化问题,状态:错误

这是一个经济模型的平衡条件,有2个约束条件(常数4和5)
请问,代码有什么问题吗?或者是否有其他方法(不同的解算器、包等)来解决此约束问题

您试图求解的NL方程组的约束(方程)比变量(未知数)多。此外,等式(5)是在理论(经济学)基础上对等式(1)的一部分施加的约束。然后得出,(c,l,k)满足5个约束条件(自由度不够)的可行解是不存在的。将模型的两个参数(θ和β)作为变量,得出一个可行问题,并找到最优解

您试图求解的NL方程组的约束(方程)比变量(未知数)多。此外,等式(5)是在理论(经济学)基础上对等式(1)的一部分施加的约束。然后得出,(c,l,k)满足5个约束条件(自由度不够)的可行解是不存在的。将模型的两个参数(θ和β)作为变量,得出一个可行问题,并找到最优解

@变量(m,l,start=0.3)
@NLconstraint(m,l==0.33)
都在模型中。如果
l
将是
0.33
,为什么要对其进行优化?在任何情况下,有5个约束和3个变量-警告可能是说删除@variable(m,l,start=0.3)并将l==0.33设置为参数并不能解决问题。更多信息:前3个约束构成了我要求解的(k,c,l)中3个NL方程的核心系统。但是,我想约束l=0.33,也是系统第一个方程(1-δ+((α/μ)*(k^(α-1))*l^(1-α))的一部分,为=(1.05)^(1/4)。还有别的办法吗?还有4个约束和2个变量。也许没有解决方案(想想:一个平面上的4条线不一定都有一个点)。在任何情况下,您都可以在一个(或两个)约束上添加松弛变量,然后尝试最小化松弛变量(即最小化其绝对值之和或平方和)。事实上,按照现在的设计,这是不可行的。即使在约束中引入两个松弛变量,然后有5个约束和5个变量也不行。我将重新设计这个问题,可能会删除一些参数,并将它们视为变量。它是有效的。我将θ和β视为变量,而且,它们的返回值非常接近作为参数的“先验值”。感谢
@变量(m,l,start=0.3)
@NLconstraint(m,l==0.33)
都在模型中。如果
l
将是
0.33
,为什么要对其进行优化?在任何情况下,有5个约束和3个变量-警告可能是说删除@variable(m,l,start=0.3)并将l==0.33设置为参数并不能解决问题。更多信息:前3个约束构成了我要求解的(k,c,l)中3个NL方程的核心系统。但是,我想约束l=0.33,也是系统第一个方程(1-δ+((α/μ)*(k^(α-1))*l^(1-α))的一部分,为=(1.05)^(1/4)。还有别的办法吗?还有4个约束和2个变量。也许没有解决方案(想想:一个平面上的4条线不一定都有一个点)。在任何情况下,您都可以在一个(或两个)约束上添加松弛变量,然后尝试最小化松弛变量(即最小化其绝对值之和或平方和)。事实上,按照现在的设计,这是不可行的。即使在约束中引入两个松弛变量,然后有5个约束和5个变量也不行。我将重新设计这个问题,可能会删除一些参数,并将它们视为变量。它是有效的。我将θ和β视为变量,而且,它们的返回值非常接近作为参数的“先验值”。谢谢