单纯形法表的解题步骤
- 格式:pdf
- 大小:121.55 KB
- 文档页数:8
单纯形表法详细讲解
单纯形法是一种求解线性规划问题的数学方法。
以下是其详细步骤:
1. 确定初始基可行解:一般采用取松弛变量的方法来获得初始基可行解,从而得到对应的单位矩阵作为基。
2. 判断是否满足最优解条件:单纯形法从可行域中的一个点开始,判断该顶点是否为最优解。
如果不是,就寻找另一个目标函数值更优的顶点。
3. 迭代优化:通过单纯形表判断出顶点是否为最优解,如果线性规划问题没有最优解,则继续迭代优化,直到找到最优解或确定问题无解。
4. 确定最优解:在单纯形表中,理解其系数矩阵、基、基向量、非基向量和基变量等基本概念,从而确定最优解。
5. 确定换入变量和换出变量:在单纯形表中,如果发现非基变量的系数大于零,则可以通过增加这些变量的值来使目标函数增加。
由于每个变量都大于零,对于某个变量增加是有所限制的,如果该变量过大,由于其他限制条件,会导致其他变量小于零。
因此,应该让该变量一直增大,直到有一个其他变量刚好等于0为止,那么这个变量就被换出基。
6. 进行高斯行变换:使用第4行对各行进行高斯行变换,使得二列第四行中的每个x都变成零,也包括c2。
如需更多关于单纯形法的信息,可以咨询数学专家或查阅相关文献资料。
单纯形法表的解题步骤单纯形法表结构如下:j c →对应变量的价值系数i θB Cb Xb1x 2x 3x " j x基变量的价值系数基变量 资源列θ规则求的值j σ检验数①一般形式若线性规划问题标准形式如下:123451231425max 23000284164120,1,2,5j z x x x x x x x x x x x x x j =++++++=⎧⎪+=⎪⎨+=⎪⎪≥=⎩"取松弛变量345,,x x x 为基变量,它对应的单位矩阵为基。
这样就得到初始可行基解:()()00,0,8,16,12TX =。
将有关数字填入表中,得到初始单纯形表,如表1-1所示:表 1-1 ()()00,0,8,16,12TX =j c →2 3 0 0 0i θB C b X b1x 2x 3x 4x 5x0 3x 8 1 2 1 0 0 4 04x16 4 0 0 1 0 -5x12 0 [4] 0 0 1 3j σ2 3 0 0 0若检验数均未达到小于等于0,则对上表进行调整。
选择上表中检验数最大的列,该列对应的非变量为入基变量;再应用θ规则该列对应的各基变量对应的θ值,选出其中最小的一行,该行对应的基变量为出基变量。
修改单纯形表,对各行进行初等变换,确保基变量组成的矩阵为单为矩阵。
修改后的单纯形表如表1-2所示:表 1-2 ()()10,3,2,16,0TX =检验数12,0σσ>,则进行继续调整,调整后的单纯形法表如表1-3所示:表 1-3 ()()22,3,0,8,0TX =表1-3中, 50σ>,则继续进行调整,调整结果如表1-4所示:表 1-4 ()()34,2,0,0,4TX =检验数0j σ≤,这表示目标函数值已不可能再增大,于是得到最优解:()()3*4,2,0,0,4TX X ==*14z =②带人工变量现有线性规划问题:12312312313123min 321142321,,0z x x x x x x x x x x x x x x =−++−+≤⎧⎪−++≥⎪⎨−+=⎪⎪≥⎩ 将上述线性规划问题用大M 法求解,在约束条件中加入松弛变量4x ,剩余变量5x ,人工变量6x ,7x 得到:1234567123412356137min 300211423210,1,2,,7j z x x x x x Mx Mx x x x x x x x x x x x x x j =−++++++−++=⎧⎪−++−+=⎪⎨−++=⎪⎪≥=⎩"其中,M 是一个任意大的正数。
单纯形法(Simplex Method)是线性规划问题的一种求解方法。
下面我将以一个简单的线性规划问题为例,详细解释如何使用单纯形法求解。
例题:假设我们有一个简单的线性规划问题,目标是最小化目标函数 z = 3x + 2y,约束条件是 x + y <= 10, x >= 0, y >= 0。
首先,我们需要构建问题的数学模型。
数学模型可以表示为以下形式:z = 3x + 2yx + y <= 10x >= 0y >= 0然后,我们可以将这个线性规划问题表示为一个单纯形表。
单纯形表的形式如下:| c | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ||---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---||x | y | z | u | v | w | x1 | x2 | x3 | ... | xn | s.x | s.y | s.z | c.val | b.x | b.y | b.z | dual.val | dual.x1 | dual.x2 | ... | dual.xn ||在这个表中,c 是目标函数的系数,b 是约束条件的系数,s 是松弛变量的系数,dual 是对偶问题的系数,c.val 是当前解的目标函数值,b.x, b.y, b.z 是约束条件的边界值,s.x, s.y, s.z 是松弛变量的值。
现在,我们可以将例题中的数据填入单纯形表:c = [3, 2, 1]b = [1, 0, -10]s = [1, 1, 0]dual = []然后,我们可以开始迭代求解。
在每一次迭代中,我们首先找到进入变量和离开变量,然后更新单纯形表中的数据。
三、单纯形法的解题步骤第一步:作单纯形表.)(1)把原线性规划问题化为标准形式;)(2)找出初始可行基,通常取约束方程组系数矩阵中的单位矩阵;)(3)目标函数非基化;)(4)作初始单纯形表.第二步:最优解的判定.(1) 若所有检验数都是非正数,即,则此时线性规划问题已取得最优解.(2) 若存在某个检验数是正数,即,而所对应的列向量无正分量,则线性规划问题无最优解.如果以上两条都不满足,则进行下一步.第三步:换基迭代.,并确定所在列的非基变量为进基变量.(1)找到最大正检验数,设为(2)对最大正检验数所在列实施最小比值法,确定出主元,并把主元加上小括号.主元是最大正检验数所在列,用常数项与进基变量所对应的列向量中正分量的比值最小者;替换出基变量,从而得到新的基变量.也就是主元所在(3)换基:用进基变量(4)利用矩阵的行初等变换,将主元变为1,其所在列其他元素都变为零,从此得到新的单纯形表;(5)回到第二步,继续判定最优解是否存在,然后进行新一轮换基迭代,直到问题得到解决为止.例3 求.解(1)化标准型:令,引进松弛变量,其标准型为求(2)作单纯形表:在约束方程组系数矩阵中的系数构成单位矩阵,故取为基变量,目标函数已非基化了,作初始单纯形表并“换基迭代”(见表6.8).表 6.8(3)最终结果:此时检验数均为非正数,线性规划问题取得最优解,最优解为标函数取得最优值.目性规划问题的最优解为:.原线目标函数的最优值为14,即.例4 用单纯形方法解线性规划问题.求.解此数学模型已是标准型了,其中约束方程含有一个二阶单位矩阵(1、2行,3、4列构成),取为基变量,而目标函数没有非基化.从约束方程找出,,代入目标函数, 经整理后,目标函数非基化了.作单纯形表,并进行换基迭代(见表6.9).最大检验数,由最小比值法知:为主元,对主元所在列施以行初等变换,基变量出基,非基变量进基.表 6.9目前最大检验数,其所在列没有正分量,所以该线性规划问题没有最优解.例5用单纯形方法解线性规划问题.求解此数学模型已是标准型了,其中约束方程含有一个二阶单位矩阵,取为基变量,而目标函数没有非基化.从约束方程找出,,代入目标函数,经整理得,目标函数已非基化.作单纯形表,并进行换基迭代(见表6.10).最大检验数,由最小比值法知:为主元,对主元所在列施以行初等变换,基变量出基,非基变量x2进基,先将主元化为1,然后再将主元所在列的其他元素化为零.表 6.10至此,检验数均为非正数,故得基础可行解.原问题的最优解为:.最优值为6,即.如果我们再迭代一次,将基变量出基,非基变量进基(见表6.11).表 6.11可得到另一个基础可行解,原问题的最优解为:,最优值仍为6,说明该线性规划问题有无穷多最优解,其最优解均为6.如何知道线性规划问题有无穷多最优解呢?这主要反映在单纯形表中.如果非基变量所对应的检验数为0,我们可对此列继续进行换基迭代,就可以得到另一个基础可行解.以此作下去,可得到许多基础可行解,即相对应的最优解有无穷多个.(4) 011 0。
三、单纯形法的解题步骤第一步:作单纯形表.)(1)把原线性规划问题化为标准形式;)(2)找出初始可行基,通常取约束方程组系数矩阵中的单位矩阵;)(3)目标函数非基化;)(4)作初始单纯形表.第二步:最优解的判定.(1) 若所有检验数都是非正数,即,则此时线性规划问题已取得最优解.(2) 若存在某个检验数是正数,即,而所对应的列向量无正分量,则线性规划问题无最优解.如果以上两条都不满足,则进行下一步.第三步:换基迭代.,并确定所在列的非基变量为进基变量.(1)找到最大正检验数,设为(2)对最大正检验数所在列实施最小比值法,确定出主元,并把主元加上小括号.主元是最大正检验数所在列,用常数项与进基变量所对应的列向量中正分量的比值最小者;替换出基变量,从而得到新的基变量.也就是主元所在(3)换基:用进基变量(4)利用矩阵的行初等变换,将主元变为1,其所在列其他元素都变为零,从此得到新的单纯形表;(5)回到第二步,继续判定最优解是否存在,然后进行新一轮换基迭代,直到问题得到解决为止.例3 求.解(1)化标准型:令,引进松弛变量,其标准型为求(2)作单纯形表:在约束方程组系数矩阵中的系数构成单位矩阵,故取为基变量,目标函数已非基化了,作初始单纯形表并“换基迭代”(见表6.8).表 6.8(3)最终结果:此时检验数均为非正数,线性规划问题取得最优解,最优解为标函数取得最优值.目性规划问题的最优解为:.原线目标函数的最优值为14,即.例4 用单纯形方法解线性规划问题.求.解此数学模型已是标准型了,其中约束方程含有一个二阶单位矩阵(1、2行,3、4列构成),取为基变量,而目标函数没有非基化.从约束方程找出,,代入目标函数, 经整理后,目标函数非基化了.作单纯形表,并进行换基迭代(见表6.9).最大检验数,由最小比值法知:为主元,对主元所在列施以行初等变换,基变量出基,非基变量进基.表 6.9目前最大检验数,其所在列没有正分量,所以该线性规划问题没有最优解.例5用单纯形方法解线性规划问题.求解此数学模型已是标准型了,其中约束方程含有一个二阶单位矩阵,取为基变量,而目标函数没有非基化.从约束方程找出,,代入目标函数,经整理得,目标函数已非基化.作单纯形表,并进行换基迭代(见表6.10).最大检验数,由最小比值法知:为主元,对主元所在列施以行初等变换,基变量出基,非基变量x2进基,先将主元化为1,然后再将主元所在列的其他元素化为零.表 6.10至此,检验数均为非正数,故得基础可行解.原问题的最优解为:.最优值为6,即.如果我们再迭代一次,将基变量出基,非基变量进基(见表6.11).表 6.11可得到另一个基础可行解,原问题的最优解为:,最优值仍为6,说明该线性规划问题有无穷多最优解,其最优解均为6.如何知道线性规划问题有无穷多最优解呢?这主要反映在单纯形表中.如果非基变量所对应的检验数为0,我们可对此列继续进行换基迭代,就可以得到另一个基础可行解.以此作下去,可得到许多基础可行解,即相对应的最优解有无穷多个.(4) 011 0。
单纯形法表的解题步骤
单纯形法表结构如下:
j c →
对应变量的价值系数
i θ
B C
b X
b
1x 2x 3x " j x
基变量的价值系数
基变量 资源列
θ规则
求的值
j σ
检验数
①一般形式
若线性规划问题标准形式如下:
123451231425max 23000284164120,1,2,5
j z x x x x x x x x x x x x x j =++++++=⎧⎪+=⎪⎨
+=⎪⎪≥=⎩"
取松弛变量345,,x x x 为基变量,它对应的单位矩阵为基。
这样就得到初始可
行基解:()()0
0,0,8,16,12T
X =。
将有关数字填入表中,得到初始单纯形表,如表
1-1所示:
表 1-1 ()()00,0,8,16,12T
X =
j c →
2 3 0 0 0
i θ
B C b X b
1x 2x 3x 4x 5x
0 3x 8 1 2 1 0 0 4 0
4x
16 4 0 0 1 0 -
5x
12 0 [4] 0 0 1 3
j σ
2 3 0 0 0
若检验数均未达到小于等于0,则对上表进行调整。
选择上表中检验数最大的列,该列对应的非变量为入基变量;再应用θ规则该列对应的各基变量对应的
θ值,选出其中最小的一行,该行对应的基变量为出基变量。
修改单纯形表,对各行进行初等变换,确保基变量组成的矩阵为单为矩阵。
修改后的单纯形表如表
1-2所示:
表 1-2 ()()10,3,2,16,0T
X =
检验数12,0σσ>,则进行继续调整,调整后的单纯形法表如表1-3所示:
表 1-3 ()()22,3,0,8,0T
X =
表1-3中, 50σ>,则继续进行调整,调整结果如表1-4所示:
表 1-4 ()()34,2,0,0,4T
X =
检验数0j σ≤,这表示目标函数值已不可能再增大,于是得到最优解:
()()3*4,2,0,0,4T
X X ==
*14z =
②带人工变量
现有线性规划问题:
12312312313123min 3211
42321,,0
z x x x x x x x x x x x x x x =−++−+≤⎧⎪−++≥⎪⎨
−+=⎪⎪≥⎩ 将上述线性规划问题用大M 法求解,在约束条件中加入松弛变量4x ,剩余变量5x ,人工变量6x ,7x 得到:
1234567123412356137min 300211423210,1,2,,7j z x x x x x Mx Mx x x x x x x x x x x x x x j =−++++++−++=⎧⎪−++−+=⎪⎨
−++=⎪⎪≥=⎩
"
其中,M 是一个任意大的正数。
用单纯形法表进行计算,由于是求MIN ,所以用所有0j σ≥来判别目标函数是否实现了最小化。
初始单纯行表如表2-1所示:
j c →
-3 1 1 0 0 M M
i θ
B C b X b
1x 2x 3x 4x 5x 6x 7x
0 4x 10 3 -2 0 1 0 0 -1 - M 6x 1 0 [1]
0 0 -1 1 -2 1
1
3x
1 -
2 0 1 0 0 0 1 -
j σ
-1 1-M 0 0 M 0 3M-1
j c →
-3 1 1 0 0 M M
i θ
B C b X b
1x 2x 3x 4x 5x 6x 7x
0 4x 12 [3]
0 0 1 -2 2 -5 4
1 2x 1 0 1 0 0 -1 1 -
2 - 1
3x
1 -
2 0 1 0 0 0 1 -
j σ
-1 0 0 0 1 M-1 M+1
上表中得到最优解,12345674,1,9,0,2x x x x x x x z ========−
③两阶段法(含有人工变量的线性规划问题)
下面介绍求解加入人工变量的线性规划问题的两阶段法。
第一阶段:不考虑原问题是否存在基可行解,给原线性规划问题加入人工变量,并构造仅含人工变量的目标函数和要求实现最小化。
如
1111111
21122211
12min 001,,,0n n m n n n n n n n m mn n n m m
n m x x x x a x a x x b a x a x x b
a x a x x b
x x x ω++++++=++++++++=⎧⎪+++=⎪⎪
⎨
⎪+++=⎪≥⎪⎩
"""""""
然后用单纯形法求解上述模型,若得到0ω=,这说明原问题存在基可行解,可以进行第二阶段计算。
否则原问题无可行解,应停止计算。
第二阶段:将第一阶段计算得到的最终表,除去人工变量。
将目标函数行的系数,换成原问题的目标函数系数,作为第二阶段计算的初始表。
各阶段计算方法及步骤与第3节单纯形法相同。
下面举例说明。
例:线性规划问题
12312312313min 3211423211,2,30
z x x x x x x x x x x x x x x =−++++≤⎧⎪−++≥⎪⎨
−+=⎪⎪≥⎩
解:先在上述线性规划问题的约束方程中加入人工变量,给出第一阶段的数学模型为:
67
1234123561374567min 211423211,2,3,,,,0
x x x x x x x x x x x x x x x x x x x x x ω=++++=⎧⎪−++−+=⎪⎨
−++=⎪⎪≥⎩ 这里6x ,7x 是人工变量。
用单纯形法求解,如表3-1所示:
表 3-1 两阶段法求解含人工变量的线性规划问题 第一阶段
j c →
0 0 0 0 0 1 1
i θ
B C b X b
1x 2x 3x 4x 5x 6x 7x
0 4x 10 3 -2 0 1 0 0 -1 - 1 6x 1 0 [1]
0 0 -1 1 -2 1
3x
1 -
2 0 1 0 0 0 1 -
j σ
0 -1 0 0 1 0 3
j c →
0 0 0 0 0 1 1
i θ
B C
b X
b
1x 2x 3x 4x 5x 6x 7x
0 4x 12 3 0 0 1 -2 2 -5 0 2x 1 0 [1]
0 0 -1 1 -2
3x
1 -
2 0 1 0 0 0 1
j σ
0 0 0 0 0 1 1
第一阶段求得的结果是0ω=,得到最优解是:
12345670, 1.1,12,0x x x x x x x =======
因为人工变量670x x ==,所以()0,1,1,12,0T
是该线性规划问题的基可行解。
于是可以进行第二阶段运算。
将第一阶段的最终表中的人工变量取消并填入原问题的目标函数的系数。
进行第二阶段的计算,如表3-2所示:
表 3-2两阶段法求解含人工变量的线性规划问题 第二阶段
j c →
-3 1 1 0 0
i θ
B C b X b
1x 2x 3x 4x 5x
0 4x 12 [3]
0 0 1 -2 4
1 2x 1 0 1 0 0 -1 - 1
3x
1 -
2 0 1 0 0 -
j σ
-1 0 0 0 1
表3-2中得到最优解为1234,1,9x x x ===,目标函数值2z =−。
④退化情况
单纯形法计算中用θ规则确定换出变量时,有时存在两个以上相同的最小比值,这样在下一次迭代中就有一个或几个基变量等于零,这就出现退化解。
这时换出变量。
尽管计算过程的循环现象极少出现,但还是有可能的。
可利用勃兰特规则解决该问题:
(1)选取0j j c z −>中下标最小的非基变量k x 为换入基变量,即
()min |0j j k j c z =−>
(2)当按θ规则计算存在两个和两个以上最小比值时,选取下标最小的基变量为换出变量。