本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

迭代输出

简介

迭代输出包含一系列的统计量,用来描述求解器在每次迭代中的计算。统计量取决于求解器和求解器算法。当您使用适当的选项运行求解器时,该表会出现在 MATLAB® 命令行窗口中。有关迭代的详细信息,请参阅迭代和函数计算次数

通过使用 optimoptions 并将 Display 选项设置为 'iter''iter-detailed',获得迭代输出。例如:

options = optimoptions(@fminunc,'Display','iter','Algorithm','quasi-newton');
[x fval exitflag output] = fminunc(@sin,0,options);
                                                  First-order 
Iteration  Func-count     f(x)       Step-size     optimality
    0           2              0                           1
    1           4      -0.841471             1          0.54 
    2           8             -1      0.484797      0.000993 
    3          10             -1             1      5.62e-05 
    4          12             -1             1             0 

Local minimum found.

Optimization completed because the size of the gradient is less than
the value of the optimality tolerance.

您也可以使用 Optimization 工具获得迭代输出。在 Options 窗格的 Display to command window 部分中,选择 Level of display >iterative” 或 “iterative with detailed message”。

迭代输出适用于除下列求解器之外的所有求解器:

  • lsqlin 'trust-region-reflective' 算法

  • lsqnonneg

  • quadprog 'trust-region-reflective' 算法

常见标题

下表列出了迭代输出的一些常见项目标题。

标题显示的信息

f(x)Fval

当前目标函数值;对于 fsolve,是函数值向量的范数的平方

First-order optimality

一阶最优性度量(请参阅一阶最优性度量

Func-countF-count

函数计算次数;请参阅迭代和函数计算次数

IterationIter

迭代编号;请参阅迭代和函数计算次数

Norm of step

当前步的大小(表示为欧几里德范数,或 2-范数)。对于 'trust-region''trust-region-reflective' 算法,当存在约束时,Norm of stepD*s 的范数。此处,s 是步长,D 是算法说明的信赖域子问题部分中所述的对角线缩放矩阵。

函数特定项目标题

本节中的表介绍各优化函数的迭代输出中的特定项目标题。

fgoalattain、fmincon、fminimax 和 fseminf

下表描述了特定于 fgoalattainfminconfminimaxfseminf 的输出标题。

fgoalattain、fmincon、fminimax 或 fseminf 的输出标题显示的信息

Attainment factor

fgoalattain 的达到因子的值

CG-iterations

当前迭代中采用的共轭梯度迭代次数(请参阅Preconditioned Conjugate Gradient Method

Directional derivative

目标函数沿搜索方向的梯度

Feasibility

最大约束违反度,其中满足条件的不等式约束计为 0

Line search steplength

缩放搜索方向的乘法因子(请参阅公式 29

Max constraint

内部构造的和用户提供的所有约束的最大违反度;当没有绑定约束时,可以为负值

Objective value

fminimax 的 minimax 问题的非线性规划重新表示的目标函数值

Procedure

Hessian 矩阵更新过程:

  • Infeasible start point

  • Hessian not updated

  • Hessian modified

  • Hessian modified twice

有关详细信息,请参阅Updating the Hessian Matrix

QP 子问题过程:

  • dependent - 求解器检测到并删除了相关(冗余)等式约束。

  • Infeasible - 具有线性化约束的 QP 子问题不可行。

  • Overly constrained - 具有线性化约束的 QP 子问题不可行。

  • Unbounded - 具有大负曲率的 QP 子问题可行。

  • Ill-posed - QP 子问题搜索方向太小。

  • Unreliable - QP 子问题似乎是病态的。

Steplength

缩放搜索方向的乘法因子(请参阅公式 29

Trust-region radius

当前信赖域半径

fminbnd 和 fzero

下表描述了特定于 fminbndfzero 的输出标题。

fminbnd 或 fzero 的输出标题显示的信息

Procedure

fminbnd 的过程:

  • initial

  • golden(黄金分割搜索)

  • parabolic(抛物线插值)

fzero 的过程:

  • initial(初始点)

  • search(搜索包含零的区间)

  • bisection

  • interpolation(线性插值或逆二次插值)

x

算法的当前点

fminsearch

下表描述了特定于 fminsearch 的输出标题。

fminsearch 的输出标题显示的信息

min f(x)

当前单纯形中的最小函数值

Procedure

当前迭代中的单纯形过程。过程包括:

  • initial simplex

  • expand

  • reflect

  • shrink

  • contract inside

  • contract outside

有关详细信息,请参阅 fminsearch Algorithm

fminunc

下表描述了特定于 fminunc 的输出标题。

fminunc 的输出标题显示的信息

CG-iterations

当前迭代中采用的共轭梯度迭代次数(请参阅Preconditioned Conjugate Gradient Method

Line search steplength

缩放搜索方向的乘法因子(请参阅公式 11

fminunc 'quasi-newton' 算法可以在 First-order optimality 列的右侧发出 skipped update 消息。此消息表示 fminunc 没有更新其 Hessian 矩阵估计值,因为生成的矩阵不是正定矩阵。该消息通常指示目标函数在当前点处不平滑。

fsolve

下表描述了特定于 fsolve 的输出标题。

fsolve 的输出标题显示的信息

Directional derivative

函数沿搜索方向的梯度

Lambda

Levenberg-Marquardt 方法中定义的 λk

Residual

函数的残差(平方和)

Trust-region radius

当前信赖域半径(信赖域半径的范数变化)

intlinprog

下表描述了特定于 intlinprog 的输出标题。

intlinprog 的输出标题显示的信息

nodes explored

探查的节点的累积数

total time (s)

intlinprog 启动以来的时间(以秒为单位)

num int solution

找到的整数可行点的数量

integer fval

找到的最佳整数可行点的目标函数值。此值是最终目标函数值的上界

relative gap (%)

100(ba)|b|+1,

其中

  • b 是最佳整数可行点的目标函数值。

  • a 是目标函数值的最佳下界。

注意

虽然您将 RelativeGapTolerance 指定为十进制数字,但迭代输出和 output.relativegap 以百分比形报告该间隙,即测量的相对间隙的 100 倍。如果退出消息涉及相对间隙,则该值是测量的相对间隙,而不是百分比。

linprog

下表描述了特定于 linprog 的输出标题。每个算法都有自己的迭代输出。

linprog 的输出标题显示的信息

Primal Infeas A*x-bPrimal Infeas

原始不可行性,约束违反度的一种度量,在解处应为零。

有关定义,请参阅Predictor-Corrector ('interior-point') 或Main Algorithm ('interior-point-legacy') 或Dual-Simplex Algorithm

Dual Infeas A'*y+z-w-fDual Infeas

对偶不可行性,拉格朗日导数的一种度量,在解处应为零。

有关拉格朗日函数的定义,请参阅Predictor-Corrector。有关对偶不可行性的定义,请参阅Predictor-Corrector ('interior-point') 或Main Algorithm ('interior-point-legacy') 或Dual-Simplex Algorithm

Upper Bounds {x}+s-ub

上界可行性。{x} 指那些具有有限上界的 x。此值是Interior-Point-Legacy Linear Programming中的 ru 残差。

Duality Gap x'*z+s'*w

原始目标和对偶目标之间的对偶间隙(请参阅Interior-Point-Legacy Linear Programming)。仅当问题具有有限上界时,sw 才会出现在此方程中。

Total Rel Error

总相对误差,在Main Algorithm的末尾有介绍

Complementarity

拉格朗日乘数乘以与边界的距离的一种度量,在解处应为零。请参阅Stopping Conditions中的 rc 变量。

Time

linprog 已运行的时间(以秒为单位)

lsqlin

lsqlin 'interior-point' 迭代输出继承自 quadprog 迭代输出。内点线性最小二乘中解释了这些函数之间的关系。有关迭代输出的详细信息,请参阅 quadprog

lsqnonlin 和 lsqcurvefit

下表描述了特定于 lsqnonlinlsqcurvefit 的输出标题。

lsqnonlin 或 lsqcurvefit 的输出标题显示的信息

Directional derivative

函数沿搜索方向的梯度

Lambda

Levenberg-Marquardt 方法中定义的 λk

Resnorm

x 处的残差的 2-范数平方的值

Residual

函数的残差向量

quadprog

下表描述了特定于 quadprog 的输出标题。只有 'interior-point-convex' 算法具有迭代输出。

quadprog 的输出标题显示的信息

Primal Infeas

原始不可行性,定义为 max( norm(Aeq*x - beq, inf), abs(min(0, min(A*x-b))) )

Dual Infeas

对偶不可行性,定义为 norm(H*x + f - A*lambda_ineqlin - Aeq*lambda_eqlin, inf)

Complementarity

非活动不等式的拉格朗日乘数的最大绝对值的一种度量,在解处应为零。在Infeasibility Detection中此量为 g。