运筹学05

运筹学是通过一系列的手段“折腾”方程组抽取信息

主题:化标准型,基的概念

线性规划问题的一般形式

一般情况:
z = f ( x 1 x 2 x 3 . . . x n    ) = c 1 x 1 + c 2 x 2 + . . . + c n x n    ( C i ∈ R ) z=f\left( x_1x_2x_3... x_{n\,\,} \right) =c_1x_1+c_2x_2+...+c_nx_n\,\, \left( C_i\in R \right) z=f(x1x2x3...xn)=c1x1+c2x2+...+cnxn(CiR)
{ a 11 x 1 + a 12 x 2 + . . . + a 1 n x n = ( ≤ , ≥ ) b 1 . . . a n 1 x 1 + a n 2 x 2 + . . . + a n n x n = ( ≤ , ≥ ) b n \begin{cases} a_{11}x_1+a_{12}x_2+...+a_{1n}x_n=\left( \le ,\ge \right) b_1\\ ...\\ a_{n1}x_1+a_{n2}x_2+...+a_{nn}x_n=\left( \le ,\ge \right) b_n\\ \end{cases} a11x1+a12x2+...+a1nxn=(,)b1...an1x1+an2x2+...+annxn=(,)bn
我们一定会求最值(大或小),显然不等式没有等式好求解
改标准型的目的:

方便求方程,升维,同时在目标函数中新增变量设定为0,升高维的目的是方便用线性代数求解,枚举,单纯形法也行

标准型具体转化:

{ A x = b max ⁡ Z    =    c x \begin{cases} Ax=b\\ \max Z\,\,=\,\,cx\\ \end{cases} {Ax=bmaxZ=cx

  1. 目标函数:
    max ⁡ Z    o r    max ⁡ Z ′    [ i f    Z ′ = − Z , w e    w a n t    min ⁡ Z ] \max Z\,\,or\,\, \max Z^{\prime}\,\,\left[ if\,\,Z^{\prime}=-Z,we\,\,want\,\,\min Z \right] maxZormaxZ[ifZ=Z,wewantminZ]
  2. 对b:
    b i ∈ R { b i > 0 b i ≤ 0 → 等式两边同时取负数 b i = 0 → 出现退化 b_i\in R\begin{cases} b_i>0\\ b_{\mathrm{i}}\le 0 \rightarrow \text{等式两边同时取负数}\\ b_{\mathrm{i}}=0 \rightarrow \text{出现退化}\\ \end{cases} biRbi>0bi0等式两边同时取负数bi=0出现退化
  3. 等号的符号 { =    不变 ≤    加入新变量,松弛变量  ≥    减去新变量,剩余变量 \text{等号的符号}\begin{cases} =\,\,\text{不变}\\ \le \,\,\text{加入新变量,松弛变量 }\\ \ge \,\,\text{减去新变量,剩余变量}\\ \end{cases} 等号的符号=不变加入新变量,松弛变量 减去新变量,剩余变量
  4. x i    ≥    0 x_{\mathrm{i}}\,\,\ge \,\,0 xi0
    { x 3 = x 3 ′ − x 3 ′ ′ x 3 ∈ R , x 3 ′ , x 3 ′ ′ ≥ 0 \begin{cases} x_3=x_{3}^{\prime}-x_{3}^{''}\\ x_3\in \mathrm{R},x_{3}^{\prime},x_{3}^{''}\ge 0\\ \end{cases} {x3=x3x3x3R,x3,x30
  5. 形式上调整函数,将添加的变量写回去 \text{形式上调整函数,将添加的变量写回去} 形式上调整函数,将添加的变量写回去

例子:
min ⁡ Z = − x 1 + 2 x 2 − 3 x 3 \min \mathrm{Z} =-x_1+2x_2-3x_3 minZ=x1+2x23x3
{ x 1 + x 2 + x 3 ≤ 7 x 1 − x 2 + x 3 ≥ 2 − 3 x 1 + x 2 + 2 x 3 = 5 x 1 , x 2 ≥ 0 , x 3 ∈ R \begin{cases} x_1+x_2+x_3\le 7\\ x_1-x_2+x_3\ge 2\\ -3x_1+x_2+2x_3=5\\ x_1,x_2\ge 0,x_3\in \mathrm{R}\\ \end{cases} x1+x2+x37x1x2+x323x1+x2+2x3=5x1,x20,x3R
1.
max ⁡ Z ′ →    − Z = x 1 − 2 x 2 + 3 x 3 \max \mathrm{Z}\prime \rightarrow \,\, -\mathrm{Z}=x_1-2x_2+3x_3 maxZZ=x12x2+3x3
2.
s . t . { x 1 + x 2 + ( x 3 ′ − x 3 ′ ′ ) + x 4 = 7 x 1 − x 2 + ( x 3 ′ − x 3 ′ ′ ) − x 5 ≥ 2 − 3 x 1 + x 2 + 2 ( x 3 ′ − x 3 ′ ′ ) = 5 x 1 , x 2 ≥ 0 , x 3 ∈ R , x 3 ′ , x 3 ′ ′ ≥ 0 s.t.\begin{cases} x_1+x_2+\left( x_{3}^{\prime}-x_{3}^{''} \right) +x_4=7\\ x_1-x_2+\left( x_{3}^{\prime}-x_{3}^{''} \right) -x_5\ge 2\\ -3x_1+x_2+2\left( x_{3}^{\prime}-x_{3}^{''} \right) =5\\ x_1,x_2\ge 0,x_3\in \mathrm{R},x_{3}^{\prime},x_{3}^{''}\ge 0\\ \end{cases} s.t.x1+x2+(x3x3)+x4=7x1x2+(x3x3)x523x1+x2+2(x3x3)=5x1,x20,x3R,x3,x30

max ⁡ Z ′ = x 1 − 2 x 2 + 3 ( x 3 ′ − x 3 ′ ′ ) + 0 x 4 + 0 x 5 \max \mathrm{Z}\prime =x_1-2x_2+3\left( x_{3}^{\prime}-x_{3}^{''} \right) +0x_4+0x_5 maxZ=x12x2+3(x3x3)+0x4+0x5

方程矩阵化(方便解)

{ a 11 x 1 + a 12 x 2 + . . . + a 1 n x n = b 1 . . . a m 1 x 1 + a m 2 x 2 + . . . + a m n x n = b m → [ a 11 . . . a 1 n ⋮ ⋱ ⋮ a m 1 . . . a m n ] m × n → [ p 1    p 2    p 3    . . . p 4 ]    →    A \begin{cases} a_{11}x_1+a_{12}x_2+...+a_{1n}x_n=b_1\\ ...\\ a_{m1}x_1+a_{m2}x_2+...+a_{mn}x_n=b_m\\ \end{cases}\rightarrow \left[ \begin{array}{c} \begin{matrix} a_{11}& ...& a_{1n}\\ \vdots& \ddots& \vdots\\ a_{m1}& ...& a_{mn}\\ \end{matrix}\\ \end{array} \right] _{m\times n}\rightarrow \left[ p_1\,\,p_2\,\,p_3\,\,... p_4 \right] \,\,\rightarrow \,\,A a11x1+a12x2+...+a1nxn=b1...am1x1+am2x2+...+amnxn=bma11am1......a1namnm×n[p1p2p3...p4]A

   A × x = b → 从中提取更多信息 → 根据秩求得最大子式(基) , 秩为 m → [ a 11 . . . a 1 m ⋮ ⋱ ⋮ a m 1 . . . a m m ] m × m \,\,A\times x=b\rightarrow \text{从中提取更多信息} \rightarrow \text{根据秩求得最大子式(基)},\text{秩为}m\rightarrow \left[ \begin{array}{c} \begin{matrix} a_{11}& ...& a_{1m}\\ \vdots& \ddots& \vdots\\ a_{m1}& ...& a_{mm}\\ \end{matrix}\\ \end{array} \right] _{m\times m} A×x=b从中提取更多信息根据秩求得最大子式(基),秩为ma11am1......a1mammm×m

得出基解过程:
{ [ a 11 . . . a 1 n ⋮ ⋱ ⋮ a m 1 . . . a m n ] m × n [ x 1 ⋮ x n ] → [ p 1    p 2    p 3    . . . p n ] [ x 1 ⋮ x n ] = b → [ p 1    p 2    p 3    . . . p m ] [ x 1 ⋮ x m ] + [ p m + 1    p m + 2    p m + 3    . . . p n ] [ x m + 1 ⋮ x n ] = b → 令 x m + 1 , . . . , x n 为 0 简化为 [ p 1    p 2    p 3    . . . p m ] [ x 1 ⋮ x m ] = b    [ p 1    p 2    p 3    . . . p m ] 就是基,而 [ x 1 ⋮ x m 0 0 ⋮ 0 ] n × 1 为基解 \begin{cases} \left[ \begin{array}{c} \begin{matrix} a_{11}& ...& a_{1n}\\ \vdots& \ddots& \vdots\\ a_{m1}& ...& a_{mn}\\ \end{matrix}\\ \end{array} \right] _{m\times n}\left[ \begin{array}{l} x_1\\ \vdots\\ x_n\\ \end{array} \right] \rightarrow \left[ p_1\,\,p_2\,\,p_3\,\,... p_n \right] \left[ \begin{array}{l} x_1\\ \vdots\\ x_n\\ \end{array} \right] =b\\ \rightarrow \left[ p_1\,\,p_2\,\,p_3\,\,... p_m \right] \left[ \begin{array}{l} x_1\\ \vdots\\ x_m\\ \end{array} \right] +\left[ p_{m+1}\,\,p_{m+2}\,\,p_{m+3}\,\,... p_n \right] \left[ \begin{array}{l} x_{m+1}\\ \vdots\\ x_n\\ \end{array} \right] =b\\ \overset{\text{令}x_{m+1},...,x_n\text{为}0}{\rightarrow}\text{简化为}\left[ p_1\,\,p_2\,\,p_3\,\,... p_m \right] \left[ \begin{array}{l} x_1\\ \vdots\\ x_m\\ \end{array} \right] =b\,\,\\ \left[ p_1\,\,p_2\,\,p_3\,\,... p_m \right] \text{就是基,而}\left[ \begin{array}{l} x_1\\ \vdots\\ x_m\\ 0\\ 0\\ \vdots\\ 0\\ \end{array} \right] _{n\times 1}\text{为基解}\\ \end{cases} a11am1......a1namnm×nx1xn[p1p2p3...pn]x1xn=b[p1p2p3...pm]x1xm+[pm+1pm+2pm+3...pn]xm+1xn=bxm+1,...,xn0简化为[p1p2p3...pm]x1xm=b[p1p2p3...pm]就是基,而x1xm000n×1为基解

几何角度

当 x i 为非负数,那么 [ x 1 ⋮ x m 0 0 ⋮ 0 ] n × 1 为基可行解(几何 : 方程式的交点,同时可行域的顶点 \text{当}x_i\text{为非负数,那么}\left[ \begin{array}{l} x_1\\ \vdots\\ x_m\\ 0\\ 0\\ \vdots\\ 0\\ \end{array} \right] _{n\times 1}\text{为基可行解(几何}:\text{方程式的交点,同时可行域的顶点} xi为非负数,那么x1xm000n×1为基可行解(几何:方程式的交点,同时可行域的顶点请添加图片描述

可行解:方程式的交点,同时在可行域内 \text{可行解:方程式的交点,同时在可行域内} 可行解:方程式的交点,同时在可行域内
换基:就是用不用的顶点进行比较,想办法得到最优解 \text{换基:就是用不用的顶点进行比较,想办法得到最优解} 换基:就是用不用的顶点进行比较,想办法得到最优解

单纯刑法:按照标准型:算出所有基可行解(枚举法)、按照既定顺序(单纯刑法)

单纯刑法

目的

  1. 找出基
  2. 目标函数达到最优

化成标准形式

找到基变量

方法:

  1. 直接看出来
  2. 初等行变换变个出来
  3. 试试(不推荐)

如何最优

检验数(后续更新)

实例

max ⁡ z    =    2 x 1 + 3 x 2 + 0 x 3 + 0 x 4 + 0 x 5 \max z\,\,=\,\,2x_1+3x_2+0x_3+0x_4+0x_5 maxz=2x1+3x2+0x3+0x4+0x5
{ x 1 + 2 x 2 + x 3    = 8 4 x 1 + x 4 = 16 4 x 2 + x 5 = 12 \left\{ \begin{array}{c} x_1+2x_2+x_3\,\,=8\\ 4x_1+x_4=16\\ 4x_2+x_5=12\\ \end{array} \right. x1+2x2+x3=84x1+x4=164x2+x5=12
A    =    [ l 1 2 1 0 0 4 0 0 1 0 0 4 0 0 1 ] A\,\,=\,\,\left[ \begin{matrix}{l} 1& 2& 1& 0& 0\\ 4& 0& 0& 1& 0\\ 0& 4& 0& 0& 1\\ \end{matrix} \right] A=l140204100010001
直接找到基, B    = [ P 3 P 4 P 5 ] = ( 1 0 0 0 1 0 0 0 1 ) \text{直接找到基,}B\,\,=\left[ \begin{matrix} P_3& P_4& P_5\\ \end{matrix} \right] =\left( \begin{matrix} 1& 0& 0\\ 0& 1& 0\\ 0& 0& 1\\ \end{matrix} \right) 直接找到基,B=[P3P4P5]=100010001
基: [ 1 0 0 0 1 0 0 0 1 ] 基解: [ x 3 x 4 x 5 ]    非基: [ 1 4 0 2 0 4 ]    非基解: [ x 1 x 2 ] \text{基:}\left[ \begin{matrix} 1& 0& 0\\ 0& 1& 0\\ 0& 0& 1\\ \end{matrix} \right] \text{基解:}\left[ \begin{array}{l} x_3\\ x_4\\ x_5\\ \end{array} \right] \,\,\text{非基:}\left[ \begin{array}{c} 1\\ 4\\ 0\\ \end{array}\begin{array}{c} 2\\ 0\\ 4\\ \end{array} \right] \,\,\text{非基解:}\left[ \begin{array}{l} x_1\\ x_2\\ \end{array} \right] 基:100010001基解:x3x4x5非基:140204非基解:[x1x2]
B [ x 3 x 4 x 5 ]    = [ 8 16 12 ] − [ 1 4 0 2 0 4 ] [ x 1 x 2 ] (非基为 0 ) B\left[ \begin{array}{l} x_3\\ x_4\\ x_5\\ \end{array} \right] \,\,=\left[ \begin{array}{l} 8\\ 16\\ 12\\ \end{array} \right] -\left[ \begin{array}{c} 1\\ 4\\ 0\\ \end{array}\begin{array}{c} 2\\ 0\\ 4\\ \end{array} \right] \left[ \begin{array}{l} x_1\\ x_2\\ \end{array} \right] \text{(非基为}0\text{)} Bx3x4x5=81612140204[x1x2](非基为0
{ x 3 = 8 − x 1 − 2 x 2 x 4 = 16 − 4 x 1 x 5 = 12 − 4 x 2    x 3 = 8 , x 4 = 16 , x 5 = 12 \left\{ \begin{array}{l} x_3=8-x_1-2x_2\\ x_4=16-4x_1\\ x_5=12-4x_2\\ \end{array} \right. \,\, x_3=8,x_4=16,x_5=12 x3=8x12x2x4=164x1x5=124x2x3=8,x4=16,x5=12
将这次的基变量记为 x ( 1 ) = ( 0 0 8 16 12 ) T ( 1 指的是第 1 次求得的基可行解 ) \text{将这次的基变量记为}x^{\left( 1 \right)}=\left( 0 \quad0 \quad8 \quad16\quad 12 \right) ^T\left( 1\text{指的是第}1\text{次求得的基可行解} \right) 将这次的基变量记为x(1)=(0081612)T(1指的是第1次求得的基可行解)
   z    =    2 x 1 + 3 x 2 + 0 ( 8 − x 1 − 2 x 2 ) + 0 ( 16 − 4 x 1 ) + 0 ( 12 − 4 x 2 ) 第一次迭代完成 判断:目标函数 z    =    2 x 1 + 3 x 2 + 0 x 3 + 0 x 4 + 0 x 5 = 0 是否达到了最优 \,\,z\,\,=\,\,2x_1+3x_2+0\left( 8-x_1-2x_2 \right) +0\left( 16-4x_1 \right) +0\left( 12-4x_2 \right) \\ \text{第一次迭代完成} \\ \text{判断:目标函数} z\,\,=\,\,2x_1+3x_2+0x_3+0x_4+0x_5=0\text{是否达到了最优} z=2x1+3x2+0(8x12x2)+0(164x1)+0(124x2)第一次迭代完成判断:目标函数z=2x1+3x2+0x3+0x4+0x5=0是否达到了最优
由于 x 1 和 x 2 的系数为 2 和 3 ,因此目标函数还有变大空间 因此需要第二次迭代 \text{由于}x_1\text{和}x_2\text{的系数为}2\text{和}3\text{,因此目标函数还有变大空间} \\ \text{因此需要第二次迭代} 由于x1x2的系数为23,因此目标函数还有变大空间因此需要第二次迭代

进行第二次迭代

z    =    2 x 1 + 3 x 2 + 0 x 3 + 0 x 4 + 0 x 5 z\,\,=\,\,2x_1+3x_2+0x_3+0x_4+0x_5 z=2x1+3x2+0x3+0x4+0x5

{ x 3 = 8 − x 1 − 2 x 2 x 4 = 16 − 4 x 1 x 5 = 12 − 4 x 2 \left\{ \begin{array}{l} x_3=8-x_1-2x_2\\ x_4=16-4x_1\\ x_5=12-4x_2\\ \end{array} \right. x3=8x12x2x4=164x1x5=124x2
x ( 1 ) = ( 0 0 8 16 12 ) T x^{\left( 1 \right)}=\left( 0\quad 0\quad 8\quad 16\quad 12 \right) ^T x(1)=(0081612)T

2 x 1 + 3 x 2 比较 c 1 , c 2 , c 2 比较大,考虑让 x 2 进基,此时 x 1 = 0 2x_1+3x_2\text{比较}c_1,c_2\text{,}c_2\text{比较大,考虑让}x_2\text{进基,此时}x_1=0 2x1+3x2比较c1,c2c2比较大,考虑让x2进基,此时x1=0
对于谁出基:
{ x 3 = 8 − x 1 − 2 x 2 x 4 = 16 − 4 x 1 x 5 = 12 − 4 x 2 \left\{ \begin{array}{l} x_3=8-x_1-2x_2\\ x_4=16-4x_1\\ x_5=12-4x_2\\ \end{array} \right. x3=8x12x2x4=164x1x5=124x2
{ x 3 = 8 − 2 x 2 x 4 = 16 x 5 = 12 − 4 x 2 \left\{ \begin{array}{l} x_3=8-2x_2\\ x_4=16\\ x_5=12-4x_2\\ \end{array} \right. x3=82x2x4=16x5=124x2
考虑条件 x i ≥ 0 \text{考虑条件}x_i\ge 0 考虑条件xi0
{ x 3 = 8 − 2 x 2 ≥ 0 x 4 = 16 ≥ 0 x 5 = 12 − 4 x 2 ≥ 0 \left\{ \begin{array}{l} x_3=8-2x_2\ge 0\\ x_4=16\ge 0\\ x_5=12-4x_2\ge 0\\ \end{array} \right. x3=82x20x4=160x5=124x20
我们要尽可能保证他们始终为正数
我们进行以下的转换:
{ x 3 = 1 − 2 8 x 2 ≥ 0 x 4 = 16 ≥ 0 x 5 = 1 − 4 12 x 2 ≥ 0 → { x 3 = 1 − 1 4 x 2 ≥ 0 x 4 = 16 ≥ 0 x 5 = 1 − 1 3 x 2 ≥ 0 \left\{ \begin{array}{l} x_3=1-\frac{2}{8}x_2\ge 0\\ x_4=16\ge 0\\ x_5=1-\frac{4}{12}x_2\ge 0\\ \end{array} \right. \rightarrow \left\{ \begin{array}{l} x_3=1-\frac{1}{4}x_2\ge 0\\ x_4=16\ge 0\\ x_5=1-\frac{1}{3}x_2\ge 0\\ \end{array} \right. x3=182x20x4=160x5=1124x20x3=141x20x4=160x5=131x20
− 1 4 > − 1 3 ,因此 x 5 比 x 3 更容易小于 0 ,所以 x 5 出基 -\frac{1}{4}>-\frac{1}{3}\text{,因此}x_5\text{比}x_3\text{更容易小于}0\text{,所以}x_5\text{出基} 41>31,因此x5x3更容易小于0,所以x5出基
因此在第二次迭代时, x 2 进基, x 5 出基 \text{因此在第二次迭代时,}x_2\text{进基,}x_5\text{出基} 因此在第二次迭代时,x2进基,x5出基
{ x 3 = 2 − x 1 + 1 3 x 5 x 4 = 16 − 4 x 1 x 2 = 3 − 1 4 x 5 \left\{ \begin{array}{l} x_3=2-x_1+\frac{1}{3}x_5\\ x_4=16-4x_1\\ x_2=3-\frac{1}{4}x_5\\ \end{array} \right. x3=2x1+31x5x4=164x1x2=341x5
z = 2 x 1 − 3 4 x 5 + 9 z=2x_1-\frac{3}{4}x_5+9 z=2x143x5+9
基变量记为 x ( 2 ) = ( 0 3 2 16 0 ) T ( 2 指的是第 2 次求得的基可行解 ) \text{基变量记为}x^{\left( 2 \right)}=\left( 0\quad 3 \quad2 \quad16\quad 0 \right) ^T\left( 2\text{指的是第}2\text{次求得的基可行解} \right) 基变量记为x(2)=(032160)T(2指的是第2次求得的基可行解)

下一步的迭代…

接下来的迭代和之上的迭代是一样的,判断出是否达到最优即可

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值