時(shí)序預(yù)測 | MATLAB實(shí)現(xiàn)ICEEMDAN-IMPA-BiLSTM時(shí)間序列預(yù)測
預(yù)測效果
基本介紹
ICEEMDAN-IMPA-BiLSTM功率/風(fēng)速預(yù)測 基于改進(jìn)的自適應(yīng)經(jīng)驗(yàn)?zāi)B(tài)分解+改進(jìn)海洋捕食者算法+雙向長短期記憶網(wǎng)絡(luò)時(shí)間序列預(yù)測~組合預(yù)測
1.分解時(shí)避免了傳統(tǒng)經(jīng)驗(yàn)?zāi)B(tài)分解的一些固有缺陷,效果更佳,并通過改進(jìn)的海洋捕食者算法對BiLSTM四個(gè)參數(shù)進(jìn)行尋優(yōu),最后對每個(gè)分量建立BiLSTM模型進(jìn)行預(yù)測后疊加集成,全新組合預(yù)測,出圖多且精美~
2.改進(jìn)點(diǎn)如下:
通過一個(gè)新的自適應(yīng)參數(shù)來控制捕食者移動(dòng)的步長,并使用非線性參數(shù)作為控制參數(shù)來平衡NMPA的探索和開發(fā)階段,有效提高其搜索精度與收斂速度。
直接替換excel數(shù)據(jù)即可用 適合新手小白
附贈(zèng)案例數(shù)據(jù) 可直接運(yùn)行文章來源:http://www.zghlxwxcb.cn/news/detail-704958.html
程序設(shè)計(jì)
- 完整程序和數(shù)據(jù)下載方式私信博主回復(fù):MATLAB實(shí)現(xiàn)ICEEMDAN-IMPA-BiLSTM時(shí)間序列預(yù)測。
function [modes,its]=iceemdan(x,Nstd,NR,MaxIter,SNRFlag)
x=x(:)';
desvio_x=std(x);
x=x/desvio_x;
modes=zeros(size(x));
temp=zeros(size(x));
aux=zeros(size(x));
iter=zeros(NR,round(log2(length(x))+5));
for i=1:NR
white_noise{i}=randn(size(x));%creates the noise realizations
end;
for i=1:NR
modes_white_noise{i}=emd(white_noise{i});%calculates the modes of white gaussian noise
end;
for i=1:NR %calculates the first mode
xi=x+Nstd*modes_white_noise{i}(1,:)/std(modes_white_noise{i}(1,:));
[temp, o, it]=emd(xi,'MAXMODES',1,'MAXITERATIONS',MaxIter);
temp=temp(1,:);
aux=aux+(xi-temp)/NR;
iter(i,1)=it;
end;
modes= x-aux; %saves the first mode
medias = aux;
k=1;
aux=zeros(size(x));
es_imf = min(size(emd(medias(end,:),'MAXMODES',1,'MAXITERATIONS',MaxIter)));
while es_imf>1 %calculates the rest of the modes
for i=1:NR
tamanio=size(modes_white_noise{i});
if tamanio(1)>=k+1
noise=modes_white_noise{i}(k+1,:);
if SNRFlag == 2
noise=noise/std(noise); %adjust the std of the noise
end;
noise=Nstd*noise;
try
[temp,o,it]=emd(medias(end,:)+std(medias(end,:))*noise,'MAXMODES',1,'MAXITERATIONS',MaxIter);
catch
it=0; disp('catch 1 '); disp(num2str(k))
temp=emd(medias(end,:)+std(medias(end,:))*noise,'MAXMODES',1,'MAXITERATIONS',MaxIter);
end;
temp=temp(end,:);
else
try
[temp, o, it]=emd(medias(end,:),'MAXMODES',1,'MAXITERATIONS',MaxIter);
catch
temp=emd(medias(end,:),'MAXMODES',1,'MAXITERATIONS',MaxIter);
it=0; disp('catch 2 sin ruido')
end;
temp=temp(end,:);
end;
aux=aux+temp/NR;
iter(i,k+1)=it;
end;
modes=[modes;medias(end,:)-aux];
medias = [medias;aux];
aux=zeros(size(x));
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
參考資料
[1] https://blog.csdn.net/article/details/126072792?spm=1001.2014.3001.5502
[2] https://blog.csdn.net/article/details/126044265?spm=1001.2014.3001.5502文章來源地址http://www.zghlxwxcb.cn/news/detail-704958.html
到了這里,關(guān)于時(shí)序預(yù)測 | MATLAB實(shí)現(xiàn)ICEEMDAN-iMPA-BiLSTM時(shí)間序列預(yù)測的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!