单纯形算法
1947年,丹齐格提出了一种求解线性规划问题的方法,即今天所称的单纯形法,这是一种简洁且高效的算法,被誉为20世纪对科学发展和工程实践影响最大的十大算法之一。
上文提到线性规划问题的最优解一定是基本可行解,单纯形法的思路即在不同的基向量下求不同的基本可行解,然后找到最优的解。从几何的角度来看,也就是从一个极点转换到另一个极点,直至找到最优极点的过程。
那么这样的话可以把算法分成三个子问题,1.如何从一个基本可行解转换到另一个基本可行解。2.如何确定应该转移到哪个极点。3.什么时候停止转移操作,即如何判断当前基本可行解是否为最优解。
极点的转移
线性规划的标准型为
minimizecTxsubject toAx=bx≥0 m i n i m i z e c T x s u b j e c t t o A x = b x ≥ 0
考虑到方程 Ax=b A x = b ,展开成如下规范型的方程组
x1+y1 m+1xm+1+...+y1nxn=y10x2+y2 m+1xm+1+...+y2nxn=y20⋮xm+ym m+1xm+1+...+ymnxn=ym0 x 1 + y 1 m + 1 x m + 1 + . . . + y 1 n x n = y 10 x 2 + y 2 m + 1 x m + 1 + . . . + y 2 n x n = y 20 ⋮ x m + y m m + 1 x m + 1 + . . . + y m n x n = y m 0
可以将该方程组转换为 [Im,Ym,n−m]x=y0 [ I m , Y m , n − m ] x = y 0 ,这种形式的方程组 Ax=b A x = b 称为 典式,方程组的典式与原方程组的解是相同的,在典式表达式中,与基列向量对应的变量为基变量,其他的变量为非基变量,即在方程 [Im,Ym,n−m]x=y0 [ I m , Y m , n − m ] x = y 0 中, x1,x2...,xm x 1 , x 2 . . . , x m 为基变量,其他的变量是非基变量。考虑增广矩阵规范型 [Im,Ym,n−m,y0] [ I m , Y m , n − m , y 0 ] ,其最后一列的各元素是向量 b b 关于基{ }的坐标。
现在考虑增广矩阵的更新,即用某个非基变量替换某个基变量,求新的基变量对应的典式表达式,比如用非基变量 aq,m<q≤n a q , m < q ≤ n 替换基变量 ap,1≤p≤m a p , 1 ≤ p ≤ m 。在原矩阵上, aq a q 可以表示为
aq=∑i=1myiqai=∑