Optimization 朱莉娅:最小化具有多个参数的函数(BFG)

Optimization 朱莉娅:最小化具有多个参数的函数(BFG),optimization,julia,Optimization,Julia,我正在尝试使用一个BFGS算法,使用Optim.jl库最小化一个具有多个参数的函数 在Optim库的GitHub网站上,我发现了以下工作示例: using Optim rosenbrock(x) = (1.0 - x[1])^2 + 100.0 * (x[2] - x[1]^2)^2 result = optimize(rosenbrock, zeros(2), BFGS()) 假设我的目标函数是: fmin(x, a) = (1.0 - x[1])^a + 100.0 * (x

我正在尝试使用一个BFGS算法,使用Optim.jl库最小化一个具有多个参数的函数

在Optim库的GitHub网站上,我发现了以下工作示例:

using Optim
rosenbrock(x) = (1.0 - x[1])^2 + 100.0 * (x[2] - x[1]^2)^2
result        = optimize(rosenbrock, zeros(2), BFGS())
假设我的目标函数是:

fmin(x, a) = (1.0 - x[1])^a + 100.0 * (x[2] - x[1]^2)^(1-a)

如何使用optimize传递附加的常量参数a

最简单的方法是传递一个变量的匿名函数,该函数使用设置的参数调用原始函数。例如,使用fmin的变体:

julia> fmin(x, a) = (1.0 - x[1])^a + 100.0 * (x[2] - x[1]^2)^(a)
fmin (generic function with 1 method)

julia> r = optimize(x->fmin(x, 2), zeros(2), BFGS());

julia> r.minimizer, r.minimum
([1.0,1.0],5.471432684244042e-17)

或者,您可以创建一个单独的命名函数,该函数包含一个变量,该变量覆盖您喜欢的任何参数。Python中的
scipy.optimize.minimize
中没有与
args
等效的参数,您可以将非可变参数作为元组单独传递。

这两个问题都与Optim.jl的用法有关。我相信这个结果可能有一个包含逆Hessian或Hessian的字段,但我在文档中没有找到引用。但是,如果这让人困惑,我可以把问题分开。好的!谢谢,我不知道。我要回答这个问题。谢谢你,这就是我要找的!也许它应该在文档的主要部分,但我们确实提到了这一点: