到目前爲止,我理解使用方法Trust-ncg的最小化函數,「方法特定」參數「max_trust_radius」是新步驟優化的最大值。 但是,我經歷了一個奇怪的行爲。 我在我的博士學位數據的工作,我必須調用最小化功能(與信任NCG法) 傳遞參數使用trust-ncg方法最小化函數提出的值大於max_trust_radius
{
'initial_trust_radius':0.1,
'max_trust_radius':1,
'eta':0.15,
'gtol':1e-5,
'disp': True
}
我調用最小化功能的代碼:
res = minimize(bbox, x0, method='trust-ncg',jac=bbox_der, hess=bbox_hess,options=opt_par)
其中
bbox
是評估目標函數的函數x0
是初始猜測bbox_der
是梯度函數bbox_hess
粗麻功能opt_par
是以上所述參數的字典。
Bbox調用模擬代碼並獲取數據。它的工作原理是:儘量減少來回運行,提出新的值,bbox調用模擬。
一切正常,直到我有一個奇怪的問題。 「x」向量包含8個值。我意識到其中一個迭代,最後一個值大於1. 根據max_trust_radius,我認爲它應該小於1,但它是1.0621612802208713e + 00 此問題會導致問題,因爲bbox無法接收值大於1,因爲它調用了一個模擬程序,並且有一個約束,它不能接收1或大於1.
我找到了scipy代碼並試圖查看我是否能找到一個bug或某個東西錯,但我不是。
我的主要問題是:
我的理解是,有在SciPy的一個bug作爲新的值大於max_trust_radius較大減少代碼。
如何操作或控制值以避免值變得大於1?
您是否建議調查問題?