有没有办法在Julia中使用Optim进行单变量优化时指定初始条件(我希望提高速度)?看起来这不可能阅读文档,因为只有多变量优化似乎接受初始条件。我想我可以将我的问题指定为多变量问题,并忽略其中一个变量,但这并不是特别优雅。
答案 0 :(得分:1)
如果您不想使用布伦特或黄金分割搜索,您可以简单地使用基于梯度或基于Hessian的方法,因为对于Optim中的大多数算法,R ^ n包括n = 1的情况。您必须遵循多变量方法的语法并传递矢量。
julia> using Optim, Plots
julia> f(x) = -2*x[1]+3*x[1]^2+sin(x[1]*3)
f (generic function with 1 method)
julia> plot(x->f4([x,]), lab = "Univariate Function")
julia> optimize(f, [2.5,], GradientDescent())
Results of Optimization Algorithm
* Algorithm: Gradient Descent
* Starting Point: [2.5]
* Minimizer: [-0.12943993754432737]
* Minimum: -6.948989e-02
* Iterations: 5
* Convergence: true
* |x - x'| < 1.0e-32: false
|x - x'| = 3.35e-08
* |f(x) - f(x')| / |f(x)| < 1.0e-32: false
|f(x) - f(x')| / |f(x)| = NaN
* |g(x)| < 1.0e-08: true
|g(x)| = 4.58e-12
* stopped by an increasing objective: false
* Reached Maximum Number of Iterations: false
* Objective Calls: 12
* Gradient Calls: 12
答案 1 :(得分:0)
你的意思是布伦特的方法和黄金分割搜索?我认为这些方法的初始条件取决于您设置的初始下限和上限。因此,从这些算法的角度来看,为x_minimum
提供初始猜测是多余的/错误的。
例如,在布伦特的方法中,估计最小值的初始值计算为:
x_minimum = x_lower + golden_ratio*(x_upper-x_lower)
请参阅source code