2015-01-01 104 views
1

我正在使用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?

回答

3

某些輸出的記錄在scipy.optimize.OptimizeResult

  • nfev:評價次數
  • njev:雅可比評價的數
  • nit:算法的迭代次數

其他選項的文檔較少,但您可以隨時查看Github source瞭解。 minimization_failures指的是本地優化程序未能收斂的次數(如果蒙特卡羅步驟爲本地優化程序提供了遠離本地最小值的開始位置,則可能會發生這種情況)。

nit,盆地跳躍算法的迭代次數預計將遠小於功能評估的數量nfev。迭代對應於以下步驟:

  • 提出了一個新的位置由當前位置周圍的隨機移動,
  • 最小化功能(使用本地優化)找到盆地最低,
  • 接受或拒絕新盆地。

會有很多功能評估爲本地最小化過程的一部分,因此,我們預計nfevnit大得多。

+0

非常有用!非常感謝你的詳細回覆。 – zell

+0

沒問題。謝謝! –