2011-04-11 107 views
1

我正在使用Matlab的fmincon來優化一個目標函數,它是兩個向量之間的l2範數。還有一個不等式約束,它是要優化的向量和其他一些常量向量之間的另一個l2範數。所以基本上參數的數量是這個向量的大小,我試圖從l2的意義上最小化。Fmincon在matlab內存不足

|| M * s - s || _2 s.t. || s -t || _2 < epsilon

M是一個常數矩陣,t是一個常數矢量,ε是一個常數。

所以,現在對我來說問題是,它是巨大的。它可以具有從400到20000個變量。現在,當內部嘗試存儲矩陣時,fmincon的內存不足。有沒有辦法解決這個問題?

謝謝!

回答

0

當你運行fmincon時,你應該考慮添加一組選項。看optimset, 所以做:

OPTI = optimset('MaxIter',1000) 

或者檢出所有optimization options

然後

get_val = fmincon(... , OPTI) 

如果不工作,你應該發佈您的代碼

0

並沒有真正解決我的問題。我最終意識到我需要傳遞一個用戶提供的「稀疏」hessian矩陣(之前我使用默認設置爲hessian,這是有限差分的近似值)。一旦我這樣做了,我就不再耗盡我的記憶。不過謝謝你!