线性规划问题
线性规划的标准形
将一个线性规划问题化为标准形的方法不再叙述(求(max)改求(min),不等号补松弛变量和剩余变量变等号)。
标准形可以写为如下的矩阵形式:
[A=left[ egin{matrix} a_{11} &a_{12} &cdots &a_{1n} \ a_{21} &a_{22} &cdots &a_{2n}\ &cdots&cdots \ a_{m1} &a_{m2} &cdots &a_{mn} end{matrix}
ight]quad b=left[ egin{matrix} b_1\ b_2 \ vdots\ b_m end{matrix}
ight]quad c=left[ egin{matrix} c_1\ c_2 \ vdots\ c_n end{matrix}
ight]quad X=left[ egin{matrix} x_1\ x_2 \ vdots\ x_n end{matrix}
ight]
]
例如以下这个标准形线性规划问题:
[min z=-12x_1-15x_2\{
m s.t.} 0.25x_1+0.5x_2+x_3=120\0.5x_1+0.5x_2+x_4=150\0.25x_1+x_5=50\(x_1ge 0,x_2ge 0,x_3ge 0,x_4ge 0,x_5ge 0)
]
将它写成矩阵乘法:
[left[ egin{matrix} 0.25 &0.50 &1 &0 &0 \ 0.50 &0.50 &0 &1 &0\ 0.25 &0 &0 &0 &1\ end{matrix}
ight]left[ egin{matrix} x_1\ x_2 \ x_3\ x_4\ x_5 end{matrix}
ight]=left[ egin{matrix} 120\150\50 end{matrix}
ight]
]
令:
[A=left[ egin{matrix} 0.25 &0.50 &1 &0 &0 \ 0.50 &0.50 &0 &1 &0\ 0.25 &0 &0 &0 &1\ end{matrix}
ight]quad b=left[ egin{matrix} 120\150\50 end{matrix}
ight]quad X=left[ egin{matrix} x_1\ x_2 \ x_3\ x_4\ x_5 end{matrix}
ight]quad c=left[ egin{matrix} -12\ -15 \ 0\ 0\ 0 end{matrix}
ight]
]
那么原来的线性规划标准形可简写为以下的矩阵乘法形式:
[min z=c^TX\{
m s.t.} AX=b\Xge {f 0}
]
这里的(Xge {f 0})表示向量(X)的每个分量非负,以后不再赘述。
线性规划标准形的可行解性质
定义
设(rank(A)=m),(A)的(m)个线性无关的列向量组成的线性极大无关组称作标准形的基(列空间的一个基底)。给定一个基:(B=(P_{i_1},P_{i_2},cdots,P_{i_m})),对应基中列向量的变量(x_{i_1},x_{i_2},cdots,x_{i_m})称作基变量(在矩阵乘法中与标准形基底列向量相乘的(X)的分量),其余变量称作非基变量。
将基变量构成的向量记作(X_B),非基变量构成的向量记作(X_N),令(X_N={f 0}),则等式约束条件变为
[BX_B=b
]
解得(X_B=B^{-1}b).该向量满足约束(AX=b)且非基变量全为0,称作关于基(B)的基本解,如果(X)是一个基本解且(Xge {f 0}),则称(X)是一个基本可行解,对应的基(B)成为可行基。
(注:关于为何矩阵(B)一定是可逆的?我们在这里假设线性规划的几个约束条件是线性无关的,即矩阵(A)行满秩。如若不然,(A)中存在一行可被其他行线性表出,则这个约束条件是冗余的。又矩阵的行秩等于列秩,(B)的列向量组是(A)列向量的线性极大无关组,那么(B)一定为满秩方阵,故(B)可逆。 实际上我们可以进一步推出,(A)的行数严格小于列数,如若不然,由于(A)行满秩,矩阵行秩等于列秩,所以列数大于等于列秩。若列数等于列秩,则线性方程组(AX=b)的解是唯一确定的,线性规划问题就没有意义了。)
基本可行解的性质
引理
(AX=b)的解(alpha)是基本解(Leftrightarrowalpha)中非零分量对应列向量线性无关。
定理1
如果标准形有可行解,则必有基本可行解。
定理2
如果标准形有最优解,则必存在一个基本可行解是最优解。
单纯形法
基本步骤
(1).确定初始的基本可行解
(2).检查当前的基本可行解:若当前基本可行解是最优解,或者判断该标准形无最优解,则计算结束;否则作基变换:用一个非基变量替换基变量,得到一个新的可行基和对应基本可行解,且使目标函数值下降(或不升)。
(3).重复(2).
如何选择初始基本可行解
一般引入(m)个松弛变量(x_{n+i}ge0(i=1,2,cdots,m)),将这(m)个松弛变量取为基变量,则初始基本可行解对应基变量部分:
[X_B={f 0}
]
非基变量部分:
[X_N=(b_1,b_2,cdots,b_m)^T
]
初始基本可行解:
[X^{(0)}={left(egin{array}{c}X_B\X_N end{array}
ight)}=(0,0,cdots,0,b_1,b_2,cdots,b_m)^T
]
最优性检验
给定可行基(B=(P_{k_1},P_{k_2},cdots,P_{k_m})),将(AX=b)两边同时乘以(B^{-1}),得(B^{-1}AX=B^{-1}b).记(A)中对应非基变量得列向量构成矩阵为(N).
不妨设(矩阵分块):
[A=(B N)\X=left( egin{array}{c} X_B\X_Nend{array}
ight)
]
则:
[egin{aligned}AX&=b\Rightarrow (B N)left( egin{array}{c} X_B\X_Nend{array}
ight)&=b\BX_B+NX_N&=b\B^{-1}BX_B+B^{-1}NX_N&=B^{-1}b\X_B&=B^{-1}b-B^{-1}NX_Nend{aligned}
]
代入目标函数
[egin{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_Nend{aligned}
]
基本可行解(X_B^{(0)}=B^{-1}b,X_N^{(0)}=0),目标函数值为(z_0=c_B^TB^{-1}b)
[egin{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)Xend{aligned}
]
记(Lambda^T=c^T-c_B^TB^{-1}A=(lambda_1,lambda_2,cdots,lambda _n)^T)为检验数,则目标函数可以简化为:
[z=z_0+Lambda^TX
]
记(B^{-1}A=(alpha_{ij})_{m imes n},P_j'=B^{-1}P_j(1le j le n),eta =B^{-1}b)
定理3
给定基本可行解(X^{(0)}),若所有检验数非负,则(X^{(0)})是最优解。若存在检验数(lambda_k<0)且所有(alpha_{ik}le 0(1le i le m)),则无最优解。
基变换
给定可行基(B=(P_{pi(1)},P_{pi(2)},cdots,P_{pi(m)})),设(lambda_k<0)且(alpha _{lk}>0),(x_k)必是非基变量。
用非基变量(x_k)替换基变量(x_{pi(l)}),用(P_k)替换(B)中的(P_{pi(l)}),新的基为
[B'=(P_{pi(1)},cdots,P_{pi(l-1)},P_k,P_{pi(l+1)}cdots,P_{pi(m)})
]
称(x_k)为换入变量,(x_{pi(l)})为换出变量。选取(l)的方法:使得
[frac{eta_l}{alpha_{lk}}=min {frac{eta_i}{alpha_{ik}}|alpha_{ik}>0,1le i le m }
]
针对最小化的单纯形法算法步骤
1.设初始可行基
[B=(P_{pi(1)},P_{pi(2)},cdots,P_{pi(m)})\(alpha_{ij})_{m imes n}=B^{-1}A\eta=B^{-1}b\Lambda^T=c^T-B^{-1}A\z_0=B^{-1}b
]
2.若所有(lambda_jge0(1le jle n)),则(X_B=eta,X_N={f 0})是最优解,计算结束。
3.取(lambda_k<0),若所有(alpha_{ik}le 0 (1le i le m)),则无最优解,计算结束。
4.取(1le lle m)使得
[frac{eta_l}{alpha_{lk}}=min {frac{eta_i}{alpha_{ik}}|alpha_{ik}>0,1le i le m }
]
5.以(x_k)为换入变量,(x_{pi(i)})为换出变量做基变换。
6.转第2步判断。