我想用等式约束来解决非线性优化问题。
我希望参数是一个向量,并且想要衍生自由方法。
似乎NLsolve.jl
使用:LD_SLSQP
算法支持此类问题,但我无法编写正确的代码
也许,问题是grad
,这应该是"空的"根据{{3}}
有人能告诉我编写代码的正确方法吗?
using NLopt
function f(x,grad)
x1 = x[1]
x2 = x[2]
out= log(x1)+0.9*log(x2)
return out
end
function const1(x,grad)
out = Array{Float64}(2)
out[1] = x[1]+x[2]-10.0
out[2] = 0.0
return out
end
opt = Opt(:LD_SLSQP, 2)
lower_bounds!(opt, [1e-8, 1e-8])
upper_bounds!(opt, [10.0, 10.0])
max_objective!(opt,f)
maxtime!(opt, 20)
equality_constraint!(opt,const1,[1e-8,1e-8])
答案 0 :(得分:0)
谢谢Dan Gets,LD_SLSQP
不是衍生品。
将算法更改为LN_COBYLA
可以解决问题!