单纯形法基本原理及实例演示
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
⑥以aik为主元素进行迭代,把xk所对应的列向量变为单位列向量,即 aik变为1,同列中其它元素为0,转第③ 步。
线性规划的例子
max z 4x1 3x2 2x1 2x2 1600 5x1 2.5x2 2500 x1 400 x1, x2 0
线性规划--标准化
引入变量:s1,s2,s3
检验系数区
Z=CBB-1b
初始单纯形表
迭代 基变 次数 量
CB
x1
x2
s1
s2
s3
50 100 0 0 0
比值
b bi ai 2
1 Zj=CBNj j cj zj
Z=CBB-1b
初始单纯形表
基
迭代 次数
变
CB
x1
X2
s1
s2
量
50 100 0 0
1 110
2 101
0
0 100
Zj=CBNj
Z=CBB-1b
初始单纯形表
基
迭代 次数
变
CB
x1
x2
s1
s2
量
50 100 0 0
S1 0 1 1 1 0
S2 0 2 1 0 1
1 S3 0 0 1 0 0
Zj=CBNj
j cj zj
比值
s3 b bi
0
ai 2
0 300
0 400
1 250
Z=CBB-1b
初始单纯形表
迭代 基变 次数 量
定理二:若某个基本可行解所对应的检验向量CN- CB B-1N存 在一个检验数=0,则该问题有无数多个最优解。
定理三:若某个基本可行解所对应的检验向量Cj- CB B-1Nj大
于0,且aij,都小于0,则无解。 为了矩阵形求逆计算方便,
一般将B转化为单位矩阵。
2、单纯形法的计算步骤
①将线性规划问题化成标准型。
Z = CX AX=b
设 A=(B , N)(B为一个基,即线性无关向量组R(A)=R(B))
XT= (XB , XN) T (XB 为基变量,XN为非基变量) C= (CB , CN) (CB 为基变量系数,CN为非基变量系数) 则有: Z= (CB , CN) (XB , XN) T= CB XB+CN XN AX =( B , N) (XB , XN) T = B XB+ N XN = b 因为B为基, 故有 XB +B-1N XN = B-1b,
s2 S3 00
比值
b bi ai 2
S1 0 ①1
ቤተ መጻሕፍቲ ባይዱ
0
1
0
-1
50
50 1
S2 0
2
0
0
1
-1
150
150 2
2 x2 100 0 1 0 0 1 250
Zj=CBNj 0 100 0 j c j z j 50 0 0
0 100 0 -100
Z=
25000
初始单纯形表
迭代 基变 次数 量
迭代 基变 次数 量
CB
x1
X2
s1
s2
S3
比值
b bi aij
1 Zj=CBNj j cj zj
Z=CBB-1b
初始单纯形表
迭代 基变 次数 量
CB
x1 X2 s1 s2 S3
目标函数系数区
比值
b bi aij
基 变 量 区
1
约束条件
右 端 系
系数区 数
Zj=CBNj j cj zj
50 100 0 111 210
s2 S3
比值
b bi
00
ai 2
0
0
300
300 1
1
0
400
400 1
2 x2 100 0
①1
0
0
1 250 250
1
Zj=CBNj j cj zj
Z=CBB-1b
初始单纯形表
迭代 基变 次数 量
CB
S1 0
x1 X2 s1 50 100 0 101
s2 S3
比值
b bi
00
ai 2
0 0 300
S2 0 2 1 0 1 0 400
1 S3 0 0 1 0 0 1 250
Zj=CBNj
00
j cj zj
00
00 00
00
0 Z=
初始单纯形表
迭代 基变 次数 量
CB
S1 0
x1 X2 s1
50 100 0 111
s2 S3
比值
b bi
j cj zj
比值
S3 b bi
0
ai 2
0 300
0 400
1 250
Z=CBB-1b
初始单纯形表
基
迭代 次数
变
CB
x1
x2
s1
s2
量
50 100 0 0
1 110
2 101
1
0 100
Zj=CBNj
j cj zj
比值
s3 b bi
0
ai 2
0 300
0 400
1 250
单纯形法求解—动态演示
在求解LP问题时,有人给出了图解法,但对 多维变量时,却无能为力,于是
美国数学家G·B·Dantgig(丹捷格)发明了 一种“单纯形法”的代数算法,尤其是 方便于计算机运算。这是运筹学史上最 辉煌的阶段。
一、关于标准型解的若干基本概念
线性规划问题标准型的矩阵形式:
Max Z = CX
②找出或构造一个m阶单位矩阵作为初始可行基,建立初始单纯形表。
③计算各非基变量xj的检验数j=Cj-CBPj ′,若所有j≤0,则问题已得到 最优解,停止计算,否则转入下步。
④在大于0的检验数中,若某个k所对应的系数列向量Pk≤0,则此问题 是无界解,停止计算,否则转入下步。
⑤根据max{j|j>0}=k原则,确定xk为换入变量(进基变量),再按 规则计算:=min{bi/aik| aik>0}=bl/ aik 确定xBl为换出变量。建立新 的单纯形表,此时基变量中xk取代了xBl的位置。
如果CN- CB B-1N小于0,无论XN取任何大于0值,只会让Z变 小,因此我们可以通过CN- CB B-1N来判断Z取得是不是最大 值。
如果存在一个CN- CB B-1N大于0,则说明Z的值会随着XN增 大而增大,说明Z有调整的余地。
定理一:若某个基本可行解所对应的检验向量CN- CB B-1N <=0,则这个基本可行解就是最优解。
CB
S1 0
x1 X2 s1 50 100 0 111
s2 S3
比值
b bi
00
ai 2
0 0 300
S2 0 2 1 0 1 0 400
1 S3 0 0 1 0 0 1 250
Zj=CBNj
j cj zj
Z=0
初始单纯形表
迭代 基变 次数 量
CB
S1 0
x1 X2 s1 50 100 0 111
00
ai 2
0 0 300
S2 0 2 1 0 1 0 400
1 S3 0 0 1 0 0 1 250
Zj=CBNj 0 0 0 0 0
j c j z j 50 100 0 0 0
0 Z=
初始单纯形表 可行解XB=B-1b-B-1NXN>=0
迭代 基变 次数 量
CB
S1 0 S2 0
x1 X2 s1
s2 S3
00 0 -1
比值
b bi ai 2
50
S2 0 2 0 0 1 -1 150
2 x2 100 0 1 0 0 1 250
Zj=CBNj 0 100 0 j c j z j 50 0 0
0 100 0 -100
Z=25000
初始单纯形表
迭代 基变 次数 量
CB
x1 X2 s1 50 100 0
比值
b bi ai 2
50
S2 0 2 0 0 1 -1 150
2 x2 100 0 1 0 0 1 250
Zj=CBNj j cj zj
0 100 0
0 100
Z=25000
初始单纯形表
迭代 基变 次数 量
CB
x1
X2
s1
50 100 0
S1 0 1 0 1
s2 S3
00 0 -1
比值
CB
S1 0 S2 0
x1 X2 s1
50 100 0 111 210
s2 S3
比值
b bi
00
ai 2
0
0
300
300 1
1
0
400
400 1
2 x2 100 0
①1
0
0
1 250 250
1
Zj=CBNj j cj zj
Z=CBB-1b
初始单纯形表
迭代 基变 次数 量
CB
S1 0 S2 0
CB
xS11 500
xx1 X2 s1
5500 100 0 ①1 0 1
s2 S3 00 0 -1
比值
b bi ai 2
50
S2 0 2 0 0 1 -1 150
3 x2 100 0 1 0 0 1 250
Zj=CBNj
j cj zj
初始单纯形表
迭代 基变 次数 量
CB
x1 50
x1 x2 s1 50 100 0 ①1 0 1
b bi ai 2
50
S2 0 2 0 0 1 -1 150
2 x2 100 0 1 0 0 1 250
Zj=CBNj 0 100 0 j c j z j 50 0 0
0 100 0 -100
Z=25000
初始单纯形表
迭代 基变 次数 量
CB
x1
X2
s1
50 100 0
S1 0 1 0 1
max z 50x1 100x2 0s1 0s2 0s3
x1 x2 s1
300
2x1 x2 s2 400
x2 s3 250
x1, x2 , s1, s2 , s3 0
•提取系数,填入表格:
max z 50x1100x2 0s1 0s2 0s3 = CB B-1b + (CN- CB B-1N ) XN
s2 S3 00 0 -1
比值
b bi ai 2
50
S2 0 2 0 0 1 -1 150
3 x2 100 0 1 0 0 1 250
Zj=CBNj
j cj zj
初始单纯形表
迭代 基变 次数 量
CB
x1 50
x1 x2 s1 50 100 0 ①1 0 1
C向量
x1
x2
max z 50
100
0
0
0
s1
s2
CB
CN
s3
每个非基
XB
变量的检
验值
XN j c j z j
Zj=CBNj
s.t.
x1
1 2 0
1 1 1
1 0 0
0 1 0
0 0 1
x1 x2 x3 x4
3 0 00 3
0 2 0 0= 2
0 0 11 1
max z 3x1 2x2 x3 x4
3x1
3
s.t.
2x2
2
x3 x4 1
x1 x2 x3
0
行列式≠0 基矩阵
300 020 001
X1,x2,x3为基变量,x4为非基变量
1、单纯形法原理:
50 100 0 111 210
s2 S3
比值
b bi
00
ai 2
0
0
300
300 1
1
0
400
400 1
1 S3 0
0 ①1
0
0
1 250 250
1
Zj=CBNj 0 0 0 0 0 Z=0
j c j z j 50 100 0 0 0
初始单纯形表 可行解XB=B-1b-B-1NXN>=0
迭代 基变 次数 量
CB
S1 0 S2 0
x1 X2 s1
50 100 0 111 210
s2 S3
比值
b bi
00
ai 2
0
0
300
300 1
1
0
400
400 1
2 x2
0 ①1 0 0 1 250 250
1
Zj=CBNj j cj zj
Z=CBB-1b
初始单纯形表
迭代 基变 次数 量
解得可行解XB=B-1b-B-1NXN,代入目标函数Z, Z = CB B-1b + (CN- CB B-1N ) XN
令非基变量XN = 0 ,则有 XT = (XB , XN) T =( B-1b , 0) T Z = CB B-1b
Z = CB B-1b + (CN- CB B-1N ) XN
s2 S3 00 0 -1
比值
b bi ai 2
50
S2 0 2 0 0 1 -1 150
2 x2 100 0 1 0 0 1 250
Zj=CBNj j cj zj
Z=25000
初始单纯形表
迭代 基变 次数 量
CB
S1 0
x1 X2 s1 50 100 0 101
s2 S3 00 0 -1
(a)
C (c1, c2 ,, cn );
s.t. AX=b X0
( b) (c)
X (x1, x2 ,, xn )T
a11 a12 …. a1n
b1
A= a21 a22 …. a2n
……………………………
am1 am2 …. amn
b = b2
…………
bm
基矩阵
示例:
目标函数
约 束 条 件
x1 X2 s1
50 100 0 111 210
s2 S3
比值
b bi
00
ai 2
0
0
300
300 1
1
0
400
400 1
2 x2 100 0
①1
0
0
1 250 250
1
Zj=CBNj j cj zj
Z=CBB-1b
初始单纯形表
迭代 基变 次数 量
CB
S1 0 S2 0
x1 X2 s1
x2 s1 s2
300 400 250
N
基B
s3
1x1+1 x2+1s1+0s2+0s3 =300 2x1+1 x2+0s1+1s2+0s3 =400 0x1+1x2+0s1+0s2+1s3 =250 x1 ≥0, x2≥0, si≥0
初始单纯形表
线性规划的例子
max z 4x1 3x2 2x1 2x2 1600 5x1 2.5x2 2500 x1 400 x1, x2 0
线性规划--标准化
引入变量:s1,s2,s3
检验系数区
Z=CBB-1b
初始单纯形表
迭代 基变 次数 量
CB
x1
x2
s1
s2
s3
50 100 0 0 0
比值
b bi ai 2
1 Zj=CBNj j cj zj
Z=CBB-1b
初始单纯形表
基
迭代 次数
变
CB
x1
X2
s1
s2
量
50 100 0 0
1 110
2 101
0
0 100
Zj=CBNj
Z=CBB-1b
初始单纯形表
基
迭代 次数
变
CB
x1
x2
s1
s2
量
50 100 0 0
S1 0 1 1 1 0
S2 0 2 1 0 1
1 S3 0 0 1 0 0
Zj=CBNj
j cj zj
比值
s3 b bi
0
ai 2
0 300
0 400
1 250
Z=CBB-1b
初始单纯形表
迭代 基变 次数 量
定理二:若某个基本可行解所对应的检验向量CN- CB B-1N存 在一个检验数=0,则该问题有无数多个最优解。
定理三:若某个基本可行解所对应的检验向量Cj- CB B-1Nj大
于0,且aij,都小于0,则无解。 为了矩阵形求逆计算方便,
一般将B转化为单位矩阵。
2、单纯形法的计算步骤
①将线性规划问题化成标准型。
Z = CX AX=b
设 A=(B , N)(B为一个基,即线性无关向量组R(A)=R(B))
XT= (XB , XN) T (XB 为基变量,XN为非基变量) C= (CB , CN) (CB 为基变量系数,CN为非基变量系数) 则有: Z= (CB , CN) (XB , XN) T= CB XB+CN XN AX =( B , N) (XB , XN) T = B XB+ N XN = b 因为B为基, 故有 XB +B-1N XN = B-1b,
s2 S3 00
比值
b bi ai 2
S1 0 ①1
ቤተ መጻሕፍቲ ባይዱ
0
1
0
-1
50
50 1
S2 0
2
0
0
1
-1
150
150 2
2 x2 100 0 1 0 0 1 250
Zj=CBNj 0 100 0 j c j z j 50 0 0
0 100 0 -100
Z=
25000
初始单纯形表
迭代 基变 次数 量
迭代 基变 次数 量
CB
x1
X2
s1
s2
S3
比值
b bi aij
1 Zj=CBNj j cj zj
Z=CBB-1b
初始单纯形表
迭代 基变 次数 量
CB
x1 X2 s1 s2 S3
目标函数系数区
比值
b bi aij
基 变 量 区
1
约束条件
右 端 系
系数区 数
Zj=CBNj j cj zj
50 100 0 111 210
s2 S3
比值
b bi
00
ai 2
0
0
300
300 1
1
0
400
400 1
2 x2 100 0
①1
0
0
1 250 250
1
Zj=CBNj j cj zj
Z=CBB-1b
初始单纯形表
迭代 基变 次数 量
CB
S1 0
x1 X2 s1 50 100 0 101
s2 S3
比值
b bi
00
ai 2
0 0 300
S2 0 2 1 0 1 0 400
1 S3 0 0 1 0 0 1 250
Zj=CBNj
00
j cj zj
00
00 00
00
0 Z=
初始单纯形表
迭代 基变 次数 量
CB
S1 0
x1 X2 s1
50 100 0 111
s2 S3
比值
b bi
j cj zj
比值
S3 b bi
0
ai 2
0 300
0 400
1 250
Z=CBB-1b
初始单纯形表
基
迭代 次数
变
CB
x1
x2
s1
s2
量
50 100 0 0
1 110
2 101
1
0 100
Zj=CBNj
j cj zj
比值
s3 b bi
0
ai 2
0 300
0 400
1 250
单纯形法求解—动态演示
在求解LP问题时,有人给出了图解法,但对 多维变量时,却无能为力,于是
美国数学家G·B·Dantgig(丹捷格)发明了 一种“单纯形法”的代数算法,尤其是 方便于计算机运算。这是运筹学史上最 辉煌的阶段。
一、关于标准型解的若干基本概念
线性规划问题标准型的矩阵形式:
Max Z = CX
②找出或构造一个m阶单位矩阵作为初始可行基,建立初始单纯形表。
③计算各非基变量xj的检验数j=Cj-CBPj ′,若所有j≤0,则问题已得到 最优解,停止计算,否则转入下步。
④在大于0的检验数中,若某个k所对应的系数列向量Pk≤0,则此问题 是无界解,停止计算,否则转入下步。
⑤根据max{j|j>0}=k原则,确定xk为换入变量(进基变量),再按 规则计算:=min{bi/aik| aik>0}=bl/ aik 确定xBl为换出变量。建立新 的单纯形表,此时基变量中xk取代了xBl的位置。
如果CN- CB B-1N小于0,无论XN取任何大于0值,只会让Z变 小,因此我们可以通过CN- CB B-1N来判断Z取得是不是最大 值。
如果存在一个CN- CB B-1N大于0,则说明Z的值会随着XN增 大而增大,说明Z有调整的余地。
定理一:若某个基本可行解所对应的检验向量CN- CB B-1N <=0,则这个基本可行解就是最优解。
CB
S1 0
x1 X2 s1 50 100 0 111
s2 S3
比值
b bi
00
ai 2
0 0 300
S2 0 2 1 0 1 0 400
1 S3 0 0 1 0 0 1 250
Zj=CBNj
j cj zj
Z=0
初始单纯形表
迭代 基变 次数 量
CB
S1 0
x1 X2 s1 50 100 0 111
00
ai 2
0 0 300
S2 0 2 1 0 1 0 400
1 S3 0 0 1 0 0 1 250
Zj=CBNj 0 0 0 0 0
j c j z j 50 100 0 0 0
0 Z=
初始单纯形表 可行解XB=B-1b-B-1NXN>=0
迭代 基变 次数 量
CB
S1 0 S2 0
x1 X2 s1
s2 S3
00 0 -1
比值
b bi ai 2
50
S2 0 2 0 0 1 -1 150
2 x2 100 0 1 0 0 1 250
Zj=CBNj 0 100 0 j c j z j 50 0 0
0 100 0 -100
Z=25000
初始单纯形表
迭代 基变 次数 量
CB
x1 X2 s1 50 100 0
比值
b bi ai 2
50
S2 0 2 0 0 1 -1 150
2 x2 100 0 1 0 0 1 250
Zj=CBNj j cj zj
0 100 0
0 100
Z=25000
初始单纯形表
迭代 基变 次数 量
CB
x1
X2
s1
50 100 0
S1 0 1 0 1
s2 S3
00 0 -1
比值
CB
S1 0 S2 0
x1 X2 s1
50 100 0 111 210
s2 S3
比值
b bi
00
ai 2
0
0
300
300 1
1
0
400
400 1
2 x2 100 0
①1
0
0
1 250 250
1
Zj=CBNj j cj zj
Z=CBB-1b
初始单纯形表
迭代 基变 次数 量
CB
S1 0 S2 0
CB
xS11 500
xx1 X2 s1
5500 100 0 ①1 0 1
s2 S3 00 0 -1
比值
b bi ai 2
50
S2 0 2 0 0 1 -1 150
3 x2 100 0 1 0 0 1 250
Zj=CBNj
j cj zj
初始单纯形表
迭代 基变 次数 量
CB
x1 50
x1 x2 s1 50 100 0 ①1 0 1
b bi ai 2
50
S2 0 2 0 0 1 -1 150
2 x2 100 0 1 0 0 1 250
Zj=CBNj 0 100 0 j c j z j 50 0 0
0 100 0 -100
Z=25000
初始单纯形表
迭代 基变 次数 量
CB
x1
X2
s1
50 100 0
S1 0 1 0 1
max z 50x1 100x2 0s1 0s2 0s3
x1 x2 s1
300
2x1 x2 s2 400
x2 s3 250
x1, x2 , s1, s2 , s3 0
•提取系数,填入表格:
max z 50x1100x2 0s1 0s2 0s3 = CB B-1b + (CN- CB B-1N ) XN
s2 S3 00 0 -1
比值
b bi ai 2
50
S2 0 2 0 0 1 -1 150
3 x2 100 0 1 0 0 1 250
Zj=CBNj
j cj zj
初始单纯形表
迭代 基变 次数 量
CB
x1 50
x1 x2 s1 50 100 0 ①1 0 1
C向量
x1
x2
max z 50
100
0
0
0
s1
s2
CB
CN
s3
每个非基
XB
变量的检
验值
XN j c j z j
Zj=CBNj
s.t.
x1
1 2 0
1 1 1
1 0 0
0 1 0
0 0 1
x1 x2 x3 x4
3 0 00 3
0 2 0 0= 2
0 0 11 1
max z 3x1 2x2 x3 x4
3x1
3
s.t.
2x2
2
x3 x4 1
x1 x2 x3
0
行列式≠0 基矩阵
300 020 001
X1,x2,x3为基变量,x4为非基变量
1、单纯形法原理:
50 100 0 111 210
s2 S3
比值
b bi
00
ai 2
0
0
300
300 1
1
0
400
400 1
1 S3 0
0 ①1
0
0
1 250 250
1
Zj=CBNj 0 0 0 0 0 Z=0
j c j z j 50 100 0 0 0
初始单纯形表 可行解XB=B-1b-B-1NXN>=0
迭代 基变 次数 量
CB
S1 0 S2 0
x1 X2 s1
50 100 0 111 210
s2 S3
比值
b bi
00
ai 2
0
0
300
300 1
1
0
400
400 1
2 x2
0 ①1 0 0 1 250 250
1
Zj=CBNj j cj zj
Z=CBB-1b
初始单纯形表
迭代 基变 次数 量
解得可行解XB=B-1b-B-1NXN,代入目标函数Z, Z = CB B-1b + (CN- CB B-1N ) XN
令非基变量XN = 0 ,则有 XT = (XB , XN) T =( B-1b , 0) T Z = CB B-1b
Z = CB B-1b + (CN- CB B-1N ) XN
s2 S3 00 0 -1
比值
b bi ai 2
50
S2 0 2 0 0 1 -1 150
2 x2 100 0 1 0 0 1 250
Zj=CBNj j cj zj
Z=25000
初始单纯形表
迭代 基变 次数 量
CB
S1 0
x1 X2 s1 50 100 0 101
s2 S3 00 0 -1
(a)
C (c1, c2 ,, cn );
s.t. AX=b X0
( b) (c)
X (x1, x2 ,, xn )T
a11 a12 …. a1n
b1
A= a21 a22 …. a2n
……………………………
am1 am2 …. amn
b = b2
…………
bm
基矩阵
示例:
目标函数
约 束 条 件
x1 X2 s1
50 100 0 111 210
s2 S3
比值
b bi
00
ai 2
0
0
300
300 1
1
0
400
400 1
2 x2 100 0
①1
0
0
1 250 250
1
Zj=CBNj j cj zj
Z=CBB-1b
初始单纯形表
迭代 基变 次数 量
CB
S1 0 S2 0
x1 X2 s1
x2 s1 s2
300 400 250
N
基B
s3
1x1+1 x2+1s1+0s2+0s3 =300 2x1+1 x2+0s1+1s2+0s3 =400 0x1+1x2+0s1+0s2+1s3 =250 x1 ≥0, x2≥0, si≥0
初始单纯形表