Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab如何决定接受fminunc中的步骤?_Matlab_Minimization - Fatal编程技术网

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

Matlab如何决定接受fminunc中的步骤?,matlab,minimization,Matlab,Minimization,我用的是fminunc。具体来说,我使用了一个带有BFGS和用户提供的梯度的拟牛顿法来最小化函数。它进行大约3次迭代,然后进行一系列函数求值。我有一个函数,我试图在调用它时最小化显示它的值,我可以看到,在第四次迭代中调用了几次后,它明显小于第三次迭代时的值,但是Matlab继续评估该函数,我不确定为什么。有什么我可以调整的,告诉它接受更新并移动到下一个迭代吗 听起来您对优化器非常了解,让我们看看是否可以帮助您进行optimset设置。从中,它指出了如何放宽公差,以使用以下参数终止优化: 函数值上

我用的是fminunc。具体来说,我使用了一个带有BFGS和用户提供的梯度的拟牛顿法来最小化函数。它进行大约3次迭代,然后进行一系列函数求值。我有一个函数,我试图在调用它时最小化显示它的值,我可以看到,在第四次迭代中调用了几次后,它明显小于第三次迭代时的值,但是Matlab继续评估该函数,我不确定为什么。有什么我可以调整的,告诉它接受更新并移动到下一个迭代吗

听起来您对优化器非常了解,让我们看看是否可以帮助您进行optimset设置。从中,它指出了如何放宽公差,以使用以下参数终止优化:

函数值上的TolFun终止容差,一个正标量。这个 默认值为1e-6

TolX终止公差在x上,为正标量。默认值为 1e-6

听起来你有优化工具箱,在这种情况下,我相信你可以使用它来获取优化参数,然后使用
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)
optim设置上令人痛苦的细节可以找到