图与网络分析 - 最大流问题
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3、其他部分(优化目标和约束)
Global optimal solution found at iteration: 6 Objective value: 14.00000 Variable Value Reduced Cost FLOW 14.00000 0.000000 C( S, 1) 8.000000 0.000000 C( S, 2) 7.000000 0.000000 C( 1, 2) 5.000000 0.000000 C( 1, 3) 9.000000 0.000000 C( 2, 4) 9.000000 0.000000 C( 3, 2) 2.000000 0.000000 C( 3, T) 5.000000 0.000000 C( 4, 3) 6.000000 0.000000 C( 4, T) 10.00000 0.000000 F( S, 1) 7.000000 0.000000 F( S, 2) 7.000000 0.000000 F( 1, 2) 2.000000 0.000000 F( 1, 3) 5.000000 0.000000 F( 2, 4) 9.000000 -1.000000 F( 3, 2) 0.000000 0.000000 F( 3, T) 5.000000 -1.000000 F( 4, 3) 0.000000 1.000000 F( 4, T) 9.000000 0.000000
其中f(vi ,vj) =fij 叫做弧(vi,
vj)上的流量。
(2)可行流:称满足下列条件的流为可行流: 1)容量约束:对于每一个弧(vi ,vj)∈A有 0 fij cij 。 2)守恒条件:对于所用的中间点 v V {v s , v t )
有
( vi , v j )E
图与网络分析
(Graph Theory and Network Analysis)
图的基本知识 树及最小生成树 最短路问题 最大流问题 最小费用最大流问题
四、 最大流问题
(一)、 基本概念 1、网络:设一个赋权有向图D=(V, A),在V中指定一
个发点vs和一个收点vt ,其它的点叫做中间点。对于D中的
sets: nodes/vs,s1,s2,v1,v2,t1,t2,t3,vt/; arcs(nodes,nodes)/ vs,s1 vs,s2 s1,t1 s1,v1 s1,v2 s2,v2 s2,t3 v1,t1 v1,t2 v2,v1 v2,t2 v2,t3 t1,vt t2,vt t3,vt/:c,f; endsets data: c= 27 27 10 5 12 15 12 8 6 3 6 10 18 12 22 ; enddata max = flow; @for(nodes(i)|i #ne# 1 #and# i #ne# @size(nodes): @sum(arcs(i,j):f(i,j))-@sum(arcs(j,i):f(j,i))=0); @sum(arcs(i,j)|i #eq# 1:f(i,j)) = flow; @for(arcs:@bnd(0,f,c)); END
5 (3) 6(3) 5 (2)
(容量约束、守恒条件)
v5Fra Baidu bibliotek
4 (2) 4 (1)
9 (5)
vs
9 (3)
4 (1) 5 (2)
v4
5 (0)
vt
10 (1)
v3
v6
例7
下图给出一个可行流
v2
13 (5)
5 (3) 6(3) 5 (2)
v5
4 (2)
4 (1)
9 (5)
vs
9 (3)
4 (1) 5 (2)
图与网络分析
(Graph Theory and Network Analysis)
赵芳玲
图论是运筹学的一个重要分支,它是建立 和处理离散类数学模型的一个重要工具。用图 论的方法往往能帮助人们解决一些用其它方法 难于解决的问题。图论的发展可以追溯到1736 年欧拉所发表的一篇关于解决著名的“哥尼斯 堡七桥问题”的论文。由于这种数学模型和方 法直观形象,富有启发性和趣味性,深受人们 的青睐。到目前为止,已被广泛地应用于系统 工程、通讯工程、计算机科学及经济领域。传 统的物理、化学、生命科学也越来越广泛地使 用了图论模型方法。
Global optimal solution found at iteration: 6 Objective value: 14.00000 Variable Value Reduced Cost FLOW 14.00000 0.000000 F( S, 1) 7.000000 0.000000 F( S, 2) 7.000000 0.000000 F( 1, 2) 2.000000 0.000000 F( 1, 3) 5.000000 0.000000 F( 2, 4) 9.000000 -1.000000 F( 3, 2) 0.000000 0.000000 F( 3, T) 5.000000 -1.000000 F( 4, 3) 0.000000 1.000000 F( 4, T) 9.000000 0.000000 v1 (9,5) (2,0) (5,2) (7,7) v2 (9,9) v3 (5,5) (6,0) v4 t (10,9)
F( S, 1) F( S, 2) F( S, 3) F( 1, 2) F( 1, T) F( 2, 3) F( 2, T) F( 3, T)
5.000000 6.000000 7.000000 0.000000 5.000000 0.000000 6.000000 7.000000
-1.00000 0.000000 0.00000 1.000000 0.000000 0.000000 -1.000000 -1.000000
Global optimal solution found at iteration: 5 Objective value: 18.00000 Variable Value Reduced Cost FLOW 18.00000 0.000000 C( S, 1) 5.000000 0.000000 C( S, 2) 7.000000 0.000000 C( S, 3) 8.000000 0.000000 C( 1, 2) 5.000000 0.000000 C( 1, T) 7.000000 0.000000 C( 2, 3) 4.000000 0.000000 C( 2, T) 6.000000 0.000000 C( 3, T) 7.000000 0.000000 F( S, 1) 5.000000 -1.000000 F( S, 2) 6.000000 0.000000 F( S, 3) 7.000000 0.000000 F( 1, 2) 0.000000 1.000000 F( 1, T) 5.000000 0.000000 F( 2, 3) 0.000000 0.000000 F( 2, T) 6.000000 -1.000000 F( 3, T) 7.000000 -1.000000
FLOW
18.00000
例10 (多发点多收点网络的最大流问题)某种物 资有两个产地s1和s2,三个销地,t1,t2和t3。运输 系统如图7-18所示,其中v1和v2是两个中转站。所 标数字是线路的最大运输能力。求从产地到销地的 最大运输量 。
解 这是一个多发点多收点的网络。为了能够用前面介 绍的算法求它的最大流,需要把它化成只有一个发点和 一个收点的网络.这并不困难.在网络中添一个发点vs和 一个收点vt以及vs到s1,s2的弧,t1,t2,t3到vt弧.
每一个弧(vi , vj)∈A ,都有一个非负数cij,叫做弧的容量 。我们把这样的图D叫做一个容量网络,简称网络,记做 D=(V,A,C,Vs,Vt)。 2、流量、可行流、流出量、流入量:
(1)流量:是指定义在网络D上的每一条弧上的一个
函数
f (a ) f (v i , v j ) { f i j }
fi j
( v j , vi )E
f ji
顶点vi 的流 入量
顶点vi的流 出量
则称f 为D上的可行流。其流量v(f )为
v( f ) v( f )
( v s , v j )E
fs j
( v j , v s )E
f js
(发点vs )
(收点vt )
( v j , vt )E
v4
5 (0)
vt
10 (1)
v3
v6
图中 (v 3 , v 6 ) 为零流弧,其余为非饱和弧、非零流弧。
流量v(f ) =8
最大流
• 网络上的流量最大的可行流称作的最大流 •所谓最大流问题就是求给定网络的最大流
(二)最大流的算法
1、由图编写程序
2、由lingo8.0软件求最大流
例8 现需要将城市s 的石油通过管道运送到城市 t,中间有4个中转站v1,v2,v3 和v4,城市与中转站的 连接以及管道的容量如下图所示,求从城市s 到城 市t 的最大流
v1 9 2 5 7 v2 9 v3 5 6 10 v4 t
8
s
v1 8 s 5
9
2
v3
5
6 10 v4 t
7
v2
9
附程序
max
vf
MODEL: sets: is v f , nodes/s,1,2,3,4,t/; s.t f ij f ji v f , i t arcs(nodes,nodes)/ jV jV i s,t s,1 s,2 1,2 1,3 2,4 3,2 3,t 4,3 4,t/:c,f; 0 , ( i,j ) A ( j,i ) A endsets data: 0 f ij c ij , ( i,j ) A c= 8 7 5 9 9 2 5 6 10; enddata max = flow; 程序结构 @for(nodes(i)|i #ne# 1 #and# i #ne# @size(nodes): @sum(arcs(i,j):f(i,j))-@sum(arcs(j,i):f(j,i))=0); 1、集合定义部分(sets到endsets) @sum(arcs(i,j)|i #eq# 1:f(i,j)) = flow; @for(arcs:@bnd(0,f,c)); 2、数据输入部分(data到enddata) END
Global optimal solution found at iteration: 10 Objective value: 46.00000 Variable Value Reduced Cost FLOW 46.00000 0.000000 F( VS, S1) 19.00000 0.000000 F( VS, S2) 27.00000 0.000000 F( S1, T1) 10.00000 -1.000000 F( S1, V1) 5.000000 -1.000000 F( S1, V2) 4.000000 0.000000 F( S2, V2) 15.00000 0.000000 F( S2, T3) 12.00000 0.000000 F( V1, T1) 8.000000 0.000000 F( V1, T2) 0.000000 0.000000 F( V2, V1) 3.000000 -1.000000 F( V2, T2) 6.000000 -1.000000 F( V2, T3) 10.00000 0.000000 F( T1, VT) 18.00000 0.000000 F( T2, VT) 6.000000 0.000000 F( T3, VT) 22.00000 -1.000000
f jt ft j
( vt , v j )E
(3)饱和弧:可行流中 fij=cij 的弧叫做饱和弧。
(4)非饱和弧:可行流中fij<cij的弧叫做非饱和弧。 (5)零流弧: fij=0 的弧叫做零流弧。 (6)非零流弧: fij>0 的弧为非零流弧。 例6 下图给出一个可行流
v2
13 (5)
( 8,7)
s
例9 求右图中网 络D的最大流。
sets: nodes/s,1,2,3,t/; arcs(nodes,nodes)/ s,1 s,2 s,3 1,2 1,t 2,3 2,t 3,t/:c,f; endsets data: c= 5 7 8 5 7 4 6 7; enddata max = flow; @for(nodes(i)|i #ne# 1 #and# i #ne# @size(nodes): @sum(arcs(i,j):f(i,j))-@sum(arcs(j,i):f(j,i))=0); @sum(arcs(i,j)|i #eq# 1:f(i,j)) = flow; @for(arcs:@bnd(0,f,c)); END