线性规划问题
线性规划的标准形
将一个线性规划问题化为标准形的方法不再叙述(求\(\max\)改求\(\min\),不等号补松弛变量和剩余变量变等号)。
标准形可以写为如下的矩阵形式:
例如以下这个标准形线性规划问题:
将它写成矩阵乘法:
令:
那么原来的线性规划标准形可简写为以下的矩阵乘法形式:
这里的\(X\ge {\bf 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={\bf 0}\),则等式约束条件变为
解得\(X_B=B^{-1}b\).该向量满足约束\(AX=b\)且非基变量全为0,称作关于基\(B\)的基本解,如果\(X\)是一个基本解且\(X\ge {\bf 0}\),则称\(X\)是一个基本可行解,对应的基\(B\)成为可行基。
(注:关于为何矩阵\(B\)一定是可逆的?我们在这里假设线性规划的几个约束条件是线性无关的,即矩阵\(A\)行满秩。如若不然,\(A\)中存在一行可被其他行线性表出,则这个约束条件是冗余的。又矩阵的行秩等于列秩,\(B\)的列向量组是\(A\)列向量的线性极大无关组,那么\(B\)一定为满秩方阵,故\(B\)可逆。 实际上我们可以进一步推出,\(A\)的行数严格小于列数,如若不然,由于\(A\)行满秩,矩阵行秩等于列秩,所以列数大于等于列秩。若列数等于列秩,则线性方程组\(AX=b\)的解是唯一确定的,线性规划问题就没有意义了。)
基本可行解的性质
引理
\(AX=b\)的解\(\alpha\)是基本解\(\Leftrightarrow\alpha\)中非零分量对应列向量线性无关。
定理1
如果标准形有可行解,则必有基本可行解。
定理2
如果标准形有最优解,则必存在一个基本可行解是最优解。
单纯形法
基本步骤
(1).确定初始的基本可行解
(2).检查当前的基本可行解:若当前基本可行解是最优解,或者判断该标准形无最优解,则计算结束;否则作基变换:用一个非基变量替换基变量,得到一个新的可行基和对应基本可行解,且使目标函数值下降(或不升)。
(3).重复(2).
如何选择初始基本可行解
一般引入\(m\)个松弛变量\(x_{n+i}\ge0(i=1,2,\cdots,m)\),将这\(m\)个松弛变量取为基变量,则初始基本可行解对应基变量部分:
非基变量部分:
初始基本可行解:
最优性检验
给定可行基\(B=(P_{k_1},P_{k_2},\cdots,P_{k_m})\),将\(AX=b\)两边同时乘以\(B^{-1}\),得\(B^{-1}AX=B^{-1}b\).记\(A\)中对应非基变量得列向量构成矩阵为\(N\).
不妨设(矩阵分块):
则:
代入目标函数
基本可行解\(X_B^{(0)}=B^{-1}b,X_N^{(0)}=0\),目标函数值为\(z_0=c_B^TB^{-1}b\)
记\(\Lambda^T=c^T-c_B^TB^{-1}A=(\lambda_1,\lambda_2,\cdots,\lambda _n)^T\)为检验数,则目标函数可以简化为:
记\(B^{-1}A=(\alpha_{ij})_{m\times n},P_j'=B^{-1}P_j(1\le j \le n),\beta =B^{-1}b\)
定理3
给定基本可行解\(X^{(0)}\),若所有检验数非负,则\(X^{(0)}\)是最优解。若存在检验数\(\lambda_k<0\)且所有\(\alpha_{ik}\le 0(1\le 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)}\),新的基为
称\(x_k\)为换入变量,\(x_{\pi(l)}\)为换出变量。选取\(l\)的方法:使得
针对最小化的单纯形法算法步骤
1.设初始可行基
2.若所有\(\lambda_j\ge0(1\le j\le n)\),则\(X_B=\beta,X_N={\bf 0}\)是最优解,计算结束。
3.取\(\lambda_k<0\),若所有\(\alpha_{ik}\le 0 (1\le i \le m)\),则无最优解,计算结束。
4.取\(1\le l\le m\)使得
5.以\(x_k\)为换入变量,\(x_{\pi(i)}\)为换出变量做基变换。
6.转第2步判断。