矩阵表示单纯形法的优点

合集下载

细说单纯形法

细说单纯形法

细说单纯形法线性规划是运筹学里至关重要的内容,单纯形法又是解决线性规划问题最重要的方法,如果不能深刻地理解单纯形法,对线性规划的学习,甚至是运筹学的学习都将带来严重的负面影响。

但大部分运筹学教材在介绍单纯形法的时候都利用矩阵语言,显得艰涩难懂,这对初学运筹学的人来讲是一个不小的打击,会大大削弱他们学习运筹学的兴趣。

为此,我们需要寻找一种更有效的方法来介绍单纯形法。

(我们默认读者对线性规划模型以及关于线性规划解的基本概念有一定的了解,如果读者不了解,可以参考任意一本运筹学教材学习这些概念)单纯形法大体分三步:(1)找出第一个(初始的)基可行解。

(2)判断这个基可行解是否最优。

(3)如果不是最优,我们将它调整为一个“更好的”基可行解,直至最终求出最优解。

以上三个步骤,我们通过“单纯形表”来完成。

下面我们通过具体的例子来了解单纯形表的构造。

上表包括了线性规划问题中所有关键数据,而且我们可以很方便地找到初始基为:β=(X ,X ,X ),因为系数列向量P 、P 、P 都是不同的单位向量,前面我们介绍过P 、P 、P 线性无关。

β确定的初始基可行解是:X =X =0,X =15,X =5,X =11,相应此解的目标函数值:Z =0。

我们将上表称为初始基β的单纯形表。

通过初始基β的单纯形表,我们找出了初始基可行解,下面的问题是如何判断初始基可行解是否最优解。

我们观察一下Z 行中X 、X 的系数为-5、-4,而X 、X 又是非基变量,取值都为0,这样对于求最小的Z 是很不利的,试想如果将X、X 都变成基变量,即允许X 、X 取值为正,那么Z 势必会减少(增加一个X ,Z 减少5;增加一个X ,Z 减少4),由此我们判断初始基并非最优基,初始基可行解也并非最优解。

我们看到判断当前解是否最优解主要依据非基变量在目标函数中的系数。

但要注意的是基变量的取值是有约束方程决定的,而非基变量取值是我们约定的为0,这种约定是否合理只有在目标函数中不含基变量或者说目标函数中基变量系数为0时才能很明显地表现出来,因此,我们在判断当前基可行解是否最优时一定要保证基变量在目标函数中系数为0。

矩阵表示单纯形法的优点

矩阵表示单纯形法的优点


a ' ij =
{
a ij −
a kj a kt
(i≠ k ) (i= k )
a kj a kt
}

变换后的新增广矩阵为
[
a ' 1,1
⋯ 0 ⋯ ⋮
a ' 1, n
a' k,1 ⋯ 1 ⋯ a'k ,n ⋮ a ' m, 1 ⋯ 0 ⋯ a ' m , n
a1t a kt ⋮ 1 0 ⋯ + a kt ⋮ a 0 ⋯ − 1t a kt 1 ⋯ −
∣( B P j )i > 0 =
−1
)
( B−1 b )i ( B−1 P j)i
这里矩阵表示的优势不是很明显,因为计算时还是要把矩阵的每一列单独拿出来计算。 (5)迭代 把选中的非基变量换入需要把新的系数矩阵化为单位阵,通过行变换作用在增广矩阵上获得。而这 一步中矩阵表示的优势就很明显,更能看出变换的本质,免去了行变换中一些繁琐的工作。
⋯ 0 ∣ b'1 ∣ ⋯ 0 ∣ b'k ∣ ⋯ 1 ∣ b 'm
]
而用矩阵表示就要简单得多 ( 0) 变换前基向量组 B = I ,要把选定的基变量对应的向量组变换 B → I ,进行行变换即左乘 (−1 ) , B(−1 ) B = I 对应增广矩阵进行行变换 B
B−1 [ N
即为
B( 0) b ]= I
max z =CX
a 1,1 x1 +⋯+ a 1, n x n =b1 系数矩阵表示 a2,1 x 1 +⋯+ a 2, n x n=b2 ⋮ a m , 1 x 1+⋯+ a m , n x n=b m

单纯形法的矩阵描述

单纯形法的矩阵描述
1
当前检验数
其中
B Pj
1
当前 x j 对应的系数列
线性规划问题可以等价写成: 单纯形乘子
对 偶 问 题
max z CB B b (CN CB B N ) X N s.t. X B B NX N B b X B 0, X N 0
此形式为线性规划对应于基B的
1 1
1
1
上页 下页 返回
典则形式(典式)。
7
单纯形表
对 偶 问 题
-Z x1 基变量 x2 ... x X Bm 0 1 1B 0 基矩阵 ....... 1 0 1 c c ... c 1 C 2B m 0
xm 非基变量 X 1 .... x nN a1m 1 ...a1n a2 m 1 ...a2 n N

1 1 1
XN 0

1
当前基可行解
XB B b
单纯形法的矩阵描述
对 偶 问 题
目标函数
XB z (CB CN ) CB X B CN X N XN 1 1 CB B b (CN CB B N ) X N

XN 0

非基变量的 检验数
列初始单纯形表
11
上页 下页 返回
初始单纯形表
对 偶 问 题
价值系数
基变量 的价值 系数 基变量 等式 右边 RHS
CB
CN
0
I
0
上页 下页 返回
XB XN XS
B
CB
12
0
XS
检验数
b
N
CN
初始单纯形表
对 偶 问 题
迭代成基变量

线性规划单纯形法的矩阵表示

线性规划单纯形法的矩阵表示

y1 y1 y2 y2 y 3
min cT x s.t. Ax b, Bx a, x 0.
max bT y1 aT y2 s.t. AT y1 BT y2 c 对偶 y1无限制, y2 0.
用对偶单纯形法求下列线性规划问题
min s.t.
x4
x5
右端项
-f x4 x1
0 3 0 1
-3 -2 4/3 1/3
3 1 1/3 -2/3
0 1 0
1 0 2/3 -1/3
-2 0
2/3
2/3
基变量
x1 0 0 1
x2 -3 4/3 1/3
x3 3 1/3 -2/3 x3 15/4 1/4 -3/4
x4 0 1 0 x4 9/4 3/4 -1/4
两阶段
min a s.t. 2 x1 2 x2 x3 x4 2, 3 x1 x2 2 x3 x5 a 2, xi 0, i 1, ,5, a 0.
第一阶段 k=1
基变量
-f
x4 a
x1 -3 0 2 3
x2 -1 0 2 1
x3 2 0 -1 -2
1
无穷多个最优解:cN
且其中有一个检验数=0 无最优解(无有界解):
cN cB B N
1
有一个变量是负数,且该变量所在列向量是非正的.
4(1)用单纯形法求下列线性规划问题.
max 5 x1 6 x2 4 x3 s.t. 2 x1 2 x2 5, 5 x1 3x2 4 x3 15, x1 x2 10,
T
T
max b y s.t. A yc y0
s.t.

运筹学---单纯形法

运筹学---单纯形法

运筹学---单纯形法单纯形法是一种解线性规划问题的有效算法。

在这个问题中,我们寻找一组决策变量,以便最大化或最小化一个线性目标函数,同时满足一系列线性限制条件。

单纯形法通过暴力搜索可行解并逐步优化目标函数来求解该问题。

单纯形法的主要思想是从一个初始可行解开始,并通过迭代来逐步移动到更优的解。

在每一步迭代中,算法将当前解移动到一个相邻的顶点,直到找到一个优于当前解的顶点。

具体操作包括选择一个非基变量,并将其作为入基变量,同时选择一个基变量并将其作为出基变量。

新的基变量将替换原来的非基变量,并且目标函数的值将被更新。

关键是如何选择入基变量和出基变量。

为此,单纯形法使用一个称为单纯形表的矩阵来跟踪线性规划问题的状态。

单纯形表包含目标函数系数,限制条件系数,决策变量的当前值以及对角线上的单位矩阵。

通过适当地操作这个表,可以确定要移动到哪个相邻顶点,并相应地更新解和目标函数的值。

一般来说,单纯形法需要在指数时间内解决线性规划问题,因为需要遍历所有可能的可行解。

但是,在实际应用中,单纯形法往往比其他算法更快和更有效。

此外,在使用单纯形法时,需要注意陷入无限循环或者找不到一个可行解的可能性。

单纯形法的主要优点是:它是一种简单而直观的求解线性规划问题的方法;它易于实现,并且在许多情况下可以很快地求解问题。

它还可以用于解决大规模问题,包括具有成千上万个变量和限制条件的问题。

在实际应用中,单纯形法经常与其他算法结合使用,例如内点法或分支定界法。

这些方法可以提供更好的性能和结果。

但是,在许多情况下,单纯形法仍然是解决线性规划问题的首选算法。

在总体上,单纯形法是一种强大而灵活的工具,可以帮助研究人员和决策者在面对复杂的决策问题时做出明智的选择,并实现最大的效益。

运筹学02-单纯形法

运筹学02-单纯形法

反之,若经过迭代,不能把人工变量都变
为非基变量,则表明原LP问题无可行解。
19
第2章
单纯形法
2.3 人工变量法
2.3.1 大M法
在原问题的目标函数中添上全部人工变量,并令其系数 都为-M,
而M是一个充分大的正数。即
max z = c1x1 + c2x2 + c3x3 + … + cnxn – M( xn+1 + xn+2 +…+ xn+m )
思路:由一个基本可行解转化为另一个基本可行解。 等价改写为 目标方程 max z max z = 3x1+5x2 z -3x1 -5x2 = 0 z -3x1 -5x2 x1 +x3 x1 +x3 = 8 2x2 +x4 2x2 +x4 = 12 s.t. s.t. 3x1+4x2 +x5 3x1 + 4x2 +x5 = 36 x1 , x2 ,x3,x4,x5 x1 , x2 ,x3,x4,x5 ≥ 0
以主列中正值元素为分母,同行右端常数为分子,求比值;
6
第2章
单纯形法
2.1 单纯形法的基本思想
(Ⅰ)
用换基运算 将X0 转化为 另一个基本 可行解 X1。
z- 3x1 -5x2 = 0 0 换基运算—— x1 +x3 = 8 ① 方程组的初等变换 目的是把主列变为 22x2 +x4 = 12 ② 单位向量:主元变 3x1 + 4x2 +x5 = 36 ③ 为1,其余变为0。 X0 = ( 0, 0, 8, 12, 36 )T z0 = 0
⑴ 当前基:m阶排列阵

3.1单纯形法的矩阵描述

3.1单纯形法的矩阵描述
故所有检验数可表示 C C B B1 A与 C B B1
§3.1 单纯形法的矩阵描述
• (2)单纯形表与矩阵表示的关系
Page 8
由( 3 - 5)、( 3 - 6)式知 X B +B 1 NX N B 1b - z (C N C B B N ) X N -C B B b
Page 5
由(3 - 3)式知 BX B b NX N X B B 1b B 1 NX N 上式代入 (3 - 2)式得 z C B (B 1b B 1 NX N ) C N X N =C B B 1 b ( C N C B B 1 N ) X N (3 6 ) (3 5)
因为,不满足最优性条件,所以不是最优解
小结
学习要点:
Page 14
1. 掌握矩阵的运算; 2.理解基矩阵的作用; 3.了解矩阵运算与单纯表的关系。
The end,thank yoቤተ መጻሕፍቲ ባይዱ!
运筹学
( Operations Research )
Chapter3 对偶理论和灵敏度分析
本章主要内容:
§3.1 单纯形法的矩阵描述 §3.2 单纯形法的矩阵计算
§3.3 对偶问题的提出
§3.4 线性规划的对偶理论
§3.5 影子价格
§3.6 对偶单纯形法
§3.7 灵敏度分析
( Duality Theory )
量是基变量, 从而确定基矩 阵; b.求基矩阵的 逆矩阵; c.求检验数。
N 1 3
1 / 2 0 2 1 1 4 1 3 0 4 0 1 1 1 2 0
1 3 0 4 2 2 3 1 2
2 由最终表反推出初始表 例2:设用单纯形法求解某个线性规划问题的最终表如下(目标max, 约束 Page 12 为≤形式,x3,x4,x5为松弛变量),试写出原始线性规划模型。

运筹学——3.单纯形矩阵描述与改进单纯形法

运筹学——3.单纯形矩阵描述与改进单纯形法

32
计算B的逆矩阵

(6)计算RHS
1 / 2 8 2 1 1 B1 b 1 0 16 16 1 / 4 12 3
23
第2节 改进单纯形法
第1步计算结束后的结果
基 B1 P3 , P4 , P2 ; 基变量 X B1 x3 , x4 , x2 ;
22
(5)计算非基变量的系数矩阵
1 / 2 1 1 1 1 N1 4 B1 N1 1 0 4 1 1 / 4 1 1 1 / 2 4 0 1/ 4
B2 1b i 1 min 1 B2 P5 0 B P 2 5 i 2 8 3 min , , 4 对应x4 1/ 2 2 1/ 4
31
基变换:
新的基
B3 P , P5 , P2 ; 1 换入变量x5 的系数向量是 1 0 1 / 2 0 1 / 2 1 B2 P5 4 1 2 0 2 主元素 0 0 1 / 4 1 1 / 4
确定换出变量
B11b i 1 min 1 B1 P 0 1 B P 1 1 i 2 16 3 min , , 2 对应x3 1 4 0


26
由此得到新的基
B2 P , P4 , P2 1 1 1 B1 P 4 1 0 1 1 0 0 2 4 E2 4 1 0 0 0 0 1 1 0 0 1 0 1/ 2 1 1 B2 E2 B1 4 1 0 0 1 0 0 0 1 0 0 1/ 4 1 0 1/ 2 4 1 2 0 0 1/ 4
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

[ ]
X B1 X S1
,同
时目标函数的系数 C 分为 C B ,分 C B 别对应于基变量和非基变量,并记作 C =( C B ,C N ) 。
a 1,1 ⋯ a 1, n 1 a ⋯ a 2, n 1 系数矩阵表示 A=( N , B)= 2,1 ⋮ ⋱ a m , 1 ⋯ a m ,n 1 C =( c 1, ⋯ , c n , 0, ⋯ , 0 )
( 0)
∑ β i ,m +t P i
i=1
m
。用系
=( x 1, x 2, ⋯ , x m ) 满足约束方程
∑ x (i 0) Pi =b
i=1
m
,于是要找到一个基向
量 P k 使得用其余基变量 ( P 1, ⋯ , P k −1 , P k +1 , ⋯ , P m) 和换入非基变量 P_t 线性表出后,约束方程 还有非负解。显然,当由于新的基向量组可以线性表出 P k ,新基向量组线性无关。 方法:引入参量 θ > 0 用系数方程表示 新的基可行解由 X
x
β l , m+ t
}
x(i0)−θ β i ,m +t i ≠l 即 x = θ i =l
(1) i
{
}
所以找到的 θ
应是
θ = min
i
(
0) x( i
β i ,m +t
∣β i , m+t > 0 =
)
x(l0)
β l , m+ t
用矩阵表示
θ = min
i
(
B−1 bi ( B−1 P j )i
则该问题目标函数无界。 (4)基变化 从直观上选择 σ j > 0 中最大的对应的非基变量 σ t= max ( σ > 0 ) 进行替换,换入基变量。
j
换出非基变量的确定,要保证换出后的基变量线性无关,并有非负基可行解。 将选中的的非基向量 P m+ t 用基向量组 B=( P 1, P 2, ⋯ , P m ) 表示: P m+ t= 数方程表示初始基可行解为 X
∣( B P j )i > 0 =
−1
)
( B−1 b )i ( B−1 P j)i
这里矩阵表示的优势不是很明显,因为计算时还是要把矩阵的每一列单独拿出来计算。 (5)迭代 把选中的非基变量换入需要把新的系数矩阵化为单位阵,通过行变换作用在增广矩阵上获得。而这 一步中矩阵表示的优势就很明显,更能看出变换的本质,免去了行变换中一些繁琐的工作。
[ ]
而新的约束矩阵,基可行解,目标函数值,检验数都可以由此算出来了
矩阵表示单纯形法的优点
线性代数小论文 2011010250 吴昊亮 在阅读线性规划相关书籍的过程中,我发现单纯形法是普遍介绍的求解线性规划最优解的方法,而 在一些深入的书籍中线性规划的矩阵描述方法被介绍。最初,我感觉矩阵的描述方法太抽象不太容易被 接受,但是运用矩阵描述的的单纯性法语言简洁,而且可以简化一些求解过程中的步骤,避免重复计算。 在多数书籍中,单纯形法的两种描述方法总是被先后分开说明,以便于读者接受。下面通过自然表 述的单纯形法和矩阵描述的单纯形法的对比,以加深对单纯形法的理解,展现矩阵描述法简单和高效的 优点。 首先是描述一个线性规划问题,统一符号: 加入 m 个人工变量 目标方程 系数方程表示 max z =c 1 x1 +⋯ c n x n . 矩阵表示 约束方程
通过检验数可以检验解的存在性和最优性 1.最优解判定 :所有 σ j≤ 0 ,则解为最优解;
−1 −1
2.无穷多最优解判定 :所有 σ j≤ 0 且存在 σ ( m +t )=0 ,则存在无穷多最优解 3.无界解判定 :存在 σ ( m +t )> 0 且非基向量组 P( m +t) 的所有分量都非负 a i , m +t≤ 0
max z =CX
a 1,1 x1 +⋯+ a 1, n x n =b1 系数矩阵表示 a2,1 x 1 +⋯+ a 2, n x n=b2 ⋮ a m , 1 x 1+⋯+ a m , n x n=b m
矩阵表示
AX ≤b X s=( x s1 , x s2 , ⋯ , x sm )T x s1 x s2 ⋱ x sm + a m , 1 x 1 +⋯+ a m ,n x n= bm + a 1,1 x 1+⋯+ a 1, n x n=b 1 + a 2,1 x 1+⋯+ a 2, n x n= b2
[
]
经过迭代运算,在基矩阵中可能还存在松弛变量或全无松弛变量。为了阐述方便起见,设
X S=
[ ]
X S1 X S2
; X B=
[ ]
X B1 X S1
; X N=
[ ]
X N1 X S2
; N = [ N 1 S 2 ] ; B= [ N 2 S 1 ]
B,N,S 分别表示对应的基变量、非基变量、松弛变量的系数矩阵。这时线性规划问题可以表示为
( 0)
∑x
i=1
m
( 0) i
Pi +θ P m+ t−∑ β i , m+t P i =b 即
i =1 ( 1)
(
m
)
∑ ( x(i0) −θ β i , m+t ) P i+θ P m +t =b
i=1

m
,
转化为 X
x =
(1) i
{
x(i0) − β
x(l0)
l , m+ t (0 ) l
⋅β i , m+t i ≠ l i= l

a ' ij =
{
a ij −
a kj a kt
(i≠ k ) (i= k )
a kj a kt
}

变换后的新增广矩阵为
[
a ' 1,1
⋯ 0 ⋯ ⋮
a ' 1, n
a' k,1 ⋯ 1 ⋯ a'k ,n ⋮ a ' m, 1 ⋯ 0 ⋯ a ' m , n
a1t a kt ⋮ 1 0 ⋯ + a kt ⋮ a 0 ⋯ − 1t a kt 1 ⋯ −
(1) 加入松弛 m 个松弛变量
系数矩阵表示 max z =c 1 x 1+⋯+ c n x n+ 0x s1 +⋯+ 0x sm
矩阵表示
max z =CX + OX S AX + IX S =b
这里 I 和 O 是 m × m 的单位矩阵和零矩阵。最开始以 X S 为基变量,最后要把 m 个松弛变量从 基变量中逐个替换出来,先标记基变量 X B = X S 。其对应的单位矩阵就是基矩阵 B,这时将系数矩 阵 ( A , I ) 分为 ( N , B ) 两块,N 是非基变量的系数矩阵。相应的决策变量被分为 X =
令非基变量 X N =0 ,可以得到一个基可行解 X
( 1) −1 = B b 0
[ ]
,这时目标函数为 z =C B B
−1
b
(3)最优性检验与解的判别 把非基变量前的系数设为检验数, σ j= c j − z j ( j =m + 1, ⋯ , n )
⃗ =(σ 1 , σ 2 , ⋯ , σ n ) , 引入检验数向量 σ ⃗ =( C N1−C B B 即 σ N 1 , C S2 −C B B I ) −1 观察到 C S2= 0 , C B−C B B B =0 ,检验数可以表示为 ⃗ =( C −C B B−1 A , −C B B−1 ) σ
⋯ 0 ∣ b'1 ∣ ⋯ 0 ∣ b'k ∣ ⋯ 1 ∣ b 'm
]
而用矩阵表示就要简单得多 ( 0) 变换前基向量组 B = I ,要把选定的基变量对应的向量组变换 B → I ,进行行变换即左乘 (−1 ) , B(−1 ) B = I 对应增广矩阵进行行变换 B
B−1 [ N
即为
B( 0) b ]= I
先用系数矩阵表示,增广矩阵为
[
a 1,1 ⋯ a 1, t ⋯ a1, n 1 ⋮ ⋱ a k , 1 ⋯ a k ,t ⋯ a k , n 1 ⋮ ⋱ a m , 1 ⋯ a n ,t ⋯ a m , n 1
∣ b1 ∣ ∣ bk ∣ ∣ bm
]
通过行变换可得 a ' ij , b ' i 是变化后的新元素
B−1 B−1 b ]= I −1 由观察易知初始单位矩阵的位置在迭代运算过后,就是 B 的位置。 −1 P 所以在运算过程中可以有选定的基向量 ,而 B−1 就是很多后续运算的关键 t 直接写出 B
[ B−1 N
a 1t ⋯ 0 a kt ⋮ 1 −1 B = 0 ⋯ + ⋯ 0 a kt ⋮ a 0 ⋯ − 1t ⋯ 1 a kt 1 ⋯ −
目标函数 约束条件 非负条件
max z =C B X B + C N X N =C B X B + C N1 X N1+ C S1 X S1 BX B + NX N = BX B + N 1 X N1 + S 2 X S2=b X B , X N ≥0
(2)确定基可行解,基可行解用非基可行解表示 −1 −1 −1 X B= B b − B N 1 X N1− B S 2 X S2 相应的把 X B 代入,目标函数变为 z =C B B−1 b +( C N1−C B B−1 N 1 ) X N1 +( C S2−C B B−1 I ) X S2
相关文档
最新文档