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