【问题标题】:MATLAB Optimization toolbox exampleMATLAB 优化工具箱示例
【发布时间】:2016-12-24 03:19:41
【问题描述】:

https://www.mathworks.com/help/optim/examples/banana-function-minimization.html

fun = @(x)(100*(x(2) - x(1)^2)^2 + (1 - x(1))^2);
options = optimset('OutputFcn',@bananaout,'Display','off');
x0 = [-1.9,2];
[x,fval,eflag,output] = fminsearch(fun,x0,options);
title 'Rosenbrock solution via fminsearch'
Fcount = output.funcCount;
disp(['Number of function evaluations for fminsearch was ',num2str(Fcount)])
disp(['Number of solver iterations for fminsearch was ',num2str(output.iterations)])

这里的@bananaout 是什么?

这给了我以下错误,

??? Error using ==> feval
Attempt to execute SCRIPT bananaout as a function:
C:\Users\admin\Desktop\bananaout.m

Error in ==> callAllOptimOutputFcns at 12
    stop(i) = feval(OutputFcn{i},xOutputfcn,optimValues,state,varargin{:});

Error in ==> fminsearch>callOutputAndPlotFcns at 464
            stop = callAllOptimOutputFcns(outputfcn,xOutputfcn,optimValues,state,varargin{:})
            || stop;

Error in ==> fminsearch at 199
    [xOutputfcn, optimValues, stop] =
    callOutputAndPlotFcns(outputfcn,plotfcns,v(:,1),xOutputfcn,'init',itercount, ...

Error in ==> test_optim at 9
[x,fval,eflag,output] = fminsearch(fun,x0,options)

【问题讨论】:

    标签: matlab optimization


    【解决方案1】:

    根据文档,优化器在每个时间步都会调用Output Functions,使您能够执行诸如绘制优化进度之类的操作。

    在您的情况下,您会收到一个错误,因为bananaout 在需要成为函数时似乎是一个脚本(带有特定输入 - 有关详细信息,请参阅文档)。您是否碰巧将示例代码保存在名为bananaout 的脚本中?如果是,请重命名脚本。

    您可以通过执行以下命令查看您拥有的所有名为 bananaout 的 m 代码的列表:

    >> which bananaout -all

    其中一个将是示例应调用的函数,而另一个将是您已创建并需要重命名/删除的函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-06
      • 2016-09-18
      • 2023-03-06
      • 2011-03-26
      • 1970-01-01
      相关资源
      最近更新 更多