Skip to content

Repository files navigation

武汉大学水利水电学院水库调度课程设计

基于 R 语言实现的 SX 水库中长期优化调度模型,采用 DDDP(逐次逼近动态规划)求解,以总发电量最大为目标,完成代表年法与长系列法两种调度方案的计算与结果分析。

项目简介

项目以 Data.xlsx 中的工程资料与水文资料为输入,分别完成:

  • Run1944.r:以 1944 年为计划年的代表年法优化调度;
  • RunAll.r:1941-1990 年共 50 年长系列优化调度。

两个脚本共用同一套数据读取、曲线拟合与 DDDP 求解框架,输出逐旬水位、流量、发电量等详细结果,以及水位过程线、流量对比、收敛分析等图表。

项目结构

文件 说明
Run1944.r 1944 计划年优化调度主程序
RunAll.r 1941-1990 长系列优化调度主程序
Data.xlsx 工程资料与水文资料(入库流量、水位库容、关系曲线等)
dddp_1944_detailed_results.xlsx 1944 年逐旬详细调度结果
dddp_results_50yr.rds 50 年 DDDP 求解结果缓存
中长期优化调度任务报告.pdf 课程设计报告
大作业 中长期优化调度任务书.doc 作业任务书
README.md 项目说明

运行脚本还会在项目目录下生成对应的 CSV 结果文件和 PNG 图表。

模型概述

目标函数为总发电量最大:

$$E^{*}(T)=\max\left\lbrace\sum_{t=1}^{n}\left[P(t)\Delta T_{h}\right]\right\rbrace$$ $$\text{其中}\quad P(t)=\min\lbrace KQ_{fd}(t)H(t),P_{yx}(t)\rbrace$$

模型主要约束包括:

  • 水量平衡约束;
  • 库水位上下限约束(动态水位约束 DDT);
  • 下游水位与水头计算(净水头 = 平均上游水位 - 下游水位 - 水头损失);
  • 机组预想出力约束;
  • 保证出力约束(低于保证出力时施加线性惩罚);
  • 发电流量过流能力约束;
  • 泄流能力约束;
  • 最小下泄流量约束(4070 m³/s);
  • 初始与终止水位约束(171.28 m)。

DDDP 求解流程:由 DDT 允许最高水位构造初始轨迹,围绕当前轨迹建立搜索走廊,在走廊内按 0.2 m 步长离散水位进行逆向递推动态规划,通过迭代逐步逼近最优解。迭代最多 5 次,当发电量改进小于 0.01 亿 kW·h 且轨迹变化小于 0.01 m 时提前收敛。

使用方法

在 RStudio 中打开 Run1944.rRunAll.r 并运行即可。脚本会自动将工作目录设置为脚本所在目录,要求 Data.xlsx 与脚本位于同一目录。

建议先运行 Run1944.r 验证流程,再运行 RunAll.r 完成长系列计算。如果没有dddp_results_50yr.rds缓存数据,RunAll.r 首次运行需要执行约 20 分钟的 DDDP 迭代,结果会缓存到 dddp_results_50yr.rds,之后再次运行直接加载缓存;如需强制重新优化,删除该缓存文件即可。

dddp_results_50yr.rds在本项目中已经给出,读者可以快速复现结果,但推荐自己运行完整的迭代流程

输出结果

Run1944.r 主要输出:

  • dddp_1944_detailed_results.csv:逐旬详细调度结果;
  • dddp_1944_water_level.png:优化水位过程线;
  • dddp_1944_power_generation.png:发电量过程线;
  • dddp_1944_inflow.png:入库流量过程线;
  • dddp_1944_convergence.png:迭代收敛过程;
  • dddp_1944_flow_comparison.png / dddp_1944_flow_stack.png:流量对比与组成图;
  • 每一次迭代轨迹图 dddp_1944_iteration_N.png

RunAll.r 主要输出:

  • dddp_50years_optimization_results.csv:逐旬全过程结果;
  • annual_operation_statistics.csv:逐年统计结果;
  • optimization_trajectory_vs_ddt.png:50 年优化轨迹与 DDT 对比;
  • inflow_vs_energy.png:年入库流量与年发电量关系;
  • monthly_analysis.pngseasonal_analysis.png:月均与季节分析;
  • performance_summary.pngdddp_convergence_analysis.png:性能与收敛分析;
  • inflow_outflow_hydrograph.pngflow_statistics_summary.png:流量过程与统计;
  • 每一次迭代轨迹图 dddp_50years_iteration_N.png

关键结果

报告中给出的主要结果:

指标 1944 代表年 50 年长系列
总发电量 919.67 亿 kW·h 46009.10 亿 kW·h
年均发电量 - 920.18 亿 kW·h
平均水位 162.11 m 162.11 m
保证出力满足率 88.89% 79.17%
平均入库流量 13271 m³/s 13927.65 m³/s
平均弃水流量 10 m³/s 438.59 m³/s

脚本实际输出以本次运行生成的文件为准。

运行环境

  • R 4.0 及以上;
  • RStudio(脚本通过 rstudioapi 定位脚本目录);
  • 依赖包:readxldplyrpurrrtidyrggplot2pngscales

说明

本项目为课程学习用途。数据、脚本和报告用于水库调度课程设计与学习交流,欢迎提出问题和改进建议。

About

武汉大学水利水电学院水库调度课程的课程设计

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages