适用平台:Matlab+Yalmip+Cplex
程序以综合能源系统/微电网为研究对象,将微电网的运行费用和环境污染成本作为优化目标,考虑冷热电负荷和设备运行要求的约束,建立的微电网的多目标优化模型,使用改进多目标灰狼算法算法进行求解。程序中算例丰富、注释清晰、干货满满,可扩展性和创新性很高!下面对文章和程序做简要介绍!
程序创新点:
模型的优化求解使用改进的多目标灰狼优化算法,并针对微网运行约束较多,算法前期探索能力不足的问题,对算法进行改进,得到多目标问题的Pareto最优集。
通过对微电网优化模型的简化可以有效减少灰狼的维数从而缩短求解时间:风机和光伏电池的维护成本相对较低且没有燃料费用和污染排放,故在优化时可以按照可能的最大功率出力。
主要工作:
针对冷热电联供型微电网运行调度的优化问题,为实现节能减排的目标,以微电网运行费用和环境污染成本为优化目标,建立了包含风机、微型燃气轮机、余热锅炉、溴化锂吸收式制冷机等微源的微电网优化模型。模型的优化求解使用改进的多目标灰狼优化算法,得到多目标问题的Pareto最优解集,并针对微电网优化问题约束条件较多,算法前期探索能力不足的问题,对算法进行改进。仿真结果表明,改进算法的求解速度和全局搜索性能优于原始算法,文中方法可以为冷热电联供型微电网优化调度提供建议,实现根据用户需求的微电网灵活调动,达到减少运行费用和污染气体排放的效果。
1. 多目标灰狼优化算法
灰狼优化算法是受狼群合作捕食过程启发而提出的新型群体智能优化算法。2015年又在此基础上提出了多目标灰狼优化算法(MOGWO)。
灰狼群可分为四个阶层,分别为a、b、d和w。灰狼优化算法就是参考灰狼的捕食过程建立的。算法中,狼的位置即代表所求问题的一个可能的解。如果搜索空间为d维,则每只灰狼的位置记作Xi(x1i,x2i,…,xdi)。灰狼之后按式(1)更新位置,按式(2)进行包围:
式中Xp(k)表示猎物目前所在位置;C和A为影响系数,其计算公式如下:
式中R1和R2为[0,1]之间的随机数,a按照式(28)线性减小:
在灰狼优化算法中,将每次迭代中目标函数值最优的三个位置依次分配给a、b和d,其余个体根据这三个最优个体位置更新自己的位置。相较于GWO,MOGWO中引入了外部种群Archive并对a、b和d的选择策略进行了改动。Archive用于储存每一代产生的优秀个体,即非支配解。并且按照一定的策略进行更新和删除。MOGWO算法直接从Archive采用轮盘赌的方式选择三只优秀个体作为a、b和d。最终,外部种群Archive中的个体即为优化问题的一组Pareto最优解。
2. 改进多目标灰狼优化算法
微电网的优化问题是非线性的多约束问题,在利用原始MOGWO算法进行求解的过程中,众多约束条件使得算法的计算时间增加,为了改善这一问题本文对MOGWO算法及优化模型进行了如下改进:
(1)优化模型的简化。通过对微电网优化模型的简化可以有效减少灰狼的维数从而缩短求解时间:风机和光伏电池的维护成本相对较低且没有燃料费用和污染排放,故在优化时可以按照可能的最大功率出力;
(2)灰狼初始化和位置更新的方式改变。在原始MOGWO中灰狼个体位置的每一维坐标是同时生成的,即每个微源在24个小时内的出力同时生成。原算法灰狼的位置向量表示为:
式中a,b,c代表不同的微源,数字代表不同的时段。如某个设备在某个时段的功率不符合约束的要求,整个灰狼的位置都要进行重新生成,造成运算量增加。针对微电网的约束和时间段的相关性,本文将每只灰狼个体位置按时间分为24组,将同一时间段的设备出力分为一组进行初始化和更新,即:
判定满足约束时再进行下一组设备出力的初始化或更新,24个组都满足约束后进行合并和后续运算。这种做法的优势在于,当某个时段的设备出力不符合约束时,只需重新生成该时段的设备出力而非个体的所有时段的设备出力,从而缩短计算时间。
(3)MOGWO算法的前期探索能力不足,对于式(5)中的控制参数a而言,a越大则算法的探索能力越强。在文中将线性缩小的a改为式(8)的幂函数形式,以提高算法前期的探索能力,经多次求解发现当指数为4时优化效果最佳。
改进后的MOGWO算法的主要步骤如下:
Step 1:设置灰狼的数量、最大迭代次数、搜索范围和外部种群Archive的参数等控制参数;
Step 2:灰狼初始化。随即生成灰狼个体,检验是否满足约束条件,直至生成足够数量的合格个体。计算灰狼的目标函数值,确定非支配个体,更新Archive;
Step 3:从Archive中按轮盘赌法选择a、b和d狼,其余灰狼根据a、b和d狼的位置进行更新,检验新生成的灰狼是否满足约束条件,直至生成足够数量的合格灰狼个体;
Step 4:计算灰狼的目标函数值,确定非支配个体,更新Archive;
Step 5:重复步骤3、步骤4,直至达到最大迭代次数;
Step 6:输出Archive中的灰狼位置,即为微电网优化问题的一组Pareto解集。
程序结果:
部分程序:
%种群初始化
ub(1,1:24 )=40; %把上下边界像单个粒子的位置一样,横向排列
GreyWolves_num=500;
MaxIt=1000; % Maximum Number of Iterations
% Initialization 初始化
GreyWolves = zeros( GreyWolves_num , nVar+2+2 ); %创建空粒子
%首先是MT初始化
%加一个向上取整函数,可以方便控制微燃机出力,也方便画图,也方便筛选粒子。
%下面是储热功率初始化
%上面是概率生成功率P_BA,没有考虑超出容量限制的问题,下面将解决。
if Soc > 250 || Soc < 50 %如果越限
Soc=Soc-GreyWolves(i,j) ; %撤销容量
GreyWolves(i,j) =0; %撤销功率
GreyWolves(i,nVar+1:nVar+2)= Double_CC_fitness(GreyWolves(i,1:nVar/2), GreyWolves(i,1+nVar/2:nVar));
%首先非支配排序GreyWolves = Non_Dominated( GreyWolves ,nVar,2 );
获取paroto等级为0、1、2的粒子,为选取头狼做准备
Graywolves_rank_0=Get_Graywolves_rank_0(GreyWolves );
% Graywolves_rank_1=Get_Graywolves_rank_1(GreyWolves );
% Graywolves_rank_2=Get_Graywolves_rank_2(GreyWolves );
%头狼的选取,首先应该是先0,后1,后2
%其次是尽量选择拥挤度小的
%把整群个体数设置的大一点,确保第一代就极有可能使得存储库大于3只狼
%其次是,利用Alpha、Beta、Delta作为基准位置,对所有粒子进行更新。
A1=2*a*r1-a; % 计算系数A,Equation (3.3)C1=2*r2; % 计算系数C,Equation (3.4)
% Alpha狼位置更新
D_alpha=abs(C1*Alpha(1,j)-GreyWolves(i,j)); % Equation (3.5)-part 1
%因为22点是峰时,23,24点是谷电,并且夜间风大。所以我大概率假设,23,24在充电。
%充电两小时后,为5+2.5*2=10kWh;
%首先是把储热放热整定为100的倍数
%上面是概率生成功率P_BA,没有考虑超出容量限制的问题,下面将解决。
Soc=Soc+GreyWolves(i,j) ;Soc > 250 || Soc < 50 %如果越限
Soc=Soc-GreyWolves(i,j) ; %撤销容量GreyWolves(i,j) =0; %撤销功率
部分内容源自网络,侵权联系删除!
欢迎感兴趣的小伙伴关注并私信获取完整版代码,小编会不定期更新高质量的学习资料、文章和程序代码,为您的科研加油助力!