MATLAB学习------2019/7/13

最小费用最大流问题
()
1. 定义
 前提:在给定网络D=(V,A,C)D=(V,A,C)D=(V,A,C)中,每一弧(vi,vj)∈A(v_{i},v_{j}) \in A(vi,vj)A上,除了已给容量cijc_{ij}cij外,还有费用b(vi,vj)≥0b(v_{i},v_{j}) \geq 0b(vi,vj)0(简记为bijb_{ij}bij).
 问题:求一个从出发点vsv_{s}vs到收点vtv_{t}vt的最大流,使流的总输送费用∑(vi,vj)∈Abijfij取最小值。\sum_{(v_{i},v_{j})\in A}{b_{ij}f_{ij}}取最小值。(vi,vj)Abijfij
 化为线性规划模型:
min∑(vi,vj)∈Abijfij min \sum_{(v_{i},v_{j})\in A}{b_{ij}f_{ij}} \\ min(vi,vj)Abijfij
s.t.={0≤fij≤cij,∀(vi,vj)∈A∑j:(vi,vj)∈Afij−∑j:(vj,vi)∈Afji=di s_{.}t_{.}=\left\{ \begin{aligned} 0 \leq f_{ij} \leq c_{ij},\quad\forall(v_{i},v_{j}) \in A \\ \\ \sum_{j:(v_{i},v_{j})\in A}{f_{ij}}-\sum_{j:(v_{j},v_{i})\in A}{f_{ji}}=d_{i} \end{aligned} \right. s.t.=0fijcij,(vi,vj)Aj:(vi,vj)Afijj:(vj,vi)Afji=di
式中:
di={v(fmax),i=s−v(fmax),i=t0,i≠s,tv(fmax)为最大流的流量 d_{i} =\left\{ \begin{aligned} v(f_{max}),i=s \\ -v(f_{max}),i=t \\ 0,i\neq s,t \end{aligned} \right. \\ \quad \text{$v(f_{max})$为最大流的流量} di=v(fmax),i=sv(fmax),i=t0,i̸=s,tv(fmax)为最大流的流量
2.求最小费用流的一种迭代方法
步骤:
(1)求从发点到收点的最小费用通路μ(s,t)\mu(s,t)μ(s,t)
(2)对该通路μ(s,t)\mu(s,t)μ(s,t)分配的最大可能流量
fˉ=min(vi,vj)∈μ(s,t){cij}, \bar{f}=\mathop{min} \limits_{(v_{i},v_{j})\in \mu(s,t)} \{c_{ij}\}, fˉ=(vi,vj)μ(s,t)min{cij},
并让通路上的所有边的容量相应减少fˉ\bar{f}fˉ.这时,对于通路上的饱和边,其单位流费用改为∞\infty
(3)做该通路μ(s,t)\mu(s,t)μ(s,t)上所有边(vi,vj)(v_{i},v_{j})vi,vj的反向边(vj,vi)(v_{j},v_{i})vj,vi令:
cij=fˉ,bji=−bij c_{ij}=\bar{f},\quad b_{ji}=-b_{ij} cij=fˉ,bji=bij
(4)重复步骤(1)(2)(3)直至从发点到收点全部流量==指定的vfv_{f}vf


注:以上我所写内容均来自于《数学建模算法与应用(第二版)》(司守奎,孙兆亮主编),仅为我个人按书上写的练习所用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值