线性规划的思想

一、基本性质

1.标准形式

min\quad cx \newline s.t.\quad Ax=b \newline x\geqslant 0                                                                                         (1)

其中Am\times n矩阵,Cn维行向量,Bm维列向量。为计算需要,一般假设b\geqslant 0,即b的每个分量都是非负数。

所有的求解都是基于线性规划标准形式来求解,如果不是标准形式,需要通过下面几种方法转化为标准形式:

① 变量非负:

x_{j}=x_{j}^{'}-x_{j}^{"},其中x_{j}^{'}\geq 0x_{j}^{"}\geq 0,用非负变量x_{j}^{'}x_{j}^{"}替换无非负限制的变量x_{j}

eg:在实际发电机可上调和下调,此时的调节量就是一个可正可负的变量x_{j},用x_{j}^{'}表示该发电机的上调节量,x_{j}^{"}为下调节量。求解出来x_{j}^{'}x_{j}^{"},相减可得该发电机的实际调节量x_{j}

② 变量有上下界:

x_{j}\geq l_{j},令x_{j}^{'}=x_{j}- l_{j},则取x_{j}^{'}\geq 0

③ 引入松弛变量,将不等式约束变为等式约束。

2.基本概念

矩阵A的秩为m,假设A=[B,N],其中Bm阶可逆矩阵;即通过列调换后,可以得到前m列线性无关的矩阵B

记:

x=\begin{bmatrix} x_{B}\\x_{N} \end{bmatrix}                                                                                                                

其中x_{B}的分量(基变量)与B中的列对应,x_{N}的分量(非基变量)与N的列对应。

则有:

x_{B}=B^{-1}b-B^{-1}Nx_{N}                                                                                               

x_{N}即为线性代数中的自由未知量,他们取不同的值,可以得到不同的解。特别的当这些自由未知量全部为0时,得到解:

x=\begin{bmatrix} x_{B}\\0 \end{bmatrix}=\begin{bmatrix} B^{-1}b\\0 \end{bmatrix}                                                                                               (2)

B^{-1}b\geq 0,则称式(2)为式(1)的基本可行解,称B可行基矩阵x_{B}的各分量称为基变量x_{N}的各分量称为非基变量

细分的:若B^{-1}b> 0,称基本可行解是非退化的基本可行解;若至少存在一个分量是0,则该基本可行解是退化的基本可行解。(非退化的情况,单纯形有限次迭代必达最优解;退化的可能会出现循环现象,有限次迭代求不出最优解)

二、单纯形法

1.基本思想

 现在有一组基本可行解:

x^{0}=\begin{bmatrix} B^{-1}b\\0 \end{bmatrix}                                                                                                        

其对应的目标函数值为:

f_{0}=cx=(c_{B},c_{N})\begin{bmatrix} B^{-1}b\\0 \end{bmatrix}=c_{B} B^{-1}b                                                                        

从这一组基本可行解出发,求一个改进的基本可行解。通过不断循环改进基本可行解,力图达到最优基本可行解。

2.基本可行解的转换

记:

A=\begin{pmatrix} p_{1}, & p_{2}, & ... & p_{n}, \end{pmatrix}                                                                                                 (3)

设任意一个可行解为:

x=\begin{bmatrix} x_{B}\\x_{N} \end{bmatrix}=\begin{bmatrix} B^{-1}b\\0 \end{bmatrix}                                                                                                            

该点的目标函数值为:

f=f_{0}-\sum_{j\epsilon R}^{}(z_{j}-c_{j})x_{j}                                                                                            (4)

其中R是非基变量下标集,

z_{j}=c_BB^{-1}p_{j}                                                                                                                      

单纯形乘子w=c_BB^{-1}

  • 确定进基变量:

按照式(5)选择进基变量x_{k}使得式(4)中目标函数值下降最多:

z_{k}-c_{k}=\underset{j\epsilon R}{max}\begin{Bmatrix} z_{j}-c_{j} \end{Bmatrix}                                                                                             (5)

然后寻找出基变量,原来的基变量在x_{k}进基后可表示为:

x_{B}=B^{-1}b-B^{-1}Nx_{N}=B^{-1}b-B^{-1}p_{k}x_{k}=\bar{b}-y_{k}x_{k}                                         

即:

x_{B}=\begin{bmatrix} x_{B_{1}}\\ x_{B_{2}} \\ ... \\ x_{B_{m}} \end{bmatrix}=\begin{bmatrix} \bar{b_{1}}\\ \bar{b_{2}} \\ ... \\ \bar{b_{m}} \end{bmatrix}-\begin{bmatrix} y_{1k}\\ y_{2k} \\... \\ y_{mk} \end{bmatrix}x_{k}                                                                            

  • 确定出基变量

由于x_{B}的各分量大于等于0,随着进基变量x_{k}的增大,目标函数不断减小,基变量的各个值减小,第一个减小为0的基变量x_{r}变为出基变量,同时确定进基变量x_{k}取值的大小,为式(6)

x_k=min\begin{Bmatrix} \frac{\bar{b_{i}}}{y_{ik}}|y_{ik}>0 \end{Bmatrix}=\frac{\bar{b_{r}}}{y_{rk}}                                                                              (6)

 原基变量x_{B_{r}}=0

  • 转换后的基本可行解

新的基本可行解为:

x=(x_{B_{1}},...,x_{B_{r-1}},0,x_{B_{r+1}},0,...,x_{k},0,...,0)^{\top }                                                      (7)

目标函数值为:

f=f_{0}-(z_{k}-c_{k})x_{k}                                                                                                    (8)

  • 结束条件

重复上述过程,直至式(4)中的所有非基变量的z_{j}-c_{j}均为非正数,则迭代结束。对应的基本可行解即为最优解。

  • 判别数/检验数

z_{j}-c_{j}=c_BB^{-1}p_{j}-c_{j}j=1,...,n                                                                            

3.流程图

4.举例

min\quad -4x_{1}-x_{2}\\s.t. \\\quad -x_{1}+2x_{2}\leq 4\\ 2x_{1}+2x_{2}\leq 12\\x_{1}-x_{2}\leq 3\\x_{1},x_{2}\geq 0             

解:

① 化为标准型,引入松弛变量

min\quad -4x_{1}-x_{2}\\s.t. \\\quad -x_{1}+2x_{2}+x_3= 4\\ 2x_{1}+2x_{2}+x_4=12\\x_{1}-x_{2}+x_{5}=3\\x_{1},x_{2},x_{3},x_{4},x_{5}\geq 0

A=\begin{bmatrix} -1 &2 &1 & 0 &0 \\ 2 & 3& 0 & 1 &0 \\ 1& -1 &0 &0 & 1 \end{bmatrix}=(p_{1},p_2,p_3,p_4,p_5)

b=\begin{bmatrix} 4\\12 \\ 3 \end{bmatrix}

②迭代

第一次迭代:   基变量p_3,p_4,p_5

        B=(p_3,p_4,p_5)=\begin{bmatrix} 1 & 0&0 \\ 0& 1 & 0\\ 0&0 & 1 \end{bmatrix}               

        C_{B}=(c_3,c_4,c_5)=(0,0,0)                  c_{N}=(c_1,c_2)=(-4,2)   

        B^{-1}=\begin{bmatrix} 1 & 0&0 \\ 0& 1 & 0\\ 0&0 & 1 \end{bmatrix}

计算当前解和目标函数值:

        x_B=B^{-1}b=\begin{bmatrix} 1 & 0&0 \\ 0& 1 & 0\\ 0&0 & 1 \end{bmatrix}\begin{bmatrix} 4\\12 \\3 \end{bmatrix}=\begin{bmatrix} 4\\12 \\3 \end{bmatrix}

        f_1=c_Bx_B=(0,0,0)\begin{bmatrix} 4\\12 \\ 3 \end{bmatrix}=0

计算单纯形乘子:

        w=c_{B}B^{-1}=(0,0,0)\begin{bmatrix} 1 &0 &0 \\ 0&1 & 0\\ 0& 0 &1 \end{bmatrix}=(0,0,0)

计算各非基变量的判别数:

`        z_{1}-c_{1}=wp_1-c_1=(0,0,0)\begin{bmatrix} -1\\2 \\ 1 \end{bmatrix}+4=4

        z_{2}-c_{2}=wp_2-c_2=(0,0,0)\begin{bmatrix} 2\\3 \\ -1 \end{bmatrix}+1=1

判别数的最大值为4,选择X_1为进基变量。

                y_1=B^{-1}p_1=\begin{bmatrix} 1 & 0& 0\\ 0&1 &0 \\ 0&0 & 1 \end{bmatrix}\begin{bmatrix} -1\\ 2 \\ 1 \end{bmatrix}=\begin{bmatrix} -1\\ 2 \\ 1 \end{bmatrix}=\begin{bmatrix} y_{11}\\y_{21} \\ y_{31} \end{bmatrix}

                \bar{b}=x_B=B^{-1}b=\begin{bmatrix} 1 & 0&0 \\ 0& 1 & 0\\ 0&0 & 1 \end{bmatrix}\begin{bmatrix} 4\\12 \\3 \end{bmatrix}=\begin{bmatrix} 4\\12 \\3 \end{bmatrix}=\begin{bmatrix} \bar{b_1}\\ \bar{b_2} \\ \bar{b_3} \end{bmatrix}

y_{ik}\geq 0中:

        \frac{\bar{b_2}}{y_{21}}=12/2=6

        \frac{\bar{b_3}}{y_{31}}=3/1=1

r=3,则出基变量为原基变量中的第3个,即X_5,其对应的判别数最小。进基变量X_1取值为1。

第二次迭代:   基变量p_3,p_4,p_1

B=(p_3,p_4,p_1)=\begin{bmatrix} 1 & 0&-1 \\ 0& 1 & 2\\ 0&0 & 1 \end{bmatrix}           

 C_{B}=(c_3,c_4,c_1)=(0,0,-4)

B^{-1}=\begin{bmatrix} 1 & 0&1 \\ 0& 1 & -2\\ 0&0 & 1 \end{bmatrix}

计算当前解和目标函数值:

x_B=B^{-1}b=\begin{bmatrix} 1 & 0&1 \\ 0& 1 & -2\\ 0&0 & 1 \end{bmatrix}\begin{bmatrix} 4\\12 \\3 \end{bmatrix}=\begin{bmatrix} 7\\6 \\3 \end{bmatrix}

f_2=c_Bx_B=(0,0,-4)\begin{bmatrix} 7\\6 \\ 3 \end{bmatrix}=-12

计算单纯形乘子:

        w=c_{B}B^{-1}=(0,0,-4)\begin{bmatrix} 1 &0 &1 \\ 0&1 & -2\\ 0& 0 &1 \end{bmatrix}=(0,0,-4)

计算各非基变量的判别数:

        z_{2}-c_{2}=wp_2-c_2=(0,0,-4)\begin{bmatrix} 2\\3 \\ -1 \end{bmatrix}+1=5`      

         z_{5}-c_{5}=wp_5-c_5=(0,0,-4)\begin{bmatrix} 0\\0 \\ 1 \end{bmatrix}-0=-4

判别数的最大值为5,选择X_2为进基变量

y_2=B^{-1}p_2=\begin{bmatrix} 1 & 0& 1\\ 0&1 &-2 \\ 0&0 & 1 \end{bmatrix}\begin{bmatrix} 2\\ 3 \\ -1 \end{bmatrix}=\begin{bmatrix} 1\\ 5\\ -1 \end{bmatrix}=\begin{bmatrix} y_{21}\\y_{22} \\ y_{23} \end{bmatrix}

\bar{b}=x_B=B^{-1}b=\begin{bmatrix} 1 & 0&1 \\ 0& 1 & -2\\ 0&0 & 1 \end{bmatrix}\begin{bmatrix} 4\\12 \\3 \end{bmatrix}=\begin{bmatrix} 7\\6 \\3 \end{bmatrix}

\frac{\bar{b_{r}}}{y_{r2}}=min\begin{Bmatrix} \frac{7}{1},\frac{6}{5} \end{Bmatrix}=\frac{6}{5}=\frac{\bar{b_{2}}}{y_{22}}

r=2,则出基变量为原基变量中的第2个,即X_4,其对应的判别数最小。进基变量X_2取值为\frac{6}{5}

第三次迭代:   基变量p_3,p_2,p_1

        B=(p_3,p_2,p_1)=\begin{bmatrix} 1 & 2&-1 \\ 0& 3 & 2\\ 0&-1 & 1 \end{bmatrix}

        C_{B}=(c_3,c_2,c_1)=(0,-1,-4)

        B^{-1}=\begin{bmatrix} 1 & -\frac{1}{5}&\frac{7}{5} \\ 0& \frac{1}{5} &\frac{ -2}{5}\\ 0&\frac{1}{5} & \frac{3}{5} \end{bmatrix}

        x_B=B^{-1}b=\begin{bmatrix} 1 & -\frac{1}{5}&\frac{7}{5} \\ 0& \frac{1}{5} &\frac{ -2}{5}\\ 0&\frac{1}{5} & \frac{3}{5} \end{bmatrix}\begin{bmatrix} 4\\12 \\3 \end{bmatrix}=\begin{bmatrix} \frac{29}{5}\\\frac{6}{5} \\\frac{21}{5} \end{bmatrix}

                        x_1=\bar{b_1}-y_{1k}x_k=7-1\times \frac{6}{5}=\frac{29}{5}

                ​​​​​​​        x_2=\frac{6}{5}

                        x_3=\bar{b_3}-y_{3k}x_k=3+1\times \frac{6}{5}=\frac{21}{5}

        f_{3}=C_{B}x_{B}=(0,-1,-4)\begin{bmatrix} \frac{29}{6}\\ \frac{6}{5} \\ \frac{21}{5} \end{bmatrix}=-18

计算单纯形乘子:

        w=C_{B}B^{-1}=(0,-1,-4)\begin{bmatrix} 1 & -\frac{1}{5}&\frac{7}{5} \\ 0& \frac{1}{5} &\frac{ -2}{5}\\ 0&\frac{1}{5} & \frac{3}{5} \end{bmatrix}=(0,-1,-2)

计算各非基变量的判别数:

        z_{4}-c_{4}=wp_{4}-c_{4}=(0,-1,-2)\begin{bmatrix} 0\\ 1 \\ 0 \end{bmatrix}=-1

        z_{5}-c_{5}=wp_{5}-c_{5}=(0,-1,-2)\begin{bmatrix} 0\\ 0 \\ 1 \end{bmatrix}=-2

所有判别数小于0,则当前解(\frac{21}{5},\frac{6}{5},\frac{29}{6},0,0)为最优解。

目标函数最优值f_{min}=-18

三、两阶段法

1.第一阶段

用单纯形法消去人工变量,即把人工变量都换成非基变量,求出原来问题的一个基本可行解。

第一阶段求解的问题:

min\quad e^{\top }x_a \newline s.t. \\\quad Ax+x_a=b \newline x\geqslant 0,x_a\geq 0

向量x_a\geq 0是人为引入的,它的每个分量称为人工变量。

求解该问题后,得到的基本可行解为\begin{pmatrix} \bar{x}\\ \bar{x_a} \end{pmatrix},必存在下面三种情形之一:

\bar{x_a}\neq 0,原线性规划问题无可行解。

\bar{x_a}= 0x_a的分量都是非基变量,x=\bar{x}是线性规划原问题的一个基本可行解。

\begin{bmatrix} x\\ x_a \end{bmatrix}=\begin{bmatrix} \bar{x}\\0 \end{bmatrix}

\bar{x_a}= 0x_a的某些分量是基变量。这时,可用主元消去法,把原来变量中 的某些非基变量引进基,替换出基变量中的人工变量后,在开始第二阶段。

2.第二阶段

从得到的基本可行解出发,修改单纯形表,去掉矩阵A中人工变量对应的列,按原问题修正判别数。用单纯形法求线性规划原问题的最优解。

3.举例

用两阶段法求解下列问题:

max\quad2x_{1}-x_{2}\\s.t.\\x_{1}+x_{2}\geq 2\\x_{1}-x_{2}\geq 1\\x_1\leq 3\\x_1,x_2\geq 0

解:

(1)引入松弛变量

max\quad2x_{1}-x_{2}\\s.t.\\x_{1}+x_{2}-x_{3}=2\\x_{1}-x_{2}-x_4=1\\x_1+x_{5=}3\\x_1,x_2,x_3,x_4,x_5\geq 0

(2) 引入人工变量

max\quad2x_{1}-x_{2}\\s.t.\\x_{1}+x_{2}-x_{3}+x_6=2\\x_{1}-x_{2}-x_4+x_7=1\\x_1+x_{5=}3\\x_1,x_2,x_3,x_4,x_5\geq 0

(3)第一阶段:修改目标问题后求解

max\quad x_{6}+x_{7}\\s.t. \\ x_{1}+x_{2}-x_{3}+x_6=2\\ x_{1}-x_{2}-x_4+x_7=1\\x_1+x_{5=}3\\x_1,x_2,x_3,x_4,x_5\geq 0

A=\begin{bmatrix} 1& 1 & -1 & 0 &0 & 1 &0 \\ 1&-1 & 0 & -1& 0 &0 &1 \\ 1& 0 &0 &0 &1 &0 &0 \end{bmatrix}=(p_1,p_2,p_3,p_4,p_5,p_6,p_7)

b=\begin{bmatrix} 2\\ 1 \\ 3 \end{bmatrix}

第一次迭代  基变量p_6,p_7,p_5

B=(p_6,p_7,p_8)=\begin{bmatrix} 1 & 0&0 \\ 0& 1& 0\\ 0&0 & 1 \end{bmatrix}

x_B=B^{-1}b=\begin{bmatrix} 1 & 0&0 \\ 0& 1& 0\\ 0&0 & 1 \end{bmatrix}\begin{bmatrix} 2\\ 1 \\ 3 \end{bmatrix}=\begin{bmatrix} 2\\1 \\3 \end{bmatrix}

f_1=c_Bx_B=(1,1,0)\begin{bmatrix} 2\\ 1 \\ 3 \end{bmatrix}=3
计算单纯形乘子

w=c_BB^{-1}=(1,1,0)\begin{bmatrix} 1 & 0 &0 \\ 0 & 1&0 \\ 0 &0 & 1 \end{bmatrix}=(1,1,0)

计算各非基变量的判别数

z_1-c_1=wp_1-c_1=(1,1,0)\begin{bmatrix} 1\\1 \\1 \end{bmatrix}=2

z_2-c_2=wp_2-c_2=(1,1,0)\begin{bmatrix} 1\\-1 \\0 \end{bmatrix}=0

z_3-c_3=wp_3-c_3=(1,1,0)\begin{bmatrix} -1\\0 \\0 \end{bmatrix}=-1

z_4-c_4=wp_4-c_4=(1,1,0)\begin{bmatrix} 0\\-1 \\0 \end{bmatrix}=-1

判别数的最大值为2,选择x_1为进基变量。

y_1=B^{-1}p_1=\begin{bmatrix} 1 & 0&0 \\ 0& 1& 0\\ 0&0 & 1 \end{bmatrix}\begin{bmatrix} 1\\ 1 \\ 1 \end{bmatrix}=\begin{bmatrix} 1\\ 1 \\ 1 \end{bmatrix}

\bar{b}=x_B=\begin{bmatrix} 2\\1\\3 \end{bmatrix}

r=2,原基变量中的第二个,x_7出基。进基变量x_1的值取1。

第二次迭代  基变量p_6,p_1,p_5

B=(p_6,p_1,p_5)=\begin{bmatrix} 1 & 1&0 \\ 0& 1& 0\\ 0&1 & 1 \end{bmatrix}

B^{-1}=\begin{bmatrix} 1 &- 1&0 \\ 0& 1& 0\\ 0&-1 & 1 \end{bmatrix}

x_B=B^{-1}b=\begin{bmatrix} 1 & -1&0 \\ 0& 1& 0\\ 0&-1 & 1 \end{bmatrix}\begin{bmatrix} 2\\ 1 \\ 3 \end{bmatrix}=\begin{bmatrix} 1\\1 \\2 \end{bmatrix}

f_2=c_Bx_B=(1,0,0)\begin{bmatrix} 1\\ 1 \\ 2 \end{bmatrix}=1

计算单纯形乘子

w=c_BB^{-1}=(1,0,0)\begin{bmatrix} 1 & -1 &0 \\ 0 & 1&0 \\ 0 &-1 & 1 \end{bmatrix}=(1,-1,0)

计算各非基变量的判别数

z_2-c_2=wp_2-c_2=(1,-1,0)\begin{bmatrix} 1\\-1 \\0 \end{bmatrix}=2

z_3-c_3=wp_3-c_3=(1,-1,0)\begin{bmatrix} -1\\0 \\0 \end{bmatrix}=-1

z_4-c_4=wp_4-c_4=(1,-1,0)\begin{bmatrix} 0\\-1 \\0 \end{bmatrix}=1

z_7-c_7=wp_7-c_7=(1,-1,0)\begin{bmatrix} 0\\1 \\0 \end{bmatrix}-1=-2

判别数的最大值为2,选择x_2为进基变量。

y_2=B^{-1}p_2=\begin{bmatrix} 1 & -1&0 \\ 0& 1& 0\\ 0&-1 & 1 \end{bmatrix}\begin{bmatrix} 1\\ -1 \\ 0 \end{bmatrix}=\begin{bmatrix} 2\\ -1 \\ 1 \end{bmatrix}

r=1,原基变量中的第一个,x_6出基。进基变量x_2的值取\frac{1}{2}

第三次迭代  基变量p_2,p_1,p_5

B=(p_2,p_1,p_5)=\begin{bmatrix} 1 & 1&0 \\ -1& 1& 0\\ 0&1 & 1 \end{bmatrix}

B^{-1}=\begin{bmatrix} 1 &- \frac{1}{2}&0 \\ 1& \frac{1}{2}& 0\\ 0&-\frac{1}{2} & 1 \end{bmatrix}

x_B=B^{-1}b=B^{-1}x_{B0}=\begin{bmatrix} 1 & -\frac{1}{2}&0 \\ 1& \frac{1}{2}& 0\\ 0&-\frac{1}{2} & 1 \end{bmatrix}\begin{bmatrix} 1\\ 1 \\ 2 \end{bmatrix}=\begin{bmatrix} \frac{1}{2}\\\frac{3}{2} \\\frac{3}{2} \end{bmatrix}

f_3=c_Bx_B=(0,0,0)\begin{bmatrix} \frac{1}{2}\\ \frac{3}{2} \\ \frac{3}{2}\end{bmatrix}=0

计算单纯形乘子

w=c_BB^{-1}=(0,0,0)\begin{bmatrix} 1 &- \frac{1}{2}&0 \\ 1& \frac{1}{2}& 0\\ 0&-\frac{1}{2} & 1 \end{bmatrix}=(0,0,0)

计算各非基变量的判别数

z_3-c_3=wp_3-c_3=(0,0,0)\begin{bmatrix} -1\\0 \\0 \end{bmatrix}=0

z_4-c_4=wp_4-c_4=(0,0,0)\begin{bmatrix} 0\\-1 \\0 \end{bmatrix}=0

z_6-c_6=wp_6-c_6=(0,0,0)\begin{bmatrix} 1\\0 \\0 \end{bmatrix}-1=-1

z_7-c_7=wp_7-c_7=(0,0,0)\begin{bmatrix} 0\\1 \\0 \end{bmatrix}-1=-1

判别数的最大值为-1\leq 0,现行基本解为当前最优解,从而得到初始基本可行解:

(x_1,x_2,x_3,x_4,x_5)=(\frac{3}{2},\frac{1}{2},0,0,\frac{3}{2} )

四、大M法

1.基本思想

在约束中增加人工变量x_a,同时修改目标函数,加上罚项Me^{T}x_{a},其中M是很大的正数,这样在极小化目标函数的过程中,由于大M的存在,将迫使人工变量离基。

min \quad cx+Me^{T}x_{a}\\s.t.\\Ax+x_{a}=b\\x\geq 0,x_{a}\geq 0

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值