数学建模——最大流问题(配合例子说明)(一)

简介: 数学建模——最大流问题(配合例子说明)

一、最大流有关的概念

最大流是应用广泛的一类问题,例如交通运输网络中的人流、车流、物流;供水网络中的水流、金融系统中的资金流;通讯系统中的信息流。上世纪50年代Ford,Fulkerson建立的《网络流理论》是网络应用的基础。

例1

如图1所示网络为输油管道网络,vs为起点,vt为终点,v1,v2,v3,v4为中转站,边上的数字表示该管道的最大输油能力(t/h)。问如何安排各管道的输油量,才能使得从vs到vt的输油量最大。

1、容量网络的定义

设有连通图G=(V,E),G的每一条边(vi,vj)上有非负数cij称为容量,仅有一个入次为0的点vs称为发点(源),一个出次为0的点vt称为收点(汇),其余点位中间点,这样的网络G称为容量网络,记为G=(V,E,C)。如图1所示。

2、符号设置

  • Cij  边(i,j)的容量限制;
  • fij  边(i,j)的实际流量;(称f={fij}为网络的一个流。)
  • W  网络的总流量;

3、建立模型

3.1 每条边的容量限制

3.2 平衡条件

对中间点u,流入=流出,即

3.3 网络的总流量

称发点流量之和或汇点流量之和为网络总流量(忽略损失)。

4、网络最大流数学模型

5、计算

编写例1的Lingo计算程序,将计算结果填入表1,将数据反映如图1,得到图2.

sets:
dian/vs v1 v2 v3 v4 vt/:;
bian(dian,dian)/vs,v1 vs,v3 vs,v4 v1,v2 v1,v3 v2,v3 v2,vt v3,vt v3,v4 v4,v3 v4,vt/:c,f;
endsets
data:
c=4 3 4 2 1 2 4 2 3 2 3;
enddata
max=w;
w=@sum(bian(i,j)|j#eq#6:f(i,j));
@for(bian(i,j):f(i,j)<c(i,j));
@for(dian(k)|k#ne#1#and#k#ne#6:@sum(bian(i,k):f(i,k))=@sum(bian(k,j):f(k,j)));

表1 流量分布(不唯一)

fij

V1

V2

V3

v4

vt

Vs

3

4

V1

2

1

V2

2

V3

1

2

v4

2

3

如图2所示,称形如(vs,v4),(v4,vt),(v4,v3),(v1,v2),(v1,v3)为饱和边;其余的边都是非饱和边。

要增大网络的流量,必须对饱和边扩容!!

二、最小费用流

设G=(V,E,C)为流量网络,边(i,j)除了容量限制cij外,还有因为流量而产生的单位费用dij(dij>0),记为G=(V,E,C,d)。这时如果不管流量大小,而只把网络流产生的费用当产目标,最优解必定是0,即各条边的实际流量为0时费用最小。研究方法必须改变为保持流量一定的情况下,使得流量产生的总费用最小。当网络流量保持最大而流量费用最小的网络流称为最小费用最大流

例2

如图3所示网络G=(V,E,c,d),每条边有两个数字,第一个是容量限制,第二个是流量产生的单位费用。求该网络的最小费用最大流(最大流例1求得为7)。

【符号说明】

  • G=(V,E,c,d] 如图3所示网络图;
  • Cij  边(i,j)的管道容量限制;
  • Dij  边(i,j)的单位费用;
  • Xij  边(i,j)的实际流量;
  • W   网络G的总流量。

【建立模型】

(1)各条边的流量限制

(2)网络总流量

(3)网络总费用

(4)中间点的流量平衡

【数学模型】


相关文章
|
算法
秒懂算法 | 最大网络流的增广路算法
增广路算法是由Ford和Fulkerson于1957年提出的。该算法寻求网络中最大流的基本思想是寻找可增广路,使网络的流量得到增加,直到最大为止。即首先给出一个初始可行流,这样的可行流是存在的,例如零流。如果存在关于它的可增广路,那么调整该路上每条弧上的流量,就可以得到新的可行流。对于新的可行流,如果仍存在可增广路,则用同样的方法使流的值增大。继续这个过程,直到网络中不存在关于新的可行流的可增广路为止。此时,网络中的可行流就是所求的最大流。
2437 0
秒懂算法 | 最大网络流的增广路算法
|
算法
数学建模-------误差来源以及误差分析
数学建模-------误差来源以及误差分析
|
Cloud Native Docker 容器
云原生之使用docker部署qbittorrent
云原生之使用docker部署qbittorrent
1329 2
云原生之使用docker部署qbittorrent
|
8月前
|
前端开发 Java 微服务
《深入理解Spring》:Spring、Spring MVC与Spring Boot的深度解析
Spring Framework是Java生态的基石,提供IoC、AOP等核心功能;Spring MVC基于其构建,实现Web层MVC架构;Spring Boot则通过自动配置和内嵌服务器,极大简化了开发与部署。三者层层演进,Spring Boot并非替代,而是对前者的高效封装与增强,适用于微服务与快速开发,而深入理解Spring Framework有助于更好驾驭整体技术栈。
|
人工智能 运维 自然语言处理
智能化运维:AI在IT运维领域的深度应用与实践####
本文探讨了人工智能(AI)技术在IT运维领域的深度融合与实践应用,通过分析AI驱动的自动化监控、故障预测与诊断、容量规划及智能决策支持等关键方面,揭示了AI如何赋能IT运维,提升效率、降低成本并增强系统稳定性。文章旨在为读者提供一个关于AI在现代IT运维中应用的全面视角,展示其实际价值与未来发展趋势。 ####
2294 4
|
数据安全/隐私保护
(只需五步)注册谷歌账号详细步骤,解决“此电话号码无法验证”问题
注册google一直不方便,因为如果直接去google官网注册,那么它大概率会显示“此电话号码无法用于进行验证”接下来,按着教程来一步步做,就可以实现跳过此限制,成功用手机号注册google了。很简单的。
42662 1
|
小程序 开发工具
app跳转微信小程序,使用明文scheme拉起
app跳转微信小程序,使用明文scheme拉起
4402 4
|
算法 项目管理 数据中心
【数据结构】拓扑网络(AOE算法举例+源码)
【数据结构】拓扑网络(AOE算法举例+源码)
【数据结构】拓扑网络(AOE算法举例+源码)
|
算法 C++
【算法】网络最大流问题,三次尝试以失败告终
开始 已多次看到“网络最大流问题”的字眼,一直不知道是什么,后来终于有一次打算仔细了解一下,期间我发现了一篇不错的博客:全面理解网络流中的最大流问题。在这篇博客的帮助下,我成功弄清楚了什么是网络流中的最大流问题,同时也明白了解决这个问题的基本思路。
479 0