单纯形法的检验数

参考:https://wenku.baidu.com/view/d6c2ec8502d276a200292ef0.html

一、引入

对于最大值问题:
在这里插入图片描述

矩阵形式为:
在这里插入图片描述

对于m个约束条件、n个决策变量,选取m个初始基变量 x i x_{i} xi,得到初始基可行解 ( 0 , . . . , 0 , b 1 , b 2 , . . . , b m ) T (0,...,0,b1,b2,...,bm)^T (0,...,0,b1,b2,...,bm)T,以及初始单纯形表。对所得的初始单纯形表,计算 σ j {\sigma}_j σj,其中 σ j = c j − z j \sigma _j = c_j - z_j σj=cjzj,寻找最大的整数 σ j \sigma _j σj,将该列所对应的变量 x j x_j xj入基,该列最大的数所对应的行 x i x_{i} xi 出基。

二、示例

本文以如下公式为例:
在这里插入图片描述

故初始基变量: ( x 4 , x 5 , x 6 ) T (x_4, x_5, x_6)^T (x4,x5,x6)T,因为在约束条件所对应的系数矩阵中, x 4 , x 5 , x 6 x_4, x_5, x_6 x4,x5,x6对应的系数向量线性无关。

故初始基可行解为: ( 0 , 0 , 0 , 10 , 8 , 4 ) (0, 0, 0, 10, 8, 4) (0,0,0,10,8,4)

初始单纯性表:

image-20210418200510364

替换基变量步骤:

1、找出最大的正数检验数 σ j \sigma _j σj,即第2列数字2;

2、找最小正数 b x j = m i n { 10 1 , 4 2 } \frac{b}{x_j} = min\{\frac{10}{1}, \frac{4}{2}\} xjb=min{110,24} 所在行,即基变量 x 6 x_6 x6 出基, x 2 x_2 x2 入基,得到新的基变量 ( x 4 , x 5 , x 2 ) T (x_4, x_5, x_2)^T (x4,x5,x2)T,以及新的可行解: ( 0 , 2 , 0 , 8 , 10 , 0 ) (0, 2, 0, 8, 10, 0) (0,2,0,8,10,0)

3、进行初等行变换,使 x 2 x_2 x2 所在的列变换到 x 6 x_6 x6 所在的列的形式,得到新的单纯形表:

image-20210418200139831

同理: x 3 x_3 x3 进基变量, x 5 x_5 x5 出基变量,得到新的单纯性表:

在这里插入图片描述

至此,可以求得最优解: ( 0 , 12 , 5 , 8 , 0 , 0 ) T (0, 12, 5, 8, 0, 0)^T (0,12,5,8,0,0)T,最大值 z = − 19 z=-19 z=19.

三、检验数

如上文,对于线性规划问题,若满足约束条件组成的可行域有界,则目标函数的最优解必定在可行域的顶点上。

当选取了一定的基变量时,如上文的 ( x 4 , x 5 , x 6 ) T (x_4, x_5, x_6)^T (x4,x5,x6)T x 1 , x 2 , x 3 x_1, x_2, x_3 x1,x2,x3为0,则当前的目标函数值: z 0 = − x 1 + 2 x 2 − x 3 + 0 x 4 + 0 x 5 + 0 x 6 z_0 = - x_1+2x_2-x_3+0x_4+ 0x_5+0x_6 z0=x1+2x2x3+0x4+0x5+0x6

x 1 , x 2 , x 3 x_1, x_2, x_3 x1,x2,x3中的非基变量值 x i x_i xi 一旦增加,如上,最开始可行解确定好后,增加 x 2 x_2 x2 的值, x 4 , x 5 , x 6 x_4, x_5, x_6 x4,x5,x6的值必定可以减少,而 x 2 x_2 x2 的系数 c 2 = 2 > 0 c_2 = 2>0 c2=2>0 ,显然目标函数值z增加了,故目标函数值 z 0 z_0 z0 不是最优解。

而对于检验数的确定:

z = c 1 x 1 + c 2 x 2 + . . . + c n x n z = c_1 x_1 + c_2 x_2 + ... + c_n x_n z=c1x1+c2x2+...+cnxn,若 ( x 1 , x 2 , . . . , x m ) T (x_1, x_2, ..., x_m)^T (x1,x2,...,xm)T 为基变量【对应上例题中的初始基变量 ( x 4 , x 5 , x 6 ) T (x_4, x_5, x_6)^T (x4,x5,x6)T】,则 ( x m + 1 , x m + 2 , . . . , x n ) T (x_{m+1}, x_{m+2}, ..., x_n)^T (xm+1,xm+2,...,xn)T 为非基变量【对应上例题中的初始基变量 ( x 1 , x 2 , x 3 ) T (x_1, x_2, x_3)^T (x1,x2,x3)T】。显然,基变量根据约束条件可以使用非基变量表示出来,本文继续以上例题为例:
x 4 = 10 − ( x 1 + x 2 − 2 x 3 ) x 5 = 8 − ( 2 x 1 − x 2 + 4 x 3 ) x 6 = 4 − ( − x 1 + 2 x 2 − 4 x 3 ) x_4 = 10 - (x_1 + x_2 -2x_3) \\ x_5 = 8 -(2x_1 - x_2 + 4x_3) \\ x_6 = 4 - (-x_1 + 2x_2 - 4x_3) x4=10(x1+x22x3)x5=8(2x1x2+4x3)x6=4(x1+2x24x3)
带入目标函数: z = − x 1 + 2 x 2 − x 3 + 0 ∗ ( 10 − ( x 1 + x 2 − 2 x 3 ) ) + 0 ∗ ( 8 − ( 2 x 1 − x 2 + 4 x 3 ) ) + 0 ∗ ( 4 − ( − x 1 + 2 x 2 − 4 x 3 ) ) z = - x_1+2x_2-x_3+0 * (10 - (x_1 + x_2 -2x_3))+ 0*(8 -(2x_1 - x_2 + 4x_3)) +0*(4 - (-x_1 + 2x_2 - 4x_3)) z=x1+2x2x3+0(10(x1+x22x3))+0(8(2x1x2+4x3))+0(4(x1+2x24x3))

化为一般式:
z = ( c m + 1 − ( Σ i = 1 m c i ∗ c i ( m + 1 ) ) ) x m + 1 + ( c m + 2 − ( Σ i = 1 m c i ∗ c i ( m + 2 ) ) ) x m + 2 + . . . + ( c n − ( Σ i = 1 m c i ∗ c i n ) ) x n + Σ i = 1 m b i z = (c_{m+1} - (\Sigma _{i=1} ^m ci*c_{i(m+1)})) x_{m+1} + (c_{m+2}-(\Sigma _{i=1} ^m ci*c_{i(m+2)})) x_{m+2} + ... + (c_n-(\Sigma _{i=1} ^m ci*c_{in})) x_n + \Sigma _{i=1} ^m b_i z=(cm+1(Σi=1mcici(m+1)))xm+1+(cm+2(Σi=1mcici(m+2)))xm+2+...+(cn(Σi=1mcicin))xn+Σi=1mbi
从上式可以看出,对任意非基变量,其消除基变量后的系数若为正数,其数值越大,目标函数 z z z 的取值将越大。以此作为检验数。
对于本文初始目标函数: c i = 0. ( i = 3 , 4 , 5 ) c_i = 0. (i=3,4,5) ci=0.(i=3,4,5) ,故初始检验数 σ j = c j \sigma_j = c_j σj=cj 。发现 x 2 x_2 x2的检验数为2,对目标函数的更新变化最大。

以上显然未考虑 x i ( i = 1 , . . . m ) x_i(i=1,...m) xi(i=1,...m) 在约束条件中系数不为1的情况。若将其考虑,则同样可得只含有非基变量的新的目标函数。同理,将检验数最大的非基变量换出,如上,换出 x 2 x_2 x2,那换入哪一个非基变量呢?

如上文例子,若换出 x 2 x_2 x2 ,即用其他变量来表示 x 2 x_2 x2,但是其在约束条件中拥有两个正系数1和2,换出后,需要将系数转移到右边,即使用 b 系 数 \frac{b}{系数} b,此时换出一个 b 系 数 \frac{b}{系数} b 更小的基变量即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值