我試圖用scipy.optimize
函數來查找具有多個參數的複雜函數的全局最小值。 scipy.optimize.minimize
似乎最擅長完成這項工作,即'Nelder-Mead'方法。然而,它傾向於從論域的區域(將負值分配給只能爲正的論據),並因此在這種情況下返回錯誤。有沒有辦法限制參數範圍內的scipy.optimize.minimize
函數本身?或者也許在其他scipy.optimize
功能?Scipy.optimize:如何限制參數值
我已經找到了以下建議:
當參數落在在允許的範圍內,(從數據遠遠要安裝)返回一個瘋狂數量巨大。這將會(希望)懲罰這個參數的選擇,以至於
curve_fit
將決定一些其他可接受的參數作爲最佳參數。
given in this previous answer,但在我的情況下,該過程將花費大量的計算時間。
當輸入超出允許範圍時,使成本函數返回大量成本是一個非常糟糕的想法,因爲搜索函數將花費其大部分能量搜索無限大的不合格答案空間。使用'scipy.minimize'中的'constraint'參數指定一個方法,告訴算法在哪裏限制搜索。在這裏搜索'約束':http://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize.html#scipy.optimize.minimize –