最优化方法:线性规划标准化和单纯形表格法

提示:如果前面定理太复杂可以先看例题倒过来看

前言

小记一下,求解线性规划的单纯形法。

一、线性规划标准型

1.1标准型形式

形如:

45cf0a8729c94b9fae35fe55c935e518.png

称为线性规划问题的标准型

其中,

eq?Aeq?m%5Ctimes%20n矩阵,且eq?m%3C%20neq?rankA%3Dm
eq?ceq?n维列向量,即eq?c%5E%7BT%7Deq?n维行向量
eq?beq?m维列向量,且假设eq?b%5Cgeqslant%200

线性规划问题的理论和算法基本都是基于标准型得到的,实际出现的任何 线性规划问题都可以通过变换转为标准型。

(1)如果原问题是极大化目标函数,即eq?%5Cmax%20c%5E%7BT%7Dx。这时只需将目标函数乘以(−1), 则可等价地将其转化为极小化问题,eq?%5Cmin%20c%5E%7BT%7Dx

(2)如果右端项eq?b中的第eq?i个元素是负的, 则在第i个约束方程两边同乘以−1,将其改 成右端项非负的不等式。

(3)若约束方程为≤不等式,则可在相应不等式的左端加上非负松弛变量,将原≤ 不等式变为等式。若约束方程为≥不等式,则可在相应不等式的左端减去非负剩余变量,将原≥不等式变为等式。(松弛变量和剩余变量没啥区别,就是名字不一样,个人感觉)

(4)如果某个变量eq?x_%7Bi%7D是无非负限制的自由变量,则总可以引入两个非负变量eq?%7Bx_%7Bi%7D%7D%27,eq?%7Bx_%7Bi%7D%7D%27%27使 得eq?x_%7Bi%7D%3D%7Bx_%7Bi%7D%7D%27-%7Bx_%7Bi%7D%7D%27%27

1.2标准型例题

将下面线性规划问题转化为标准型。

58cfcba43317455d85367961f1dc8491.png

解:令eq?x_%7B2%7D%3D%7Bx_%7B2%7D%7D%27-%7Bx_%7B2%7D%7D%27%27,其中eq?%7Bx_%7B2%7D%7D%27%5Cgeqslant%200%2C%7Bx_%7B2%7D%7D%27%27%5Cgeqslant%200。引入剩余变量eq?x_%7B5%7D%5Cgeqslant%200,引入松弛变量eq?x_%7B6%7D%5Cgeqslant%200,则标准型为

088c1b3b1b0c481a92c9c31f1e38b796.png

例题用到了处理方法(1)(2)(3)(4),实际情况中可能只用到其中一部分。

二、单纯形表格法

2.1相关概念和定义

eq?A写成分块矩阵eq?A%3D%5Cleft%20%5B%20B%2CN%20%5Cright%20%5D,记eq?x%3D%20%5Cbinom%7Bx_%7BB%7D%7D%7Bx_%7BN%7D%7Deq?c%5E%7BT%7D%3D%28c_%7BB%7D%5E%7BT%7D%2Cc_%7BN%7D%5E%7BT%7D%29

因此eq?Ax%3Db可以写成eq?Bx_%7BB%7D+Nx_%7BN%7D%3D%20b

eq?x_%7BB%7D%3DB%5E%7B-1%7Db-B%5E%7B-1%7DNx_%7BN%7D

再令eq?x_%7BN%7D%3D0,得到eq?Ax%3Db的一个解eq?x%3D%20%5Cbinom%7BB%5E%7B-1%7Db%7D%7B0%7D

其中:

eq?B是矩阵eq?Aeq?m%5Ctimes%20m阶非奇异子矩阵eq?%5Cleft%20%28%20%5Cleft%20%7C%20B%20%5Cright%20%7C%5Cneq%200%20%5Cright%20%29,矩阵eq?B是线性规划问题的一个基。
eq?Neq?A中剩余列向量组成的eq?m%5Ctimes%20%28n-m%29矩阵

基本解、可行解、基本可行解、最优基本可行解

eq?Ax%3Dbeq?x%3D%20%5Cbinom%7BB%5E%7B-1%7Db%7D%7B0%7D,即eq?x_%7BN%7D%3D0基本解基本可行解

最优基本可行解

eq?x%3D%20%5Cbinom%7Bx_%7BB%7D%7D%7Bx_%7BN%7D%7D%5Cgeqslant%200可行解最优可行解
使eq?f%3D%20c%5E%7BT%7Dx取得最小值

2.2单纯形表法

单纯形表法的目标是求解最优基本可行解,形如:

647eb7ba26c14ffb9ba2d70803824100.png

其中:eq?B_%7Bk%7D为基矩阵,eq?x_%7BB%7D%5E%7B%28k%29%7D为基变量。在eq?x%5E%7B%28k%29%7D处的目标函数值为

1463d79d21a84b8a8d70b1c9b2352df1.png

先对线性规划问题做等价变换,引入中间变量eq?f让线性规划问题的形式往最优可行解的形式靠近。

eq?min   eq?f

eq?s.t.     eq?Ax%3Db

  eq?f-c%5E%7BT%7Dx%3D0

  eq?x%5Cgeq%200

eq?A%3D%5Cleft%20%5B%20B%2CN%20%5Cright%20%5D,记eq?x%3D%20%5Cbinom%7Bx_%7BB%7D%7D%7Bx_%7BN%7D%7Deq?c%5E%7BT%7D%3D%28c_%7BB%7D%5E%7BT%7D%2Cc_%7BN%7D%5E%7BT%7D%29

ca80bdbc608f475ea3bb7d7b6e5151fe.png

由上述约束方程系数得到如下单纯形表,其包含了单纯形方法所需要的所有数据。

27d4b62aec0d44a1b955b47eac861081.png

下面我们讨论如何用单纯形表求解标准线性规划问题。由于单纯形表中已经包含了m阶单位矩阵,因此已经给出了一个基本可行解。

eq?z_%7Bj%7D%3Dc_%7BB%7D%5E%7BT%7DB%5E%7B-1%7DN_%7Bj%7D%2Cj%5Cin%20%5Cmathbb%7BN%7D_%7Bk%7D,其中eq?%5Cmathbb%7BN%7D_%7Bk%7D非基本变量指标集(除去Im剩下的,就是xN下面对应的列)。我们称eq?z_%7Bj%7D-c_%7Bj%7D为判别数或检验数。

(1)停机准则

若所有判别数都小于等于0,即eq?c_%7BB%7D%5E%7BT%7DB%5E%7B-1%7DN-c_%7BN%7D%5E%7BT%7Deq?%5Cleq%200,则现行基本可行解是最优解。

3b00bb1340b34b69b08079ec6b88918d.png

(2)改进基本可行解

若存在指标使得eq?c_%7BB%7D%5E%7BT%7DB%5E%7B-1%7DN-c_%7BN%7D%5E%7BT%7Deq?%3E%200

我们需要进行主元消去法求解改进的基本可行解。由

123d020eb79b47c596ba959236bf36f4.png

决定eq?x_%7Bp%7D进基变量,它所对应的列为主列。

再令eq?%5Cbar%7Bb%7D%3DB%5E%7B-1%7Db%2Cy_%7Bp%7D%3DB_%7Bk%7D%5E%7B-1%7DN_%7Bp%7D

1b86456b3f5b40679dc60482f8daa359.png

决定第eq?r行为主行。主行和主列交叉的元素eq?y_%7Brp%7D为主元。然后进行主元消去法, 使得主列化为单位列向量。

一般地,我们通过从原始变量、引入的松弛变量或人工变量选 取初始基变量,使得相应初始基矩阵为单位阵,即eq?B%3DI,然后计算初始的判别数得到初始单 纯形表。

2.3单纯形法例题

用单纯形方法求解下列线性规划问题:

c8f6e54ef1614d16b2e699bd13221c69.png

解:引入松弛变量eq?x_%7B4%7D%2Cx_%7B5%7D%2Cx_%7B6%7D转化为标准型:

cb0126bb9c584d6c843d15b9b05cd3d6.png

由标准型,可选取为eq?x_%7B4%7D%2Cx_%7B5%7D%2Cx_%7B6%7D基变量,建立单纯形表:

基变量eq?c_%7BB%7D

eq?x_%7B1%7D   eq?x_%7B2%7D   eq?x_%7B3%7D   eq?x_%7B4%7D   eq?x_%7B5%7D   eq?x_%7B6%7D

1     -3     -1     0     0     0

eq?beq?%5Cfrac%7Bb_%7Bi%7D%7D%7By_%7Bip%7D%7D

eq?x_%7B4%7D

eq?x_%7B5%7D

eq?x_%7B6%7D

 0

 0

 0

 3     -1     2     1     0     0

 -2     4     0     0     1     0

 -4     3     8     0     0     1

7

12

10

7/-1

12/4

10/3

eq?z_%7Bp%7D  0     0     0     0     0     00
eq?z_%7Bp%7D-c_%7Bp%7D -1     3     1     0     0     0

其中:eq?B%3DI,eq?z_%7Bp%7D = eq?c_%7BB%7D%5E%7BT%7DB%5E%7B-1%7DNeq?c_%7Bp%7D = eq?c_%7BN%7D%5E%7BT%7D

由于eq?z_%7B2%7D-c_%7B2%7D%3Dmax%5Cleft%20%5C%7B%20z_%7Bi%7D-c_%7Bi%7D%20%5Cright%20%5C%7D%3D3,因此取第2列作为主列,eq?x_%7B2%7D为进基变量。由于eq?%5Cfrac%7B%5Cbar%7Bb_%7B2%7D%7D%7D%7By_%7B22%7D%7D%3Dmin%5Cleft%20%5C%7B%20%5Cfrac%7B12%7D%7B4%7D%20%2C%5Cfrac%7B10%7D%7B3%7D%5Cright%20%5C%7D%3D3,因此取第2行为主行,且x5为出基变量。主元为eq?y_%7B22%7D%3D4,进行主元消去,将变量x2对应的列变换为单位列向量。新的基变量为x4,x2,x6。得到下表。

基变量eq?c_%7BB%7D

eq?x_%7B1%7D   eq?x_%7B2%7D   eq?x_%7B3%7D   eq?x_%7B4%7D   eq?x_%7B5%7D   eq?x_%7B6%7D

1     -3     -1     0     0     0

eq?beq?%5Cfrac%7Bb_%7Bi%7D%7D%7By_%7Bip%7D%7D

eq?x_%7B4%7D

eq?x_%7B2%7D

eq?x_%7B6%7D

 0

 -3

 0

5/2   0      2     1   1/4    0 -1/2  1      0     0   1/4    0

-5/2  0      8     0  -3/4    1

10

3

1

10/2

1/8

eq?z_%7Bp%7D 1/2 -3      0    0   -3/4     0-9
eq?z_%7Bp%7D-c_%7Bp%7D1/2   0      1    0    -3/4    0

由于eq?z_%7B3%7D-c_%7B3%7D%3Dmax%5Cleft%20%5C%7B%20z_%7Bi%7D-c_%7Bi%7D%20%5Cright%20%5C%7D%3D1,因此取第3列作为主列,eq?x_%7B3%7D为进基变量。由于eq?%5Cfrac%7B%5Cbar%7Bb_%7B3%7D%7D%7D%7By_%7B33%7D%7D%3Dmin%5Cleft%20%5C%7B%20%5Cfrac%7B10%7D%7B2%7D%20%2C%5Cfrac%7B1%7D%7B8%7D%5Cright%20%5C%7D%3D%5Cfrac%7B1%7D%7B8%7D,因此取第3行为主行,且x6为出基变量。主元为eq?y_%7B33%7D%3D8,进行主元消去,将变量x3对应的列变换为单位列向量。新的基变量为x4,x2,x3。得到下表。

基变量eq?c_%7BB%7D

 eq?x_%7B1%7D   eq?x_%7B2%7D   eq?x_%7B3%7D   eq?x_%7B4%7D   eq?x_%7B5%7D   eq?x_%7B6%7D

 1     -3     -1     0      0       0

eq?beq?%5Cfrac%7Bb_%7Bi%7D%7D%7By_%7Bip%7D%7D

eq?x_%7B4%7D

eq?x_%7B2%7D

eq?x_%7B3%7D

 0

 -3

 -1

8/25   0     0     1   7/16   -1/4

-1/2    1     0     0   1/4      0

-5/16  0     1     0  -3/32    1/8

39/4

3

1/8

78/25

eq?z_%7Bp%7D29/16 -3   -1    0  -21/32   -1/8-73/8
eq?z_%7Bp%7D-c_%7Bp%7D13/16  0    0    0  -21/32   -1/8

由于eq?z_%7B1%7D-c_%7B1%7D%3Dmax%5Cleft%20%5C%7B%20z_%7Bi%7D-c_%7Bi%7D%20%5Cright%20%5C%7D%3D%5Cfrac%7B13%7D%7B16%7D,因此取第1列作为主列,eq?x_%7B1%7D为进基变量。由于eq?%5Cfrac%7B%5Cbar%7Bb_%7B1%7D%7D%7D%7By_%7B11%7D%7D%3Dmin%5Cleft%20%5C%7B%20%5Cfrac%7B39%7D%7B4%7D%20%2C%5Cfrac%7B8%7D%7B25%7D%5Cright%20%5C%7D%3D%5Cfrac%7B8%7D%7B25%7D,因此取第1行为主行,且x4为出基变量。主元为eq?y_%7B11%7D%3D%5Cfrac%7B8%7D%7B25%7D,进行主元消去,将变量x1对应的列变换为单位列向量。新的基变量为x,x2,x3。得到下表。

基变量eq?c_%7BB%7D

 eq?x_%7B1%7D   eq?x_%7B2%7D   eq?x_%7B3%7D    eq?x_%7B4%7D     eq?x_%7B5%7D       eq?x_%7B6%7D

 1     -3     -1      0         0         0

eq?beq?%5Cfrac%7Bb_%7Bi%7D%7D%7By_%7Bip%7D%7D

eq?x_%7B1%7D

eq?x_%7B2%7D

eq?x_%7B3%7D

 1

 -3

 -1

 1     0     0      8/25    7/50    -2/25

 0     1     0      4/25    8/25    -1/25

 0     0     1      1/10   -1/20     1/10

78/25

114/25

1/10

eq?z_%7Bp%7D 1    -3    -1    -13/50  -77/100 -3/50-583/50
eq?z_%7Bp%7D-c_%7Bp%7D 0     0     0    -13/50  -77/100  -3/50

由于所有eq?z_%7Bi%7D-c_%7Bi%7D%5Cleq%200, 因此达到最优值,由单纯形表可知,所得到的最优值是

2899324af5974cc29ccdf905acb84129.png

目标函数最优值

8f0a13c5d3a24d9ea09c017708fddb18.png


总结

好好努力!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值