前言
2023年,我国可再生能源新增装机容量2.4亿kW,约占全球可再生能源新增装机容量的50%以上。预计到2050年,我国风电、光伏年发电量可达全年总发电量的63.6%。大力发展可再生能源可有效缓解资源枯竭与环境污染问题,但可再生能源具有波动性与随机性,其大规模接入使电力系统的结构、运行特性变得复杂,同时可再生能源装机规模与系统消纳能力有限的矛盾致使“弃风、弃光”现象大量存在。伴随着未来风电平价上网,新能源电站配置储能可能面临更大的经济压力。在上述背景下,亟须开展适用于平抑风电波动的新能源电站储能配置方法研究。
自适应网格多目标哈里斯鹰算法
哈里斯鹰算法是一种基于仿生学的优化算法,它是由哈里斯鹰捕食猎物的行为所启发而来的。该算法通过模拟哈里斯鹰捕食猎物的协同行为,来寻找优化问题的最优解。该算法的基本思想是将待优化问题转化为1组个体,每个个体都对应1个解空间中的可能解。通过模拟哈里斯鹰捕食猎物的协同行为,算法将个体分为2类,即探索者和开发者。探索者负责在解空间中寻找潜在的最优解,而开发者则负责在已知最优解的基础上进行优化。具体来说,哈里斯鹰算法分为探索阶段和开发行为2个阶段。
探索阶段
在探索阶段,哈里斯鹰算法通过群体智能的方式进行全局搜索。这个阶段主要的特点是随机性和探索性。在这个阶段,哈里斯鹰算法使用一种基于竞争的机制来进行个体的选择。它的基本思想是通过个体之间相互竞争寻找最优的解。
开发行为
在开发行为阶段,哈里斯鹰算法会对前一阶段选出来的一些较优解进行进一步的优化。这个阶段的特点是确定性和利用性。在这个阶段,哈里斯鹰算法使用一种基于协作的机制来进行个体的选择。它的基本思想是,个体之间相互协作,共同优化最优解。在这个过程中,哈里斯鹰算法使用了4种不同的策略来进行搜索,分别是:
策略1:侦察。侦察是指随机生成新的解并计算其适应度,以寻找新的潜在解。
策略2:转移。转移是指通过对优秀解的学习和借鉴来改善当前解的策略。
策略3:随机游走。随机游走是指通过随机生成的步长来探索解空间的策略。
策略4:局部搜索。哈里斯鹰算法的局部搜索是指在当前解的附近区域进行搜索的策略。
Pareto最优解集
找到Pareto最优解集的过程通常是通过多次评估候选解来完成的。在每次评估中,多目标优化算法会根据评估结果确定当前解的支配关系,并根据支配关系更新候选解的集合。如果当前解不被其他解支配,则将其添加到 Pareto 最优解集中。通过反复执行这个过程,多目标优化算法能够找到1组Pareto最优解,这些解可以为决策者提供一个权衡不同目标之间的决策方案。
多目标哈里斯鹰储能配置步骤:
步骤1:定义储能配置问题的目标函数和约束条件。
步骤2:初始化多目标哈里斯鹰算法的参数,包括个体数、迭代次数、逃逸能量等。
步骤3:初始化哈里斯鹰个体的位置和速度。
步骤4:根据目标函数和约束条件更新哈里斯鹰个体的位置和速度。多目标哈里斯鹰储能配置算法中的位置和速度更新方法。
步骤5:对于更新后的哈里斯鹰个体位置,进行约束处理。如果某个个体的位置不符合约束条件,则需要对其位置进行调整。
步骤6:划分和组织解空间。在储能配置问题中,自适应网格用于划分和组织解空间。每个哈里斯鹰个体的位置映射到最近的网格点上,并标记该网格已被访问。如果某个个体的位置不符合约束条件,则将其标记的网格标记为无效。根据个体位置的分布情况,动态调整自适应网格的大小和分辨率。将个体划分到网格中后,可以计算每个网格内个体的平均适应值,并选择具有最优适应值的网格作为当前网格最优位置。将当前网格最优位置与全局最优位置进行比较,更新全局最优位置。最后,根据全局最优位置计算优化问题的解。
程序介绍
本程序采用模型预测控制对风电的出力波动进行平抑,构建以系统平均日总成本最小和储能配置容量最优为目标的储能容量配置模型,通过多目标哈里斯鹰优化算法对模型进行求解,得到经济性最优的储能系统容量配置结果。程序中算例丰富,注释清晰,干货满满,创新性和可扩展性很高,足以撑起一篇高水平论文!下面对程序做简要介绍!
程序适用平台:Matlab+Yalmip+Cplex
程序结果
部分程序
Pw=xlsread('数据.xlsx','B2:B102'); %预测风电
Ps=xlsread('数据.xlsx','C2:C102'); %实际风电
global t global Pamax
Pamax=8.6;Eamax=36.8;Ea0=Eamax*0.5;
for k=t:1:t+5 %因为模型预测控制步长为5,所以这里多跑5个值,给模型预测控制用
%这里开始是预测误差补偿
Pw1(k)=(1+0.1)*Pw(k);%划分预测误差上下限,正负10%
Pw2(k)=(1-0.1)*Pw(k);
if Ps(k)>Pw1(k)%超出上边界
D(k) m=[D(k) Pamax Eamax*0.9-Ea0];
Pa(k)=min(m);%储能充电
elseif Ps(k)<Pw2(k)%超出下边界
D(k)n=[abs(D(k)) Pamax Ea0-Eamax*0.1];
Pa(k)=-min(n);%储能放电
Pa(k)=0;%在偏差允许范围内,不动作
Psy(k)=Ps(k)-Pa(k);%补偿预测后的风电功率
m=[D(k) Pamax Eamax*0.9-Ea(k-1)];%跟上面一样,只是把Ea0换为Ea(k-1)
Pa(k)=min(m);elseif Ps(k)<Pw2(k)D(k)
Psy(k)=Ps(k)-Pa(k);%补偿预测后的风电功率
%分割线,预测误差补偿结束这里是储能MPC平抑波动
global y0global y01
global rglobal Ees
global SOC1 SOC1(t)=SOC(t);
U=[Pamax;100;0.9;Pamax;100;0.9;Pamax;100;0.9;Pamax;100;0.9;Pamax;100;0.9];
L=[-Pamax;0;0.1; -Pamax;0;0.1;-Pamax;0;0.1;-Pamax;0;0.1;-Pamax;0;0.1];
f=@(y)y(1)^2+y(4)^2+y(7)^2+y(10)^2+y(13)^2+(y(3)-0.5)^2+(y(6)-0.5)^2+(y(9)-0.5)^2+(y(12)-0.5)^2+(y(15)-0.5)^2;
options = optimoptions(@fmincon,'MaxFunctionEvaluations',10000);
y = fmincon(f,zeros(15,1), [],[],[],[],L,U, @Y1, optimset('Display', 'off'));
U(t)=y(1);%储能平抑波动出力W1(t)=y(2);%平抑后风电并网功率
Ea(t)=Ea(t)+Pa2(t);%更新平抑波动后储能剩余容量,用于下一时刻补偿预测误差
部分内容源自网络,侵权联系删除!
欢迎感兴趣的小伙伴关注并私信获取完整版代码,小编会不定期更新高质量的学习资料、文章和程序代码,为您的科研加油助力!