scipy.optimize.least_squares - 限制雅可比评估的数量

时间:2018-02-14 14:20:23

标签: python optimization scipy least-squares

我正在尝试使用两个可调用函数scipy.optimize.least_squares(fun = my_fun,jac = my_jac,max_nfev = 1000):my_fun和my_jac

两个函数:my_fun和my_jac,使用外部软件评估它们的值,这个任务非常耗时,因此我更喜欢控制两者的评估数量

trf方法使用my_fun函数来评估信任区域是否足够,使用my_jac函数来确定成本函数和jacobian矩阵

有一个输入参数max_nfev。这个参数只计算有趣的评估吗?它是否也考虑了jac评估?

此外,在matlab中,lsqnonlin函数有两个参数,MaxIterations和MaxFunctionEvaluations。它存在于scipy.optimize.least_squares中吗?

由于 阿龙

1 个答案:

答案 0 :(得分:0)

根据scipy.optimize.least_squares的帮助,max_nfev是程序退出前的函数评估数:

  

max_nfev:无或int,可选       终止前的最大功能评估数。       如果为None(默认值),则自动选择该值:

同样,根据帮助,没有MaxIterations参数,但您可以在f(ftol)中定义容差,该容差是您要最小化的函数或x(xtol)解,在退出代码之前。

您也可以使用scipy.optimize.minimize()。在其中,您可以定义maxiter字段中的options参数。 如果您这样做,请注意您要最小化的功能必须是您的成本函数,这意味着您必须代码您的最小二乘函数。

我希望它对您来说是明确和有用的