十七、运输问题 [费用流问题]

运输问题 


问题描述:
W 公司有 m个仓库和 n 个零售商店。第 i 个仓库有 ai 个单位的货物;第 j 个零售商店需要 bj 个单位的货物。货物供需平衡,即 a1 + a2 + ... + am-1 + am = b1 + b2 + ... + bn-1 + bn 。 从第 i 个仓库运送每单位货物到第 j 个零售商店的费用为 cij 。试设计一个将仓库中所有货物运送到零售商店的运输方案,使总运输费用最少。
编程任务:
对于给定的 m 个仓库和 n 个零售商店间运送货物的费用,计算最优运输方案和最差运输方案。
数据输入:
由文件input.txt提供输入数据。文件的第1行有 2 个正整数m和 n,分别表示仓库数和零售商店数。接下来的一行中有m个正整数 ia ,1≤i≤m,表示第 i个仓库有 ai 个单位的货
物。再接下来的一行中有n个正整数 bj ,1≤j≤n,表示第j个零售商店需要 bj 个单位的货物。接下来的 m行,每行有n个整数,表示从第i个仓库运送每单位货物到第j个零售商店
的费用 cij 。 

结果输出:
程序运行结束时,将计算出的最少运输费用和最多运输费用输出到文件output.txt中。
输入文件示例 
2 3
220 280
170 120 210
77 39 105
150 186 122 

输出文件示例 
48500
69140
 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

解决方案:

1 .   问 题 分 析 :  
供 求 关 系 , 用 费 用 流 解 决 。  
 
2 .   建 模 方 法 :  
把 M 个 仓 库 看 成 二 分 图 X 集 合 的 点 , 把 N 个 商 店 看 成 二 分 图 Y 集 合 的 点 。 添 加 源汇 点 S , T 。  
 
( 1 ) :   S 向 所 有 仓 库 i 连 一 条 容 量 为 仓 库 中 货 物 数 量 a i , 费 用 为 0 的 有 向 边 。  
( 2 ) :   每 个 商 店 j 向 T 连 一 条 容 量 为 该 商 店 需 要 货 物 数 b j , 费 用 为 0 的 有 向 边 。  
( 3 ) :   每 个 仓 库 i 向 每 个 商 店 j 连 一 条 容 量 为 I N F , 费 用 为 c i j 的 边 。  
 
求 最 小 费 用 最 大 流 , 最 小 费 用 流 值 就 是 最 少 运 费 ;  
求 最 大 费 用 最 大 流 , 最 大 费 用 流 值 就 是 最 多 运 费 ;  

 
3 .   建 模 分 析 :  
把 每 个 仓 库 想 象 成 一 个 中 转 站 , 由 源 点 运 来 a i 单 位 货 物 , 运 费 为 0 , 每 个 商 店 也为 一 个 中 转 站 , 运 向 目 标 汇 点 b i 单 位 货 物 。 每 个 仓 库 和 零 售 商 店 之 间 有 一 条 道 路 , 容量 为 无 穷 大 , 费 用 为 单 位 运 费 c i j 。 求 从 源 点 到 汇 点 的 费 用 流 , 就 是 运 费 。 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

__简言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值