2012-06-22 61 views

回答

11

這些優化算法通常通過選擇下降方向,然後對該方向執行行搜索來工作。我認爲這個消息意味着優化器進入了一個無法找到目標函數值下降(足夠快)的方向的位置,但也無法驗證當前位置是否最小。

1

這不是一個完整的答案,但你可以看到,這裏產生SMODE源代碼:

mode = 8

https://github.com/scipy/scipy/blob/master/scipy/optimize/slsqp/slsqp_optmz.f

分配(以下簡稱「正方向可以在第412行和第486行中找到關於linesearch的衍生詞「你在問什麼」)。如果能夠找出它們在代碼中被分配的原因,那麼你已經得到了答案。

4

我仍然不知道它是什麼意思,但如何解決它。基本上,優化的功能需要返回一個較小的值。

F(x): 
    ... 
    return value/10000000 
+1

更一般的答案是正在優化的函數縮放比例很小。我認爲理想的是,被優化的函數應該傾向於在1-5的範圍內給出一個意思。對於我的用例,我不得不乘以1000. – jebob

2

爲了避免改變你的功能,你也可以嘗試使用ftol和eps參數進行試驗。將ftol更改爲更高的值相當於將該功能更改爲更小的值。

+0

更適合作爲評論 – jjj

+0

的確如此。發佈時我犯了一個錯誤,但不知道如何糾正錯誤。 – danielrd