在MATLAB中使用fminsearch时如何确定总运行时间

vsmadaxz  于 2023-06-30  发布在  Matlab
关注(0)|答案(4)|浏览(176)

有没有人在这里得到了一个想法是什么命令,我应该在MATLAB中使用,以确定总的计算机时间运行Nelder-Mead算法使用FMINSEARCH,直到它停止。TQ

3zwjbxry

3zwjbxry1#

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

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

其次,Nelder-Mead算法是一种无约束非线性优化算法,它以启发式方式迭代地向最小值前进。从我的Angular 来看,它可能会更慢,找不到一个‘好’的最小值。因此,我建议您使用拟牛顿方法,如BFGS。你只需要使用函数fminunc

jhdbpxl9

jhdbpxl92#

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

tic
% yourcode
toc

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

help profile
bakd9h0s

bakd9h0s3#

代码:

t=cputime; 
your_operation; 
cputime-t

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

xqk2d5yq

xqk2d5yq4#

this answer开始,函数timeit优于使用tictoc,因为timeit中的内部操作考虑了MATLAB的细微差别。
根据documentation
timeit多次调用指定的函数,并计算测量值的中值。
考虑从fminsearch文档中获取的示例。

% MATLAB R2022a
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(fun,x0));      % median runtime in seconds

相关问题