线性规划之单纯形

本文详细介绍了线性规划的标准型,包括目标函数和约束条件,以及线性规划问题解的概念。重点讲解了单纯形法的原理,如凸集、顶点定理和迭代思路,阐述了如何构造初始可行基、进行基变换和最优性检验。同时,讨论了迭代过程中的计算步骤,如确定换入、换出变量的策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、线性规划的标准型

目标函数:

(1) max ⁡ Z = c 1 x 1 + c 2 x 2 + ⋯ + c n x n \max Z = c_1x_1+c_2x_2+\dots+c_nx_n\tag{1} maxZ=c1x1+c2x2++cnxn(1)

约束条件:

(2) s . t . { a 11 x 1 + a 12 x 2 + ⋯ + a 1 n x n = b 1 a 21 x 2 + a 22 x 2 + ⋯ + a 2 n x n = b 2 ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ a m 1 x 1 + a m 2 x 2 + ⋯ + a m n x n = b m x 1 , x 2 , … , x n ≥ 0 b 1 , b 2 , … , b n ≥ 0 s.t.\left\{ \begin{aligned} & a_{11}x_1+a_{12}x_2+\dots+a_{1n}x_n=b_1 \\ & a_{21}x_2+a_{22}x_2+\dots+a_{2n}x_n=b_2 \\ & \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots \\ & a_{m1}x_1+a_{m2}x_2+\dots+a_{mn}x_n=b_m \\ & x_1,x_2,\dots,x_n \geq 0 \quad b_1,b_2,\dots,b_n\geq 0 \\ \tag{2} \end{aligned} \right. s.t.a11x1+a12x2++a1nxn=b1a21x2+a22x2++a2nxn=b2am1x1+am2x2++amnxn=bmx1,x2,,xn0b1,b2,,bn0(2)

简记

目标函数最大
约束条件等式
决策变量非负
资源变量非负

向量形式

(3) max ⁡ Z = C X s . t . { ∑ i = 1 n P j x j = b i = 1 , 2 , … , m x j ≥ 0 j = 1 , 2 , … , n \max Z = CX \\ s.t.\left\{ \begin{aligned} & \sum_{i=1}^{n}P_jx_j=b\quad i=1,2,\dots,m \\ & x_j\geq 0\quad j=1,2,\dots,n \\ \tag{3} \end{aligned} \right. maxZ=CXs.t.i=1nPjxj=bi=1,2,,mxj0j=1,2,,n(3)

矩阵形式

(4) max ⁡ Z = C X s . t . { A X = b X ≥ 0 \max Z = CX \\ s.t.\left\{ \begin{aligned} & AX=b \\ & X\geq 0 \\ \tag{4} \end{aligned} \right. maxZ=CXs.t.{AX=bX0(4)

线性规划问题解的概念

最优解:使目标函数 ( 1 ) (1) (1)达到最大值的可行解。
:设 A A A是约束方程组 ( 2 ) (2) (2) m × n m\times n m×n阶系数矩阵 ( n > m ) (n>m) (n>m)其秩为 m m m B B B A A A的一个 m × m m\times m m×m阶的满秩子矩阵,称 B B B是线性规划问题的一个基
(5) B = [ a 11 a 12 … a 1 m ⋮ ⋮ ⋮ ⋮ a m 1 a m 2 … a m m ] = ( P 1 , … , P j , … , P m ) B= \left[ \begin{matrix} a_{11} & a_{12} & \dots & a_{1m}\\ \vdots & \vdots & \vdots & \vdots \\ a_{m1} & a_{m2} & \dots & a_{mm} \\ \end{matrix} \right]=(P_1,\dots,P_j,\dots,P_m)\tag{5} B=a11am1a12am2a1mamm=(P1,,Pj,,Pm)(5)
上式中 P j , j = 1 , … , m P_j,j=1,\dots,m Pj,j=1,,m基向量 x j x_j xj为相应基向量的基变量,除基变量以外的变量称为非基变量
基解:在约束方程组 ( 2 ) (2) (2)中,令所有非基变量 x m + 1 = x m + 2 = ⋯ = x n = 0 x_{m+1}=x_{m+2}=\dots=x_{n}=0 xm+1=xm+2==xn=0,因为 ∣ B ∣ ≠ 0 |B|\neq0 B̸=0,据克莱姆法则,对于 ( 2 ) (2) (2)可以求出唯一解 X B = ( x 1 , x 2 , … , x m ) T X_B=(x_1,x_2,\dots,x_m)^T XB=(x1,x2,,xm)T。称 X = ( x 1 , x 2 , … , x m , 0 , 0 , … , 0 ) T X=(x_1,x_2,\dots,x_m,0,0,\dots,0)^T X=(x1,x2,,xm,0,0,,0)T基解
基可行解:满足变量非负约束条件 ( 3 ) (3) (3)基解
可行基:对应基可行解的基。

单纯形法原理

凸集、顶点及几个定理

K K K n n n维欧式空间的一点集,若 ∀ X ( 1 ) ∈ K , X ( 2 ) ∈ K \forall X^{(1)}\in K,X^{(2)}\in K X(1)K,X(2)K的连线上的所有点 a X ( 1 ) + ( 1 − a ) X ( 2 ) ∈ K , 0 ≤ a ≤ 1 aX^{(1)}+(1-a)X^{(2)}\in K,0 \leq a\leq 1 aX(1)+(1a)X(2)K,0a1,则称 K K K凸集
K K K是凸集, X ∈ K X\in K XK;若 X X X不能用不同的两点 X ( 1 ) ∈ K X^{(1)}\in K X(1)K X ( 2 ) ∈ K X^{(2)}\in K X(2)K的线性组合表示为 X = a X ( 1 ) + ( 1 − a ) X ( 2 ) , 0 &lt; a &lt; 1 X=aX^{(1)}+(1-a)X^{(2)},0&lt;a&lt;1 X=aX(1)+(1a)X(2),0<a<1,则称 X X X K K K的一个顶点(或极点)

几点结论:

(1)可行域若有界则是凸集,也可能是无界域;
(2)每个基可行解对应可行域的一个顶点;
(3)可行域有有限多个顶点;
(4)如果有最优解,必在某个顶点上得到。

基最优解
基可行解
最优解
基解
可行解

“箭尾的解一定是箭头的解,反之不一定成立。”

单纯形法的迭代思路

Created with Raphaël 2.2.0 构造初始可行基 求出一个基可行解(顶点) 最优性判断:是否是最优解? 结束 基变换,保证目标函数值最优 yes no

单纯形法的迭代原理

(6) max ⁡ Z = C X s . t . { ∑ i = 1 n P j x j = P 1 x 1 + P 2 x 2 + ⋯ + P n x n = b x j ≥ 0 , j = 1 , 2 , … , n \max Z = CX \\ s.t.\left\{ \begin{aligned} &amp; \sum_{i=1}^{n}P_jx_j =P_1x_1+P_2x_2+\dots+P_nx_n = b \\ &amp; x_j\geq0, j=1,2,\dots,n \tag{6} \end{aligned} \right. maxZ=CXs.t.i=1nPjxj=P1x1+P2x2++Pnxn=bxj0,j=1,2,,n(6)

(1) 构造初始可行基

(7) B = ( P 1 , P 2 , … , P m ) = [ 1 0 … 0 0 1 … 0 ⋮ ⋮ ⋮ 0 0 … 1 ] m × m B = (P_1,P_2,\dots,P_m)= \left[ \begin{matrix} 1&amp;0&amp;\dots&amp;0\\ 0&amp;1&amp;\dots&amp;0\\ \vdots&amp;\vdots&amp; &amp;\vdots\\ 0&amp;0&amp;\dots&amp;1 \end{matrix} \right]_{m\times m}\tag{7} B=(P1,P2,,Pm)=100010001m×m(7)

  • 直接观察一个可行基 ∣ B ∣ ≠ 0 |B|\neq 0 B̸=0;
  • ≤ \leq 约束,加松弛变量;
  • ≥ \geq 约束,加人工变量。

(8) s . t . { x 1 + a 1 m + 1 x m + 1 + ⋯ + a 1 n x n = b 1 x 2 + a 2 m + 1 x m + 1 + ⋯ + a 2 n x n = b 2 ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ x m + a m m + 1 x m + 1 + ⋯ + a m n x n = b m x 1 , x 2 , … , x n ≥ 0 b 1 , b 2 , … , b n ≥ 0 s.t.\left\{ \begin{aligned} &amp; x_1 \qquad \qquad \qquad+a_{1m+1}x_{m+1}+\dots+a_{1n}x_n=b_1 \\ &amp; \qquad x_2 \qquad \qquad +a_{2m+1}x_{m+1}+\dots+a_{2n}x_n=b_2 \\ &amp; \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots \\ &amp; \qquad \qquad \qquad x_m +a_{mm+1}x_{m+1}+\dots+a_{mn}x_n=b_m \\ &amp; x_1,x_2,\dots,x_n \geq 0 \quad b_1,b_2,\dots,b_n\geq 0 \\ \tag{8} \end{aligned} \right. s.t.x1+a1m+1xm+1++a1nxn=b1x2+a2m+1xm+1++a2nxn=b2xm+amm+1xm+1++amnxn=bmx1,x2,,xn0b1,b2,,bn0(8)
显然,松弛变量的系数矩阵构成一个可行基。

(2) 基变换

两个基可行解相邻,两者可变换且仅变换一个基变量。

设初始基可行解为: X ( 0 ) = ( x 1 0 , x 2 0 , … , x m 0 , 0 , … , 0 ) T X^{(0)}=(x_1^0,x_2^0,\dots,x_m^0,0,\dots,0)^T X(0)=(x10,x20,,xm0,0,,0)T;
将初始基可行解代入式 ( 4 ) (4) (4)中,得 ∑ i = 1 m P i x i 0 = b \sum_{i=1}^{m}P_ix_i^0=b i=1mPixi0=b;
写出系数矩阵得增广矩阵:
(9) ( P 1 , P 2 , … , P m , P m + 1 , … , P j … , P n , b ) = [ 1 0 … 0 a 1 , m + 1 … a 1 j … a 1 n b 1 0 1 … 0 a 2 , m + 1 … a 2 j … a 2 n b 2 ⋮ ⋮ ⋮ ⋮ … ⋮ … ⋮ ⋮ 0 0 … 1 a m , m + 1 … a m j … a m n b m ] m × n (P_1,P_2,\dots,P_m,P_{m+1},\dots,P_j\dots,P_n,b)= \left[ \begin{matrix} 1&amp;0&amp;\dots&amp;0&amp;a_{1,m+1}&amp;\dots&amp;a_{1j}&amp;\dots&amp;a_{1n}&amp;b_1\\ 0&amp;1&amp;\dots&amp;0&amp;a_{2,m+1}&amp;\dots&amp;a_{2j}&amp;\dots&amp;a_{2n}&amp;b_2\\ \vdots&amp;\vdots&amp; &amp;\vdots&amp;\vdots&amp;\dots&amp;\vdots&amp;\dots&amp;\vdots&amp;\vdots\\ 0&amp;0&amp;\dots&amp;1&amp;a_{m,m+1}&amp;\dots&amp;a_{mj}&amp;\dots&amp;a_{mn}&amp;b_m \end{matrix}\tag{9} \right]_{m\times n} (P1,P2,,PmPm+1,,Pj,Pn,b)=100010001a1,m+1a2,m+1am,m+1a1ja2jamja1na2namnb1b2bmm×n(9)
可得 P j = ∑ i = 1 m a i j P i P_j = \sum_{i=1}^{m}a_{ij}P_i Pj=i=1maijPi → \rightarrow P j − ∑ i = 1 m a i j P i = 0 P_j-\sum_{i=1}^{m}a_{ij}P_i=0 Pji=1maijPi=0;
在上式中乘一个正数 θ &gt; 0 \theta&gt;0 θ>0,得
(10) θ ( P j − ∑ i = 1 m a i j P i ) = 0 ∑ i = 1 m P i x i 0 = b } ∑ i = 1 m ( x i 0 − θ a i j ) P i + θ P j = b \left. \begin{aligned} \theta (P_j-\sum_{i=1}^{m}a_{ij}P_i)&amp;=0 \\ \sum_{i=1}^{m}P_ix_i^0&amp;=b \\ \tag{10} \end{aligned} \right\}\sum_{i=1}^{m}(x_i^0-\theta a_{ij})P_i+\theta P_j = b θ(Pji=1maijPi)i=1mPixi0=0=bi=1m(xi0θaij)Pi+θPj=b(10)
∑ i = 1 m ( x i 0 − θ a i j ) P i + θ P j = b \sum_{i=1}^{m}(x_i^0-\theta a_{ij})P_i+\theta P_j = b i=1m(xi0θaij)Pi+θPj=b 可找到满足原约束方程组 ∑ j = 1 n P j x j = b \sum_{j=1}^{n}P_jx_j=b j=1nPjxj=b 的另一个点:
(11) X ( 1 ) = ( x 1 0 − θ a 1 j , … , x m 0 − θ a m j , 0 , … , θ , 0 ) T X^{(1)} = (x_1^0-\theta a_{1j},\dots,x_m^0-\theta a_{mj},0,\dots,\theta,0)^T\tag{11} X(1)=(x10θa1j,,xm0θamj,0,,θ,0)T(11)
要使式 ( 11 ) (11) (11)是一个基可行解,则应对所有 i = 1 , 2 , … , m i=1,2,\dots,m i=1,2,,m
存在 x i 0 − θ a i j ≥ 0 x_i^0-\theta a_{ij}\geq0 xi0θaij0 (先要使其可行)
令这 m m m 个不等式至少有一个等号成立,且当 a i j ≤ 0 a_{ij}\leq0 aij0 时,上式依然成立,故可令
(12) θ = min ⁡ l { x i 0 a i j ∣ a i j &gt; 0 } = x l 0 a l j \theta = \min \limits_{l} \{\frac{x_i^0}{a_{ij}}|a_{ij}&gt;0\}=\frac{x_l^0}{a_{lj}} \tag{12} θ=lmin{aijxi0aij>0}=aljxl0(12)
可确保
(13) x i 0 − θ a i j { = 0 , i = l ≥ 0 , i ≠ l x_i^0-\theta a_{ij} \left\{ \begin{aligned} &amp;=0,i=l\\ &amp;\geq 0,i\neq l\\ \tag{13} \end{aligned} \right. xi0θaij{=0,i=l0,i̸=l(13)
∴ X ( 1 ) = ( x 1 0 − θ a i j , … , x m 0 − θ a i j , 0 , … , θ , … , 0 ) T \therefore X^{(1)} = (x_1^0-\theta a_{ij},\dots,x_m^0-\theta a_{ij},0,\dots,\theta,\dots,0)^T X(1)=(x10θaij,,xm0θaij,0,,θ,,0)T 是可行解。
此时与 x 1 1 , … , x l − 1 1 , x j 1 , x l + 1 1 , … , x m 1 x_1^1,\dots,x_{l-1}^1,x_j^1,x_{l+1}^1,\dots,x_m^1 x11,,xl11,xj1,xl+11,,xm1 对应的基向量:
(14) ( P 1 , … , P l − 1 , P j , P l + 1 , … , P m ) = [ 1 … 0 a 1 j 0 … 0 0 … 0 a 2 j 0 … 0 ⋮ ⋮ ⋮ ⋮ ⋮ 0 … 0 a m j 0 … 1 ] m × m (P_1,\dots,P_{l-1},P_j,P_{l+1},\dots,P_m)=\left[ \begin{matrix} 1&amp;\dots&amp;0&amp;a_{1j}&amp;0&amp;\dots&amp;0\\ 0&amp;\dots&amp;0&amp;a_{2j}&amp;0&amp;\dots&amp;0\\ \vdots&amp;\quad&amp;\vdots&amp;\vdots&amp;\vdots&amp;\quad&amp;\vdots\\ 0&amp;\dots&amp;0&amp;a_{mj}&amp;0&amp;\dots&amp;1\\ \end{matrix} \right]_{m\times m}\tag{14} (P1,,Pl1,Pj,Pl+1,,Pm)=100000a1ja2jamj000001m×m(14)
通过初等行变换使 P j = ( 0 , 0 , … , 0 , 1 , 0 , … , 0 ) T P_j = (0,0,\dots,0,1,0,\dots,0)^T Pj=(0,0,,0,1,0,,0)T

(3) 最优性检验和解的判别

将上述 X ( 0 ) X^{(0)} X(0) X ( 1 ) X^{(1)} X(1) 分别代入目标函数 z = ∑ j = 1 n c j x j z=\sum_{j=1}^{n}c_jx_j z=j=1ncjxj,得
(15) z ( 0 ) = ∑ i = 1 m c i x i z^{(0)} = \sum_{i=1}^{m}c_ix_i\tag{15} z(0)=i=1mcixi(15)
(16) z ( 1 ) = ∑ i = 1 m c i ( x i 0 − θ a i j ) + θ c j = ∑ i = 1 m c i x i 0 + θ ( c j − ∑ i = 1 m c i a i j ) = z ( 0 ) + θ ( c j − ∑ i = 1 m c i a i j ) z^{(1)} = \sum_{i=1}^{m}c_i(x_i^0-\theta a_{ij})+\theta c_j=\sum_{i=1}^{m}c_ix_i^0 + \theta(c_j-\sum_{i=1}^{m}c_ia_{ij})=z^{(0)}+\green{\theta(c_j-\sum_{i=1}^{m}c_ia_{ij})}\tag{16} z(1)=i=1mci(xi0θaij)+θcj=i=1mcixi0+θ(cji=1mciaij)=z(0)+θ(cji=1mciaij)(16)
式中 θ &gt; 0 \theta&gt;0 θ>0,称 σ j = ( c j − ∑ i = 1 m c i a i j ) \red{\sigma_j=(c_j-\sum_{i=1}^{m}c_ia_{ij})} σj=(cji=1mciaij) 为检验数。

  1. 当所有 σ j ≤ 0 \sigma_j\leq 0 σj0,当前顶点(基可行解)的目标函数已是最大值,即为最优解;
  2. 当所有 σ j ≤ 0 \sigma_j\leq 0 σj0,又有某个非基变量 x j x_j xj 的检验数为0,则在另一个顶点也使目标函数达到最大,两点连线上的所有点都是最优解,即无穷多最优解,当所有非基变量的检验数 σ j &lt; 0 \sigma_j&lt;0 σj<0 时,有唯一最优解;
    最优解判别定理
    X ( 0 ) = ( b 1 ′ , b 2 ′ , … , b m ′ , 0 , … , 0 ) T X^{(0)} = (b_1&#x27;,b_2&#x27;,\dots,b_m&#x27;,0,\dots,0)^T X(0)=(b1,b2,,bm,0,,0)T 为基可行解,且全部 σ j ≤ 0 , j = m + 1 , … , n \blue{\sigma_j\leq0,j=m+1,\dots,n} σj0,j=m+1,,n,则 X ( 0 ) X^{(0)} X(0) 为最优解,若存在一个非基变量 x m + k \green{x_{m+k}} xm+k 对应的检验数 σ m + k = 0 \green{\sigma_{m+k} = 0} σm+k=0,则存在无穷多最优解;且全部 σ j &lt; 0 , j = m + 1 , … , n \blue{\sigma_j&lt;0,j=m+1,\dots,n} σj<0,j=m+1,,n,则 X ( 0 ) X^{(0)} X(0) 为唯一最优解。
    无界解判别定理
    若有一个非基变量 x m + k \green{x_{m+k}} xm+k σ m + k &gt; 0 \green{\sigma_{m+k}&gt;0} σm+k>0,而其对应非基变量的所有系数 a i , m + k ≤ 0 , i = 1 , 2 , … , m a_{i,m+k}\leq 0,i=1,2,\dots,m ai,m+k0,i=1,2,,m,则具有无界解。

计算步骤

(1) 求初始基可行解,列出初始单纯形表
(2)最优性检验
(3)基变换

  • 1,确定换入基的变量
    只要有检验数大于0,对应的变量就可作为换入变量,当有一个以上检验数大于0时,一般从中选取最大的一个:
    (17) σ k = max ⁡ j { σ j ∣ σ j &gt; 0 } \sigma_k=\max \limits_{j}\{\sigma_j|\sigma_j&gt;0\}\tag{17} σk=jmax{σjσj>0}(17)
    其对应的变量 x k \red{x_k} xk 作为换入变量。
  • 2,确定换出基的变量
    根据确定 θ \theta θ 最小比值规则,对 P k P_k Pk 列计算可得:
    (18) θ = min ⁡ { b i a i k ∣ a i k &gt; 0 } = b l a l k \theta = \min\{\frac{b_i}{a_{ik}}|a_{ik}&gt;0\}=\frac{b_l}{a_{lk}}\tag{18} θ=min{aikbiaik>0}=alkbl(18)
    其对应的变量 x l \red{x_l} xl 作为换出变量。
    元素 a l k a_{lk} alk 决定了从一个基可行解到相邻基可行解的转移去向,称之为主元素。
  • 3,迭代变换
    用换入变量 x k x_k xk 去替换基变量中的换出变量 x l x_l xl,得到一个新的基 ( P 1 , … , P l − 1 , P k , P l + 1 , … , P m ) (P_1,\dots,P_{l-1},P_k,P_{l+1},\dots,P_m) (P1,,Pl1,Pk,Pl+1,,Pm)。对应这个基可以找到一个新的基可行解,并相应地可以画出一张新的单纯形表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值