2016-10-04 66 views
0

我想盡量減少在Matlab中使用fmincon的函數,但在評估我的約束函數時,我需要前一次迭代中變量的值。在Matlab優化中訪問以前的迭代變量

我的問題是:我如何在每次迭代中訪問變量的值?

+0

你可以通過添加一些相關的代碼或你已經嘗試過的東西來提高這篇文章的質量。 –

+0

我懷疑你是否真的需要你的約束。無論如何,當收斂到最優解時,可以假設'x(k)= x(k-1)',其中'k'是迭代次數。 –

回答

1

嘗試使用可在優化選項中定義的可選輸出功能'OutputFcn'。此功能在每次迭代之後調用,並傳遞優化矢量

選項= optimset的當前值(「OutputFcn」,@CustomOutputFcn)

function stop = CustomOutputFcn(x,optimValues,state) 
stop = false; 
% Store x to previously defined global variable XPreviousStep 
global XPreviousStep 
XPreviousStep = x; 
end 

現在你可以在你的約束功能訪問XPreviousStep。如果你不喜歡全局變量,你可以使用guidata。