1
試圖運行下面,這是爲了求解方程的約束NL系統:沒有解決到最優錯誤,使用Ipopt
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)
但是,我收到以下錯誤消息:
警告:Ipopt與狀態Not_Enough_Degrees_Of_Freedom完成 警告:不解決到最優,狀態:錯誤 警告:Ipopt完成了狀態Not_Enough_Degrees_Of_Freedom 警告:不解決到最優,狀態:錯誤
這是一個經濟模型的平衡條件,有2個約束條件(Const。 4和5) 請問,代碼有什麼問題嗎?或者有另一種方法(一種不同的解算器,包,...)來解決這個受限制的問題。
'@variable(m,l,start = 0.3)'和'@NLconstraint(m,l == 0.33)'都在模型中。如果'l'將是'0.33',爲什麼優化呢?在任何情況下,有3個變量有5個約束 - 警告可能是說的正確 –
刪除@variable(m,l,start = 0.3)並將l == 0.33設置爲參數不能解決問題。更多信息:前3個約束條件構成了我想要解決的(NL,k,l)三個NL方程的核心繫統。但是,我想約束l = 0.33,也是系統第一個方程的一部分(1-δ+((α/μ)*(k ^(α-1))* 1 ^(1-α)) )爲=(1.05)^(1/4)。會有另一種解決方法嗎? – ludo
還有4個約束和2個變量。也許沒有解決辦法(想想:飛機上的4條線不必對它們都有重要意義)。在任何情況下,你都可以在一個約束(或兩個)上添加*鬆弛變量*,然後嘗試最小化鬆弛變量(即最小化其絕對值或平方和)。 –