【預(yù)測模型-ELAMN預(yù)測】基于哈里斯鷹算法優(yōu)化ELMAN神經(jīng)網(wǎng)絡(luò)實現(xiàn)數(shù)據(jù)回歸預(yù)測matlab代碼
【預(yù)測模型-ELAMN預(yù)測】基于哈里斯鷹算法優(yōu)化ELMAN神經(jīng)網(wǎng)絡(luò)實現(xiàn)數(shù)據(jù)回歸預(yù)測matlab代碼
1 簡介
風(fēng)能,作為一種重要,有潛力,無污染,可再生、可持續(xù)的能源,已經(jīng)成為全球發(fā)電最為迅速的能源之一,越來越受到世界各國的青睞。近年來,為緩解能源短缺問題,改善環(huán)境,實現(xiàn)經(jīng)濟乃至人類的可持續(xù)發(fā)展,世界各國紛紛大力發(fā)展風(fēng)能資源。然而,在實際操作中,風(fēng)能固有的波動性和間歇性通常會增加風(fēng)能入網(wǎng)的難度,致使風(fēng)電場輸出功率不穩(wěn)定,嚴重影響輸出的電能質(zhì)量,大大增加了電網(wǎng)安全性和穩(wěn)定性運行風(fēng)險,因此,風(fēng)速預(yù)測在風(fēng)電相關(guān)工作中至關(guān)重要,準確、可靠的預(yù)測結(jié)果不僅有利于調(diào)度人員事先掌握風(fēng)電場的功率變化情況,及時制定調(diào)度運行計劃,提高能量轉(zhuǎn)換效率、降低風(fēng)險,增加發(fā)電量等,同時也有利于風(fēng)電并網(wǎng)穩(wěn)定運行和有效消納,對可能存在影響電網(wǎng)安全穩(wěn)定運行的風(fēng)險及時預(yù)警,從而避免風(fēng)電功率隨機波動造成電能損耗甚至電網(wǎng)崩潰。近年來,國內(nèi)外學(xué)者進行了大量風(fēng)速預(yù)測相關(guān)研究,風(fēng)速預(yù)測水平得到一定程度的提升。單一預(yù)測模型雖簡單容易實施,但其預(yù)測精度往往較低,難以滿足風(fēng)電場發(fā)電的需求。相比之下,基于優(yōu)化算法和數(shù)據(jù)分解法的混合預(yù)測模型對風(fēng)速預(yù)測性能有很大的提升。因此,這些模型往往會降低預(yù)測結(jié)果的穩(wěn)定性,對風(fēng)電場發(fā)電以及風(fēng)電并網(wǎng)的安全性和穩(wěn)定性帶來巨大的挑戰(zhàn)。針對如上問題,本文構(gòu)建出一個基于哈里斯鷹算法和Elman神經(jīng)網(wǎng)絡(luò)的混合預(yù)測模型,本文所提出的混合預(yù)測模型不僅可以降低預(yù)測誤差,提高風(fēng)速預(yù)測精度,增強預(yù)測結(jié)果的穩(wěn)定性,同時對風(fēng)電場發(fā)電的完善,發(fā)展以及風(fēng)電并網(wǎng)安全管理也大有裨益。
Elman 神經(jīng)網(wǎng)絡(luò)是一種局部反饋遞歸神經(jīng)網(wǎng)絡(luò),包括輸入層、隱藏層、承接層和輸出層,由于其良好的動態(tài)記憶和時變能力,自1990年Elman首次提出以來,Elman神經(jīng)網(wǎng)絡(luò)在時間序列預(yù)測中得到了廣泛的應(yīng)用,但由于隨機選擇初始值和閾值,且采用梯度下降法尋優(yōu),其網(wǎng)絡(luò)學(xué)習(xí)速度較慢且預(yù)測的精度比較低。本文利用 HHO優(yōu)化 Elman神經(jīng)網(wǎng)絡(luò)的初始權(quán)值及閾值,提高了 Elman 神經(jīng)網(wǎng)絡(luò)的預(yù)測精度。
第一步 初始化 Elman 網(wǎng)絡(luò)所需參數(shù),并新建 Elman 網(wǎng) 絡(luò),net=newelm(minmax(input),[11,1],{’tansig’,’purelin’},’traingdx’),其中 input 是訓(xùn)練集數(shù)據(jù),tansig 是隱藏層的激活函數(shù),purelin是輸出層激活函數(shù),traingdx是梯度下降函數(shù);
第二步 初始化HHO各參數(shù),包括鷹的數(shù)量m 、最大迭代次數(shù)Maxiter,參數(shù)的上界ub及下界lb;
第三步 不斷迭代哈里斯鷹位置優(yōu)化網(wǎng)絡(luò),直到迭代結(jié)束形成最優(yōu)個體,其中最優(yōu)個體包括權(quán)值w1、w2及w3,閾值b1和b2;
第四步 Elman 神經(jīng)網(wǎng)絡(luò)解析最優(yōu)個體,利用解析后的權(quán)值及閾值訓(xùn)練Elman神經(jīng)網(wǎng)絡(luò)并預(yù)測風(fēng)速數(shù)據(jù)。
2 部分代碼
function [sFeat,Sf,Nf,curve] = jBHHO(feat,label,N,max_Iter,HO)
beta = 1.5;
ub = 1;
lb = 0;
fun = @jFitnessFunction;
dim = size(feat,2);
X = zeros(N,dim);
for i = 1:N
for d = 1:dim
if rand() > 0.5
X(i,d) = 1;
end
end
end
fitR = inf;
fit = zeros(1,N);
Y = zeros(1,dim);
Z = zeros(1,dim);
curve = inf;
t = 1;
%---Iteration start-------------------------------------------------
while t <= max_Iter
for i = 1:N
fit(i) = fun(feat,label,X(i,:),HO);
if fit(i) < fitR
fitR = fit(i);
Xrb = X(i,:);
end
end
X_mu = mean(X,1);
for i = 1:N
E0 = -1 + 2 * rand();
E = 2 * E0 * (1 - (t / max_Iter));
if abs(E) >= 1
q = rand();
if q >= 0.5
k = randi([1,N]);
r1 = rand();
r2 = rand();
for d = 1:dim
Xn = X(k,d) - r1 * abs(X(k,d) - 2 * r2 * X(i,d));
S = 1 / (1 + exp(-Xn));
if rand() < S
X(i,d)= 1;
else
X(i,d) = 0;
end
end
elseif q < 0.5
r3 = rand();
r4 = rand();
for d = 1:dim
Xn = (Xrb(d) - X_mu(d)) - r3 * (lb + r4 * (ub - lb));
S = 1 / (1 + exp(-Xn));
if rand() < S
X(i,d) = 1;
else
X(i,d) = 0;
end
end
end
elseif abs(E) < 1
J = 2 * (1 - rand());
r = rand();
if r >= 0.5 && abs(E) >= 0.5
for d = 1:dim
DX = Xrb(d) - X(i,d);
Xn = DX - E * abs(J * Xrb(d) - X(i,d));
S = 1 / (1 + exp(-Xn));
if rand() < S
X(i,d) = 1;
else
X(i,d) = 0;
end
end
elseif r >= 0.5 && abs(E) < 0.5
for d = 1:dim
DX = Xrb(d) - X(i,d);
Xn = Xrb(d) - E * abs(DX);
S = 1 / (1 + exp(-Xn));
if rand() < S
X(i,d) = 1;
else
X(i,d) = 0;
end
end
elseif r < 0.5 && abs(E) >= 0.5
LF = jLevyDistribution(beta,dim);
for d = 1:dim
Yn = Xrb(d) - E * abs(J * Xrb(d) - X(i,d));
S = 1 / (1 + exp(-Yn));
if rand() < S
Y(d) = 1;
else
Y(d) = 0;
end
Zn = Y(d) + rand() * LF(d);
S = 1 / (1 + exp(-Zn));
if rand() < S
Z(d) = 1;
else
Z(d) = 0;
end
end
fitY = fun(feat,label,Y,HO);
fitZ = fun(feat,label,Z,HO);
if fitY <= fit(i)
fit(i) = fitY;
X(i,:) = Y;
end
if fitZ <= fit(i)
fit(i) = fitZ;
X(i,:) = Z;
end
elseif r < 0.5 && abs(E) < 0.5
LF = jLevyDistribution(beta,dim);
for d = 1:dim
Yn = Xrb(d) - E * abs(J * Xrb(d) - X_mu(d));
S = 1 / (1 + exp(-Yn));
if rand() < S
Y(d) = 1;
else
Y(d) = 0;
end
Zn = Y(d) + rand() * LF(d);
S = 1 / (1 + exp(-Zn));
if rand() < S
Z(d) = 1;
else
Z(d) = 0;
end
end
fitY = fun(feat,label,Y,HO);
fitZ = fun(feat,label,Z,HO);
if fitY <= fit(i)
fit(i) = fitY;
X(i,:) = Y;
end
if fitZ <= fit(i)
fit(i) = fitZ;
X(i,:) = Z;
end
end
end
end
curve(t) = fitR;
fprintf(’ Iteration %d Best (BHHO)= %f’,t,curve(t))
t = t + 1;
end
Pos = 1:dim;
Sf = Pos(Xrb == 1);
Nf = length(Sf);
sFeat = feat(:,Sf);
end
function LF = jLevyDistribution(beta,dim)
nume = gamma(1 + beta) * sin(pi * beta / 2);
deno = gamma((1 + beta) / 2) * beta * 2 ^ ((beta - 1) / 2);
sigma = (nume / deno) ^ (1 / beta);
u = randn(1,dim) * sigma;
v = randn(1,dim);
step = u ./ abs(v) .^ (1 / beta);
LF = 0.01 * step;
end
3 仿真結(jié)果
4 參考文獻
[1]朱昶勝, 康亮河, and 馮文芳. "基于自適應(yīng)鯨魚優(yōu)化算法結(jié)合Elman神經(jīng)網(wǎng)絡(luò)的股市收盤價預(yù)測算法." 計算機應(yīng)用 40.5(2020):9.
[2]郭劍鷹, 夏李瑋, and 劉華軍. "基于Elman神經(jīng)網(wǎng)絡(luò)預(yù)測的機動目標跟蹤濾波算法." 航天電子對抗 34.3(2018):6.
[3]郭雨鑫, 劉升, 高文欣, & 張磊. (2021). 多策略改進哈里斯鷹優(yōu)化算法. 微電子學(xué)與計算機, 38(7), 7.
微信掃一掃贊賞作者
贊賞
發(fā)送給作者
人贊賞
長按二維碼向我轉(zhuǎn)賬
受蘋果公司新規(guī)定影響,微信 iOS 版的贊賞功能被關(guān)閉,可通過二維碼轉(zhuǎn)賬支持公眾號。
-
Origin(Pro):學(xué)習(xí)版的窗口限制【數(shù)據(jù)繪圖】 2020-08-07
-
如何卸載Aspen Plus并再重新安裝,這篇文章告訴你! 2020-05-29
-
CAD視口的邊框線看不到也選不中是怎么回事,怎么解決? 2020-06-04
-
教程 | Origin從DSC計算焓和比熱容 2020-08-31
-
Aspen Plus安裝過程中RMS License證書安裝失敗的解決方法,親測有效! 2021-10-15
-
CAD外部參照無法綁定怎么辦? 2020-06-03
-
CAD中如何將布局連帶視口中的內(nèi)容復(fù)制到另一張圖中? 2020-07-03
