Python 了解scipy.optimize.basinhopping的输出

Python 了解scipy.optimize.basinhopping的输出,python,optimization,scipy,Python,Optimization,Scipy,我正在使用scipy.optimize.basinhoing最小化函数。以下是我得到的: Out[96]: nfev: 162178 minimization_failures: 2501 fun: 4.4702905615653705 x: array([-194.7754468]) message: ['requested number of

我正在使用scipy.optimize.basinhoing最小化函数。以下是我得到的:

Out[96]: 
                  nfev: 162178
 minimization_failures: 2501
                   fun: 4.4702905615653705
                     x: array([-194.7754468])
               message: ['requested number of basinhopping iterations completed successfully']
                  njev: 44057
                   nit: 2500
但是,我很难理解输出。这些返回参数的含义是什么:

  • nfev

  • 最小化故障

  • njev

  • 尼特


我猜nfev=函数求值的次数,nit应该对应于“迭代次数”。但是你为什么不呢!=nfev

一些输出记录在:

  • nfev
    :功能评估的数量
  • njev
    :雅可比求值次数
  • nit
    :算法的迭代次数
其他选项没有很好的文档记录,但您可以随时查看以了解<代码>最小化\u失败是指本地优化器未能收敛的次数(如果蒙特卡罗步骤为本地优化器建议的起始位置距离本地最小值太远,则可能发生这种情况)

预计盆地跳跃算法的迭代次数
nit
,远小于功能评估次数
nfev
。迭代对应于以下步骤:

  • 通过在当前位置周围随机替换来提出新位置
  • 最小化函数(使用本地优化器)以找到流域最小值
  • 接受或拒绝新的盆地

作为局部最小化程序的一部分,将有许多功能评估,因此我们希望
nfev
nit
大得多,非常有用!非常感谢您如此详细的答复。