基本思想:从一个基本可行解出发,一步步的转到更优的基本可行解,直至最优解。
单纯形法总有两种形式,一是单纯形法,还有一种是单纯形表法。下面我们依次展开讨论。
单纯形法:
基本概念:
单纯形法其实是对消去法的一个总结,归纳和公式化。
标准线性规划问题:

讯享网,
,假设
是可行基
,根据 B 矩阵,将 x 分为基变量
和非基变量
将 c 同样分为
和
。
约束条件
可以写成:

两边左乘
,得到 
目标函数
可以写成:

将
代入目标函数表达式,得:


令
,可得
,从而得到基本解:

如果
,则
是基本可行解,B 是可行基。
目标函数
.
如果
是基本可行解,并且
,则可以断定
是最优解。
检验数向量:
定义:称
是标准线性规划的检验数向量,如果
则取到了最优解。
由此综合,可总结出定理:
1)对于标准线性规划问题,如果基矩阵为 B ,并且
( B 是可行基),并且所有的检验数都非正(即
),则对应于 B 的基本可行解
是最优解。
2)如果线性规划的某个检验数
,而相对应的列向量
,则这个线性规划无解。
下面给出运用两个定理的例题,用于加深理解。
1,判断
是否为线性规划问题的最优解?

解:
,
,![c=\left [ \begin{smallmatrix} 1\\2 \\3 \\-2 \end{smallmatrix}\right ]](https://51itzy.com/uploads/202412/23/d8d6e00325d3a7fb.jpg)
由
知,
,
是基变量,
,
是非基变量
,
下面计算检验数向量:
![(c_{B}^{T}B^{-1}A-c^{T})=(1,3)\left [\begin{smallmatrix} 1 &0 \\0 &1 \end{smallmatrix} \right ]\left [ \begin{smallmatrix} 1& -2 &0 &4 \\0 &1 &1 &-2 \end{smallmatrix} \right ]-(1,2,3,-2)](https://51itzy.com/uploads/202412/23/d8d6e00325d3a7fb.jpg)

是最优解。
2,对于下面的线性规划,讨论其有无最优解?

解:
,
,![c=\left [ \begin{smallmatrix} 1\\-1 \\0 \\0 \end{smallmatrix}\right ]](https://51itzy.com/uploads/202412/23/d8d6e00325d3a7fb.jpg)
,
下面主要判断
是否大于0?
计算检验数向量:
![(c_{B}^{T}B^{-1}A-c^{T})=(0,0)\left [ \begin{smallmatrix} 3& -2 &1 &0 \\2 &-1 &0 &1 \end{smallmatrix} \right ]-(1,-1,0,0)](https://51itzy.com/uploads/202412/23/d8d6e00325d3a7fb.jpg)

=1>0,由定理2可知 此线性规划无最优解。
算法步骤:
步骤1:找到初始可行基矩阵 B ,解
,得到
,令
,确定初始基本可行解,计算目标函数 
步骤2:求单纯性乘子 w,解
,得到
,对于所有的非基变量,计算判别数
,令
,若
,则对于所有非基变量
,对于基变量的判别数总为零,该基本可行解是最优解;否则,转步骤3;
步骤3:解
,得到
,若
,则停止运算,问题不存在有限最优解;否则,转步骤4;
步骤4:确定下标 r ,
,
为离基变量,
为进基变量,用
替换
,得到新的矩阵 B,转步骤1。
例题分析:
例题:利用单纯形法求解下列问题:

解:将约束条件化为标准型:


,
第一次迭代:
,![B^{-1}=\left [ \begin{smallmatrix} 1 &0 &0 \\ 0 & 1 & 0\\ 0 & 0 & 1 \end{smallmatrix} \right ]](https://51itzy.com/uploads/202412/23/d8d6e00325d3a7fb.jpg)
,


计算检验数:

确定进基变量:又知道对应基变量的判别数均为零,因此最大判别数是
,下标为1,
为进基变量;
确定离基变量:
,
确定下标:
![\frac{\bar{b}_{r}}{y_{r1}}={min{\frac{\bar{b}_{i}}{y_{i1}}}|y_{i1}>0}=min[\frac{12}{2},\frac{3}{1}]=\frac{3}{1}](https://51itzy.com/uploads/202412/23/d8d6e00325d3a7fb.jpg)

中第三个分量
为离基变量,用
替换
,得到新基,进行下一次迭代。
第二次迭代:
,![B^{-1}=\left [ \begin{smallmatrix} 1 &0 &1 \\ 0 & 1 &-2\\ 0 & 0 & 1 \end{smallmatrix} \right ]](https://51itzy.com/uploads/202412/23/d8d6e00325d3a7fb.jpg)
,


计算检验数:

确定进基变量:又知道对应基变量的判别数均为零,因此最大判别数是
,下标为2,
为进基变量;
确定离基变量:
,
确定下标:
![\frac{\bar{b}_{r}}{y_{r2}}={min{\frac{\bar{b}_{i}}{y_{i2}}}|y_{i2}>0}=min[\frac{7}{1},\frac{6}{5}]=\frac{6}{5}](https://51itzy.com/uploads/202412/23/d8d6e00325d3a7fb.jpg)

中第二个分量
为离基变量,用
替换
,得到新基,进行下一次迭代。
第三次迭代:
,![B^{-1}=\left [ \begin{smallmatrix} 1 &-\frac{1}{5} &\frac{7}{5} \\ 0 & \frac{1}{5} & -\frac{2}{5}\\ 0 & \frac{1}{5} & \frac{3}{5} \end{smallmatrix} \right ]](https://51itzy.com/uploads/202412/23/d8d6e00325d3a7fb.jpg)
,


计算检验数:

确定进基变量:又知道对应基变量的判别数均为零,且检验数小于零,故得到最优解。


单纯形表法:
单纯形表是通过表格的形式,按照行列式的变换规则,运算得到最优解,原理与单纯形法一致,但是书写起来更为便捷。并严格按照上文给出的定理1,判断是否为最优解。
下面依然以一道例题来解释单纯形表的运算过程:
例题分析:

可以对比得到,单纯形表法简洁不少!
Bland规则:
针对退化情况(基循环的处理),我们可以采取两个规则:
规则一:进基变量的选择
由
确定
为进基变量
规则二:离基变量的选择(和Dantzig离基规则相同)
由
确定
为进基变量
从理论上看,在单纯形算法步骤中采用 Bland 规则,可以使算法在有限步结束。
从计算实践来看,Dantzig 规则效果更好,迭代次数少。
对于线性规则问题,先按照 Dantzig 规则进行单纯形迭代,万一遇到基的循环,在采用 Bland 规则。
(行文中若有纰漏,希望大家指正)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/75930.html