最小费用 最大流问题。Matlab+Lingo

第一步,求出最大流

a=zeros(7);
a(1,[2 4 3])=[3 3 6];
a(2,[4 5])=[1 3];
a(3,[4 6])=[4 2];
a(4,[5 6])=[2 7];
a(5,7)=6;
a(6,7)=7;
a=sparse(a);
[b,c]=graphmaxflow(a,1,7);

 得出结果为12

model:
sets:
nodes/s,1,2,3,4,5,t/:d;
arcs(nodes,nodes)/s 1,s 2,s 3,1 4,4 t,1 3,2 3,2 5,3 4,3 5,5 t/:b,c,f;
endsets
data:
d=12 0 0 0 0 0 -12;
b=2 1 4 3 4 3 3 4 3 1 2;
c=3 6 3 3 6 1 4 2 2 7 7;
enddata
min=@sum(arcs:b*f);
@for(nodes(i):@sum(arcs(i,j):f(i,j))-@sum(arcs(j,i):f(j,i))=d(i));
@for(arcs:@bnd(0,f,c));

第二步,求最小费用最大流 (有用到第一步得出的最大流12)

最小费用为98

详细参见 《数学建模算法与应用》,以及B站up主【【MATLAB】最小费用最大流问题求解,两步走秒杀法】https://www.bilibili.com/video/BV1sf4y157ZG?vd_source=5b1ad18fb52e8fa7539eb6c11a21850e

  • 18
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值