我找到了JuMP和NLopt示例的组合,而我正试图看看Julia实现不同的优化例程。
以下示例(可在此处找到:https://github.com/JuliaOpt/NLopt.jl)为您提供最终解决方案,而无需其他步骤。
虽然这对于简单问题可能没问题,但对于一些人来说,我们需要看看每次迭代的进展情况(例如它是否与每次迭代收敛?)
我的问题是:如何修改以下代码以显示每次迭代的次数和错误(我们希望它变得越来越小)?
我希望自己明确(代码如下):
using JuMP
using NLopt
m = Model(solver=NLoptSolver(algorithm=:LD_MMA))
a1 = 2
b1 = 0
a2 = -1
b2 = 1
@variable(m, x1)
@variable(m, x2 >= 0)
@NLobjective(m, Min, sqrt(x2))
@NLconstraint(m, x2 >= (a1*x1+b1)^3)
@NLconstraint(m, x2 >= (a2*x1+b2)^3)
setvalue(x1, 1.234)
setvalue(x2, 5.678)
status = solve(m)
println("got ", getobjectiveValue(m), " at ", [getvalue(x1),getvalue(x2)])
顺便说一句:在这里(http://ab-initio.mit.edu/wiki/index.php/NLopt_Algorithms#Nelder-Mead_Simplex)我们可以找到NLOpt的所有可能算法。我想尝试使用Nelder-Mead而不是LD_MMA
我输入了NLOPT_LN_NELDERMEAD
,但无济于事。有谁知道所有这些算法的捷径。可以在Julia中使用吗?
=>没有
答案 0 :(得分:2)
似乎这不是possible option for NLopt,但可能会将其作为选项添加到JuMP中。您应该在JuMP issues page上打开一个问题来询问它。