Microsoft Lab
全部软件
Excel规划求解(Solver)约 4 分钟

Maximum Flow Problem 最大流量问题

重点内容


适用版本

桌面版通用(Excel 365 / 2021 / 2019 等)。


第一步:建立模型

  1. 决策变量:每条连接线上的流量(flow)
  2. 约束条件:中间节点的净流量必须等于 0(流进多少就要流出多少);每条线的流量不能超过它的容量上限(Capacity)
  3. 目标函数:让从起点 S 出发的总流量最大化

命名范围:

范围名称单元格用途
FromB4:B15每条连接线的起点
ToC4:C15每条连接线的终点
FlowD4:D15每条连接线目前的流量
CapacityF4:F15每条连接线的容量上限
SupplyDemandK5:K9每个节点该有的净流量(中间节点是 0)
MaximumFlowD17从起点出发的总流量

用 SUMIF 分别算出每个节点流入、流出的总量,两者相减得到净流量。


第二步:试算

先手动排一组流量方案试试看:S›A›D›T流 2、S›C›T流 4、S›B›E›T流 2,总流量是 8。


第三步:用 Solver 求解

  1. Data 选项卡 → Solver
  2. Set Objective 选 MaximumFlow,选 Max(最大化)
  3. By Changing Variable Cells 选 Flow
  4. 加约束:中间节点的 NetFlow = 0;所有 Flow 都不能超过 Capacity
  5. 勾选 Make Unconstrained Variables Non-Negative,Solving Method 选 Simplex LP
  6. 点击 Solve
📷 画面提示

Solver 约束列表,NetFlow=0 和 Flow≤Capacity 两条约束都已添加


求解结果

最大流量是 12,分布在 6 条路径上,各自流量不同。

📷 画面提示

Flow 列求解完成后,每条连接线的流量分配结果


学完你会

常见错误

  • 忘记加「流量不能超过容量上限」这条约束,Solver 算出不现实的超容量流量
  • 中间节点的净流量约束只加了流入或只加了流出,没有真正做到「流进=流出」
  • 把「最大流量问题」(有方向网络)跟 EP03「最短路径问题」(无向网络)的建模逻辑搞混

Sources

Blog / Website:

  1. Maximum Flow Problem
只记在你的浏览器里,换设备不会同步。