簡體   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