0
我正在使用fminunc。具體來說,我使用BFGS的準牛頓方法和用戶提供的漸變來最小化函數。它進行了大約3次迭代,然後做了一堆函數評估。我有一個函數,我試圖最小化它在調用時顯示它的值,而且我可以看到,在第4次迭代中調用幾次之後,它顯着小於第三次迭代中的值,但是Matlab繼續評估函數並且我不知道爲什麼。有什麼我可以調整來告訴它接受更新並轉到下一次迭代?Matlab如何決定接受fminunc中的一個步驟?
我正在使用fminunc。具體來說,我使用BFGS的準牛頓方法和用戶提供的漸變來最小化函數。它進行了大約3次迭代,然後做了一堆函數評估。我有一個函數,我試圖最小化它在調用時顯示它的值,而且我可以看到,在第4次迭代中調用幾次之後,它顯着小於第三次迭代中的值,但是Matlab繼續評估函數並且我不知道爲什麼。有什麼我可以調整來告訴它接受更新並轉到下一次迭代?Matlab如何決定接受fminunc中的一個步驟?
聽起來像是你理解優化得很好,讓我們看看,如果我們可以用optimset設置幫助。從mathworks docs它調用瞭如何放鬆公差終止與下列參數的優化:在函數值
TolFun終止寬容,積極的標量。 默認值是1e-6。在X
TolX終止寬容,積極的標量。默認值是 1e-6。
聽起來像是你有優化工具箱,在這種情況下,我相信你可以使用optimset得到優化參數,然後使用fminunc
進行初始化。(該文檔爲常規optimset不叫指出,您可以通過fminunc
作爲參數,但我認爲它會在工具箱版本。
options = optimset('fminunc');
% you can try either of these two or both, but I would
% recommend only changing one at a time :-)
options = optimset(options,'TolFun',myNewTolFun)
options = optimset(options,'TolX',myNewTolX)
% then you can make your call to the optimizer
x = fminunc(fun,x0,options)
上的Optim的設置難以忍受的細節可以發現here。