1. 这个系统到底在优化什么:先理清“容量-调度”的双层逻辑
先把这个项目标题翻译成人话:风光互补发电,电量用来电解水制氢,氢气再去合成氨。系统可以并网运行,也可以离网孤岛运行。现在要回答两个问题——风电场、光伏电站、电解槽、储氢罐、氨合成回路各建多大容量(容量规划);在典型年或典型日的时间序列下,这些设备每小时该怎么启停、怎么出力(调度运行)。两个问题互相咬合,所以叫“容量-调度优化”。
我当初复现这个课题的时候,第一个感觉是:这不像一个单层优化问题,更像一个“先定规模、再跑运行、运行结果反过来修正规模”的循环。Cplex在这里扮演的角色是内层运行的求解器,而容量层往往要通过枚举网格、智能算法或者Benders分解等方式与内层嵌套。如果直接把所有容量变量和全年8760个小时的运行变量全部揉进一个混合整数线性规划(MILP)里,问题规模会迅速膨胀到Cplex很难在合理时间内收敛的程度。
这里需要明确一点:并网与离网是两种完全不同的优化语义。
- 并网模式:系统与外部电网存在功率交换,缺电时买电、富余时卖电(具体看是否允许反送,各论文假设差别很大)。电网实际上扮演了一个“无限大储能”,系统在极端天气下依然有功率兜底保障,所以容量配置可以相对紧凑。
- 离网模式:没有任何外部电源支撑,系统必须在任何时刻仅靠自身出力满足电-氢-氨全链条的功率需求。这要求容量配置冗余度显著提高,同时必须配置合理的储能(电储能和氢储能),否则风光波动会直接击穿整个系统的功率平衡。
复现时建议不要一上来就跑并网+离网+全年8760小时这种“大套餐”。我个人的做法是:先搭建离网模式下的典型周时间尺度模型,验证逻辑闭环;再切到并网模式,加上购售电变量;最后再扩展到全年或代表季。下面把每一步的技术细节拆开讲。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 设备的数学建模:从风光出力到氨合成塔,每个环节都是一个约束簇
整个系统的物料-能量流动主线是:风光发电 → 电解槽制氢 → 氢气缓冲储罐 → 合成氨回路 → 氨产品。中间还穿插着压缩机耗电、冷却水耗电等辅助负荷。
2.1 风光出力的时序建模
风电和光伏通常采用典型年逐时数据(风速、辐照度、温度)。实际复现时可以从MERRA-2或NASA POWER这类再分析数据中提取站点数据,也可以直接使用课题组已有的典型年气象数据。关键在于将气象数据转化为机组出力:
风电出力表达式一般写成分段函数,切入风速、额定风速、切出风速三个拐点。如果用风功率预测曲线近似,功率 (P_w) 与风速 (v) 的关系可表达为:
[
P_{w}(v) =
\begin{cases}
0 & v < v_{in} \text{ 或 } v \geq v_{out}\
P_{rated} \cdot \frac{v - v_{in}}{v_{rated} - v_{in}} & v_{in} \leq v < v_{rated}\
P_{rated} & v_{rated} \leq v < v_{out}
\end{cases}
]
光伏出力跟辐照度 (G) 和环境温度有关,常用公式是:
[
P_{pv} = P_{STC} \cdot \frac{G}{G_{STC}} \cdot [1 + \beta_T (T_{cell} - T_{STC})]
]
其中 (T_{cell}) 是电池板工作温度,(T_{STC}=25^\circ C),(G_{STC}=1000 W/m^2),(\beta_T) 是功率温度系数,取值大约在 -0.0035 到 -0.005 /°C 之间。不要小看温度修正项,在夏天高温强辐照条件下,光伏实际出力比额定折算低5%~8%,这会影响容量配置的冗余度。
2.2 电解槽的动态运行域
制氢电解槽是系统中最关键的“可控负荷”,它的数学模型直接影响优化结
