NLP程序

计算问题

第一次迭代溢出

如果对参数使用错误的初始值,则计算目标函数的值(及其导数)可能导致第一次迭代中出现算术溢出。使用三次外推的直线搜索算法有对算术溢出特别敏感。如果使用行搜索的优化技术发生溢出,您可以使用INSTEP公司=选项在前五次迭代的行搜索期间减少第一个试探步骤的长度,或使用阻尼踏板MAXSTEP(最大步进)= 选项限制初始的步长$\阿尔法$在随后的迭代中。如果信任区域、double dogleg或Levenberg-Marquardt算法,您可以使用INSTEP公司=选项来减少第一次迭代的默认信任域半径。您还可以更改最小化技术或线性搜索方法。如果这些方法都不起作用,请考虑以下操作:

  • 缩放参数

  • 提供更好的初始值

  • 使用边界约束来避免可能发生溢出的区域

  • 更改计算目标函数的算法(在程序语句中指定)

评价目标函数的问题

起点$x^{(0)}$必须是一个可以由问题中涉及的所有函数进行评估的点。然而,在优化过程中,优化器可以迭代到一个点$x^{(k)}$其中目标函数或非线性约束函数及其导数无法计算。如果你能识别对于有问题的区域,可以通过向问题添加另一个约束来阻止算法到达它。另一个可能性是对目标函数的修改,这将产生一个大的、不期望的函数值。因此,优化算法减少了步长,并且更接近于在上一次迭代。有关更多信息,请参阅一节程序语句中缺少值.

非线性约束的拟Newton方法问题

QUANEW中用于求解非线性约束问题的序列二次规划算法可以更新拉格朗日乘子向量时出现问题$\亩$这通常会导致拉格朗日函数的值非常高看门狗迭代历史中指示的重新启动。如果发生这种情况,您可以尝试三种操作:

  • 默认情况下,拉格朗日向量$\亩$以与鲍威尔相同的方式进行评估(1982亿)描述。这对应于版本=2通过指定版本=1,该算法的一个修改取代了拉格朗日向量的更新$\亩$鲍威尔的原始更新(1978年a,1978年b),用于VF02AD。

  • 您可以使用INSTEP公司=选择对步长施加上限$\阿尔法$在前五次迭代期间。

  • 您可以使用不人道的=选项为Hessian指定不同的起始近似值。仅选择印度选项将使用Hessian有限差分近似的Cholesky因子(可能是脊状的)来初始化准纽顿更新过程。

其他收敛困难

如果优化器无法收敛,则需要尝试很多方法。

收敛到静止点

静止点的(投影)梯度为零,因此步长为零。满足停止标准。

有两种方法可以避免这种情况:

(约化)Hessian矩阵特征值的符号包含关于驻点的信息:

  • 如果所有特征值都为正,则Hessian矩阵是正定的,且该点是最小点。

  • 如果某些特征值为正,而所有剩余的特征值为零,则Hessian矩阵是半正定的该点是最小值或鞍点。

  • 如果所有特征值都为负,则Hessian矩阵是负定的,且该点是最大点。

  • 如果某些特征值为负,而所有剩余的特征值为零,则Hessian矩阵是负半定的该点是最大值点或鞍点。

  • 如果所有特征值都为零,则该点可以是最小值、最大值或鞍点。

溶液的精度

在某些应用中,PROC NLP可能会导致参数估计不够精确。通常这意味着程序在离最佳点太远的点过早终止。终止条件定义了最优点附近的终止区域。可以接受此区域内的任何点来终止优化过程。终止标准的默认值被设置为满足计算最常见应用的计算估算的工作量(计算机时间)和精度。然而,有一个终止条件的默认值指定区域过大或太小了。如果终止区域太大,则可能包含精度较低的点。在这种情况下,您应该检查日志或列表输出,以查找消息,说明终止优化过程的终止条件。在许多国家应用程序,只需使用旧的参数估计值作为初始值,就可以获得更高精度的解在随后的运行中,为上次运行时满足的终止条件指定较小的值。

如果终止区域太小,优化过程可能需要更长的时间才能找到该区域内的点,或者由于函数值和导数中的舍入错误,甚至找不到这样的点。这在应用程序中很容易发生其中使用导数的有限差分近似,并且GCONV公司ABSGCONV公司终止标准也是 较小以尊重梯度值中的舍入误差。