[英]why scipy.optimize.basinhopping give different results
我需要找到復雜 function 的全局最小值。 我使用來自 scipy.optimize 的盆地跳躍。 當我更改方法時,例如 method="nelder-mead" vs "L-BFGS-B" 或初始猜測 x0,它們給了我不同的結果,特別是在我需要在下一步中使用的 x 值中。 x[5] = 0.6,“nelder-mead”,但 x[5]=0.0008,“L-BFGS-B”,盡管 function 值與 2055.7795 與 2055.7756 相似(所有這些都具有“成功:TRUE”)。 我認為盆地跳躍可以找到全局最小值。 因此,無論我使用什么方法或初始猜測,它都應該給出相同的結果。 任何人都可以解釋為什么? 並建議我應該怎么做才能找到全局最小值並檢查它是否是全局的(不是本地的)。
謝謝
跳盆方法不能保證為任何 function 提供全局最小值。 它也不是確定性的,在探索附近的方式中有一個隨機分量,如關於take_step
參數a的幫助中所述
如果除了使用相同的方法之外,還想在兩個不同的調用中重現相同的結果,則必須使用相同的seed
參數。
同樣使用相同的種子應該會增加使用不同的局部優化器方法給出相同結果的可能性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.