笔记:线性规划问题(基础)

线性规划问题

线性规划的标准形

将一个线性规划问题化为标准形的方法不再叙述(求\(\max\)改求\(\min\),不等号补松弛变量和剩余变量变等号)。

标准形可以写为如下的矩阵形式:

\[A=\left[ \begin{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}\right]\quad b=\left[ \begin{matrix} b_1\\ b_2 \\ \vdots\\ b_m \end{matrix}\right]\quad c=\left[ \begin{matrix} c_1\\ c_2 \\ \vdots\\ c_n \end{matrix}\right]\quad X=\left[ \begin{matrix} x_1\\ x_2 \\ \vdots\\ x_n \end{matrix}\right] \]

例如以下这个标准形线性规划问题:

\[\min z=-12x_1-15x_2\\{\rm 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_1\ge 0,x_2\ge 0,x_3\ge 0,x_4\ge 0,x_5\ge 0) \]

将它写成矩阵乘法:

\[\left[ \begin{matrix} 0.25 &0.50 &1 &0 &0 \\ 0.50 &0.50 &0 &1 &0\\ 0.25 &0 &0 &0 &1\\ \end{matrix}\right]\left[ \begin{matrix} x_1\\ x_2 \\ x_3\\ x_4\\ x_5 \end{matrix}\right]=\left[ \begin{matrix} 120\\150\\50 \end{matrix}\right] \]

令:

\[A=\left[ \begin{matrix} 0.25 &0.50 &1 &0 &0 \\ 0.50 &0.50 &0 &1 &0\\ 0.25 &0 &0 &0 &1\\ \end{matrix}\right]\quad b=\left[ \begin{matrix} 120\\150\\50 \end{matrix}\right]\quad X=\left[ \begin{matrix} x_1\\ x_2 \\ x_3\\ x_4\\ x_5 \end{matrix}\right]\quad c=\left[ \begin{matrix} -12\\ -15 \\ 0\\ 0\\ 0 \end{matrix}\right] \]

那么原来的线性规划标准形可简写为以下的矩阵乘法形式:

\[\min z=c^TX\\{\rm s.t.}\ \ AX=b\\X\ge {\bf 0} \]

这里的\(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}\),则等式约束条件变为

\[BX_B=b \]

解得\(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\)个松弛变量取为基变量,则初始基本可行解对应基变量部分:

\[X_B={\bf 0} \]

非基变量部分:

\[X_N=(b_1,b_2,\cdots,b_m)^T \]

初始基本可行解:

\[X^{(0)}={\left(\begin{array}{c}X_B\\X_N \end{array} \right)}=(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( \begin{array}{c} X_B\\X_N\end{array} \right) \]

则:

\[\begin{aligned}AX&=b\\\Rightarrow \ (B\ N)\left( \begin{array}{c} X_B\\X_N\end{array} \right)&=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_N\end{aligned} \]

代入目标函数

\[\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} \]

基本可行解\(X_B^{(0)}=B^{-1}b,X_N^{(0)}=0\),目标函数值为\(z_0=c_B^TB^{-1}b\)

\[\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} \]

\(\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\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)}\),新的基为

\[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{\beta_l}{\alpha_{lk}}=\min \{\frac{\beta_i}{\alpha_{ik}}|\alpha_{ik}>0,1\le i \le m \} \]

针对最小化的单纯形法算法步骤

1.设初始可行基

\[B=(P_{\pi(1)},P_{\pi(2)},\cdots,P_{\pi(m)})\\(\alpha_{ij})_{m\times n}=B^{-1}A\\\beta=B^{-1}b\\\Lambda^T=c^T-B^{-1}A\\z_0=B^{-1}b \]

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\)使得

\[\frac{\beta_l}{\alpha_{lk}}=\min \{\frac{\beta_i}{\alpha_{ik}}|\alpha_{ik}>0,1\le i \le m \} \]

5.以\(x_k\)为换入变量,\(x_{\pi(i)}\)为换出变量做基变换。

6.转第2步判断。

猜你喜欢

转载自www.cnblogs.com/allegro-vivace/p/12614899.html