单纯型法在求逆矩阵时的数值问题

发布时间:2023年12月28日

求解线性规划的一个经典且成熟的算法是单纯形法,这也是很多线性规划求解器的一个核心算法。其中,在判断基解的出入基操作时,需要计算并判断非基变量的检验数的大小和正负符号,在计算检验数的时候需要通过约束条件,用非基变量的表达式替代基变量。

例如这样一般的约束形式:

A x = b Ax=b Ax=b

x x x 拆成基变量和非基变量,写成如下形式:

B x B + N x N = b Bx_B+Nx_N=b BxB?+NxN?=b

用非基变量表达式表示基变量,得到:

x B = B ? 1 ( b ? N x N ) x_B = B^{-1}(b-Nx_N) xB?=B?1(b?NxN?)

可以看到,基变量的系数矩阵在左右乘以 B B B 的逆矩阵而消掉,得到了 x B x_B xB? 的表达式,在这里,由于出现了逆矩阵,如果矩阵在求逆过程中有数值问题,例如前文说的四舍五入计算机存储误差等,都可能会导致 x B x_B xB? 的值变得病态,最终也导致求出的检验数有较大错误。以最简单的方阵为例, B = [ m ] → B ? 1 = [ 1 / m ] B=[m] \rightarrow B^{-1}=[1/m] B=[m]B?1=[1/m],这里如果 m m m 是一个接近于 0 的数,则逆矩阵的值将会很畸形,导致结果变化很大。

且这种出入基的操作会累计重复这种错误,从而导致算法求解结果不正确或者搜索缓慢(无效入基操作,模型退化)。由于换基,这种错误并不会不断放大,因此相比其他的优化算法,线性规划单纯型法算是对数值问题的反应比较温和,而其他算法在表述和求解问题时,因更加注重模型参数、系数的准确性。

文章来源:https://blog.csdn.net/Linshaodan520/article/details/135278657
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。