MultiStartOptimization。jl
|
该页面正在翻译中。 |
脧锚脧赂`多路优化`是一个实现全局优化multistart方法的Julia包,它在选择多个起点后进行局部优化。
多路优化 需要定义全局和局部方法。 全局multistart方法从本地方法开始的地方选择一组初始起点。
目前,只有一个全局方法(提克塔克)由 MultistartOptimization。提克塔克(n) 哪里 n 为初始Sobol点的个数。
安装:OptimizationMultistartOptimization。jl
要使用此包,请安装OptimizationMultistartOptimization包:
import Pkg;
Pkg.add("OptimizationMultistartOptimization");
|
注意您还需要为您选择的本地方法加载相关子包,例如,如果您计划使用NLopt之一。jl的优化器,您可以安装和加载OptimizationNLopt,如 NLopt.jl的部分。 |
例子:
Rosenbrock函数可以使用以下方法进行优化 MultistartOptimization。蒂克塔克() 用100个初始点和本地方法 NLopt。LD_LBFGS() 如下:
using Optimization, OptimizationMultistartOptimization, OptimizationNLopt
rosenbrock(x, p) = (p[1] - x[1])^2 + p[2] * (x[2] - x[1]^2)^2
x0 = zeros(2)
p = [1.0, 100.0]
f = OptimizationFunction(rosenbrock, Optimization.AutoForwardDiff())
prob = Optimization.OptimizationProblem(f, x0, p, lb = [-1.0, -1.0], ub = [1.0, 1.0])
sol = solve(prob, MultistartOptimization.TikTak(100), NLopt.LD_LBFGS())
您可以使用任何 优化设计 你喜欢的优化器。 的全局方法 多路优化 是一个位置参数,后跟局部方法。 例如,我们可以使用以下任一项以LBFGS为优化器执行multistartoptimization NLopt。jl 或 奥普蒂姆。jl 实施如下。 此外,此界面允许您像通常那样访问和调整所有优化器设置:
using OptimizationOptimJL
f = OptimizationFunction(rosenbrock, Optimization.AutoForwardDiff())
prob = Optimization.OptimizationProblem(f, x0, p, lb = [-1.0, -1.0], ub = [1.0, 1.0])
sol = solve(prob, MultistartOptimization.TikTak(100), LBFGS(), maxiters = 5)