获取每次迭代的fminsearch函数调用次数

时间:2015-12-11 15:01:13

标签: matlab fminsearch

options = optimset('Display','iter','MaxIter',3,'OutputFcn',@outfun);
[x,fval,~,output] = fminsearch(@(param) esm6(param,identi),result(k,1:end-1),options);

此代码将找到本地最小化我的esm6功能,并且由于显示'选项它将输出这样的字符串

  

迭代函数min f(x)程序
       0 1 36.9193
       1 5 35.9815初始单纯形
       2 7 35.4924合同内        3 9 35.4924合同内        4 11 33.0085扩展

因此在命令窗口中,我得到每个迭代步骤的函数Count。由fminsearch创建的结构output仅包含其中的func-count总量。有没有办法接收所有信息,这些信息在输出结构的命令窗口中输出?

编辑:
我认为我非常接近解决方案。我写了这个输出函数:

function stop = outfun(x,optimvalues,state);
    stop = false;
    if state == 'iter'
        history = evalin('base','history');
        history = [history; optimvalues.iteration optimvalues.funcCount];
        assignin('base','history',history);
    end
end

由于http://de.mathworks.com/help/matlab/math/output-functions.html这应该有效,但事实上,matlab告诉我,

  

???引用不存在的字段' funcCount'。

任何想法,为什么会这样?

0 个答案:

没有答案