先说一个我自己的体会刚接触综合能源优化调度那会儿我一度被运行成本最小和碳排放最小两个目标折腾得够呛。用加权法把多目标压成单目标难的不是求解而是权重怎么定都有人质疑今天换一组权重明天换一组权重方案完全没法收敛出一个能说服人的结论。直到我把方法换成基于非支配排序遗传算法NSGA-II的多目标优化调度在Matlab里跑出完整Pareto前沿这才算真正解决了问题。这篇文章我打算把整个链路拆开讲清楚为什么综合能源调度本质上适合用多目标进化算法、NSGA-II在干嘛、调度模型的数学化怎么搭、Matlab代码怎么组织再到结果分析和调试中那些文档里不会写的坑。适合两类人参考一类是刚开始做综合能源系统优化方向的研究生另一类是已经在用单目标优化、想升级到多目标方案但不知道从哪下手的工程师。1. 为什么综合能源调度本质上是个多目标问题1.1 所谓综合能源到底在综合什么综合能源系统简单说就是把电、热、气、冷等多种能源形态放在一起统筹运行。典型配置包括热电联产机组CHP、燃气锅炉、电储能、热储能、分布式光伏和风电有的系统还有电转气等环节。调度任务就是在满足电负荷和热负荷的前提下决定未来24小时或更长时间尺度每个时段各设备的出力、储能充放功率、从电网买多少电。这个问题的复杂性和多设备、多时段、多约束强绑定。决策变量动辄几十个上百个设备出力之间还有耦合关系CHP发一度电往往同时产生一定热量热电比一旦定了电出力和热出力就绑在一起储能又有SOC状态在时段之间传递。所以它不是若干个独立设备各自省钱的拼盘而是整体协调问题。1.2 为什么加权求和的办法不靠谱多数人第一反应是把成本、碳排、能耗等目标乘以权重加成一个目标再用线性规划或智能算法去解。这个方法不是不能用但有几个绕不过去的坎。首先是权重本身没有物理含义。运行成本的单位是元碳排放的单位是kg两者量纲不同、量级差好几倍权重系数到底取0.7还是0.3并没有客观依据。实际项目里权重往往是领导拍脑袋定的这就有很大的随意性。其次加权法只能得到一个解而且这个解对应着某组特定权重下的偏好。一旦决策者问如果成本再高5%碳排能降多少加权法就得换权重重新跑一遍效率很低。更重要的是多目标优化里常见的非凸Pareto前沿用线性加权法是无论如何也找不全的——这是数学上已经被证明的局限。1.3 NSGA-II这类进化算法为什么适合调度问题综合能源调度本质是非线性、多约束、高维的优化问题。传统规划方法需要目标函数和约束有较好的凸性、可导性而设备效率随工况变化、储能SOC递推、整数逻辑比如充放不能同时这些东西让建模变得很棘手求导也求不利索。NSGA-II作为遗传算法家族的一员最大的优势是不需要梯度信息。它靠种群迭代、选择、交叉、变异去搜索天然能处理非线性和不连续目标。更关键的在于它是真正意义上的多目标算法一次运行得到一整套非支配解也就是Pareto前沿把成本-碳排成本-能耗之间的权衡关系一次性摊开给决策者看。这才是调度问题里决策者真正想要的东西——不是某个唯一最优解而是有哪些折中方案可选。对我来说用NSGA-II还有一个额外收获问题规模变了不用重写算法改改决策变量的编码方式、加几条约束就行。做课题、做实际项目可扩展性非常重要。2. NSGA-II的三个核心机制支配排序、拥挤度与精英保留2.1 Pareto支配与非支配排序先分清谁好谁坏多目标里判断谁更好用的是Pareto支配关系。设目标函数有3个成本、碳排、能耗解A在三个目标上都不比解B差且至少一个目标严格优于B那么A支配B。如果两个解互不支配各有优劣它们就在同一个非支配层里。NSGA-II的非支配排序就是把种群里的所有个体分层第一层是不被任何其他解支配的解集合也就是当前种群里的Pareto前沿第二层是去掉第一层后剩余解中不受支配的集合以此类推。排序本身不复杂复杂度是O(MN²)M是目标数N是种群规模。这里我插一句实际感受排序逻辑虽然简单但代码里循环嵌套容易写错下标尤其是记录被谁支配和支配谁两个关系的时候我在真实项目里见到过好几个版本在这里出bug。2.2 拥挤度距离同一层里也要分个高下如果两个解都在第一层该留谁NSGA-II的办法是看拥挤程度。把第m个目标上的所有解按值排序每个解的拥挤度距离就是它前后相邻解在第m个目标上的差值之和边界点置为无穷大。这个距离的意义很直观周围越空旷说明这个解所在的区域越少被人探索过保留它能维持多样性。我习惯用一个选房子的类比同样在Pareto前沿上有的方案区域附近挤了一堆相似解说明搜索局部过于密集有的方案周围没什么相似选择那它的代表性就更强。为了保证前沿形状完整、不塌陷成一小块优先保留身边没谁的个体效果立竿见影。2.3 精英保留策略父代子代合并再筛选NSGA-II在迭代流程上有一个很关键的设计把父代种群和子代种群合并成2N的群体再对这个合并群体做非支配排序和拥挤度距离计算最后按层级越低越好、同层内拥挤度越大越好的规则选出新的N个个体。这样做的好处是优秀的个体不会在迭代中被意外丢掉父代里的顶尖方案可以一路保留到最终代。对比早期的非精英多目标进化算法NSGA-II的收敛速度和稳定性明显提升。我在实际调试中也有同感只要精英保留逻辑不出错算法就算偶尔搜索停滞前沿也没那么容易回退。3. 综合能源系统调度模型的数学化目标函数与约束怎么定3.1 典型系统结构与决策变量设计我以最常见的电-热综合能源系统为例说。设备有CHP机组、燃气锅炉、电储能、热储能、光伏和风电外网只买电不卖电。调度周期取24小时步长1小时。决策变量就是每个时段各设备的运行点