单纯形法之人工变量法求解步骤:一个简单例子
文章目录
- 人工变量法
- 1. 大M法
- 1.1. 题目
- 1.2. 转化为标准型
- 1.3. 添加人工变量
- 2. 两阶段法
- 2.1. 步骤
- 2.2. 题目
- 2.2.1. 转化为标准型
- 2.2.2. 添加人工变量
- 2.2.3. 两阶段
- 3. 参考
人工变量法
在一些模型中并不包含单位矩阵,为了得到一组基向量和初始可行解,在约束条件的等式左端添加一组虚拟变量,得到一组基向量。这种人为添加的变量称为人工变量,构成的可行基称为人工基,用大M法或两阶段法求解。
1. 大M法
大M法,通过引进人工变量,构造一个辅助的线性规划问题, 然后由辅助的线性规划问题找出原问题的第一个初始可行基,在此基础上,利用单纯形法求出原问题的最优解。
1.1. 题目
用大 M 法解下列线性规划
maxZ=3x1+2x2−x3\max Z = 3x_1 + 2x_2 - x_3 maxZ=3x1+2x2−x3
s.t.{−4x1+3x2+x3≥4x1−x2+2x3≤10−2x1+2x2−x3=−1xi≥0,i=1,2,3\text{s.t.} \begin{cases} -4x_1 + 3x_2 + x_3 \geq 4 \\ x_1 - x_2 + 2x_3 \leq 10 \\ -2x_1 + 2x_2 - x_3 = -1 \\ x_i \geq 0, i=1,2,3 \end{cases} s.t.⎩⎪⎪⎪⎨⎪⎪⎪⎧−4x1+3x2+x3≥4x1−x2+2x3≤10−2x1+2x2−x3=−1xi≥0,i=1,2,3
1.2. 转化为标准型
首先将线性规划转换成标准型
maxZ=3x1+2x2−x3+0x4+0x5\max Z = 3x_1 + 2x_2 - x_3 + 0x_4 + 0x_5 maxZ=3x1+2x2−x3+0x4+0x5
s.t.{−4x1+3x2+x3−x4=4x1−x2+2x3+x5=102x1−2x2+x3=1xi≥0,i=1,2,…,5\text{s.t.} \begin{cases} -4x_1 + 3x_2 + x_3 - x_4 = 4 \\ x_1 - x_2 + 2x_3 + x_5 = 10 \\ 2x_1 - 2x_2 + x_3 = 1 \\ x_i \geq 0, i=1,2,\dots, 5 \end{cases} s.t.⎩⎪⎪⎪⎨⎪⎪⎪⎧−4x1+3x2+x3−x4=4x1−x2+2x3+x5=102x1−2x2+x3=1xi≥0,i=1,2,…,5
画出其对应的单纯形表(如果这一步,还不会的话,可以参考单纯形法求解步骤:一个简单例子)
CCC | CCC | CCC | 3 | 2 | -1 | 0 | 0 |
---|---|---|---|---|---|---|---|
CBC_BCB | 基 | bbb | x1x_1x1 | x2x_2x2 | x3x_3x3 | x4x_4x4 | x5x_5x5 |
4 | -4 | 3 | 1 | -1 | 0 | ||
10 | 1 | -1 | 2 | 0 | 1 | ||
1 | 2 | -2 | 1 | 0 | 0 | ||
σ\sigmaσ | σ\sigmaσ | σ\sigmaσ |
在这个表的系数矩阵中,没有单位矩阵存在,所以无法直接进行求解,需要使用一些辅助手段–人工变量法。
1.3. 添加人工变量
maxZ=3x1+2x2−x3+0x4+0x5−Mx6−Mx7\max Z = 3x_1 + 2x_2 - x_3 + 0x_4 + 0x_5 - Mx_6 - Mx_7 maxZ=3x1+2x2−x3+0x4+0x5−Mx6−Mx7
s.t.{−4x1+3x2+x3−x4+x6=4x1−x2+2x3+x5=102x1−2x2+x3+x7=1xi≥0,i=1,2,…,7\text{s.t.} \begin{cases} -4x_1 + 3x_2 + x_3 - x_4 + x_6 = 4 \\ x_1 - x_2 + 2x_3 + x_5 = 10 \\ 2x_1 - 2x_2 + x_3 + x_7 = 1 \\ x_i \geq 0, i=1,2,\dots,7 \end{cases} s.t.⎩⎪⎪⎪⎨⎪⎪⎪⎧−4x1+3x2+x3−x4+x6=4x1−x2+2x3+x5=102x1−2x2+x3+x7=1xi≥0,i=1,2,…,7
CCC | CCC | CCC | 3 | 2 | -1 | 0 | 0 | -M | -M |
---|---|---|---|---|---|---|---|---|---|
CBC_BCB | 基 | bbb | x1x_1x1 | x2x_2x2 | x3↓x_3 \downarrowx3↓ | x4x_4x4 | x5x_5x5 | x6x_6x6 | x7x_7x7 |
-M | x6x_6x6 | 4 | -4 | 3 | 1 | -1 | 0 | 1 | 0 |
0 | x5x_5x5 | 10 | 1 | -1 | 2 | 0 | 1 | 0 | 0 |
-M | ←x7\leftarrow x_7←x7 | 1 | 2 | -2 | [1] | 0 | 0 | 0 | 1 |
σ\sigmaσ | σ\sigmaσ | σ\sigmaσ | 3-2M | 2+M | -1+2M | -M | 0 | 0 | 0 |
入基变量 x3x_3x3,出基变量 x7x_7x7;
CCC | CCC | CCC | 3 | 2 | -1 | 0 | 0 | -M | -M |
---|---|---|---|---|---|---|---|---|---|
CBC_BCB | 基 | bbb | x1x_1x1 | x2↓x_2 \downarrowx2↓ | x3x_3x3 | x4x_4x4 | x5x_5x5 | x6x_6x6 | x7x_7x7 |
-M | ←x6\leftarrow x_6←x6 | 3 | -6 | [5] | 0 | -1 | 0 | 1 | -1 |
0 | x5x_5x5 | 8 | -3 | 3 | 0 | 0 | 1 | 0 | -2 |
-1 | x3x_3x3 | 1 | 2 | -2 | 1 | 0 | 0 | 0 | 1 |
σ\sigmaσ | σ\sigmaσ | σ\sigmaσ | 5-6M | 5M | 0 | -M | 0 | 0 | 1-M |
入基变量 x2x_2x2,出基变量 x6x_6x6;
CCC | CCC | CCC | 3 | 2 | -1 | 0 | 0 | -M | -M |
---|---|---|---|---|---|---|---|---|---|
CBC_BCB | 基 | bbb | x1↓x_1 \downarrowx1↓ | x2x_2x2 | x3x_3x3 | x4x_4x4 | x5x_5x5 | x6x_6x6 | x7x_7x7 |
2 | x2x_2x2 | 35\frac{3}{5}53 | −65-\frac{6}{5}−56 | 1 | 0 | −15-\frac{1}{5}−51 | 0 | 15\frac{1}{5}51 | −15-\frac{1}{5}−51 |
0 | ←x5\leftarrow x_5←x5 | 315\frac{31}{5}531 | [35\frac{3}{5}53] | 0 | 0 | 35\frac{3}{5}53 | 1 | −35-\frac{3}{5}−53 | −75-\frac{7}{5}−57 |
-1 | x3x_3x3 | 115\frac{11}{5}511 | −25-\frac{2}{5}−52 | 0 | 1 | −25-\frac{2}{5}−52 | 0 | 25\frac{2}{5}52 | 35\frac{3}{5}53 |
σ\sigmaσ | σ\sigmaσ | σ\sigmaσ | 5 | 0 | 0 | 0 | 0 | -M | 1-M |
入基变量 x1x_1x1,出基变量 x5x_5x5;
CCC | CCC | CCC | 3 | 2 | -1 | 0 | 0 | -M | -M |
---|---|---|---|---|---|---|---|---|---|
CBC_BCB | 基 | bbb | x1x_1x1 | x2x_2x2 | x3x_3x3 | x4x_4x4 | x5x_5x5 | x6x_6x6 | x7x_7x7 |
2 | x2x_2x2 | 13 | 0 | 1 | 0 | 1 | 2 | 1 | -3 |
3 | x1x_1x1 | 313\frac{31}{3}331 | 1 | 0 | 0 | 1 | 53\frac{5}{3}35 | -1 | −73-\frac{7}{3}−37 |
-1 | x3x_3x3 | 193\frac{19}{3}319 | 0 | 0 | 1 | 0 | 23\frac{2}{3}32 | 0 | −13-\frac{1}{3}−31 |
σ\sigmaσ | σ\sigmaσ | σ\sigmaσ | 0 | 0 | 0 | -5 | −253-\frac{25}{3}−325 | 1-M | 383\frac{38}{3}338-M |
因为 σj≤0\sigma_j \leq 0σj≤0,对所有的 jjj 成立,所以迭代结束。
最优解为
x∗=(313,13,193,0,0)T,x^*=(\frac{31}{3}, 13, \frac{19}{3}, 0, 0)^T, x∗=(331,13,319,0,0)T,
Z∗=3x1+2x2−x3=3∗313+2∗13−193=1523.Z^* = 3x_1 + 2x_2 - x_3 = 3*\frac{31}{3} + 2*13-\frac{19}{3}= \frac{152}{3}. Z∗=3x1+2x2−x3=3∗331+2∗13−319=3152.
2. 两阶段法
在原来问题引入人工变量后分两个阶段求解线性规划问题的方法。其中,第一阶段在原来问题中引入人工变量,设法构造一个单位矩阵的初始可行基。在此基础上,建立辅助线性规划问题。然后运用单纯形法求解,直到辅助目标函数为0为止。第二阶段重新回到原来的问题,以第一阶段得到的可行基为初始可行基,运用单纯形法求出原来问题的解。
2.1. 步骤
- 不考虑原问题是否存在基可行解,引进人工变量,构造辅助线性规划问题;
- 用单纯形法求解辅助问题,若辅助问题的目标函数值 Z≠0Z \neq 0Z=0,则原问题无可行解,停止计算;
- 若辅助问题的目标函数值 Z=0Z = 0Z=0,则将第一阶段计算得到的最终表,除去人工变量,将目标函数行的系数换为原问题的目标函数系数,作为第二阶段的初始表;
- 使用单纯形法求解。
2.2. 题目
用两阶段法求解线性规划问题
maxZ=3x1+2x2−x3\max Z = 3x_1 + 2x_2 - x_3 maxZ=3x1+2x2−x3
s.t.{−4x1+3x2+x3≥4x1−x2+2x3≤10−2x1+2x2−x3=−1xi≥0,i=1,2,3\text{s.t.} \begin{cases} -4x_1 + 3x_2 + x_3 \geq 4 \\ x_1 - x_2 + 2x_3 \leq 10 \\ -2x_1 + 2x_2 - x_3 = -1 \\ x_i \geq 0, i=1,2,3 \end{cases} s.t.⎩⎪⎪⎪⎨⎪⎪⎪⎧−4x1+3x2+x3≥4x1−x2+2x3≤10−2x1+2x2−x3=−1xi≥0,i=1,2,3
2.2.1. 转化为标准型
maxZ=3x1+2x2−x3\max Z = 3x_1 + 2x_2 - x_3 maxZ=3x1+2x2−x3
s.t.{−4x1+3x2+x3−x4=4x1−x2+2x3+x5=102x1−2x2+x3=1xi≥0,i=1,2,…,5\text{s.t.} \begin{cases} -4x_1 + 3x_2 + x_3 - x_4 = 4 \\ x_1 - x_2 + 2x_3 + x_5 = 10 \\ 2x_1 - 2x_2 + x_3 = 1 \\ x_i \geq 0, i=1,2,\dots, 5 \end{cases} s.t.⎩⎪⎪⎪⎨⎪⎪⎪⎧−4x1+3x2+x3−x4=4x1−x2+2x3+x5=102x1−2x2+x3=1xi≥0,i=1,2,…,5
2.2.2. 添加人工变量
maxZ=3x1+2x2−x3\max Z = 3x_1 + 2x_2 - x_3 maxZ=3x1+2x2−x3
s.t.{−4x1+3x2+x3−x4+x6=4x1−x2+2x3+x5=102x1−2x2+x3+x7=1xi≥0,i=1,2,…,7\text{s.t.} \begin{cases} -4x_1 + 3x_2 + x_3 - x_4 + x_6 = 4 \\ x_1 - x_2 + 2x_3 + x_5 = 10 \\ 2x_1 - 2x_2 + x_3 + x_7 = 1 \\ x_i \geq 0, i=1,2,\dots, 7 \end{cases} s.t.⎩⎪⎪⎪⎨⎪⎪⎪⎧−4x1+3x2+x3−x4+x6=4x1−x2+2x3+x5=102x1−2x2+x3+x7=1xi≥0,i=1,2,…,7
2.2.3. 两阶段
- 第一阶段
minW=0x1+0x2+0x3+0x4+0x5+x6+x7\min W = 0x_1 + 0x_2 + 0x_3 + 0x_4 + 0x_5 + x_6 + x_7 minW=0x1+0x2+0x3+0x4+0x5+x6+x7
⟺\iff ⟺
max−W=0x1+0x2+0x3+0x4+0x5−x6−x7\max -W = 0x_1 + 0x_2 + 0x_3 + 0x_4 + 0x_5 - x_6 - x_7 max−W=0x1+0x2+0x3+0x4+0x5−x6−x7
CCC | CCC | CCC | 0 | 0 | 0 | 0 | 0 | -1 | -1 |
---|---|---|---|---|---|---|---|---|---|
CBC_BCB | 基 | bbb | x1x_1x1 | x2x_2x2 | x3↓x_3 \downarrowx3↓ | x4x_4x4 | x5x_5x5 | x6x_6x6 | x7x_7x7 |
-1 | x6x_6x6 | 4 | -4 | 3 | 1 | -1 | 0 | 1 | 0 |
0 | x5x_5x5 | 10 | 1 | -1 | 2 | 0 | 1 | 0 | 0 |
-1 | ←x7\leftarrow x_7←x7 | 1 | 2 | -2 | [1] | 0 | 0 | 0 | 1 |
σ\sigmaσ | σ\sigmaσ | σ\sigmaσ | -2 | 1 | 2 | -1 | 0 | 0 | 0 |
入基变量 x3x_3x3,出基变量 x7x_7x7;
CCC | CCC | CCC | 0 | 0 | 0 | 0 | 0 | -1 | -1 |
---|---|---|---|---|---|---|---|---|---|
CBC_BCB | 基 | bbb | x1x_1x1 | x2↓x_2 \downarrowx2↓ | x3x_3x3 | x4x_4x4 | x5x_5x5 | x6x_6x6 | x7x_7x7 |
-1 | ←x6\leftarrow x_6←x6 | 3 | -6 | [5] | 0 | -1 | 0 | 1 | -1 |
0 | x5x_5x5 | 8 | -3 | 3 | 0 | 0 | 1 | 0 | -2 |
0 | x3x_3x3 | 1 | 2 | -2 | 1 | 0 | 0 | 0 | 1 |
σ\sigmaσ | σ\sigmaσ | σ\sigmaσ | -6 | 5 | 0 | -1 | 0 | 0 | -2 |
入基变量 x2x_2x2,出基变量 x6x_6x6;
CCC | CCC | CCC | 0 | 0 | 0 | 0 | 0 | -1 | -1 |
---|---|---|---|---|---|---|---|---|---|
CBC_BCB | 基 | bbb | x1x_1x1 | x2x_2x2 | x3x_3x3 | x4x_4x4 | x5x_5x5 | x6x_6x6 | x7x_7x7 |
0 | x2x_2x2 | 35\frac{3}{5}53 | −65-\frac{6}{5}−56 | 1 | 0 | −15-\frac{1}{5}−51 | 0 | 15\frac{1}{5}51 | −15-\frac{1}{5}−51 |
0 | x5x_5x5 | 315\frac{31}{5}531 | 35\frac{3}{5}53 | 0 | 0 | 35\frac{3}{5}53 | 1 | −35-\frac{3}{5}−53 | −75-\frac{7}{5}−57 |
0 | x3x_3x3 | 115\frac{11}{5}511 | −25-\frac{2}{5}−52 | 0 | 1 | −25-\frac{2}{5}−52 | 0 | 25\frac{2}{5}52 | 35\frac{3}{5}53 |
σ\sigmaσ | σ\sigmaσ | σ\sigmaσ | 0 | 0 | 0 | 0 | 0 | -1 | -1 |
所有的人工变量都是非基变量,第一阶段结束。
- 第二阶段
CCC | CCC | CCC | 3 | 2 | -1 | 0 | 0 |
---|---|---|---|---|---|---|---|
CBC_BCB | 基 | bbb | x1↓x_1 \downarrowx1↓ | x2x_2x2 | x3x_3x3 | x4x_4x4 | x5x_5x5 |
2 | x2x_2x2 | 35\frac{3}{5}53 | −65-\frac{6}{5}−56 | 1 | 0 | −15-\frac{1}{5}−51 | 0 |
0 | ←x5\leftarrow x_5←x5 | 315\frac{31}{5}531 | [35\frac{3}{5}53] | 0 | 0 | 35\frac{3}{5}53 | 1 |
-1 | x3x_3x3 | 115\frac{11}{5}511 | −25-\frac{2}{5}−52 | 0 | 1 | −25-\frac{2}{5}−52 | 0 |
σ\sigmaσ | σ\sigmaσ | σ\sigmaσ | 5 | 0 | 0 | 0 | 0 |
入基变量 x1x_1x1,出基变量 x5x_5x5;
CCC | CCC | CCC | 3 | 2 | -1 | 0 | 0 |
---|---|---|---|---|---|---|---|
CBC_BCB | 基 | bbb | x1x_1x1 | x2x_2x2 | x3x_3x3 | x4x_4x4 | x5x_5x5 |
2 | x2x_2x2 | 13 | 0 | 1 | 0 | 1 | 2 |
3 | x1x_1x1 | 313\frac{31}{3}331 | 1 | 0 | 0 | 1 | 53\frac{5}{3}35 |
-1 | x3x_3x3 | 193\frac{19}{3}319 | 0 | 0 | 1 | 0 | 23\frac{2}{3}32 |
σ\sigmaσ | σ\sigmaσ | σ\sigmaσ | 0 | 0 | 0 | -5 | −253-\frac{25}{3}−325 |
σj≤0\sigma_j \leq 0σj≤0, 对所有的 jjj 都成立,因此求解结束。
最优解
x∗=(313,13,193,0,0)T,x^* = (\frac{31}{3}, 13, \frac{19}{3}, 0, 0)^T, x∗=(331,13,319,0,0)T,
Z∗=3x1+2x2−x3=3∗313+2∗13−193=1523.Z^* = 3x_1 + 2x_2 - x_3 = 3 * \frac{31}{3} + 2 * 13 - \frac{19}{3} = \frac{152}{3}. Z∗=3x1+2x2−x3=3∗331+2∗13−319=3152.
3. 参考
- 正气清风:(完整版)单纯形法、大M法
- Homyee King:初始解----两阶段的单纯形法
单纯形法之人工变量法求解步骤:一个简单例子相关推荐
- SAP MM采购定价过程的一个简单例子
SAP MM采购定价过程的一个简单例子 本文以一个简单的例子阐述了SAP MM模块中采购定价的基本原理.本例中,假定采购订单里输入的是含税采购价,然后系统自动计算出物料最终的采购价格(含税价-税额=采 ...
- 一个简单例子:贫血模型or领域模型
转:一个简单例子:贫血模型or领域模型 贫血模型 我们首先用贫血模型来实现.所谓贫血模型就是模型对象之间存在完整的关联(可能存在多余的关联),但是对象除了get和set方外外几乎就没有其它的方法,整个 ...
- KaTex的一个简单例子
在网页中可以用KaTex显示数学公式,KaTex官网是https://katex.org 以下是KaTex的一个简单例子: 下载https://github.com/KaTeX/KaTeX/archi ...
- 初次使用CTex时的一个简单例子
初次使用CTex时的一个简单例子 1.初次使用Ctex时的例子 第一次使用 LATEX,在WinEdt编辑以下代码,然后使用PDFLaTeX生成PDF文档. \documentclass{articl ...
- 协方差检验用在什么地方_通过一个简单例子,通俗讲下协方差分析
内容来自:"小白学统计"微信公众号,感谢作者授权. 临床中经常碰到这种设计:研究对象分为两组,接受不同治疗(如治疗组和安慰组),每组分别在治疗前和治疗后测量观察指标(如血压值).目 ...
- 通过一个简单例子理解 RecyclerView.ItemDecoration
一.前言 RecyclerView 是从5.0推出的 MD 风格的控件.RecyclerView 之前有 ListView.GridView,但是功能很有限,例如 ListView 只能实现垂直方向上 ...
- 什么是量子计算机?用一个简单例子来解释
译者:王亮 作者:YK Sugi 原文:http://t.cn/EZAElk0 Hi,大家好! 不久前,我参观了加拿大温哥华的D-Wave Systems公司,这是一家制造前沿量子计算机的公司. ...
- 词法分析程序 LEX和VC6整合使用的一个简单例子
词法分析的理论知识不少,包括了正规式.正规文法.它们之间的转换以及确定的有穷自动机和不确定的有穷自动机等等... 要自己写一个词法分析器也不会很难,只要给出了最简的有穷自动机,就能很方便实现了,用if ...
- Coolite一个简单例子-GridPanel列表增删改预览
本篇教程:Coolite Toolkit中文站首发. 我从http://www.cnblogs.com/magical/archive/2009/10/27/1590701.html转载. 这个例子只 ...
最新文章
- 线性O(N)时间复杂度求素数 , 筛法
- linux上安装pycharm
- Kotlin一大特色之空安全
- 面向对象(上)知识点
- CEO 赠书 | 甲之蜜糖乙之砒霜,创新者也将成为守旧者
- listagg 函数--oracle 11g release 2
- php反射机制详解,PHP反射机制实现插件的可插拔设计
- GraphQL:验证与授权
- C:打印菱形(自己的方法)
- 做一个关于我和她微信聊天记录的爱心词云图
- C语言输入函数换行符赋给变量B,C语言程序设计第3章顺序结构程序设计.pptx-资源下载在线文库www.lddoc.cn...
- java 数组大数乘法_java – 在数组中查找3个数字的最大乘积
- express url跳转(重定向)的实现:res.location() res.redirect()
- 收藏 | NLP论文、代码、博客、视频资源(LSTM,指针模型,Attention, ELMo,GPT,BERT、多任务学习等)...
- 我们精心整理的2019最新全栈资料!首次公布
- 浏览器播放语音SpeechSynthesisUtterance
- php遵义旅游管理系统毕业设计源码091801
- Date.getyear()、Date.getMonth()、Date.getDay() 已经作废,其他解决办法
- Android EditText输入光标居于开头最开始位置
- 树莓派4b搭建个人云_用树莓派搭建私人简易网盘 2/5 树莓派4B初始设置