线性规划

150 阅读6分钟

线性规划模型

生产计划问题

用 3 种原料混合配制 2 种清洁剂, 这 2 种清洁剂应 各配制多少 才能使总价值最大?

image.png

目标函数

max z=12x+15ymax\ z = 12x + 15y

约束条件(s.t.)

0.25x+0.50y1200.50x+0.50y1500.25x50x0,y0\begin{gathered} 0.25x + 0.50y \le 120\\ 0.50x + 0.50y \le 150\\ 0.25x \le 50\\ x \ge 0, y \ge 0 \end{gathered}

运输问题

产销平衡, 试制定供销方案, 使总运费最小?

image.png

目标函数

min z=3x11+2x12+7x13+7x21+5x22+2x23min\ z = 3x_{11} + 2x_{12} + 7x_{13} + 7x_{21} + 5x_{22} + 2x_{23}

约束条件

x11+x12+x13=5000x21+x22+x23=6000x11+x21=6000x12+x22=4000x13+x23=1000\begin{gathered} x_{11} + x_{12} + x_{13} = 5000\\ x_{21} + x_{22} + x_{23} = 6000\\ x_{11} + x_{21} = 6000\\ x_{12} + x_{22} = 4000\\ x_{13} + x_{23} = 1000 \end{gathered}

一般形式

min or max z=j=1ncjxjs.t. j=1naijxj or  or =bixj0\begin{gathered} min\ or\ max\ z = \sum_{j=1}^n c_j x_j \\ s.t. \ \sum_{j=1}^na_{ij}x_j\ge\ or\ \le\ or \ = b_i \\ x_j\ge 0 \end{gathered}
  • 可行解 满足约束条件和非负条件的变量

  • 可行域 全体可行解

  • 最优解 目标函数值最小(最大)的可行解

  • 最优值 最优解的目标函数值

二维线性规划图解

image.png

实际求解在取值范围内 12x+15y12x+15y 截距的最大值, 当与 BB 相切时截距最大, 即 x=120,y=180x=120, y=180

image.png

此时不存在最优解( z 可以无穷小下去 ), 可行解有无穷个

标准形

min z=j=1ncixis.t.j=1naijxj=bi0,i=1,2,,mxj0,j=1,2,,n\begin{gathered} min\ z = \sum_{j=1}^n c_ix_i \\ s.t. \sum_{j=1}^n a_{ij} x_j = b_i \ge 0, i = 1, 2, \cdots, m \\ x_j\ge 0, j = 1,2,\cdots,n \end{gathered}

转为标准型

  • maxmax 换成 minmin , 即 cj=cjc_j' = -c_j

  • j=1naijxjbi\sum_{j=1}^n a_{ij}x_j \le b_i 引入松弛变量 yj0y_j\ge0 使得 j=1naijxj+yj=bi\sum_{j=1}^n a_{ij}x_j + y_j = b_i

  • j=1naijxjbi\sum_{j=1}^n a_{ij}x_j \ge b_i 引入剩余变量 yj0y_j\ge0 使得 j=1naijxjyj=bi\sum_{j=1}^n a_{ij}x_j - y_j = b_i

  • 自由变量 xjx_j 变为 xjxjx_j'-x_j'' , xj0,xj0x_j' \ge 0, x_j'' \ge 0

因为标准形中要求变量非负, 因此自由变量写成减法的形式, 即 xj=xjxjx_j=x_j'-x_j'' , 这样就可以要求两个新变量都是正数, 若已知 xj0x_j \ge 0 , 则不需要这样转

例子

max z=3x12x2+x3max\ z = 3x_1 − 2x_2 + x_3
x1+3x23x3104x1x25x330x10,x20,x3\begin{gathered} x_1 + 3x_2 − 3x_3 \le 10 \\ 4x_1 − x_2 − 5x_3 \le -30 \\ x_1 \ge 0, x_2 \ge 0, x_3 \end{gathered}

转化为标准型后为

注意这里 x3x_3 没有明确是正数还是负数, 因此需要转为 xjxjx_j'-x_j''

min z=3x1+2x2x3+x3x1+3x23x3+3x3+x4=104x1+x2+5x35x3x5=30x10,x20,x30,x30,x40,x50\begin{gathered} min\ z = -3x_1 + 2x_2 - x_3' + x_3'' \\ x_1 + 3x_2-3x_3' + 3x_3'' + x_4 = 10 \\ -4x_1 + x_2 + 5x_3' - 5x_3'' - x_5 = 30 \\ x_1 \ge 0, x_2 \ge 0, x_3' \ge 0, x_3'' \ge 0, x_4 \ge 0, x_5 \ge 0 \end{gathered}

标准形矩阵

image.png

image.png

min z=cTxs.t. Ax=b or j=1nPjxj=bx0\begin{gathered} min\ z = c^Tx \\ s.t. \ Ax = b\ or\ \sum_{j=1}^n P_jx_j = b \\ x \ge 0 \end{gathered}

可行解性质

AA 的秩为 mm, AAmm线性无关 的列向量称作标准形的 , 给定基 B=(P1,P2,,Pm)B=(P_1, P_2, \cdots, P_m) , 对应基中列向量的变量 x1,x2,,xmx_1, x_2, \cdots, x_m, 称作 基变量 , 其余的变量称作 非基变量

基变量构成的向量记作 xBx_B , 非基变量构成的向量记作 xNx_N, 令 xN=0x_N = 0 , 约束条件变成 BxB=bBx_B = b , 解得 xB=B1bx_B = B^{-1}b , 这个向量 xx 满足约束 Ax=bAx=b 且非基变量 全为 0 , 称作关于基 BB基本解

如果 xx 是一个基本解且 x0x \ge 0 , 则称 xx 是一个 基本可行解 , 对应的基 B 为 可行基

例子

min z=12x115x2min\ z = −12x_1 − 15x_2
0.25x1+0.50x2+x3=1200.50x1+0.50x2+x4=1500.25x1+x5=50\begin{aligned} 0.25x_1 + 0.50x_2 + x_3 &= 120 \\ 0.50x_1 +0.50x_2 + x_4 &= 150 \\ 0.25x_1 + x_5 &= 50 \end{aligned}
xi0,i=1,2,,5x_i \ge 0, i = 1,2,\cdots,5

image.png

取基 B1=(P1,P2,P3)B_1=(P_1,P_2,P_3) , 基变量 x1,x2,x3x_1, x_2, x_3 , 非基变量 x4,x5x_4, x_5 , 令 x4=0,x5=0x_4=0, x_5=0

image.png

解得 x1=200,x2=100,x3=20x_1=200, x_2=100, x_3=20 , x(1)=(200,100,20,0,0)Tx^{(1)}=(200,100,20,0,0)^T基本可行解 ( 要求 xi0x_i \ge 0 ), B1B_1 是可行基

若取基 B2=(P1,P2,P4)B_2=(P_1, P_2, P_4) , 则

image.png

解得 x(2)=(200,140,0,20,0)x^{(2)}=(200, 140, 0, -20, 0) 是一个基本解, 但不是基本可行解, 因此 B2B_2 不是可行基

定理

Ax=bAx = b 的解 α\alpha 是基本解, 当且仅当 α\alpha 中非零分量对应的列向量线性无关

  • 如果标准形有可行解, 则必有基本可行解

  • 如果标准形有最优解, 则必存在一个基本可行解是最优解

  • AAmmnn 列, 也就是说秩最多为 mm, 至多有 CnmC_n^m 个基(本解) , 即从 nn 列中取 mm 列组合为基

单纯形法

初始基本可行解

max z=12x+15ymax\ z = 12x + 15y
0.25x+0.5y1200.5x+0.5y1500.25x50x0y0\begin{aligned} 0.25x+0.5y &\le 120 \\ 0.5x+0.5y &\le 150 \\ 0.25x &\le 50 \\ x &\ge 0 \\ y &\ge 0 \end{aligned}

化为标准形后

min z=12x15ymin\ z' = -12x - 15y
0.25x1+0.50x2+x3=1200.50x1+0.50x2+x4=1500.25x1+x5=50xi0\begin{aligned} 0.25x_1+0.50x_2+x_3 &= 120 \\ 0.50x_1+0.50x_2+x_4 &= 150 \\ 0.25x_1+x_5 &= 50 \\ x_i &\ge 0 \end{aligned}

若取基变量为 x3,x4,x5x_3, x_4, x_5 , 实际上初始可行基为 单位矩阵

image.png

则初始基本可行解为 x(0)=(0,0,120,150,50)Tx^{(0)}=(0,0,120,150,50)^T

最优性检验

给定可行基 B=(P1,P2,,Pm)B=(P_1, P_2, \cdots, P_m)

对于约束条件 Ax=bAx=b 两边同时乘上 B1B^{-1} 得到

B1Ax=B1bB^{-1}Ax=B^{-1}b

假设 AA 中对应非基变量的列构成的矩阵为 NN , 则有

xB+B1NxN=B1bx_B+B^{-1}Nx_N=B^{-1}b

注意 AA 中基变量对应的矩阵为 BB , 因此 B1BxB=xBB^{-1}Bx_B=x_B

解得

xB=B1bB1NxNx_B=B^{-1}b-B^{-1}Nx_N

将上述式子带入目标函数 z=cTxz=c^Tx

z=cTx=cBTxB+cNTxN=cBT(B1bB1NxN)+cNTxN=cBTB1b+(cNTcBTB1N)xN\begin{aligned} z &= c^Tx \\ \\ &= c_B^Tx_B + c_N^Tx_N \\ \\ &= c_B^T(B^{-1}b-B^{-1}Nx_N) + c_N^Tx_N \\ \\ &= c_B^TB^{-1}b + (c_N^T-c_B^TB^{-1}N)x_N \end{aligned}

由于基本可行解为 xB(0)=B1b,xN(0)=0x_B^{(0)}=B^{-1}b, x_N^{(0)}=0 , 因此目标函数值为

z0=cBTB1bz_0 = c_B^TB^{-1}b

因此目标函数可以变为

z=cTx=z0+(cNTcBTB1N)xN=z0+(cBTcBTB1B)xB+(cNTcBTB1N)xN=z0+(cTcBTB1A)x\begin{aligned} z &= c^Tx \\ \\ &= z_0 + (c_N^T-c_B^TB^{-1}N)x_N \\ \\ &= z_0 + (c_B^T-c_B^TB^{-1}B)x_B + (c_N^T-c_B^TB^{-1}N)x_N \\ \\ &= z_0 + (c^T-c_B^TB^{-1}A)x \end{aligned}

令检验数为

λT=cTcBTB1A\lambda^T=c^T-c_B^TB^{-1}A

目标函数变为

z=z0+λTxz=z_0 + \lambda^Tx

λi0\lambda_i \ge 0 , 则 x(0)x^{(0)} 是最优解

若存在 λk<0\lambda_k \lt 0 且所有 aik0(1im)a_{ik} \le 0(1 \le i \le m) ( mm 是秩 ) , 则无最优解

基变换

Pj=B1Pj(1jn)P_j'=B^{-1}P_j(1\le j\le n) , A=(P1,P2,,Pn)A=(P_1, P_2, \cdots, P_n)

λk<0\lambda_k\lt 0alk>0a_{lk}\gt 0 , 其中 xkx_k 必是非基变量

用非基变量 xkx_k 替换基变量 xlx_l , 用 PkP_k 代替 BB 中的 PlP_l

因为 P1,P2,,PmP_1, P_2, \cdots, P_m 线性无关, 因此可以表示 PkP_k, 即

Pk=i=1mαikPiP_k=\sum_{i=1}^m \alpha_{ik} P_i

解得

Pl=1alkPki=1,ilmaikalkPiP_l = \frac{1}{a_{lk}}P_k - \sum_{i=1, i\neq l}^m\frac{a_ik}{a_{lk}}P_i

由于 PlP_lBB' 的一个线性组合, 因此得到的 BB' 依旧是一个基

要保证 BB' 是一个可行基, 把它化为 单位矩阵 形式的同时需满足

βi=βiαikβlαlk0\beta_i' = \beta_i - \frac{\alpha_{ik}\beta_l}{\alpha_{lk}} \ge 0

αik0\alpha_{ik}\le 0 时必然成立, 当 αik>0\alpha_{ik}\gt0 时要求

βlαlkβiαik\frac{\beta_l}{\alpha_{lk}} \le \frac{\beta_i}{\alpha_{ik}}

因此可以选取

θ=βlαlk=min{βiαikαik>0,1im}\theta=\frac{\beta_l}{\alpha_{lk}} = min\left\{\frac{\beta_i}{\alpha_{ik}}\lvert\alpha_{ik}\gt0, 1\le i\le m\right\}

单纯形法步骤

  1. 设初始可行基 B=(P1,P2,,Pm)B = (P_1, P_2, \cdots, P_m) , λT=cTcBTB1A\lambda^T = c^T−c_B^TB^{−1}A

  2. 若所有 λj0(1jn)\lambda_j \ge 0 (1 \ge j \ge n) , 则 xB=β,xN=0x_B = \beta, x_N=0 是最优解(最小值)

  3. λk<0\lambda_k \lt 0 且所有 αik0(1im)\alpha_{ik} \le 0(1 \le i \le m) , 则无最优解 ( 即 λk<0\lambda_k < 0AA 矩阵第 kk 列全是小于等于 0 的 )

  4. 做基变换, 继续判断 λj\lambda_j

若判断 最大值 , 则 λj0(1jn)\lambda_j \le 0 (1 \ge j \ge n) , λk>0\lambda_k \gt 0

单纯形表

对于线性规划

max z=12x+15ymax\ z = 12x + 15y
0.25x+0.5y1200.5x+0.5y1500.25x50\begin{aligned} 0.25x+0.5y &\le 120 \\ 0.5x+0.5y &\le 150 \\ 0.25x &\le 50 \\ \end{aligned}

转化为标准形后得

image.png

取基 B=(P3,P4,P5)B=(P_3, P_4, P_5) , 则

image.png

其中 β=B1b\beta=B^{-1}b , 由于 BB 是单位矩阵, 因此

β=Bβ=BB1b=b\beta = B\beta = BB^{-1}b=b

z0=cBTB1b=cBTβz_0=c_B^TB^{-1}b=c_B^T\beta 可知

z0=(0×120+0×150+0×50)=0-z_0 = -(0×120+0×150+0×50)=0

由于初始时 cBT=0c_B^T=0 , 因此

λT=cTcBTB1A=cT\lambda^T=c^T-c^T_BB^{-1}A=c^T

由上图可知, 不存在全部 λ\lambda 都大于 00 , 因此 z0z_0 不是最优解 , 由于 λ1\lambda_1λ2\lambda_2 均小于 00 , 但是 AA 的第一、第二列均不小于 00 , 因此可能存在最优解, 需要进行 基变换

选取一个最小的 λ\lambda 进行基变换, 如上图 λ2\lambda_2 所在列

由于 θ=βlαlk\theta=\frac{\beta_l}{\alpha_{lk}} , 需要取 θ\theta 最小的列进行替换, 即 P3P_3 替换成 P2P_2

取基 B=(P2,P4,P5)B=(P_2, P_4, P_5)

image.png

λ\lambda 可以直接变换, 也可以使用公式计算, 直接变换时使 λk=0\lambda_k=0 即可

由于依旧有 λ<0\lambda<0 , 因此再次进行变换, 使用 P1P_1 替换 P4P_4

image.png

最优值为 z=4140z'=-4140 , 最优值 z=4140z=4140 , 最优解为 x1=120,x2=180x_1=120, x_2=180

无最优解的情况

image.png

两个约束条件, 添加两个松弛变量 x3,x4x_3, x_4

image.png

构造单纯形表

image.png

由于 λ1<0\lambda_1 < 0(a11,a12)T<0(a_{11}, a_{12})^T < 0 因此无最优解

两阶段法

约束函数存在大于或等于的情况时

image.png

引入松弛变量 x4x_4 和剩余变量 x5x_5 转换为标准形

image.png

对于大于等于的情况, 还需要再引入人工变量 x6,x7x_6, x_7 ( 不是标准形了 )

image.png

初始可行基 B=(P4,P6,P7)B=(P_4, P_6, P_7) , x(0)=(0,0,0,11,0,3,1)Tx^{(0)}=(0,0,0,11,0,3,1)^T

x(0)x^{(0)} 不是标准形的可行解, 只有当所有人工变量等于 00 时, 才能舍去人工变量得到标准形的可行解

对人工变量构造 辅助问题

min w=i=1myimin\ w = \sum_{i=1}^m y_i
s.t. j=1naijxj+yi=bi,1ims.t.\ \sum_{j=1}^n a_{ij}x_j+y_i=b_i, 1\le i \le m

假设辅助问题的最优解 ww^* , 存在三种情况

  1. 如果 w>0w^*>0 , 原问题无可行解

  2. 如果在最优解中, 所有的人工变量都是非基变量, 因此 w=0w^*=0 , 可以删除人工变量, 得到问题的解

  3. w=0w^*=0 , 但是人工变量不全是非基变量, 可以转化为 2

步骤

阶段一, 引入人工变量, 按照单纯形法求解 辅助问题 的最优值

image.png

image.png

最优值 w=0w^*=0 , 且基变量为 x4,x2,x3x_4,x_2,x_3 均不是人工变量, 属于 情况二 , 进入阶段二

阶段二, 删除人工变量 x6,x7x_6, x_7

image.png

AAβ\beta 保持, 修改 cccBc_B

image.png

最优值 z=2z=-2 , 最优解为 x1=4,x2=1,x3=9x_1=4, x_2=1, x_3=9

无解的情况

image.png

化为标准形

image.png

阶段一辅助函数最优值计算, 引入人工变量 x5x_5

image.png

w=1>0w^* = 1 >0 原问题不存在可行解

image.png

w*=0 且人工变量为基变量的情况

image.png

引入人工变量 x5,x6,x7x_5,x_6,x_7

image.png

辅助问题

min w=x5+x6+x7min\ w=x_5+x_6+x_7

image.png

由于 a11=a12=a13=a14=0a_{11}=a_{12}=a_{13}=a_{14}=0 , β1\beta_1 必为 00 , 因此第一个约束可以由剩下两个约束组合得到, 可以去掉

image.png

最优值为 z=6z=6 , 最优解为 x1=0,x2=2/3,x3=4x_1=0, x_2=2/3, x_3=4

有限终止

基本可行解中基变量的值都大于 00 , 则称这个基本可行解是 非退化的

如果线性规划的 所有 基本可行解都是非退化的, 则称这个线性规划是非退化的

如果线性规划有可行解并且是非退化的, 则在计算中可行基不会重复出现, 单纯形法会在有限步内 终止 , 反之计算出现循环

Bland 规则 ( 避免循环 )

  • 当有多个 λj<0\lambda_j < 0 时, 取对应的非基变量中 下标最小 的作为换入变量

  • 当有多个 θi\theta_i 同时取到最小值时, 取对应的基变量中 下标最小 的作为换出变量