✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
近年来风电技术不断发展,风电在电网的渗透率不断增加,但风能本身间歇性的特点使其对电网的稳定性和安全性造成了不小的影响.为此,需要对风电的功率预测和风电场并网的稳定性展开研究.通过研究风电功率预测问题,解决风电输出功率不稳定而给电网带来的调度困难等问题,电网根据预测的功率值可以使风电更平稳的并入;通过研究风电场并网的稳定性问题,解决风电接入后风电场附近电压,功率的波动问题,从而保证大电网安全稳定地运行.论文首先介绍了课题的研究背景,意义和目前的研究现状,接着对几种在研究论文和工程实践中常出现的典型智能优化算法做了相关的介绍,分析了它们的基本原理及各自的特点与不足之处,为之后选择合适的智能优化算法用于本文的研究奠定了理论基础.其次,针对传统风电功率预测模型对未来一段时间内的风电功率预测误差较大的问题,灰狼优化的长短期记忆模型(GWO-LSTM)的预测精度整体趋势较好.
1.2 LSTM模型
⛄ 部分代码
function [BestFitness, gbest, zz] = GWO(N, maxgen, X, fitness, lb, ub, dim, fobj)
%%
[bestfitness, bestindex] = sort(fitness);
gbest = X(bestindex(1), :); % 群体最优极值
fitnessgbest = bestfitness(1); % 种群最优适应度值
% 初始化alpha, beta和delta_pos
Alpha_pos = gbest;
Alpha_score = fitnessgbest;
Beta_pos = X(bestindex(2), :);
Beta_score = bestfitness(2);
Delta_pos = X(bestindex(3), :);
Delta_score = bestfitness(3);
%% 初始结果显示
disp(['初始位置:', num2str(gbest)]);
disp(['初始解:', num2str(fitnessgbest)]);
%% 迭代
for gen = 1:maxgen
% a = aini-(aini-afin)*exp(gen/maxgen-1); % a从2线性减小到0
% a = ainitial/(1+exp(mu*gen/maxgen-k));
a=2-gen*(2/maxgen); % a从2线性减小到0
% 更新包括omegas在内的种群的位置
for i = 1:N
S = X(i, :);
for j = 1:dim
r1 = rand(); % r1是[0,1]中的随机数
r2 = rand(); % r2是[0,1]中的随机数
A1 = 2*a*r1-a; % 公式(4)
C1 = 2*r2; % 公式(5)
D_alpha = abs(C1*Alpha_pos(j)-X(i, j)); % 公式(6)-第一部分
X1 = Alpha_pos(j)-A1*D_alpha; % 公式 (7)-第一部分
r1 = rand();
r2 = rand();
A2 = 2*a*r1-a; % 公式(4)
C2 = 2*r2; % 公式(5)
D_beta = abs(C2*Beta_pos(j)-X(i, j)); % 公式(6)-第二部分
X2 = Beta_pos(j)-A2*D_beta; % 公式 (7)-第二部分
r1 = rand();
r2 = rand();
A3 = 2*a*r1-a; % 公式 (4)
C3 = 2*r2; % 公式 (5)
D_delta = abs(C3*Delta_pos(j)-X(i, j)); % 公式(6)-第三部分
X3 = Delta_pos(j)-A3*D_delta; % 公式 (7)-第三部分
X(i, j)=(X1+X2+X3)/3; % 公式 (8)
end
% 边界处理
X(i, X(i, :) > ub) = ub;
X(i, X(i, :) < lb) = lb;
% 判断
fit = fobj(X(i, :));
if fit < fitness(i)
fitness(i) = fit;
else
X(i, :) = S;
end
end
% 更新
[bestfitness, bestindex] = sort(fitness);
gbest = X(bestindex(1), :); % 群体最优极值
fitnessgbest = bestfitness(1); % 种群最优适应度值
% 初始化alpha, beta和delta_pos
Alpha_pos = gbest;
Alpha_score = fitnessgbest;
Beta_pos = X(bestindex(2), :);
Beta_score = bestfitness(2);
Delta_pos = X(bestindex(3), :);
Delta_score = bestfitness(3);
%% 每一代群体最优值存入zz数组
zz(gen) = Alpha_score;
gbest = Alpha_pos;
%% 显示每代优化结果
display(['At iteration ', num2str(gen), ' the best fitness is ', num2str(zz(gen))]);
end
BestFitness = zz(end);
%% 最终结果显示
disp(['最优位置:', num2str(gbest)]);
disp(['最优解:', num2str(zz(end))]);
% %% 绘图
⛄ 运行结果
⛄ 参考文献
[1]王立辉, 杨辉斌, 王银堂,等. 基于GWO-LSTM的丹江口水库入库径流预测[J]. 水利水运工程学报, 2021(6):9.
[2]周宇健. 基于智能优化算法的风电功率预测及并网稳定性研究.