前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【运筹学】线性规划 单纯形法 案例二 ( 案例解析 | 标准形转化 | 查找初始基可行解 | 最优解判定 | 查找入基变量与出基变量 | 第一次迭代 )

【运筹学】线性规划 单纯形法 案例二 ( 案例解析 | 标准形转化 | 查找初始基可行解 | 最优解判定 | 查找入基变量与出基变量 | 第一次迭代 )

作者头像
韩曙亮
发布2023-03-28 16:25:22
1.1K0
发布2023-03-28 16:25:22
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

一、线性规划示例


线性规划示例 : 使用单纯形法求解下面的线性规划 ;

\begin{array}{lcl} max Z = x_1 + 2x_2 + x_3 \\ \\ s.t\begin{cases} 2 x_1 - 3x_2 + 2x_3 \leq 15 \\\\ \dfrac{1}{3}x_1 + x_2 + 5x_3 \leq 20 \\ \\x_j \geq 0 & (j = 1 , 2 , 3 ) \end{cases}\end{array}

二、转化成标准形式


首先将现行规划转化成标准形式 :

参考 【运筹学】线性规划数学模型标准形式 ( 标准形式 | 目标函数转化 | 决策变量转化 | 约束方程转化 | 固定转化顺序 | 标准形式转化实例 ) 线性规划 普通形式 -> 标准形式 转化顺序说明 博客 , 先处理变量约束 , 再将不等式转为等式 , 最后更新目标函数 ;

1 . 处理约束变量 : 所有的约束变量都大于等于

0

, 这里无需处理 ;

2 . 将不等式转为等式 : 两个不等式都是小于等于不等式 , 在左侧加入松弛变量即可 ;

① 添加松弛变量 : 上述两个不等式

\begin{cases} 2 x_1 - 3x_2 + 2x_3 \leq 15 \\\\ \dfrac{1}{3}x_1 + x_2 + 5x_3 \leq 20 \end{cases}

, 在左侧分别添加

x_4 , x_5

松弛变量 ;

② 最终结果 : 转化后的结果是

\begin{cases} 2 x_1 - 3x_2 + 2x_3 + x_4 = 15 \\\\ \dfrac{1}{3}x_1 + x_2 + 5x_3 + x_5 = 20 \\ \\x_j \geq 0 \quad (j = 1 , 2 , 3, 4, 5 ) \end{cases}

3 . 处理目标函数取最大值 : 目标函数就是取最大值 , 无需处理 ;

4 . 最终的标准形结果是 :

\begin{array}{lcl} max Z = x_1 + 2x_2 + x_3 + 0x_4 + 0x_5 \\ \\ s.t\begin{cases} 2 x_1 - 3x_2 + 2x_3 + x_4 + 0x_5 = 15 \\\\ \dfrac{1}{3}x_1 + x_2 + 5x_3 + 0x_4 + x_5 = 20 \\ \\x_j \geq 0 \quad (j = 1 , 2 , 3, 4, 5 ) \end{cases}\end{array}

三、初始基可行解


找初始基可行解 :

① 查找单位阵 : 该线性规划标准形的系数矩阵中 ,

x_4 , x_5

的系数矩阵是

\begin{pmatrix} \quad 1 \quad 0 \quad \\ \quad 0 \quad 1 \quad \\ \end{pmatrix}

, 该矩阵是单位阵 ;

② 可行基 : 选择该矩阵作为可行基 ;

③ 初始基可行解 : 其对应的解是基可行解

\begin{pmatrix} \quad 0 \quad \\ \quad 0 \quad \\ \quad 0 \quad \\ \quad 15 \quad \\ \quad 20 \quad \\ \end{pmatrix}

;

四、列出单纯形表


\begin{array}{lcl} max Z = x_1 + 2x_2 + x_3 + 0x_4 + 0x_5 \\ \\ s.t\begin{cases} 2 x_1 - 3x_2 + 2x_3 + x_4 + 0x_5 = 15 \\\\ \dfrac{1}{3}x_1 + x_2 + 5x_3 + 0x_4 + x_5 = 20 \\ \\x_j \geq 0 \quad (j = 1 , 2 , 3, 4, 5 ) \end{cases}\end{array}

c j c_j cj​

c j c_j cj​

1 1 1

2 2 2

1 1 1

0 0 0

0 0 0

C B C_B CB​ 基变量系数 (目标函数)

基变量

常数 b b b

x 1 x_1 x1​

x 2 x_2 x2​

x 3 x_3 x3​

x 4 x_4 x4​

x 5 x_5 x5​

θ i \theta_i θi​

0 0 0 ( 目标函数 x 4 x_4 x4​ 系数 c 4 c_4 c4​ )

x 4 x_4 x4​

15 15 15

2 2 2

− 1 -1 −1

2 2 2

1 1 1

0 0 0

− - −

0 0 0 ( 目标函数 x 5 x_5 x5​ 系数 c 5 c_5 c5​)

x 5 x_5 x5​

20 20 20

1 3 \dfrac{1}{3} 31​

1 1 1

5 5 5

0 0 0

1 1 1

20 20 20

σ j \sigma_j σj​ ( 检验数 )

1 1 1 ( σ 1 \sigma_1 σ1​ )

2 2 2 ( σ 2 \sigma_2 σ2​ )

1 1 1 ( σ 3 \sigma_3 σ3​ )

0 0 0

0 0 0

c_j
c_j
1
2
1
0
0
C_B

基变量系数 (目标函数)基变量常数

b
x_1
x_2
x_3
x_4
x_5
\theta_i
0

( 目标函数

x_4

系数

c_4

)

x_4
15
2
-1
2
1
0
-
0

( 目标函数

x_5

系数

c_5

)

x_5
20
\dfrac{1}{3}
1
5
0
1
20
\sigma_j

( 检验数 )

1

(

\sigma_1

)

2

(

\sigma_2

)

1

(

\sigma_3

)

0
0

五、计算检验数


计算非基变量的检验数 :

单个检验数计算公式 :

\sigma_j = c_j - \sum c_i a_{ij}

, 其中

c_j

是对应目标函数非基变量系数 ,

c_i

是目标函数中基变量系数 ,

a_{ij}

是系数矩阵中对应的

x_j

非基变量列向量 ;

\sigma_1

检验数计算 :

\sigma_1 = 1 - ( 0 \times 2 + 0 \times \dfrac{1}{3} ) = 1
在这里插入图片描述
在这里插入图片描述

\sigma_2

检验数计算 :

\sigma_2 = 2 - ( 0 \times (-1) + 0 \times 1 ) = 2
在这里插入图片描述
在这里插入图片描述

\sigma_13

检验数计算 :

\sigma_3 = 1 - ( 0 \times 2 + 0 \times 5 ) = 1
在这里插入图片描述
在这里插入图片描述

六、选择入基变量与出基变量


入基变量选择 : 选择检验数

\sigma_j

较大的非基变量作为入基变量 , 即

x_2

;

出基变量是根据

\theta

值来选择的 , 选择

\theta

值较小的值对应的基变量作为出基变量 ;

出基变量选择 : 常数列

b =\begin{pmatrix} \quad 15 \quad \\ \quad 20 \quad \end{pmatrix}

, 分别除以除以入基变量

x_2

大于

0

的系数列

\begin{pmatrix} \quad -1 \quad \\\\ \quad 1 \quad \end{pmatrix}

, 计算过程如下

\begin{pmatrix} \quad 系数小于0 不计算 \quad \\\\ \quad \cfrac{20}{1} \quad \end{pmatrix}

, 得出结果是

\begin{pmatrix} \quad 无效值 \quad \\\\ \quad 20 \quad \end{pmatrix}

, 如果系数小于等于

0

, 该值就是无效值 , 默认为无穷大 , 不进行比较 , 选择

20

对应的基变量作为出基变量 , 查看该最小值对应的变量是

x_5

, 选择该

x_5

变量作为出基变量 ;

在这里插入图片描述
在这里插入图片描述

七、第一次迭代 : 列出单纯形表


上述已经得到

x_2

作为入基变量 , 由非基变量转为基变量 ,

x_5

作为出基变量 , 由基变量转为非基变量 ; 使用

x_2

, 替换基变量中的

x_5

的位置 ;

基变量为

x_4 , x_2

, 注意顺序不要写反 ;

c j c_j cj​

c j c_j cj​

1 1 1

2 2 2

1 1 1

0 0 0

0 0 0

C B C_B CB​ 基变量系数 (目标函数)

基变量

常数 b b b

x 1 x_1 x1​

x 2 x_2 x2​

x 3 x_3 x3​

x 4 x_4 x4​

x 5 x_5 x5​

θ i \theta_i θi​

0 0 0 ( 目标函数 x 4 x_4 x4​ 系数 c 4 c_4 c4​ )

x 4 x_4 x4​

15 15 15

2 2 2

− 1 -1 −1

2 2 2

1 1 1

0 0 0

− - − ( θ 4 \theta_4 θ4​)

0 0 0 ( 目标函数 x 5 x_5 x5​ 系数 c 5 c_5 c5​)

x 5 x_5 x5​

20 20 20

1 3 \dfrac{1}{3} 31​

1 1 1

5 5 5

0 0 0

1 1 1

20 20 20 ( θ 5 \theta_5 θ5​ )

σ j \sigma_j σj​ ( 检验数 )

1 1 1 ( σ 1 \sigma_1 σ1​ )

2 2 2 ( σ 2 \sigma_2 σ2​ )

1 1 1 ( σ 3 \sigma_3 σ3​ )

0 0 0

0 0 0

第一次迭代

0 0 0 ( 目标函数 x 4 x_4 x4​ 系数 c 4 c_4 c4​ )

x 4 x_4 x4​

15 15 15

? ? ?

1 1 1

? ? ?

1 1 1

? ? ?

? ? ? ( θ 4 \theta_4 θ4​ )

2 2 2 ( 目标函数 x 2 x_2 x2​ 系数 c 2 c_2 c2​)

x 2 x_2 x2​

20 20 20

? ? ?

0 0 0

? ? ?

0 0 0

? ? ?

? ? ? ( θ 2 \theta_2 θ2​)

σ j \sigma_j σj​ ( 检验数 )

1 1 1 ( σ 1 \sigma_1 σ1​ )

0 0 0

1 1 1 ( σ 3 \sigma_3 σ3​ )

0 0 0

? ? ? ( σ 2 \sigma_2 σ2​ )

c_j
c_j
1
2
1
0
0
C_B

基变量系数 (目标函数)基变量常数

b
x_1
x_2
x_3
x_4
x_5
\theta_i
0

( 目标函数

x_4

系数

c_4

)

x_4
15
2
-1
2
1
0
-

(

\theta_4

)

0

( 目标函数

x_5

系数

c_5

)

x_5
20
\dfrac{1}{3}
1
5
0
1
20

(

\theta_5

)

\sigma_j

( 检验数 )

1

(

\sigma_1

)

2

(

\sigma_2

)

1

(

\sigma_3

)

0
0

第一次迭代––––––––

0

( 目标函数

x_4

系数

c_4

)

x_4
15
?
1
?
1
?
?

(

\theta_4

)

2

( 目标函数

x_2

系数

c_2

)

x_2
20
?
0
?
0
?
?

(

\theta_2

)

\sigma_j

( 检验数 )

1

(

\sigma_1

)

0
1

(

\sigma_3

)

0
?

(

\sigma_2

)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、线性规划示例
  • 二、转化成标准形式
  • 三、初始基可行解
  • 四、列出单纯形表
  • 五、计算检验数
  • 六、选择入基变量与出基变量
  • 七、第一次迭代 : 列出单纯形表
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档