最小费用流算法-数学建模共45页文档

合集下载

运筹学-16最小费用最大流

运筹学-16最小费用最大流
费用=20+2 9=38
画出对应的增广网络 图(可调整量,单位费用)
2
(+3, v4)
2
(+2, v1)
前向,后向都有调整量
只有后向弧可以调整
可调整流,费用
把单位费用作为弧长,用标号法求从s到t的最短路
s:标(0 , )
(1,s)
min{(sv1)}={1,}=1
v1标号:(1,s)
(0, )
标不下去,已经找不到增广路
下方案总费用=14+3 3+11+43+2 4=34
求最小费用最大流 (容量,费用) 弧上数据(uj,cj)
uj 为弧的容量
Cj 为从这条弧运 送物资的费用
注意:
这两图 的权的 含义不 同
解: 设图中每条弧上的流量fj都为零,得到下图 (可调整流量,费用)
画出与上图对应的增广网络图,弧上权为(弧上流量的可调整 量,单位费用)
Min{(v1v3)(v1v4)}={1+4,1+3}=4
(4,v3)
(4, v1)
v4标号:(4, v1) Min{ (v4t)(v1v3)}={4+5 , 1+4}=5
v3标号:(5, v1) v2标号:(4, v3)
Min{(v3t)(v4t)(v3v2)}={5+3,4+5,5-1}=4 Min{(v3t)(v4t)(v2v4)}={5+3,4+5,4+6}=8
容量、费用、流量
(+1, v1)
1
3
(+2, v3)
前向,后向都有调整量 只有后向弧可以调整
可调整流,费用
把单位费用作为弧长,用标号法求从s到t的最短路

最小费用流问题

最小费用流问题

最大流问题
Maximum Flow Problem
最大流问题
与最小费用流问题一样,最大流问题也与网 络中的流有关。 最大流的目标不是使得流的成本最小化,而 是寻找 个流的方案 使得网络的流量最大 是寻找一个流的方案,使得网络的流量最大。 除了目标不一样之外,最大流问题的特征与 最小费用流问题的特征非常相似。
最小费用流的可行解
这类问题的解需要确定通过每一条弧的流有 多大。 具有可行解的特征:在上述假设下,当且仅 当供应点所提供的流量总和等于需求点所需 要的流量总和。 对于每一个可行解,通过每一条弧的流量都 不得超过该弧的容量。 每一个节点产生的净流量必须等于该节点标 明的流量。
为了简化网络图形,我们用每一个设施旁边方括号里的数字表示净 流出的单位数,于是,每一个末端仓库的产品单位数都是用负数来 表示,如下图所示。
最小费用流的特殊类型
转运问题:有一个附加特征,即从出发地运 输到目的地过程中可能会经过中间转运点, 此外,与运输问题基本上一样。 最大流问题:最大流的源点和收点的流量不 最大流问题 最大流的源点和收点的流量不 是固定的。 最短路径问题:在两点之间寻求最短路径, 且两个节点中的边(对应“弧”)允许双向 流动,而弧只允许沿着箭头方向流动。
RN公司是一家电子公司,它的工厂分别 位于下图中的1和2。在工厂生产出的部件 可能被运送到位于3或4仓库中的任意一个 仓库 通过这些仓库 公司向5、6、7、8 仓库,通过这些仓库,公司向 等地区的零售商发货。 图中给出了每个供应点和需求点的流量 以及每一条发货线路上每一个部件的运输 成本。 公司的目标是使总运输成本达到最小。
转载节点的约束条件
运出弧线
x
运入弧线
x

最小费用最大流

最小费用最大流

0.000000 0.000000 0.000000 0.000000 0.000000 5.000000 3.000000 0.000000 0.000000
结果说明,最小费用为12,此时,流值为3。
例6.8.6 用MATLAB软件求解例6.5.1。 解: MATLAB编程如下: f=zeros(7,1);f(1)=1;f(2)=1; g=-f; aeq=[1,0,-1,-1,0,0,0 0,1,0,1,-1,0,-1 0,0,1,0,1,-1,0]; beq=zeros(3,1);lb=zeros(7,1); ub=[2 1 6 3 2 4 3]';
( vi , v j )A

cij xij
(6.5.3)
n n X ij X ji 0 s.t. j 1 j 1 0 x w , (v , v ) A ij ij i j
§6.5.2 最小费用最大流问题的算法
寻求最大流的方法 最小 费用 最小费用最大流
运行结果如下:
z= 2.0000 1.0000 0.0000 2.0000 0.0000 0.0000 3.0000 favl1 = 12.0000
结果说明最大流值为3,最小费用为12。 可以看出,最小费用最大流问题其实就是在最 大流问题基础上,再进行一次线性规划问题的计算 得出。
例:求图中从vs vt的最小费用最大流。
解: 取 X (0) 0, 见图6.4.7(a), 构造 D( X (0) ).
v2
(1, 2, 0)

(5,6,0)
v 4
(3, 4,0)
(2,3,0) (3,1, 0)
(1, 2, 0)
v1
v3 (1,3, 0)

金牌原创7.6 最小费用流.ppt

金牌原创7.6 最小费用流.ppt

2019/10/25
管理运筹学课程组 ftp://211.71.69.239
5
L(f)的构造方法如下:L(f)中的顶点是原 网络中的点,而把G中的每一条弧(vi,vj) 变成两个方向相反的弧(vi,vj)和(vj, vi)。定义
L(f)中弧(vi,vj)和(vj,vi)的权lij和 lji为:
4
vs
2
1
v2
1
6
3
(a) w(f0)
V(f 1 ) = 5
vt
2
v1 (7,5)
(10,0)
(2,0)
v3 vs
(5,5)
(8,5)
v2 (10,0)
lij

ij

若 fij <cij fij =cij
2019/10/25
l ji

ij

若 fij 0 fij= 0
管理运筹学课程组 ftp://211.71.69.239
6
求流量为V目标的最小费用流的算法
第一步:k=0,从一流量为 V ( f ( (0) ) V ( f (0)≤) V目标)为最小 费用初始可行流 (一f(0般) 取零流)开始。
V ( f (k) )
V ( f (k) )
2019/10/25
管理运筹学课程组 ftp://211.71.69.239
7
例 求下图所示的网络G中,求从vs到vt的目标流值为 25的最小费用流,弧上括号内的数字第一个为容 量,第二个为弧上单位流的费用。
V1 (18,3)
(20,5) V2
(14,5)
2019/10/25
管理运筹学课程组 ftp://211.71.69.239

最小费用流问题

最小费用流问题

vt : 0 x1t x3t w
v1
vs
(10, 4) xs1 xs2
(8, 1)
x21(5,
(7, 1) x1t
2) x13(2, 6) x23
x3t (4, 2)
vt
v2 (10, 3) v3
定义
Vi:从 vi发出的所有边的终节点指标集合 Vi: 进入 vi的所有边的始节点的指标集合
如下图:
最小费用流问题
例、 最小费用流问题
v1
(10, 4)
(7, 1)
vs
(5, 2) (2, 6)
vt
(8, 1)
(4, 2)
v2 (10, 3) v3
括号内第一个数字是容量,第二个是单位流量费用
目标:从发点到收点的总的流量费用最小
约束:1)容量约束,各边流量不大于容量 2)流量平衡约束,各点进出流量总和相等 3)从发点到收点的总流量为 w
成从 vs 到 vt 的下述道路
dij
vt
vi
vj
vs
那么 dij 构成路长的一部分,就象 dij 构成
d() 的一部分一样
情况3)此时既可能属于前向边,也可能属于后向 边,所以上述两种可能的等价转化方式都应 该保留
总结前面讨论,可以把容量网络的每条边按以下规 则等价转换成长度网络(求最短路的网络)中的边
如果 xij 0
vi xij v j
cij , dij
vi dij v j
如果 xij cij
vi xij v j
cij , dij
如果 0 xij cij
vi xij v j
cij , dij
vi dij v j
dij

教案图与网络最小费用流

教案图与网络最小费用流

vt
(0,4,2)
v3 T (v3) [v2,3,4]
第三次迭代
T(v1) [vs,10,4] P
v1
(0,10,4)
(5,5,1)
T (vt ) [v3,1,7] P
(5,5,2)
(0,6,2)
vs( 8,8,1)
P(vs ) [0,,0]
(3,10,3)
v2
T (v2 ) [v1,5,2] P
vt
(0,4,2)
v3
T (v3) [v2,8,4]
第二次迭代
T (v1) [vs ,10,4] P
v1
(0,10,4)
(5,5,1)
T (vt ) [v3,3,6] P
(5,5,2)
(0,6,2)
vs( 5,8,1)
P(vs ) [0,,0]
(0,10,3)
v2
T (v2 ) [vs ,3,1] P
fsj
f js v( f )
( s, j )A
( j ,s)A
ftj
f jt v( f )
(t , j )A
( j ,t )A
fij
f ji 0, i s, t
(i, j )A
( j ,i )A
0 fij Cij
二、求解最小费用流的赋权图法
基本思想:
从零流量开始,在始点到终点的所有可能增加流 量的增广链中寻求总费用最小的链,并首先在这 条链上增加流量,得到流量为 f (1) 的最小费用流。
运输问题和指派问题可以用最小费用流 问题建模,请将它们化为最小费用流问 题。
v1
4
D=4
1
vs
2
6
vt

最小费用最大流问题.

(
vs
(
5,2)
(
(
2,6)
8,1)
V2 10,3)ቤተ መጻሕፍቲ ባይዱV3
4,2)
第一轮:f 0为初始可行流,作相应的费用有向图网络L(f 0),如 图(a)。 在L(f 0)上用DijksTra标号法求出由vs到vt的最短路(最小费用链) 0 m i n 8,5, 5 7 μ0=(vs,v2,v1, ( vt)v ,并对 μ 按 进行流量的调整, 0 , v ) ,( v , v ) ,( v , v ) s 2 0 2 1 0 1 t 0 由于, (1) (1) 所以有 fs2 f12 f1t(1) 5,其余不变,得新的可行流f1的流量 有向图(b)。
vs
vt
2.下表给出某运输问题的产销平衡表与单位运价 表。将此问题转化为最小费用最大流问题,画出网 络图并求数值解。 2 3 产量 1 产地 销地
A B 销量 20 30 4 24 22 5 5 20 6 8 7
最小总费用为240
(20,8) A (0,8) s (30,7) (0,7) (5,8) (24,8)
4
vt
vs
1
6
2
2
v1
(7,5)
(2,0)
(10,0)
vt
(4,0)
v2
V(f
1)
(a) = 5
3
v3 vs
(8,5)
w(f0)
(5,5)
v2
(10,0)
v3
(b) f 1
v1 vs
(8,5)
(7,5)
(2,0)
(10,0)
vt
(4,0) 4
v1
vs

运筹学课件最小费用流问题概要


vt
) 2 , 4 , 3 (
(3,10,3)
v2
v3
第三次剩s
-1
-2
vt
2
6
3
v2
-3
v3
第三次调整网络流
v1
1 ( ) 4 , ,10
(5 ,5 ,1 )
vs
( 8,8 ,1)
(4,5,2)
vt
) 2 , ,4 4 (
(4,10,3)
( ,6) 0,2
v2
v3
v1
三、求解最小费用流的复合标号法
修正如下: 标号过程中,永久标号和临时标号一样 是可以改变的。对任一顶点而言,它有 可能反复变成T标号和P标号,顶点每次 变成P标号,标号过程都要从该顶点重新 开始。 所有顶点变为P标号,算法停止。
三、求解最小费用流的复合标号法
P(vs ) [0, ,0]
正向弧是非饱和弧: 反向弧是非零流弧:
(0 ,5 , 1)
( f ij ,cij ,bij )
(0,5,2)
1
0,
4)

vs (

6) 2, 0,
0, 8,
vt
) 2 , 4 , 0 (
1)
(0,10,3)
v2
v3
第一次剩余网络最短路
v1
1
D=4
4
vs
1
2
vt
2
6
3
v2
v3
第一次调整网络流
v1
(5,5,2)
0, ( , 0 1 4)
P(vs ) [0, ,0]
0, 8, 1)
vt
( 0 ) 2 , ,4
T (v2 ) [vs ,8,1] P

最小费用最大流简介


6
最大流=f1+f2+f3=4+2+2=8
最小费用=48+26+30=104
算法设计:贪心策略
设p是图的一条增广路径,定义路径p的长度为:

w[i, j ]

w[i, j ]
i , j P
i ,。
如果p是一条最短(单位费用最小)的可增广路径, 称p是一条最小费用可增广路。
(4,6)
实例:
(容量,单位费用)
(2,5)
2
(5,7)
3
(4,3)
1
(6,2)
6 5
(8,5)
4
(7,6)
①、最小费用可增广路(最短路径) 1436 长度(单位流量总费用) =2+7+3=12 f 1=4 cost1=4*12=48
(4,6) (2,5)
2
4
(5,7) 4
3
4
(4,3)
1
(6,2)
6 5
(8,5)
4
(7,6)
(4,6)
(2,5)
2
4 (5,7) 4
3
4
(4,3)
1
②、最小费用可增广路 1456 长度(单位流量总费用) =2+6+5=13 f2 =2 cost2=2*13=26
6 5
(8,5)
(6,2)
4
(7,6)
(4,6)
(2,5)
2
(5,7) 2 4 2 (7,6)
// short[i]:i到源点1的最短距离(最小费用);
b:array[1..maxn] of integer; // b[i]:最小费用可增广路 径上结点i的前驱

最小费用最大流问题


, ,
若(vi 若(vi
, ,
v v
j j
) )
,
fij ,若(vi , v j ) .
去掉全部旳标号,对新旳可行流 f ' { fij '}, 重新进入标号过程.
Back
continued
算 例 用标号法求右下图所示网络旳最大流.弧旁旳数是 (cij , fij ).
解:(一)标号过程
b(
f
*)
min f
bij
(vi ,v j )A
f ij
怎么求解这个问题?
1、定义 增广链 旳费用为 bij bij
结论:若 f 是流量为v( f )旳全部可行流中费用最小者,而 是有关 f 旳全部增广链中费用最小旳增广链,则沿 去调 整 f ,得到旳可行流 f ' ,就是流量为 v( f ')旳全部可行流中旳最 小费用流.这么,当 f ' 是最大流时,它即为所求旳最小费用最 大流.
cij ,即正向弧集中每一条弧是非饱和弧; cij ,即反向弧集中每一条弧是非零流弧.
四、截集
1 、设 S,T V , S T , 把始点在 S ,终点在 T 中旳全 部弧构成旳集合,记为 (S,T ).
2 、给定网络 D (V , A,C)若点集 V 被剖分为两个非空集合
__
__
__
v1 (2,2)
v2
(3,3)
(4,3)
vs
(0,)
(1,0) (1,0)
(5,2) v1 (vs ,3) (2,2)
v4
(5,3)
(3,0)
vt
(2,2)
v3
v4 (5,3) vt
(3,0) (2,2)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档