目录
问题建模
1. 目标函数
2. 约束条件
3. 平衡机组反解
多目标白鲸优化算法
1. Pareto 支配与非支配解筛选
2. 外部存档
3. 自适应网格维持分布
4. 折衷解的选取
模型流程
实验结果分析
完整代码获取
最近,后台有不少小伙伴问我,多目标优化用的算法基本都被写烂了,NSGA2、MOPSO、MOEAD,凡是能拿来的经典算法前人都做过了,还能怎么搞出新意?
实际上,单目标智能优化算法和多目标框架结合是一个不错的方案。我们将多目标框架和新颖的白鲸优化算法进行结合,目前几乎看不到成熟的公开实现。换句话说,用的人极少,重复率极低,审稿人看到也会眼前一亮。
更关键的是,在电力系统调度里,传统方法要么只优化一个目标,要么把两个目标简单加权,权值还是固定的,无法反映两者之间真实的权衡关系。而多目标白鲸算法能一次性给出一整条 Pareto 前沿,并通过模糊隶属度法作为最优折衷方案,作为创新点新颖度完全够,
因此,今天给大家带来一期多目标白鲸算法MOBWO求解电力系统经济排放调度问题的完整 Matlab 代码,把新颖算法和调度问题结合到一个框架里,可以说非常好出成果。
您只需做的工作:一键运行main文件即可出图出结果!代码注释清晰非常适合新手小白!需要代码不想看原理的小伙伴可直接拉到最后!
问题建模
1. 目标函数

2. 约束条件

3. 平衡机组反解

多目标白鲸优化算法
白鲸优化算法相信大家也不陌生了,它是发表在SCI一区期刊《Knowledge-based Systems》上的算法,目前被引数量也非常多,但是多目标白鲸优化算法却还没有人用。单目标白鲸算法的原理网上有很多,这里就不多说了,下面主要介绍下单目标转多目标的方法。
1. Pareto 支配与非支配解筛选

2. 外部存档
用一个外部存档单独保存历代找到的非支配解,容量设为 。它不参与位置更新,只负责记录前沿,并为种群提供引导个体。这样即使种群在迭代中丢掉了某些好解,存档里也还留着,前沿不会退化。
3. 自适应网格维持分布
只保留非支配解还不够,如果解都挤在前沿的某一小段,对调度人员就没有参考价值。代码在目标空间上划分自适应网格,把每个前沿解按目标值映射到对应网格里,统计各网格的拥挤程度。
当存档超出容量时,优先从解密集的网格里删除个体,让稀疏区域的解保留下来。网格边界随前沿范围动态调整,这样前沿始终能均匀铺满整条曲线,而不是堆在一处。
4. 折衷解的选取
前沿给出的是一整条方案带,实际调度还需要一个具体推荐方案。程序用模糊隶属度法,先算每个前沿解在各目标上的满意度,再对所有目标求和并归一化,取综合满意度最高的解作为最优折衷方案:

模型流程
初始化种群,随机生成各机组出力,计算成本与排放两个目标值
筛选非支配解,建立外部存档,划分自适应网格
进入迭代循环,逐个更新个体(探索、开发、鲸落三种行为)
对越界个体做边界处理,重新计算目标值
合并种群与存档,重新筛选非支配解并更新网格,超容时按拥挤度删减
未达到最大迭代次数则返回第 3 步
输出 Pareto 前沿,并用模糊隶属度法选出折衷方案
实验结果分析
这里的话算例采用经典的6机组经济排放调度系统,系统负荷需求283.4MW。模型同时考虑燃料成本的二次特性、污染排放的指数项,以及机组之间的网损。把前5台机组作为优化变量,第6台作为平衡机组,通过求解含网损的功率平衡方程反解出力。
当然,该算例也是经济排放调度领域最常用的标准算例,方便和文献里的其他算法直接对比,作为方法验证的基准非常合适。
废话不多说,直接来看下结果:

可以看到,帕累托解前沿光滑连续,没有断裂或聚集,说明算法的逼近能力和分布能力都不错,能提供一整段可选方案。

两个指标在前 100 代左右快速下降,之后平稳收敛,末期没有反复震荡,收敛过程干净利落。

从最低成本切换到最低排放,排放降约 15.6%,成本升约 6.6%,两目标的冲突一目了然。折衷方案在两者之间取得平衡,是兼顾经济性和环保性的合理选择。


前沿的均匀性用 Spacing 指标量化,本算例中该指标较小,各方案排布规整、间距接近,印证了自适应网格在维持解集多样性上的作用。
最后,代码也会自动给出调度结果、Spacing指标和完整三种代表性方案,可以看下图:

以上结果展示中所有图片,作者都已精心整理过代码,都可以一键运行main直接出图!
完整代码获取
如果有小伙伴想要获取以上完整代码的,可以复制下方链接到浏览器:
https://mbd.pub/o/bread/YZaUkp5rbA==




