繁体   English   中英

了解scipy.optimize.basinhopping的输出

[英]Understanding the output of scipy.optimize.basinhopping

我正在使用scipy.optimize.basinhopping来最小化一个函数。 这是我得到的:

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

  • minimization_failures

  • njev

  • 尼特

我猜nfev =函数评估的数量,而nit应该对应于'迭代次数'。 但为什么尼特!= nfev?

一些输出记录在scipy.optimize.OptimizeResult

  • nfev :功能评估的数量
  • njev :雅可比评估的数量
  • nit :算法的迭代次数

其他选项的文档记录较少,但您可以随时查看Github源代码来理解。 minimization_failures是指本地优化器未能收敛的次数(如果蒙特卡罗步骤提出本地优化器的起始位置距离本地最小值太远,则可能会发生这种情况)。

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

  • 通过在当前位置周围随机移位来提出新的位置,
  • 最小化功能(使用本地优化器)来找到盆地最小值,
  • 接受或拒绝新盆地。

将有许多功能评估作为局部最小化过程的一部分,因此我们期望nfevnit大得多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM