灾后食物能源协调供应优化模型
灾后食物能源协调供应优化模型
项目概述
本项目基于论文《Coordinated Post-Disaster Supply of Food and Energy: A Two-Stage Stochastic Optimization Approach》,实现了一个完整的两阶段随机优化模型,用于解决灾后环境中食物和能源供应链的协调优化问题。该模型考虑了灾害的不确定性,通过预定位决策和场景响应决策的两阶段框架,最小化总期望成本。
数学模型详解
1. 问题描述
在灾害发生前,决策者需要确定在各个需求点预定位多少食物和能源资源。灾害发生后,根据实际场景进行资源分配和运输。目标是在满足容量约束和需求约束的前提下,最小化预定位成本、运输成本和未满足需求的惩罚成本的期望值。
2. 集合与参数定义
集合:
- III:仓库集合,I={0,1,2}I = \{0, 1, 2\}I={0,1,2}(3个仓库)
- JJJ:需求节点集合,J={0,1,2,3,4}J = \{0, 1, 2, 3, 4\}J={0,1,2,3,4}(5个需求点)
- SSS:灾害场景集合,S={0,1,2,3}S = \{0, 1, 2, 3\}S={0,1,2,3}(4种场景)
参数:
- cijc_{ij}cij:从仓库iii到需求点jjj的单位运输成本
- djsd_j^sdjs:场景sss下需求点jjj的食物需求量
- capjscap_j^scapjs:场景sss下需求点jjj的能源可用容量
- πs\pi_sπs:场景sss的发生概率,∑s∈Sπs=1\sum_{s \in S} \pi_s = 1∑s∈Sπs=1
- αj\alpha_jαj:需求点jjj未满足需求的单位惩罚成本
- βj\beta_jβj:需求点jjj的能源需求系数(每单位食物需要的能源量)
- FCFCFC:食物预定位单位成本
- ECECEC:能源预定位单位成本
- FoodCapjFoodCap_jFoodCapj:需求点jjj的食物容量限制
- EnergyCapjEnergyCap_jEnergyCapj:需求点jjj的能源容量限制
- WSCifoodWSC_i^{food}WSCifood:仓库iii的食物供应能力
- WSCienergyWSC_i^{energy}WSCienergy:仓库iii的能源供应能力
3. 决策变量
第一阶段决策变量(预定位决策):
- xijfx_{ij}^fxijf:从仓库iii预定位到需求点jjj的食物单位数
- xijex_{ij}^exije:从仓库iii预定位到需求点jjj的能源单位数
第二阶段决策变量(场景响应决策):
- yijsy_{ij}^syijs:场景sss下从仓库iii运输到需求点jjj的食物单位数
- ujsu_j^sujs:场景sss下分配给需求点jjj的能源单位数
- vjsv_j^svjs:场景sss下需求点jjj的未满足食物需求
4. 目标函数
最小化总期望成本:
minZ=∑i∈I∑j∈JFC⋅xijf+∑i∈I∑j∈JEC⋅xije⏟第一阶段:预定位成本+∑s∈Sπs[∑i∈I∑j∈Jcij⋅yijs+∑j∈Jαj⋅vjs]⏟第二阶段:期望运输成本 + 期望惩罚成本\min Z = \underbrace{\sum_{i \in I} \sum_{j \in J} FC \cdot x_{ij}^f + \sum_{i \in I} \sum_{j \in J} EC \cdot x_{ij}^e}_{\text{第一阶段:预定位成本}} + \underbrace{\sum_{s \in S} \pi_s \left[ \sum_{i \in I} \sum_{j \in J} c_{ij} \cdot y_{ij}^s + \sum_{j \in J} \alpha_j \cdot v_j^s \right]}_{\text{第二阶段:期望运输成本 + 期望惩罚成本}}minZ=第一阶段:预定位成本i∈I∑j∈J∑FC⋅xijf+i∈I∑j∈J∑EC⋅xije+第二阶段:期望运输成本 + 期望惩罚成本s∈S∑πsi∈I∑j∈J∑cij⋅yijs+j∈J∑αj⋅vjs
5. 约束条件
容量约束:
∑i∈Ixijf≤FoodCapj,∀j∈J(食物容量约束)\sum_{i \in I} x_{ij}^f \leq FoodCap_j, \quad \forall j \in J \quad \text{(食物容量约束)}i∈I∑xijf≤FoodCapj,∀j∈J(食物容量约束)
∑i∈Ixije≤EnergyCapj,∀j∈J(能源容量约束)\sum_{i \in I} x_{ij}^e \leq EnergyCap_j, \quad \forall j \in J \quad \text{(能源容量约束)}i∈I∑xije≤EnergyCapj,∀j∈J(能源容量约束)
需求满足约束:
∑i∈Iyijs+vjs=djs,∀j∈J,s∈S(需求平衡约束)\sum_{i \in I} y_{ij}^s + v_j^s = d_j^s, \quad \forall j \in J, s \in S \quad \text{(需求平衡约束)}i∈I∑yijs+vjs=djs,∀j∈J,s∈S(需求平衡约束)
能源需求约束:
ujs≥βj⋅∑i∈Iyijs,∀j∈J,s∈S(能源需求约束)u_j^s \geq \beta_j \cdot \sum_{i \in I} y_{ij}^s, \quad \forall j \in J, s \in S \quad \text{(能源需求约束)}ujs≥βj⋅i∈I∑yijs,∀j∈J,s∈S(能源需求约束)
预定位资源利用约束:
yijs≤xijf,∀i∈I,j∈J,s∈S(食物预定位利用约束)y_{ij}^s \leq x_{ij}^f, \quad \forall i \in I, j \in J, s \in S \quad \text{(食物预定位利用约束)}yijs≤xijf,∀i∈I,j∈J,s∈S(食物预定位利用约束)
能源分配约束:
ujs≤∑i∈Ixije,∀j∈J,s∈S(能源分配约束)u_j^s \leq \sum_{i \in I} x_{ij}^e, \quad \forall j \in J, s \in S \quad \text{(能源分配约束)}ujs≤i∈I∑xije,∀j∈J,s∈S(能源分配约束)
场景能源容量约束:
ujs≤capjs,∀j∈J,s∈S(场景能源容量约束)u_j^s \leq cap_j^s, \quad \forall j \in J, s \in S \quad \text{(场景能源容量约束)}ujs≤capjs,∀j∈J,s∈S(场景能源容量约束)
仓库供应能力约束:
∑j∈Jxijf+∑j∈J∑s∈Sπs⋅yijs≤WSCifood,∀i∈I(仓库食物供应约束)\sum_{j \in J} x_{ij}^f + \sum_{j \in J} \sum_{s \in S} \pi_s \cdot y_{ij}^s \leq WSC_i^{food}, \quad \forall i \in I \quad \text{(仓库食物供应约束)}j∈J∑xijf+j∈J∑s∈S∑πs⋅yijs≤WSCifood,∀i∈I(仓库食物供应约束)
∑j∈Jxije≤WSCienergy,∀i∈I(仓库能源供应约束)\sum_{j \in J} x_{ij}^e \leq WSC_i^{energy}, \quad \forall i \in I \quad \text{(仓库能源供应约束)}j∈J∑xije≤WSCienergy,∀i∈I(仓库能源供应约束)
非负性约束:
xijf,xije,yijs,ujs,vjs≥0,∀i∈I,j∈J,s∈Sx_{ij}^f, x_{ij}^e, y_{ij}^s, u_j^s, v_j^s \geq 0, \quad \forall i \in I, j \in J, s \in Sxijf,xije,yijs,ujs,vjs≥0,∀i∈I,j∈J,s∈S
技术实现
1. 模型规模
- 决策变量数量:130个
- 第一阶段变量:30个(食物预定位15个 + 能源预定位15个)
- 第二阶段变量:100个(运输变量60个 + 能源分配20个 + 未满足需求20个)
- 约束条件数量:156个
- 容量约束:10个
- 需求满足约束:20个
- 能源需求约束:20个
- 预定位利用约束:60个
- 能源分配约束:20个
- 场景能源容量约束:20个
- 仓库供应能力约束:6个
2. 求解器配置
- 求解器:CBC (Coin-or Branch and Cut)
- 求解方法:线性规划单纯形法
- 时间限制:300秒
- 最优性间隙:0.01
3. 参数设置
网络结构:
- 仓库数量:3个
- 需求节点数量:5个
- 灾害场景数量:4个
成本参数:
- 食物预定位成本:$2.0/单位
- 能源预定位成本:$3.0/单位
- 运输成本:基于欧几里得距离,$0.5/单位距离
- 惩罚权重:$100-130/单位(根据需求点重要性)
场景设置:
- 场景0(轻微灾害):概率30%,需求增加20%,能源可用性90%
- 场景1(中等灾害):概率40%,需求增加50%,能源可用性70%
- 场景2(严重灾害):概率20%,需求增加100%,能源可用性50%
- 场景3(极端灾害):概率10%,需求增加150%,能源可用性30%
求解结果与分析
1. 求解性能
- 求解状态:最优解 (Optimal)
- 求解时间:0.01秒(106次迭代)
- 最优目标值:$21,068.08
- 决策变量:130个(全部非负,满足所有约束)
2. 成本结构分析
总成本分解:
- 食物预定位成本:$1,651.80 (7.8%)
- 能源预定位成本:$925.43 (4.4%)
- 期望运输成本:$5,021.20 (23.8%)
- 期望惩罚成本:$13,469.65 (63.9%)
关键观察:
- 惩罚成本占主导:未满足需求的惩罚成本占总成本的63.9%,表明在极端灾害场景下存在显著的供需缺口
- 预定位成本较低:第一阶段预定位成本仅占12.2%,说明预定位策略相对经济
- 运输成本适中:期望运输成本占23.8%,反映了网络结构的合理性
3. 决策变量分析
第一阶段预定位决策:
- 总预定位食物:825.90单位
- 总预定位能源:308.48单位
- 食物/能源比例:2.68:1(符合能源需求系数设置)
预定位分布模式:
- 仓库0:主要服务需求点0和1(地理位置邻近)
- 仓库1:主要服务需求点1、2和3(中心位置优势)
- 仓库2:主要服务需求点3和4(东部区域覆盖)
4. 场景性能分析
场景 | 概率 | 需求倍数 | 服务水平 | 未满足需求 | 能源可用性 |
---|---|---|---|---|---|
0 (轻微) | 30% | 1.2× | 100.0% | 0.0单位 | 90% |
1 (中等) | 40% | 1.5× | 100.0% | 0.0单位 | 70% |
2 (严重) | 20% | 2.0× | 82.0% | 180.9单位 | 50% |
3 (极端) | 10% | 2.5× | 40.0% | 805.9单位 | 30% |
场景分析结论:
- 轻微和中等灾害:模型能够完全满足需求,服务水平达到100%
- 严重灾害:服务水平下降到82%,开始出现供需缺口
- 极端灾害:服务水平急剧下降到40%,未满足需求大幅增加
- 加权平均服务水平:90.4%(考虑场景概率)
5. 资源利用效率分析
各需求点资源利用率:
需求点 | 食物利用率 | 能源利用率 | 平均服务水平 | 重要性权重 |
---|---|---|---|---|
0 | 87.2% | 39.2% | 81.6% | α₀=100 |
1 | 90.9% | 48.5% | 79.5% | α₁=120 |
2 | 93.5% | 49.1% | 82.3% | α₂=110 |
3 | 95.1% | 52.3% | 79.4% | α₃=130 |
4 | 84.8% | 39.5% | 81.0% | α₄=105 |
利用率分析:
- 食物容量利用率高:平均90.3%,表明食物预定位策略较为充分
- 能源容量利用率低:平均45.7%,存在能源资源配置优化空间
- 服务水平相对均衡:各需求点平均服务水平在79.4%-82.3%之间
- 重要性导向:高惩罚权重的需求点(如点3)获得更高的资源配置
敏感性分析
惩罚权重敏感性分析
为了评估模型对关键参数的敏感性,我们测试了不同惩罚权重倍数对优化结果的影响:
惩罚权重倍数 | 总成本 | 未满足需求 | 成本变化率 | 边际成本效应 |
---|---|---|---|---|
0.5× | $14,315.79 | 986.75单位 | -32.0% | 基准 |
0.8× | $18,369.45 | 986.75单位 | -12.8% | $4,053.66/0.3倍数 |
1.0× | $21,068.08 | 986.75单位 | 0% | $2,698.63/0.2倍数 |
1.2× | $23,762.01 | 986.75单位 | +12.8% | $2,693.93/0.2倍数 |
1.5× | $27,802.90 | 986.75单位 | +32.0% | $4,040.89/0.3倍数 |
关键发现:
-
线性成本关系:总成本与惩罚权重倍数呈完美线性关系,表明模型在当前参数范围内具有良好的数学性质
-
未满足需求不变:在所有测试倍数下,未满足需求保持恒定(986.75单位),说明当前网络容量是约束瓶颈,而非惩罚成本
-
边际成本递增:随着惩罚权重增加,边际成本呈现递增趋势,符合经济学原理
-
决策稳健性:惩罚权重的变化不影响最优决策变量的分配模式,表明当前解具有较强的稳健性
可视化分析
生成的图表类型
-
网络拓扑图 (
network_topology.png
)- 显示仓库和需求点的地理分布
- 标识有效的预定位连接关系
- 可视化网络结构的合理性
-
成本分解图 (
cost_breakdown.png
)- 饼图展示四类成本的占比
- 突出惩罚成本的主导地位
- 便于理解成本结构
-
场景性能对比图 (
scenario_performance.png
)- 对比各场景的服务水平和未满足需求
- 显示场景概率权重
- 分析灾害严重程度的影响
-
资源利用率图 (
resource_utilization.png
)- 对比各需求点的食物和能源利用率
- 识别资源配置的不平衡性
- 指导资源优化方向
-
决策变量热力图 (
decision_heatmaps.png
)- 四个子图展示预定位决策、运输成本、总价值分布
- 热力图形式直观显示决策模式
- 便于识别关键的仓库-需求点对
-
场景详细对比图 (
scenario_comparison.png
)- 多维度分析各场景的需求、供应、缺口
- 服务水平趋势分析
- 各节点在不同场景下的表现
-
仓库性能分析图 (
warehouse_performance.png
)- 各仓库的预定位量、利用率、供应能力对比
- 识别仓库效率差异
- 支持仓库扩容决策
-
敏感性分析图 (
sensitivity_analysis.png
)- 惩罚权重对总成本和未满足需求的影响
- 成本效率分析
- 参数稳健性评估
项目文件结构
核心代码文件
├── main.py # 主程序入口,完整执行流程
├── config.py # 配置参数,模型设置
├── data_manager.py # 数据生成和管理
├── disaster_relief_model.py # 核心优化模型实现
├── result_analyzer.py # 结果分析和报告生成
├── visualizer.py # 可视化图表生成
├── test_model.py # 模型测试和验证
└── requirements.txt # 依赖包列表
输出文件
├── model_parameters.xlsx # 模型参数详细信息
├── results/
│ ├── optimization_results.xlsx # 完整优化结果
│ ├── network_topology.png # 网络拓扑图
│ ├── cost_breakdown.png # 成本分解图
│ ├── scenario_performance.png # 场景性能图
│ ├── resource_utilization.png # 资源利用率图
│ ├── decision_heatmaps.png # 决策变量热力图
│ ├── scenario_comparison.png # 场景详细对比
│ ├── warehouse_performance.png # 仓库性能分析
│ └── sensitivity_analysis.png # 敏感性分析图
模型优势与创新点
1. 数学模型的严谨性
- 完整的两阶段框架:严格区分预定位决策和场景响应决策,符合实际决策时序
- 多资源协调优化:同时考虑食物和能源的联合优化,体现资源间的依赖关系
- 随机规划方法:通过场景概率加权处理不确定性,比确定性模型更贴近现实
- 约束条件完备:涵盖容量、需求、能源依赖、供应能力等多重约束
2. 技术实现的先进性
- 模块化架构:清晰的代码结构,便于维护和扩展
- 高效求解:使用成熟的线性规划求解器,保证求解效率和稳定性
- 全面测试:6个测试用例覆盖数据生成、模型构建、求解验证等关键环节
- 错误处理:完善的异常处理机制,提高程序健壮性
3. 分析功能的全面性
- 多维度分析:成本分解、性能指标、敏感性分析等多角度评估
- 可视化丰富:8种不同类型的图表,全方位展示结果
- 决策支持:提供具体的预定位和运输决策建议
- 参数优化:通过敏感性分析指导参数调整
4. 实用价值的突出性
- 决策指导:为灾前预定位和灾后响应提供量化决策依据
- 资源配置:优化有限资源在空间和时间上的分配
- 风险管理:通过场景分析评估不同灾害程度下的系统表现
- 成本控制:平衡预定位成本、运输成本和服务水平
结果解释与管理启示
1. 预定位策略建议
食物预定位:
- 总量825.90单位,分布在5个需求点
- 重点向需求点3(高惩罚权重)和需求点1(中心位置)倾斜
- 利用率达到90.3%,预定位策略较为充分
能源预定位:
- 总量308.48单位,能源/食物比例约为0.37
- 能源利用率仅45.7%,存在优化空间
- 建议增加能源预定位量或调整分布策略
2. 风险管理建议
场景应对策略:
- 轻微和中等灾害:当前配置可完全满足需求
- 严重灾害:需要启动应急预案,接受18%的服务水平下降
- 极端灾害:需要外部援助,当前系统只能满足40%的需求
风险缓解措施:
- 增加仓库供应能力,特别是食物供应能力
- 建立多级响应机制,根据灾害程度调整资源配置
- 加强与外部救援组织的协调机制
3. 成本优化建议
成本结构优化:
- 惩罚成本占比过高(63.9%),应重点关注
- 通过增加预定位投入,可能降低总体期望成本
- 运输成本相对合理,网络布局基本优化
投资优先级:
- 优先增加仓库供应能力(降低惩罚成本)
- 其次优化能源预定位策略(提高利用率)
- 最后考虑网络结构调整(降低运输成本)
模型局限性与改进方向
1. 当前局限性
- 静态网络结构:未考虑灾害对运输网络的破坏
- 单一资源类型:食物和能源类型相对简化
- 确定性参数:部分参数(如运输成本)假设为确定值
- 线性关系假设:实际中可能存在规模经济效应
2. 改进方向
- 动态网络模型:考虑灾害对基础设施的影响
- 多品种资源:细化食物和能源的具体类型
- 随机参数:将更多参数建模为随机变量
- 非线性扩展:考虑规模经济和容量限制的非线性效应