2

这里有没有人知道我应该在 MATLAB 中使用什么命令来确定使用 FMINSEARCH 运行 Nelder-Mead 算法直到它停止所花费的总计算机时间。TQ

4

4 回答 4

3

首先,您可以使用tic / toc指令检查计算时间。例如:

tic
x = fminsearch('x^2+x+2',10)
toc

其次,Nelder-Mead 算法是一种无约束非线性优化算法,它以启发式的方式迭代地趋向最小值。从我的角度来看,它可能会更慢并且找不到“好的”最小值。因此,我建议您使用准牛顿方法,例如 BFGS。您只需要使用函数fminunc

于 2013-02-07T09:30:55.190 回答
1

如果要对特定代码段计时,可以使用

tic
% yourcode
toc

如果您无法编辑代码或想要检查函数的总运行时间,请尝试

help profile
于 2013-02-07T09:29:35.623 回答
0

编码:

t=cputime; 
your_operation; 
cputime-t

返回您的进程花费的计算 (CPU) 时间。Tic/toc 命令返回经过的运行时间;这可能取决于同时使用 CPU 的其他程序。

于 2013-02-09T10:39:00.613 回答
0

这个答案中,由于MATLAB 细微差别的内部操作,该函数timeit优于使用tic& 。toctimeit

根据文件

timeit多次调用指定的函数,并计算测量值的中位数。

考虑取自fminsearch.

% MATLAB R2018b
fun = @(x)100*(x(2) - x(1)^2)^2 + (1 - x(1))^2;
x0 = [-1.2,1];
[x,fval] = fminsearch(fun,x0);

RunTime = timeit(@() fminsearch(fh,x0));      % median runtime in seconds
于 2019-07-25T21:15:07.160 回答