做微电网优化调度研究的人,十有八九都会碰到同一个坎儿:单目标模型写出来容易,可论文审稿人或导师第一句话就问“你的目标函数为什么只选了经济性?排放呢?电压呢?储能寿命呢?”不是不想做多目标,是一旦多个目标同时优化,传统权重法那个权重系数调起来真的要命——调一次权重跑一次优化,跑完发现结果不合理再调,一来二去一周就没了。
这篇研究里我用NSGA-III算法直接一次生成一整条三维Pareto前沿,让决策者在成本和排放之间做主,而不是事前拍脑袋定权重。具体做了什么事情:搭建了一个含光伏、风电、微型燃气轮机和储能电池的微电网模型,以运行成本最低、污染物排放最少、净负荷波动最小为三个优化目标,用Matlab完整实现了NSGA-III求解流程,最后输出三维Pareto前沿并给出折中解选取方法。这套流程适合做微电网调度方向的研究生、做园区能源管理的工程师,以及想系统学习NSGA-III在电力领域落地的同学参考。代码思路和关键函数我都会拆开讲,照着改就能用在你的算例上。
1. 微电网多目标优化调度研究到底在做什么
1.1 一个典型微电网调度的物理图景
先把这个问题的物理图景说清楚。我做的微电网算例是一个典型的交直流混合结构:屋顶光伏(PV)、分布式风电(WT)、微型燃气轮机(MT)、蓄电池储能(BT),通过公共连接点(PCC)与大电网双向交互。整个系统给一个包含工业负荷和居民负荷的馈线供电,调度周期是24小时,调度间隔为1小时。
这种结构在真实园区和偏远地区微电网里非常常见,它带来的调度问题是:每个时刻都要决定光伏发多少、风机发多少、燃气轮机发多少、储能是充电还是放电、充放多少、大电网是买电还是卖电。这是个典型的顺序决策问题,而且变量之间互相耦合——白天光伏出力大,储能可能充电留着晚上放;晚上光伏归零,燃气轮机和购电成为主力。这些决策叠在一起,直接决定了整个系统一天的成本和排放。
但如果只做“单目标——成本最低”,模型会毫不犹豫地把燃气轮机砍到最小出力,然后全靠深夜低谷电价购电,白天高峰再卖电套利。这个结果表面上经济性很好,实际上完全忽略了排放约束和配电网运行安全性。所以在做调度方案时,必须把这个“只盯着一个指标”的思维改掉。
1.2 为什么单目标不够用:三个目标之间的冲突关系
我用三个目标来刻画微电网调度方案的好坏:
第一,系统总运行成本最小化。包括微型燃气轮机的燃料成本、各设备的运行维护成本、从大电网购电的成本,再减去向大电网售电的收益。
第二,污染物排放量最小化。燃气轮机的NOx和CO2排放、从大电网购电折算的上游火电排放都要算进去。
第三,净负荷波动最小化。净负荷定义为总负荷减去光伏和风电出力,再考虑储能充放电后的功率曲线。这个目标的值越小,说明微电网对大电网表现的“外部特性”越平滑,对配电网调峰压力越小。
这三个目标之间是天然冲突的。燃气轮机响应快、成本相对可控,但排放高;大电网深夜购电虽然成本低,但折算排放受电网排放因子影响,未必干净;储能削峰填谷能改善净负荷波动,但过度调用会增加运行维护成本,也影响电池循环寿命。所以不存在一个“全都要”的绝对最优解,只能找到一组Pareto最优解集,让决策者根据自己的偏好去选。
这也是我在这篇文章里不推荐加权法的根本原因:加权法本质上是把三个目标压成一个标量,一次求解只给一个解。你想看全局权衡关系?那就必须遍历大量权重组合,计算量上去了不说,权重取值对结果高度敏感,而且对非凸Pareto前沿无能为力。NSGA-III这种多目标进化算法一次运行就能给出整条前沿,这才是做研究和写论文该有的工具。
1.3 为什么是NSGA-III:算法选型的三条理由
选NSGA-III而不是NSGA-II、MOPSO或MOEA/D,我主要基于三条判断:
第一,这算例是3个目标,属于典型的高维(指目标空间维度)多目标问题。NSGA-II在高维目标空间里严重依赖拥挤距离来维持多样性,但拥挤距离在高维下区分度很差,最后容易导致结果堆积在一小块区域。NSGA-III用参考点机制替代拥挤距离,专门就是为了对付3个及以上目标的问题。这也是我做完对比实验后最直观的感受,后面第4章会给出数据。
第二,NSGA-III的参考点机制天然适合工程决策。参考点相当于在目标空间里铺了一张“均匀的网”,算法沿这些参考方向搜索,出来的Pareto前沿覆盖度好,能让决策者看到各个权衡区间的解。这对微电网调度场景很实用——同一个园区,夏天和冬天的负荷特性完全不同,一次跑完拿到完整的“成本-排放-波动”三角关系,比单点解有用得多。
第三,Matlab生态成熟。NSGA-III的参考点生成、非支配排序、归一化这些操作,用Matlab的矩阵运算写起来非常顺手,调试时又可以可视化每一步的种群分
