【运筹学笔记】 第一章 线性规划与单纯形法

运筹学绪论

运筹学是一门应用于管理有组织系统的科学,根据问题的要求,通过数学分析与计算,做出综合性的合理安排,以期达到资源的最优化利用。

运筹学考虑系统的整体优化、多学科的配合以及模型方法的应用,其研究可以分为以下几个步骤:

1.分析与表述问题。
2.建立模型
3.对问题求解
4.对模型和由模型导出的解进行检验
5.建立对解的有效控制
6.方案的实施。

其中,建模是运筹学方法的核心和精髓。

线性规划与单纯形法

线性规划(Linear programming,简称LP),是运筹学中研究较早、发展较快、应用广泛、方法较成熟的一个重要分支,它是辅助人们进行科学管理的一种数学方法。研究线性约束条件下线性目标函数的极值问题的数学理论和方法。

线性规划模型的组成要素和特征

决策变量 指决策者为实现规划目标采取的方案、措施,是问题中要确定的未知量。

目标函数 指问题要达到目标的要求,表示为决策变量的函数。

约束条件 指决策变量取值时受到的各种限制,表示为决策变量的等式或不等式。

定义:目标决策变量为可控的连续变量,目标函数和约束条件都是线性的,这类模型称为线性规划模型。

线性规划问题的一般形式
1.标量形式

决策变量 { x i ∣ i = 1 , 2 , . . . , n } \{x_i|i=1,2,...,n\} {xii=1,2,...,n}

目标函数 m a x ( m i n )   z = c 1 x 1 + c 2 x 2 + . . . + c n x n max(min)~z=c_1x_1+c_2x_2+...+c_nx_n max(min) z=c1x1+c2x2+...+cnxn

约束条件 s . t . = { a 11 x 1 + a 12 x 2 + . . . + a 1 n x n ≤ ( = , ≥ ) b 1 , a 21 x 1 + a 22 x 2 + . . . + a 2 n x n ≤ ( = , ≥ ) b 2 ,    ⋮ a m 1 x 1 + a m 2 x 2 + . . . + a m n x n ≤ ( = , ≥ ) b m , x j ≥ 0   或   x j ≤ 0   或   x j 无 约 束 s.t.=\left\{ \begin{matrix} a_{11}x_1+a_{12}x_2+...+a_{1n}x_n \le(=,\ge)b_1,\\ a_{21}x_1+a_{22}x_2+...+a_{2n}x_n \le(=,\ge)b_2,\\ ~~\vdots\\ a_{m1}x_1+a_{m2}x_2+...+a_{mn}x_n \le(=,\ge)b_m,\\ x_j\ge0~或~x_j\le0~或~x_j无约束 \end{matrix} \right. s.t.=a11x1+a12x2+...+a1nxn(=,)b1,a21x1+a22x2+...+a2nxn(=,)b2,  am1x1+am2x2+...+amnxn(=,)bm,xj0  xj0  xj

一般用   n   ~n~  n 表示决策变量的个数,   m   ~m~  m 代表约束等式/不等式的个数

通常情况下要求   m < n   ~m<n~  m<n ,否则可能导致没有可行解

2.向量形式

决策变量 X = ( x 1   x 2   …   x n ) T X=(x_1~x_2~\ldots~x_n)^T X=(x1 x2  xn)T

目标函数 m a x ( m i n )   z = C X max(min)~z=CX max(min) z=CX

约束条件 s . t . = { ∑ j = 1 n x j P j ≤ ( = , ≥ ) b X ≥ 0 s.t.=\left\{ \begin{matrix} \displaystyle\sum_{j=1}^{n}x_jP_j\le(=,\ge)b\\ X\ge 0 \end{matrix} \right. s.t.=j=1nxjPj(=,)bX0

其中 C = ( c 1   c 2   . . .   c n ) , P j = ( a 1 j   a 2 j   …   a m j ) T , b = ( b 1   b 2   . . .   b m ) T C=(c_1~c_2~...~c_n),P_j=(a_{1j}~a_{2j}~\ldots~a_{mj})^T,b=(b_1~b_2~...~b_m)^T C=(c1 c2 ... cn),Pj=(a1j a2j  amj)T,b=(b1 b2 ... bm)T.

注意列向量   P ≥ Q   ~P\ge Q~  PQ 意味着 ∀ i    P i ≥ Q i \forall i~~P_i\ge Q_i i  PiQi,矩阵也类似

3.矩阵形式

m a x ( m i n )   z = C X s . t . = { A X ≤ ( = , ≥ ) b X ≥ 0 其 中   C = ( c 1   c 2   . . .   c n ) , A = [ a 11 a 12 … a 1 n a 21 a 22 … a 2 n ⋮ ⋮ ⋮ a m 1 a m 2 … a m n ] , X = ( x 1 x 2 ⋮ x n ) , b = ( b 1 b 2 ⋮ b n ) max(min)~z=CX\\ s.t.=\left\{ \begin{matrix} AX\le(=,\ge)b\\ X\ge 0 \end{matrix} \right.\\ 其中~C=(c_1~c_2~...~c_n),\\ A=\left[\begin{matrix} a_{11}&a_{12}&\ldots&a_{1n}\\ a_{21}&a_{22}&\ldots&a_{2n}\\ \vdots&\vdots&&\vdots\\ a_{m1}&a_{m2}&\ldots&a_{mn}\\ \end{matrix} \right],X=\left(\begin{matrix}x_1\\x_2\\\vdots\\x_n\\\end{matrix}\right),b=\left(\begin{matrix}b_1\\b_2\\\vdots\\b_n\\\end{matrix}\right) max(min) z=CXs.t.={AX(=,)bX0 C=(c1 c2 ... cn),A=a11a21am1a12a22am2a1na2namn,X=x1x2xn,b=b1b2bn

称为约束方程组变量的系数矩阵,简称为约束变量的系数矩阵。

线性规划问题的标准形式

对于一般的线性规划模型缺乏统一的结构,这在问题的求解上无疑增加了一定的难度,因此,我们在定义线性规划的标准形式如下:

决策变量 { x i ∣ i = 1 , 2 , . . . , n } \{x_i|i=1,2,...,n\} {xii=1,2,...,n}

目标函数 m a x ( m i n )   z = c 1 x 1 + c 2 x 2 + . . . + c n x n max(min)~z=c_1x_1+c_2x_2+...+c_nx_n max(min) z=c1x1+c2x2+...+cnxn

约束条件 s . t . = { a 11 x 1 + a 12 x 2 + . . . + a 1 n x n = b 1 , a 21 x 1 + a 22 x 2 + . . . + a 2 n x n = b 2 ,    ⋮ a m 1 x 1 + a m 2 x 2 + . . . + a m n x n = b m , x 1 ≥ 0 , x 2 ≥ 0 , … x n ≥ 0 s.t.=\left\{ \begin{matrix} a_{11}x_1+a_{12}x_2+...+a_{1n}x_n=b_1,\\ a_{21}x_1+a_{22}x_2+...+a_{2n}x_n=b_2,\\ ~~\vdots\\ a_{m1}x_1+a_{m2}x_2+...+a_{mn}x_n=b_m,\\ x_1\ge0,x_2\ge0,\dots x_n\ge0 \end{matrix} \right. s.t.=a11x1+a12x2+...+a1nxn=b1,a21x1+a22x2+...+a2nxn=b2,  am1x1+am2x2+...+amnxn=bm,x10,x20,xn0

其中   b j ≥ 0 , 1 ≤ j ≤ m . ~b_j\ge0,1\le j\le m.  bj0,1jm.

矩阵形式
m a x   z = C X s . t . = { A X = b X ≥ 0 max~z=CX\\ s.t.=\left\{ \begin{matrix} AX=b\\ X\ge 0 \end{matrix} \right. max z=CXs.t.={AX=bX0

其中 A ∈ R m × n A\in \mathbb{R}^{m\times n} ARm×n是一个行满秩矩阵

标准形式的转化

1.目标函数

目标函数的极小值 ⇔ \Leftrightarrow 目标函数相反数的最大值,即   m i n   z = C X ⇒ m a x   z ′ = − C X ~min~z=CX \Rightarrow max~z'=-CX  min z=CXmax z=CX

2.约束条件

∑ i = 1 n a i j x j ≤ b i    ⇒    ∑ i = 1 n a i j x j + x n + i = b i    ( x n + i ≥ 0 ) \displaystyle\sum_{i=1}^{n} a_{ij}x_j\le b_i~~\Rightarrow~~\sum_{i=1}^{n} a_{ij}x_j+x_{n+i}=b_i~~(x_{n+i}\ge0) i=1naijxjbi    i=1naijxj+xn+i=bi  (xn+i0),其中   x n + i   ~x_{n+i}~  xn+i 称为松弛变量

∑ i = 1 n a i j x j ≥ b i    ⇒    ∑ i = 1 n a i j x j − x n + i = b i    ( x n + i ≥ 0 ) \displaystyle\sum_{i=1}^{n} a_{ij}x_j\ge b_i~~\Rightarrow~~\sum_{i=1}^{n} a_{ij}x_j-x_{n+i}=b_i~~(x_{n+i}\ge0) i=1naijxjbi    i=1naijxjxn+i=bi  (xn+i0),其中   x n + i   ~x_{n+i}~  xn+i 称为剩余变量

松弛变量可以理解为资源的剩余,剩余变量可以理解为需求的溢出

b i ≤ 0    ⇒    b i = − b i ′ , a i j = − a i j ′   b_i\le0~~\Rightarrow~~b_i=-b'_i,a_{ij}=-a'_{ij}~ bi0    bi=bi,aij=aij 其中   1 ≤ j ≤ n   ,   b i ′ ≥ 0 ~1\le j\le n~,~b'_i\ge0  1jn , bi0

3.决策变量

无约束决策变量: x j   x_j~ xj 无限制 ⇒ x j = x j ′ − x j ′ ′   \Rightarrow x_j=x'_j-x''_j~ xj=xjxj ,其中 x j ′ , x j ′ ′ ≥ 0 x'_j,x''_j\ge0 xj,xj0

非正变量: x j ≤ 0 ⇒ x j = − x j ′ x_j\le0\Rightarrow x_j=-x'_j xj0xj=xj,其中   x j ′ ≥ 0 ~x'_j\ge0  xj0

线性规划问题的解

可行解:如果一个非负矩阵   X   ~X~  X 满足约束方程,则称矩阵   X   ~X~  X 为可行解。

可行域:可行解组成的集合 Ω = { X ∣ A X = b , X ≥ 0 , X ∈ R n } \Omega=\{X\mid AX=b,X\ge0,X\in\mathbb{R}^n\} Ω={XAX=b,X0,XRn}称为可行域,可行域中使得目标函数达到最大值的可行解称为最优解

:若   B   ~B~  B    A   ~A~  A 的一个   m × m   ~m\times m~  m×m 阶的满秩子矩阵,则称   B   ~B~  B 为线性规划问题的一个基。 B   B~ B 中的每一个列向量用   P j   ~P_j~  Pj 表示,注意这里基是一组系数矩阵
B = [ b 11 b 12 … b 1 m b 21 b 22 … b 2 m ⋮ ⋮ ⋮ b m 1 b m 2 … b m m ] = ( P 1 , P 2 , … , P m ) B=\left[\begin{matrix} b_{11}&b_{12}&\ldots&b_{1m}\\ b_{21}&b_{22}&\ldots&b_{2m}\\ \vdots&\vdots&&\vdots\\ b_{m1}&b_{m2}&\ldots&b_{mm}\\ \end{matrix}\right]=(P_1,P_2,\dots,P_m) B=b11b21bm1b12b22bm2b1mb2mbmm=(P1,P2,,Pm)
基解:假设   B   ~B~  B 为一个基,可知存在   x 1 , … , x m   ~x_1,\ldots,x_m~  x1,,xm 使得   x 1 P 1 + … x m P m = b ~x_1P_1+\ldots x_mP_m=b  x1P1+xmPm=b,则称 X = ( x 1 , … , x m , 0 , … , 0 ) T X=(x_1,\ldots,x_m,0,\ldots,0)^T X=(x1,,xm,0,,0)T为基   B   ~B~  B 的基解,其中   x 1 , … , x m   ~x_1,\dots,x_m~  x1,,xm 称为基变量,其余的决策变量称为非基变量。

基可行解:若满足变量非负约束条件的基解称为基可行解。

可行基:假对应于基可行解的基称为可行基。

退化解:当基解中的非零分量小于   m   ~m~  m 个时,该基解是退化解

解的维恩图表示:

线性规划问题的解法

1.图解法(略) 2.单纯形法

预备知识

凸集:假设   C ⊂ R n ~C\subset\mathbb{R}^n  CRn.若对任意   X , Y ∈ C   ~X,Y\in C~  X,YC    0 < λ < 1   ~0<\lambda<1~  0<λ<1 ,都有   λ X + ( 1 − λ ) Y ⊂ C   ~\lambda X+(1-\lambda)Y\subset C~  λX+(1λ)YC ,则称   C   ~C~  C 为一个凸集(Convex set)。从直观上讲,凸集没有凹入部分,其内部也没有空洞。

凸组合:设向量   { x i } , i = 1 , 2 , … , n ~\{x_i\},i=1,2,\dots,n  {xi},i=1,2,,n,如果有实数 λ i ≥ 0   \lambda_i\ge0~ λi0    ∑ i = 1 n λ i = 1 ~ \displaystyle\sum_{i=1}^n \lambda_i=1  i=1nλi=1,则称   ∑ i = 1 n λ i x i   ~\displaystyle\sum_{i=1}^n\lambda_ix_i~  i=1nλixi 为向量   { x i }   ~\{x_i\}~  {xi} 的凸组合(凸线性组合)

顶点:假设   C   ~C~  C 是凸集,且   X ∈ C   ~X\in C~  XC .若不存在   X 1 , X 2 ∈ C   ~X_1,X_2\in C~  X1,X2C 使得   X = λ X 1 + ( 1 − λ ) X 2   ~X=\lambda X_1+(1-\lambda)X_2~  X=λX1+(1λ)X2 ,其中 0 < λ < 1 0<\lambda<1 0<λ<1,则   X   ~X~  X 称为   C   ~C~  C 的一个顶点.

凸集内点与其顶点的关系:若   C   ~C~  C 是有界的凸集,则对任意   X ∈ C   ~X\in C~  XC ,都可以表示成   D   ~D~  D 的顶点的凸组合。

几个基本定理(证明不考)

定理1:若线性规划问题存在可行解,则其可行域是凸集。
证明:我们我们考察如下的标准形式的线性规划问题:
m a x   z = C X s . t . = { A X = b X ≥ 0 max~z=CX\\ s.t.=\left\{ \begin{matrix} AX=b\\ X\ge 0 \end{matrix} \right. max z=CXs.t.={AX=bX0
两个不同的解是   X   ~X~  X    Y   ~Y~  Y 满足   A X = A Y = b , X ≥ 0 , Y ≥ 0   ~AX=AY=b,X\ge0,Y\ge0~  AX=AY=b,X0,Y0 ,则对于任意   0 < λ < 1 ~0<\lambda<1  0<λ<1,我们有   A ( λ X + ( 1 − λ ) Y ) = b , λ X + ( 1 − λ ) Y ≥ 0   ~A(\lambda X+(1-\lambda)Y)=b,\lambda X+(1-\lambda)Y\ge0~  A(λX+(1λ)Y)=b,λX+(1λ)Y0 .所以可行域为凸集。

定理2:线性规划问题的基可行解对应线性规划问题可行域的顶点。

引理 1:线性规划问题的可行解 X 为基可行解的充要条件是 X 的正分量所对应的系数列向量是线性无关的.(由基可行解的定义可知必要性是显然的. )

证明:假设 X X X为一个基可行解,若   X   ~X~  X 不是一个顶点,则可行域中存在两个不同的点   Y , Z   ~Y,Z~  Y,Z 使得   X = λ Y + ( 1 − λ ) Z , 0 < λ < 1   ~X=\lambda Y+(1-\lambda)Z,0<\lambda<1~  X=λY+(1λ)Z,0<λ<1 ,不妨设   X   ~X~  X 只有前   k   ~k~  k 个分量大于0,显然   Y , Z   ~Y,Z~  Y,Z    n − k   ~n-k~  nk 个分量都为0,我们有
∑ i = 1 k x i P i = b ,   ∑ i = 1 k y i P i = b ,   ∑ i = 1 k z i P i = b . \sum_{i=1}^kx_iP_i=b,~\sum_{i=1}^ky_iP_i=b,~\sum_{i=1}^kz_iP_i=b. i=1kxiPi=b, i=1kyiPi=b, i=1kziPi=b.

由于   P 1 , P 2 , … , P k   ~P_1,P_2,\dots,P_k~  P1,P2,,Pk 线性无关(也就是方程只有一个解),我们得到   X = Y = Z   ~X=Y=Z~  X=Y=Z ,与我们的假设矛盾,所以 X X X一定是一个顶点。

如果假设 X X X是一个顶点,并且假设其只有前   k   ~k~  k 个分量大于0,若果   X   ~X~  X 不是一个基可行解,则由引理可知   P 1 , P 2 , … , P k   ~P_1,P_2,\dots,P_k~  P1,P2,,Pk 线性相关,说以存在   k   ~k~  k 个不为零的实数使得
d 1 P 1 + d 2 P 2 + ⋯ + d k P k = 0 D = ( d 1 , d 2 , … , d k , 0 , … , 0 ) T d_1P_1+d_2P_2+\dots+d_kP_k=0\\ D=(d_1,d_2,\dots,d_k,0,\dots,0)^T d1P1+d2P2++dkPk=0D=(d1,d2,,dk,0,,0)T
显然有   A X = 0 → A ( X + s D ) = A ( X − s D ) = b   ~AX=0\rightarrow A(X+sD)=A(X-sD)=b~  AX=0A(X+sD)=A(XsD)=b ,对任意实数   s   ~s~  s 都成立, ∃ s > 0 , X + s D ≥ 0   ∧   X − s D ≥ 0 \exist s>0, X+sD\ge0~\wedge~X-sD\ge0 s>0,X+sD0  XsD0,则   X   ~X~  X 是可行域中   X + s D   ~X+sD~  X+sD    X − s D   ~X-sD~  XsD 的中点,这与 X X X是一个顶点矛盾,所以 X X X一定是一个基可行解。

定理3:若线性规划问题存在最优解,则一定存在一个基可行解是最优解。

引理2:若 X X X是一个最优解,且   X = λ Y + ( 1 − λ ) Z   ~X=\lambda Y+(1-\lambda)Z~  X=λY+(1λ)Z ,其中   Y , Z   ~Y,Z~  Y,Z 是两个可行解, 0 < λ < 1 0<\lambda<1 0<λ<1,则   C X = C Y = C Z   ~CX=CY=CZ~  CX=CY=CZ .(反证法易得)

证明:设 X X X是一个最优解,且不妨假设其只有前 k k k个分量大于0,若 X X X是一个基可行解,则证毕;否则存在 k k k个不全为0的实数使得(5)式成立,且 A ( X + r D ) = A ( X − s D ) = b   A(X+rD)=A(X-sD)=b~ A(X+rD)=A(XsD)=b 对任意实数   s , r   ~s,r~  s,r 都成立,同时 X + r D X+rD X+rD X − s D X-sD XsD至少有一个正分量的数量小于   k ~k  k。则由上一个引理可知我们得到了一个新的最优解,且这个最优解的正分量的数量小于   k ~k  k,若新的到的最优解依然不是基可行解,重复上面的过程,我们可以得到一个新的最优解,这个最优解的正分量的数量小于   k ~k  k,以此类推,经过有限步之后,我们肯定可以得到一个基可行解. 证毕.

定理4:若线性规划问题有可行解,则必有基可行解

定理5:若线性规划问题有最优解,则必有最优基可行解

单纯形法

确定初始基可行解

当线性规划问题全部为“ ≤ \le ”时,在化为标准型时,加入的m个松弛变量所构成的单位矩阵就可以构成一组基:设给定线性规划问题
m a x   z = ∑ j − 1 n c j x j s . t . = { ∑ j = 1 n x j P j ≤ b x j ≥ 0 max~z=\sum_{j-1}^n c_jx_j\\ s.t.=\left\{ \begin{matrix} \displaystyle\sum_{j=1}^{n}x_jP_j\le b\\ x_j\ge 0 \end{matrix} \right. max z=j1ncjxjs.t.=j=1nxjPjbxj0
在第   i   ~i~  i 个约束条件上加上松弛变量   s s i , ( i = 1 , … , m ) ~s_{si},(i=1,\dots,m)  ssi,(i=1,,m),化为标准形式
m a x   z = ∑ j − 1 n c j x j + 0 ∑ i = 1 m x s i s . t . = { ∑ j = 1 n a i j x j + x s i = b , ( i = 1 , 2 , … , m ) x j ≥ 0 max~z=\sum_{j-1}^n c_jx_j+0\sum_{i=1}^m x_{si}\\ s.t.=\left\{ \begin{matrix} \displaystyle\sum_{j=1}^{n}a_{ij}x_j+x_{si}=b,(i=1,2,\dots,m)\\ x_j\ge 0 \end{matrix} \right. max z=j1ncjxj+0i=1mxsis.t.=j=1naijxj+xsi=b,(i=1,2,,m)xj0
其约束方程的系数矩阵为
[ a 11 a 12 … a 1 n 1 0 … 0 a 21 a 22 … a 2 n 0 1 … 0 ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ a m 1 a m 2 … a m n 0 0 … 1 ] \left[\begin{matrix} a_{11}&a_{12}&\dots&a_{1n}&1&0&\dots&0\\ a_{21}&a_{22}&\dots&a_{2n}&0&1&\dots&0\\ \vdots&\vdots& &\vdots&\vdots&\vdots& &\vdots\\ a_{m1}&a_{m2}&\dots&a_{mn}&0&0&\dots&1\\ \end{matrix}\right] a11a21am1a12a22am2a1na2namn100010001
这个系数矩阵中含有一个单位向量 ( P s 1 , P s 2 , … , P s m ) (P_{s1},P_{s2},\dots,P_{sm}) (Ps1,Ps2,,Psm),只要以这个单位矩阵作为基,就可以立即解出基变量值   x s i = b i   ~x_{si}=b_i~  xsi=bi ,因为   b i ≥ 0   ~b_i\ge0~  bi0 ,因此   X = ( 0 , … , 0 , b 1 , … , b m ) T ~X=(0,\dots,0,b_1,\dots,b_m)^T  X=(0,,0,b1,,bm)T就是一个基可行解。

当线性规划问题中约束条件包含" = = =“或” ≥ \ge "时,化为标准型后一般不包含单位矩阵,这时常用添加人工变量的方法人为构造一个单位矩阵作为基,称为人工基,具体方法在后面讨论。

基可行解的转换

不失一般性,设初始基可行解为
  X ( 0 ) = ( x 1 0 , x 2 0 , … , x m 0 , 0 , … , 0 ⏞ n − m 个 ) T = ( X B X N ) , A = ( B   N ) ~X^{(0)}=(x^0_1,x^0_2,\dots,x^0_m,\overbrace{0,\dots,0}^{n-m个})^T=\left(\begin{matrix}X_B\\X_N\end{matrix}\right),A=(B~N)  X(0)=(x10,x20,,xm0,0,,0 nm)T=(XBXN),A=(B N)
其中 B B B是对应的可行基,相应的,设 C = ( C B , C N ) C=(C_B,C_N) C=(CB,CN),我们有 A X ( 0 ) = ( B , N ) ( X B X N ) = B X B = b AX^{(0)}=(B,N)\left(\begin{matrix}X_B\\X_N\end{matrix}\right)=BX_B=b AX(0)=(B,N)(XBXN)=BXB=b,我们有 X B = B − 1 b , X N = 0 X_B=B^{-1}b,X_N=0 XB=B1b,XN=0

此时目标函数值   z ( 0 ) = C X = ( C B   C N ) ( X B X N ) = C B X B − C N X N = C B B − 1 b . ~z^{(0)}=CX=(C_B~C_N)\left(\begin{matrix}X_B\\X_N\end{matrix}\right)=C_BX_B-C_NX_N=C_BB^{-1}b.  z(0)=CX=(CB CN)(XBXN)=CBXBCNXN=CBB1b.

原始方程组的增广形式为:

P 1   P 2    …    P m   P m + 1    …    P j …   P n    b [ a 11 a 12 … a 1 m a 1 , m + 1 … a 1 j … a 1 n b 1 a 21 a 22 … a 2 m a 2 , m + 1 … a 2 j … a 2 n b 2 ⋮ ⋮ ⋱ ⋮ ⋮ ⋮ ⋮ ⋮ a m 1 a m 2 … a m m a m , m + 1 … a m j … a m n b m ] \left.\begin{matrix}\\ P_1~&P_2&~~\dots&~~P_m&~P_{m+1}~~&\dots&~~P_j&\dots~&P_n&~~b\\ \end{matrix}\right.\\ \left[\begin{array}{ccccccccc|c} a_{11}&a_{12}&\dots&a_{1m}&a_{1,m+1}&\dots&a_{1j}&\dots&a_{1n}&b_1\\ a_{21}&a_{22}&\dots&a_{2m}&a_{2,m+1}&\dots&a_{2j}&\dots&a_{2n}&b_2\\ \vdots&\vdots&\ddots&\vdots&\vdots&&\vdots&&\vdots&\vdots\\ a_{m1}&a_{m2}&\dots&a_{mm}&a_{m,m+1}&\dots&a_{mj}&\dots&a_{mn}&b_m\\ \end{array}\right] P1 P2    Pm Pm+1    Pj Pn  ba11a21am1a12a22am2a1ma2mamma1,m+1a2,m+1am,m+1a1ja2jamja1na2namnb1b2bm

因为   P 1 , P 2 , … , P m   ~P_1,P_2,\dots,P_m~  P1,P2,,Pm    R m   ~\mathbb{R^m}~  Rm 的一组基,所以其余的 P j P_j Pj都可以用这个基来表示,我们可以将 P j P_j Pj替换为 B B − 1 P j BB^{-1}P_j BB1Pj,所以有   B ( X B − θ B − 1 P j ) + θ P j = b ~B(X_B-\theta B^{-1}P_j)+\theta P_j=b  B(XBθB1Pj)+θPj=b,我们假设 X B − θ B − 1 P j ≥ 0 X_B-\theta B^{-1}P_j\ge0 XBθB1Pj0,那么我们得到了一个新的可行解
X ~ = ( X B − θ B − 1 P j 0 ) + θ e j \tilde{X}=\left(\begin{matrix}X_B-\theta B^{-1}P_j\\0\end{matrix}\right)+\theta e_j X~=(XBθB1Pj0)+θej
其中, e j   e_j~ ej 为第   j   ~j~  j 个分量为1其余分量为0的单位列向量,这个可行解的目标函数值为
z ~ = C X ~ = ( C B   C N ) ( ( X B − θ B − 1 P j 0 ) + θ e j ) = C B X B + θ ( c j − C B B − 1 P j ) = z ( 0 ) + θ ( c j − C B B − 1 P j ) \begin{aligned} \widetilde{z}&=C\tilde{X}\\ &=(C_B~C_N)\left(\left(\begin{matrix}X_B-\theta B^{-1}P_j\\0\end{matrix}\right)+\theta e_j\right)\\ &=C_BX_B+\theta(c_j-C_BB^{-1}P_j)\\ &=z^{(0)}+\theta(c_j-C_BB^{-1}P_j) \end{aligned} z =CX~=(CB CN)((XBθB1Pj0)+θej)=CBXB+θ(cjCBB1Pj)=z(0)+θ(cjCBB1Pj)

我们令   σ j = c j − C B B − 1 P j ~\sigma_j=c_j-C_BB^{-1}P_j  σj=cjCBB1Pj,则 z ~ = z ( 0 ) + θ σ j \tilde{z}=z^{(0)}+\theta\sigma_j z~=z(0)+θσj σ j   \sigma_j~ σj 被称为检验数

​ 如果   σ j > 0 ~\sigma_j>0  σj>0,则新的可行解可以使目标函数变大,且   θ   ~\theta~  θ 应该越大越好. 此时注意到为了保证 X ~ \tilde{X} X~是一个可行解,应该有   X B − θ B − 1 P j ≥ 0 ~X_B-\theta B^{-1}P_j\ge0  XBθB1Pj0,这个 ( B − 1 P j ) (B^{-1}P_j) (B1Pj)很难处理,我们不妨在求解之前通过初等行变换把 B B B化为单位矩阵(想一想,为什么可以这么做?),即化成

P 1 P 2 … P m P m + 1 … P j …    P n    b [ 1 0 … 0 a 1 , m + 1 … a 1 j … a 1 n b 1 0 1 … 0 a 2 , m + 1 … a 2 j … a 2 n b 2 ⋮ ⋮ ⋱ ⋮ ⋮ ⋮ ⋮ ⋮ 0 0 … 1 a m , m + 1 … a m j … a m n b m ] \left.\begin{matrix}\\ P_1&P_2&\dots&P_m&P_{m+1}&\dots&P_j&\dots&~~P_n&~~b&\\ \end{matrix}\right.\\ \left[\begin{array}{ccccccccc|c} 1&0&\dots&0&a_{1,m+1}&\dots&a_{1j}&\dots&a_{1n}&b_1\\ 0&1&\dots&0&a_{2,m+1}&\dots&a_{2j}&\dots&a_{2n}&b_2\\ \vdots&\vdots&\ddots&\vdots&\vdots&&\vdots&&\vdots&\vdots\\ 0&0&\dots&1&a_{m,m+1}&\dots&a_{mj}&\dots&a_{mn}&b_m\\ \end{array}\right] P1P2PmPm+1Pj  Pn  b100010001a1,m+1a2,m+1am,m+1a1ja2jamja1na2namnb1b2bm

假设 B B B是一个单位矩阵且 b > 0 b>0 b>0,那么   θ   ~\theta~  θ 的最大值显然是 θ ∗ = m i n { b i a i j ∣ a i j > 0 , 1 ≤ i ≤ m } \displaystyle\theta^*=min\left\{\left.\frac{b_i}{a_{ij}}\right|a_{ij}>0,1\le i\le m\right\} θ=min{aijbiaij>0,1im},不妨设 θ ∗ = b r a r j \displaystyle\theta^*=\frac{b_r}{a_{rj}} θ=arjbr,则 ( P 1 , … , P r − 1 , P r + 1 , … , P m , P j ) (P_1,\dots,P_{r-1},P_{r+1},\dots,P_m,P_j) (P1,,Pr1,Pr+1,,Pm,Pj)构成一组新的基,这个基的基解和目标函数值为

X ( 1 ) = ( X B − θ ∗ B − 1 P j 0 ) + θ ∗ e j , z ( 1 ) = z ( 0 ) + θ ∗ σ j X^{(1)}=\left(\begin{matrix}X_B-\theta^* B^{-1}P_j\\0\end{matrix}\right)+\theta^* e_j,z^{(1)}=z^{(0)}+\theta^*\sigma_j X(1)=(XBθB1Pj0)+θej,z(1)=z(0)+θσj

最优性检验和解的判别

(1) 当   ∀   σ j ≤ 0 ~\forall~\sigma_j\le0   σj0时,表明现有顶点的目标函数的值比起相邻各顶点的目标

函数值都大,现以顶点对应的基可行解即为最优解。(为什么局部最优解等于全局最优解?)

(2)当   ∀   σ j ≤ 0 ∧ ∃   σ r = 0 ~\forall~\sigma_j\le0\wedge\exist~ \sigma_r=0   σj0 σr=0时, X ~ = ( X B − θ B − 1 P j 0 ) + θ e j   \tilde{X}=\left(\begin{matrix}X_B-\theta B^{-1}P_j\\0\end{matrix}\right)+\theta e_j~ X~=(XBθB1Pj0)+θej    X ( 0 ) ~X^{(0)}  X(0)的线性组合都是最优解,因此有无限多个解

(3)当 ∃   σ j > 0 ∧ ( ∀   θ > 0 )   X B − θ B − 1 P j ≥ 0 \exist~\sigma_j>0\wedge(\forall~\theta>0)~X_B-\theta B^{-1}P_j\ge0  σj>0( θ>0) XBθB1Pj0时,目标函数值可以取到无限大,最优解无界。

单纯性法的计算步骤

在这里插入图片描述

  1. 将问题化为标准型
  2. 求出线性规划的初始基可行解,列出初始单纯形表
c c c c 1   …   …   c m     c m + 1   …   …   c n c_1~\dots~\dots~c_m~~~c_{m+1}~\dots~\dots~ c_n c1   cm   cm+1   cn
C B C_B CB X B X_B XB x 1   …   …   x m     x m + 1   …   …   x n x_1~\dots~\dots~x_m~~~x_{m+1}~\dots~\dots~ x_n x1   xm   xm+1   xn b b b θ = b i a i k \displaystyle\theta=\frac{b_i}{a_{ik}} θ=aikbi
c 1 c_1 c1 x 1 x_1 x1 1    …   …    0     a 1 , m + 1   … …   a 1 n 1~~\dots~\dots~~0~~~a_{1,m+1}~\dots\dots~ a_{1n} 1     0   a1,m+1  a1n b 1 b_1 b1 θ 1 \theta_1 θ1
⋮ \vdots ⋮ \vdots ⋮ \vdots ⋮ \vdots ⋮ \vdots
⋮ \vdots ⋮ \vdots ⋮ \vdots ⋮ \vdots ⋮ \vdots
c m c_m cm x m x_m xm 0    …   …    1     a m , m + 1   … …   a m n 0~~\dots~\dots~~1~~~a_{m,m+1}~\dots\dots~ a_{mn} 0     1   am,m+1  amn b m b_m bm θ m \theta_m θm
σ \sigma σ 0    …   …    0      σ j = c j − ∑ c i a i j 0~~\dots~\dots~~0~~~~\sigma_j=c_j-\sum c_ia_{ij} 0     0    σj=cjciaij
  1. 进行最优性检验

    如果表中所有检验数   σ j ≤ 0 ~\sigma_j\le0  σj0,则表中的基可行解就是问题的最优解,计算停止。否则继续下一步。

  2. 从一个基可行解转换到另一个目标值更大的基可行解,列出新的单纯形表

    a. 确定换入基的变量。选择   σ i n = m a x { σ j   ∣   σ j > 0 }   ~\displaystyle\sigma_{in}=max\{\sigma_j~|~\sigma_j>0\}~  σin=max{σj  σj>0} 对应的变量   x i n   ~x_{in}~  xin 作为换入变量。

    b. 确定换出变量。选择   θ o u t = m i n { b j a j k   ∣   a j k > 0 }   ~\displaystyle\theta_{out}=min\left\{\left.\frac{b_j}{a_{jk}}~\right|~a_{jk}>0\right\}~  θout=min{ajkbj  ajk>0} 对应的变量   x o u t   ~x_{out}~  xout 作为换出变量

    c. 用   x i n   ~x_{in}~  xin 替换基变量中的   x o u t   ~x_{out}~  xout ,得到一个新的基。对应新的基可以找出一个新的基可行解,将基变量对应的矩阵化为单位矩阵,并相应地可以画出一个新的单纯形表。

单纯形法的进一步讨论

前面讨论了在标准型中系数矩阵有单位矩阵,很容易确定一组基可行解。在实际问题中有些模型并不含有单位矩阵,为了得到一组基向量和初基可行解,在约束条件的等式左端加一组虚拟变量,得到一组基变量。这种人为加的变量称为人工变量,构成的可行基称为人工基,用大M法或两阶段法求解,这种用人工变量作桥梁的求解方法称为人工变量法。
比如如下线性规划问题:
m a x   z = 3 x 1 + 2 x 2 − x 3 s . t . = { − 4 x 1 + 3 x 2 + x 3 ≥ 4 , x 1 − x 2 + 2 x 3 ≤ 10 , − 2 x 1 + 2 x 2 − x 3 = − 1 , x 1 ≥ 0 , x 2 ≥ 0 , x 2 ≥ 0 \begin{aligned} &max~z=3x_1+2x_2-x_3\\\\ s.t.=&\left\{\begin{aligned} -4x_1+3x_2+x_3\ge4,\\ x_1-x_2+2x_3\le10,\\ -2x_1+2x_2-x_3=-1,\\ x1\ge0,x_2\ge0,x2\ge0 \end{aligned}\right. \end{aligned} s.t.=max z=3x1+2x2x34x1+3x2+x34,x1x2+2x310,2x1+2x2x3=1,x10,x20,x20

首先我们将其化为标准型:

m a x   z = 3 x 1 + 2 x 2 − x 3 s . t . = { − 4 x 1 + 3 x 2 + x 3 − x 4 = 4 , x 1 − x 2 + 2 x 3 + x 5 = 10 , 2 x 1 − 2 x 2 + x 3 = 1 , x j ≥ 0 , 1 ≤ j ≤ 5 \begin{aligned} &max~z=3x_1+2x_2-x_3\\\\ s.t.=&\left\{\begin{aligned} -4x_1+3x_2+x_3&-x_4&&=4,\\ x_1-x_2+2x_3&&+x_5&=10,\\ 2x_1-2x_2+x_3&&&=1,\\ x_j\ge0,1\le j\le 5 \end{aligned}\right. \end{aligned} s.t.=max z=3x1+2x2x34x1+3x2+x3x1x2+2x32x12x2+x3xj0,1j5x4+x5=4,=10,=1,

系数矩阵中不存在单位矩阵,无法建立初始单纯形表。

大M法

加若干个人工变量   x   ~x~  x ,他们的目标函数决策系数是一个极小的负数(可以认为负无穷),以致于人工变量的取值在最优解时不可能不是0,举一个例子来理解:

解:首先将数学模型

故人为添加两个单位向量,得到人工变量单纯形法数学模型:

m a x   z = 3 x 1 + 2 x 2 − x 3 − M y 6 − M y 7     ( M → + ∞ ) s . t . = { − 4 x 1 + 3 x 2 + x 3 − x 4 + y 6 = 4 , x 1 − x 2 + 2 x 3 + x 5 = 10 , 2 x 1 − 2 x 2 + x 3 + x 7 = 1 , x j ≥ 0 , y 6 , y 7 > 0 \begin{aligned} &max~z=3x_1+2x_2-x_3-My_6-My_7~~~(M\rightarrow+\infin)\\\\ s.t.=&\left\{\begin{aligned} -4x_1+3x_2+x_3&-x_4&&+y_6&&=4,\\ x_1-x_2+2x_3&&+x_5&&&=10,\\ 2x_1-2x_2+x_3&&&&+x_7&=1,\\ x_j\ge0,y_6,y_7>0 \end{aligned}\right. \end{aligned} s.t.=max z=3x1+2x2x3My6My7   (M+)4x1+3x2+x3x1x2+2x32x12x2+x3xj0,y6,y7>0x4+x5+y6+x7=4,=10,=1,
M是一个很大的抽象的数,不需要给出具体的数值,可以理解为它能大于给定的任何一个确定数值,再用前面介绍的单纯形法求解该模型。如果最优解对应的基变量中包含人工变量,说明问题无可行解。

两阶段法

第一阶段

加入人工变量,第一阶段求解的目标函数是只包含人工变量的辅助问题,令目标函数中其他变量的系数取零,人工变量的系数取某个正的常数(一般取1),在保持原问题约束不变的条件下求这个目标函数极小化的解:
m i n   z = y 6 + y 7 s . t . = { − 4 x 1 + 3 x 2 + x 3 − x 4 + y 6 = 4 , x 1 − x 2 + 2 x 3 + x 5 = 10 , 2 x 1 − 2 x 2 + x 3 + x 7 = 1 , x j ≥ 0 , y 6 , y 7 > 0 \begin{aligned} &min~z=y_6+y_7\\\\ s.t.=&\left\{\begin{aligned} -4x_1+3x_2+x_3&-x_4&&+y_6&&=4,\\ x_1-x_2+2x_3&&+x_5&&&=10,\\ 2x_1-2x_2+x_3&&&&+x_7&=1,\\ x_j\ge0,y_6,y_7>0 \end{aligned}\right. \end{aligned} s.t.=min z=y6+y74x1+3x2+x3x1x2+2x32x12x2+x3xj0,y6,y7>0x4+x5+y6+x7=4,=10,=1,

人工变量是虚拟的,在最优时不该有取值,必须是0,第一阶段的   z   ~z~  z 必须是0。

  1. 如果第一阶段求解结果为   z ≠ 0 ~z\neq0  z=0,说明最优解的基变量中含有非零的人工变量,从而表明原问题无可行解,不必进行第二阶段,计算终止。

  2. 如果第一阶段求解结果   z = 0 ~z=0  z=0,如果辅助问题的最优基变量中没有人工变量,进入第二阶段。

  3. 如果第一阶段求解结果   z = 0 ~z=0  z=0,如果辅助问题的最优基变量中仍有为0的人工变量,这表明原问题有退化的情况,在辅助问题的最优的单纯形表中有:
    y r + ∑ j ≠ r a r j y j + ∑ j ∈ J N a r j x j = 0 y_r+\sum_{j\neq r}a_{rj}y_j+\sum_{j\in J_N}a_{rj}x_j=0 yr+j=rarjyj+jJNarjxj=0
    其中   J N   ~J_N~  JN 为非基变量下标集,这时又分两种情况:

    (i). 若   a r j   ~a_{rj}~  arj 全为0,则人工变量所在行中有原变量(现在是非基变量)下的元素都是0,这表明原问题的约束方程中有多余的,将其去掉,转入第二阶段。

    (ii). 若   a r j   ~a_{rj}~  arj 不全为0,则以   a r s   ~a_{rs}~  ars 为主元,进行换基迭代,最后转入转入第二阶段

第二阶段

在原问题中去除人工变量,并由第一阶段得到的最优解出发,继续寻找原问题的最优解。即在第一阶段的最优单纯形表中去掉人工变量所在的行列,将价值系数改换成原问题的价值系数,进一步迭代,求解原问题。

例题

有空再补   t o   b e   c o n t i n u e ~to~be~continue  to be continue

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值