这学期学校开设了运筹学这门课,虽然之前已经对线性规划有过了解,但是几种求解方法则是新接触,写个笔记留作复习备用
在使用线性规划的单纯形解法时我们常用到单纯形表,可以更加简洁高效的表示出单纯形法中的迭代过程,但是其中单纯形表参数很多不太方便理解,我们来归纳一下单纯形表的表示
一、单纯性表的布局
前面我们已经记录了单纯形法的基本解法,基本已经了解了上述各变量的含义
cj:为目标函数z中的各个决策变量的系数
CB:基变量的目标函数系数
XB:基变量
b:各个约束中右边项
θ值:该列的数字是在确定入基变量后,按θ规则计算后填入
这个规则较为复杂,我们在单纯形表的计算步骤中给出
最后一行为检验系数行,对应各非基变量的检验数(为下一次迭代出的目标函数系数结果)
二、单纯形表的计算步骤
(1)根据数学模型确定初始可行基和初始基可行解,建立初始单纯形表。
(2)计算各非基变量的检验数。如果所有检验系数均为非正,则已得到规划问题的最优解,可终止计算;否则,转入下一步。
(3)在所有检验系数大于零的非基变量中,如果某个非基变量xk对应的系数列向量Pk≤0,则此问题无有界最优解,可终止计算:否则,转入下一步。
(4)在所有检验系数大于零的非基变量中,选择检验系数最大的非基变量作为入基变量,按θ规则计算
这个规则看起来相当复杂,我们这里先不作解释,在下面的实例中进行解释
确定 xr为出基变量,转入下一步。
(5)将入基变量和出基变量进行换位并整理约束条件和目标函数得到新的单纯形表,重复(2)-(5),直到迭代结束
三、实例
接下来我们看一个实例
m
a
x
z
=
7
x
1
+
12
x
2
{
9
x
1
+
4
x
2
+
x
3
=
36
4
x
1
+
5
x
2
+
x
4
=
20
3
x
1
+
10
x
2
+
x
5
=
30
x
1
,
x
2
,
x
3
,
x
4
,
x
5
≥
0
\ max\quad z=7x_1+12x_2\\ \left\{ \begin {array}{l} 9x_1+4x_2+x_3=36 \quad\\ 4x_1+5x_2\quad\quad +x_4=20\\ 3x_1+10x_2\quad\quad\quad+x_5=30\\ x_1,x_2,x_3,x_4,x_5≥0 \end{array} \right.
maxz=7x1+12x2⎩
⎨
⎧9x1+4x2+x3=364x1+5x2+x4=203x1+10x2+x5=30x1,x2,x3,x4,x5≥0
首先确定初始基可行解,建立初始单纯形表。很显然,可以取变量( x3,x4,x5)为初始基变量,因为它们所对应的系数矩阵中的列向量刚好构成一个单位阵。照以上规则写出他的单纯形表
那么θ值如何求出?根据步骤(2)我们发现两个决策变量系数均为正,执行下一步
进入步骤(3),我们所有检验系数大于零的非基变量(x1,x2系数分别为7和12)中系数列向量所有值(即约束条件中的所有系数均大于0)均大于0,执行下一步
进入步骤(4),比较得出12>7,因此我们选取x2作为入基变量,那么就需要计算θ值来决定出基变量
在单纯形法中我们在确定换出变量后,需要保证其余的变量都是非负
这一步我们需要计算出换出变量的取值范围
那么这里我们令非基变量x1=0保持不变,计算x2的取值范围
{
x
3
=
36
−
4
x
2
≥
0
→
x
2
≤
9
x
4
=
20
−
5
x
2
≥
0
→
x
2
≤
4
x
5
=
30
−
10
x
2
≥
0
→
x
2
≤
3
\left\{ \begin{array}{l} x_3=36-4x_2≥0 →x_2≤9\\ x_4=20-5x_2≥0 →x_2≤4 \\ x_5=30-10x_2≥0 →x_2≤3 \end{array} \right.
⎩
⎨
⎧x3=36−4x2≥0→x2≤9x4=20−5x2≥0→x2≤4x5=30−10x2≥0→x2≤3
我们可以发现这个θ值其实就是从各个约束中得到的换出变量的上界
(这里需要补充一下,有时候我们计算范围时可能会出现恒成立的情况,此时换入变量的范围为负,这种的θ值我们不计入,在单纯形表中我们用’/'表示,因为根据θ规则这个值必须大于0才能比较)
因此我们选择其中上界最小的决策变量作为换出变量,这里3最小,我们选择x5作为换出变量进行变量的对换整理得到新的单纯形表
通过单纯形表我们发现任然存在检验数大于0的情况,为x1需要继续迭代
转入步骤(3)检查x1列向量中所有值均大于0,转入步骤(4)
进入步骤(4)此时只存在一个变量,不需要比较,直接作为换入变量
这里的θ值计算我们省略
根据结果来看2最小因此我们将x4作为换出变量,转入步骤(5)
进入步骤(5)将换入和换出变量交换,整理得出新的单纯性表,直到达到终止条件所有检验数均小于0或检验数大于0但是列向量存在小于0的情况,迭代结束