AnyMath 文档

首席。jl

该页面正在翻译中。

PRIMA.jl是fortran库的julia包装器https://github.com/libprima/prima[prima]实现了鲍威尔的导数自由优化方法。

安装:OptimizationPRIMA

要使用此软件包,请安装OptimizationPRIMA软件包:

import Pkg;
Pkg.add("OptimizationPRIMA");

本地优化器

Prima库的五种鲍威尔算法由PRIMA提供。jl套件: UOBYQA:(Unconstrained Optimization BY Quadratic Approximations)为无约束优化,即Ω=∞。

纽乌阿:也是为了无约束优化。 根据M.J.D.鲍威尔的说法,newuoa优于uobyqa。

博比卡:(Bounded Optimization BY Quadratic Approximations)是针对简单的有界约束问题,即Ω={x∈ ℝⁿ

xl≤x≤xu}。

林科亚:(LINearly Constrained Optimization)是针对具有约束约束、线性相等约束和线性不等式约束的约束优化问题。

[医]柯比拉:(Constrained Optimization BY Linear Approximations)是针对具有约束约束、非线性约束、线性相等约束和线性不等式约束的一般约束问题。

using OptimizationBase, OptimizationPRIMA

rosenbrock(x, p) = (p[1] - x[1])^2 + p[2] * (x[2] - x[1]^2)^2
x0 = zeros(2)
_p = [1.0, 100.0]

prob = OptimizationProblem(rosenbrock, x0, _p)

sol = solve(prob, UOBYQA(), maxiters = 1000)

sol = solve(prob, NEWUOA(), maxiters = 1000)

sol = solve(prob, BOBYQA(), maxiters = 1000)

sol = solve(prob, LINCOA(), maxiters = 1000)

function con2_c(res, x, p)
    res .= [x[1] + x[2], x[2] * sin(x[1]) - x[1]]
end
optprob = OptimizationFunction(rosenbrock, AutoForwardDiff(), cons = con2_c)
prob = OptimizationProblem(optprob, x0, _p, lcons = [1, -100], ucons = [1, 100])
sol = solve(prob, COBYLA(), maxiters = 1000)
retcode: Success
u: 2-element Vector{Float64}:
0.8
0.6399999996879134