sed*_*idw 24 python numpy minimize scipy
我继承了一些试图使用函数最小化函数的代码scipy.optimize.minimize.我无法理解fun和jac参数的一些输入
最小化调用看起来像这样:
result = minimize(func, jac=jac_func, args=(D_neg, D, C), method = 'TNC' ...other arguments)
Run Code Online (Sandbox Code Playgroud)
func 看起来如下:
def func(G, D_neg, D, C):
#do stuff
Run Code Online (Sandbox Code Playgroud)
jac_func 具有以下结构:
def jac_func(G, D_neg, D, C):
#do stuff
Run Code Online (Sandbox Code Playgroud)
我不明白的是G输入func和jac_func来自哪里.是以某种方式在minimize函数中指定,还是由method指定为TNC?的事实?我试图对这个优化函数的结构进行一些研究,但是我找不到我需要的答案.任何帮助是极大的赞赏
lmj*_*ns3 38
简短的回答是G由优化器作为最小化过程的一部分来维护,而(D_neg, D, and C)参数是从args元组中按原样传递的.
默认情况下,scipy.optimize.minimize接受一个fun(x)接受一个参数的函数x(可能是一个数组等)并返回一个标量.scipy.optimize.minimize然后找到一个参数值xp,使其fun(xp)小于fun(x)其他值x.优化器负责创建值x并将其传递给fun评估.
但是如果你碰巧有一个函数fun(x, y)有一些额外的参数y需要单独传递(但是为了优化而被认为是常量)会怎样?这就是args元组的用途.该文件试图解释ARGS元组是如何使用的,但它可以是一个有点难以解析:
args:元组,可选
传递给目标函数及其衍生物的额外参数(Jacobian,Hessian).
实际上,scipy.optimize.minimize将使用星号参数表示法args将所有参数作为参数的其余部分传递fun:然后fun(x, *args)在优化期间调用该函数.该x部分由优化器传入,args元组作为剩余参数给出.
因此,在您的代码中,G元素的值由优化器维护,同时评估可能的值G,并且(D_neg, D, C)元组按原样传递.