Matlab如何决定接受fminunc中的一个步骤?

时间:2013-06-28 22:21:31

标签: matlab minimization

我正在使用fminunc。具体来说,我正在使用带有BFGS的准牛顿方法和用户提供的梯度来最小化函数。它需要大约3次迭代,然后进行一系列功能评估。我有一个函数,我试图在调用时尽量减少显示它的值,我可以看到,在第四次迭代的几次调用后,它比第三次迭代时要小得多,但是Matlab继续评估函数和我不知道为什么。有什么我可以调整,告诉它接受更新并转移到下一次迭代?

1 个答案:

答案 0 :(得分:1)

听起来你很了解优化器,让我们看看我们是否可以帮助优化设置。从mathworks docs开始,它调出了如何放宽公差以使用以下参数终止优化:

  

TolFun对函数值的终止容差,为正标量。该                 默认值为1e-6。

     

TolX对x的终止容差,一个正标量。默认值为                 1E-6。

听起来你有优化工具箱,在这种情况下我相信你可以使用optimset来获取优化参数,然后使用fminunc来初始化它。(常规优化设置的文档)不要忘记你可以传递fminunc作为参数,但我认为它适用于工具箱版本。

options = optimset('fminunc');
% you can try either of these two or both, but I would
% recommend only changing one at a time :-)
options = optimset(options,'TolFun',myNewTolFun)
options = optimset(options,'TolX',myNewTolX)
% then you can make your call to the optimizer
x = fminunc(fun,x0,options)

可以找到关于优化设置的令人难以置信的详细信息here