Main Content

迭代和函数计算次数

一般情况下,Optimization Toolbox™ 求解器会进行迭代以求最优值。求解器从初始值 x0 开始,执行一些中间计算,最终到达新点 x1,然后重复该过程以找到局部最小值的连续逼近 x2、x3、...。经过 k 次迭代后,处理停止。

您可以通过使用 optimoptions 为求解器设置 MaxIterationsMaxFunctionEvaluations 选项来限制迭代次数或函数计算次数。或者,如果您需要求解器在达到这些限制之一后继续求解,请提高这些选项的值。请参阅设置和更改优化选项

在任何迭代步中,中间计算都可能涉及计算目标函数和任何约束在当前迭代 xi 点附近点处的值。例如,求解器可以通过有限差分来估计梯度。在每个附近点处,函数计算次数 (F-count) 增加 1。图三维空间中的典型迭代显示,在具有大小增量的正向有限差分的三维空间中,一次迭代通常对应于函数计算次数增加 4。在图中,ei 表示在第 i 个坐标方向上的单位向量。

三维空间中的典型迭代

  • 如果问题没有约束,F-count 会报告目标函数计算的总次数。

  • 如果问题有约束,F-count 仅报告进行函数计算的点的数目,而不报告约束函数的计算总次数。因此,如果问题有许多约束,F-count 可能会大大少于函数计算的总次数。

有时,求解器会尝试一个步,但随后又拒绝该尝试。trust-regiontrust-region-reflectivetrust-region-dogleg 算法将这些失败的尝试算作迭代,并在迭代输出中报告(无变化的)结果。interior-pointactive-setlevenberg-marquardt 算法不会将失败的尝试算作迭代,也不在迭代输出中报告这些尝试。无论算法如何,所有尝试的步都会使 F-count 增加。

F-count 是许多求解器的迭代输出中含有的一个项目标题。有关示例,请参阅解释结果

F-count 在输出结构体中名为 output.funcCount,您可以使用它以编程方式访问计算计数。有关详细信息,请参阅输出结构体

另请参阅

相关主题