线性规划的标准形式与单纯形法
1.线性规划的标准形式
为什么要化为标准型?
通俗来讲,就是增加方程的维度,降低方程求解的难度。
标准形式的四个特征:
1.目标函数为max(若原问题为min z,则令z_1=-z)
2.约束条件为等式(若为 ≤ \leq ≤,则加上松弛变量,若为 ≥ \geq ≥,则减去松弛变量)
3.决策变量为非负(若x_i<0,则令新x_i=-x_i)
4.限额系数b为正数(若小于0,则等式两边添负号;若等于0表示可能出现退化)
案例
max z = 2 x 1 + 3 x 2 \max z=2x_1+3x_2 maxz=2x1+3x2
1 x 1 + 2 x 2 ≤ 8 1x_1+2x_2\leq8 1x1+2x2≤8
4 x 1 + 0 x 2 ≤ 16 4x_1+0x_2\leq16 4x1+0x2≤16
0 x 1 + 4 x 2 ≤ 12 0x_1+4x_2\leq12 0x1+4x2≤12
∀ x i ≥ 0 \forall x_i\geq0 ∀xi≥0
对于上述数学模型,按以上四个特征变化后如下:
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
1 x 1 + 2 x 2 + x 3 = 8 1x_1+2x_2+x_3=8 1x1+2x2+x3=8
4 x 1 + 0 x 2 + x 4 = 16 4x_1+0x_2+x_4=16 4x1+0x2+x4=16
0 x 1 + 4 x 2 + x 5 = 12 0x_1+4x_2+x_5=12 0x1+4x2+x5=12
∀ x i ≥ 0 \forall x_i\geq0 ∀xi≥0
其中x_3,x_4,x_5称为松弛变量,在目标函数中的系数为0
个例 ⇒ \Rightarrow ⇒通例
目标函数:max z=c1x1+c2x2+ ⋯ \cdots ⋯+cnxn
约束条件 = { a 11 x 1 + a 12 x 2 + ⋯ + a 1 n x n = b 1 a 21 x 1 + 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 i ≥ 0 约束条件=\begin{cases} a_{11}x_1+a_{12}x_2+\cdots+a_{1n}x_n=b_1 \\ a_{21}x_1+a_{22}x_2+\cdots+a_{2n}x_n=b_2 \\ \qquad\qquad\quad\quad\quad\cdots \\ a_{m1}x_1+a_{m2}x_2+\cdots+a_{mn}x_n=b_m \\ x_i\geq0\end{cases} 约束条件=⎩ ⎨ ⎧a11x1+a12x2+⋯+a1nxn=b1a21x1+a22x2+⋯+a2nxn=b2⋯am1x1+am2x2+⋯+amnxn=bmxi≥0
单纯形法
什么是单纯形法?
单纯形法是在高斯消除法的基础上,发展为求解变量数多余方程数,并且使目标函数值最优化的方法。
求解工具:单纯形表
单纯形表求解案例
注:单纯形表求解针对已经化为标准型的规划
现有问题标准型如下: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
1 x 1 + 2 x 2 + x 3 = 8 1x_1+2x_2+x_3=8 1x1+2x2+x3=8
4 x 1 + x 4 = 16 4x_1+x_4=16 4x1+x4=16
4 x 2 + x 5 = 12 4x_2+x_5=12 4x2+x5=12
∀ x i ≥ 0 \forall x_i\geq0 ∀xi≥0
上述模型系数矩阵(约束方程中各变量对应的系数)为 [ 1 2 1 0 0 4 0 0 1 0 0 4 0 0 1 ] \begin{bmatrix} 1&2&1&0&0\\4&0&0&1&0\\0&4&0&0&1\end{bmatrix} 140204100010001 ,其中单位阵对应的变量作为初始基变量,其余为初始非基变量。作单纯形表如下:
c_i 2 3 0 0 0 C_B X_B b x_1 x_2 x_3 x_4 x_5 θ \theta θ 0 x_3 8 1 2 1 0 0 0 x_4 6 4 0 0 1 0 0 x_5 12 0 4 0 0 1 c_i-z_i 表中C_B列为基变量系数(该变量在目标函数中对应的系数),X_B为基变量,c_i-z_i用作确定入基变量 ( 计算案例:如计算x_1列检验数,则等于2-(0*1+0*4+0*0)=2,括号内部分为C_B列与x_1列元素对应乘积的和 ), θ \theta θ在全部检验数计算完成、确定了入基变量后,用来确定出基变量。
检验数计算完成后如下表:
c_i 2 3 0 0 0 C_B X_B b x_1 x_2 x_3 x_4 x_5 θ \theta θ 0 x_3 8 1 2 1 0 0 0 x_4 6 4 0 0 1 0 0 x_5 12 0 4 0 0 1 c_i-z_i 2 3 0 0 0 如果存在检验数大于0,说明不是最优解,选择最大检验数对应变量(即x_1)作入基变量,同时计算 θ \theta θ, θ \theta θ等于上表中加粗的两个数相除。计算完毕后如下表:
c_i 2 3 0 0 0 C_B X_B b x_1 x_2 x_3 x_4 x_5 θ \theta θ 0 x_3 8 1 2 1 0 0 4 0 x_4 6 4 0 0 1 0 空 0 x_5 12 0 4 0 0 1 3 c_i-z_i 2 3 0 0 0 选 θ \theta θ最小做出基变量,则由上表可知,x_2入基,x_5出基,对表中加粗部分进行初等行变换,使得x_2列变为x_5列的001。得到新表,并计算新表检验数和 θ \theta θ后如下:
c_i 2 3 0 0 0 C_B X_B b x_1 x_2 x_3 x_4 x_5 θ \theta θ 0 x_3 2 1 0 1 0 -2 2 0 x_4 16 4 0 0 1 0 4 3 x_2 3 0 1 0 0 1/4 空 c_i-z_i 2 0 0 0 -3/4 则x_1入基,x_3出基:
c_i 2 3 0 0 0 C_B X_B b x_1 x_2 x_3 x_4 x_5 θ \theta θ 2 x_1 2 1 0 1 0 -2 空 0 x_4 8 0 0 -4 1 2 4 3 x_2 3 0 1 0 0 1/4 12 c_i-z_i 0 0 -2 0 1/4 则x_5入基,x_4出基:
c_i 2 3 0 0 0 C_B X_B b x_1 x_2 x_3 x_4 x_5 θ \theta θ 2 x_1 4 1 0 0 1/4 0 0 x_5 4 0 0 -2 1/2 1 3 x_2 2 0 1 1/2 -1/8 0 c_i-z_i 0 0 -3/2 -1/8 0 此时检验数均小于0,无需计算 θ \theta θ,得到最优解x_1=4,x_5=4,x_2=2,其余变量为0,目标函数值为14。
注:若需理论证明可参考相关教材。