2016-10-04 68 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。