【问题标题】:How to determine the total running time when using the fminsearch in MATLAB在 MATLAB 中使用 fminsearch 时如何确定总运行时间
【发布时间】:2013-02-07 08:49:55
【问题描述】:

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

【问题讨论】:

    标签: matlab fminsearch


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      如果你想对一段特定的代码进行计时,你可以使用

      tic
      % yourcode
      toc
      

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

      help profile
      

      【讨论】:

        【解决方案3】:

        代码:

        t=cputime; 
        your_operation; 
        cputime-t
        

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

        【讨论】:

          【解决方案4】:

          this answer 开始,函数timeit 优于使用tictoc,因为timeit 中的内部操作考虑了MATLAB 的细微差别。

          根据documentation

          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
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-12-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多