2017-05-24 64 views
0

我想用等式約束來解決非線性優化問題。Julia中的非線性微分免費優化

我想參數是一個向量,並希望派生自由的方法。

似乎NLsolve.jl使用:LD_SLSQP的算法支持這樣的問題,但我不能寫正確的代碼

也許,問題是grad,這應該是「空」根據​​

任何人都可以告訴我寫代碼的正確方法?

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]) 
+2

'LD_SLSQP'方法不是無梯度方法。你可能意思是'LN_PRAXIS'。不知道它如何處理平等約束。 –

回答

0

謝謝丹獲取,LD_SLSQP不無導數。

更改算法爲LN_COBYLA解決了問題!