時(shí)序預(yù)測(cè) | MATLAB實(shí)現(xiàn)基于QPSO-BiGRU、PSO-BiGRU、BiGRU時(shí)間序列預(yù)測(cè)
效果一覽
基本描述
1.時(shí)序預(yù)測(cè) | MATLAB實(shí)現(xiàn)基于QPSO-BiGRU、PSO-BiGRU、BiGRU時(shí)間序列預(yù)測(cè);
2.單變量時(shí)間序列數(shù)據(jù)集;
3.運(yùn)行環(huán)境Matlab2020及以上,依次運(yùn)行Main1GRUTS、Main2PSOBiGRUTS、Main3QPSOBiGRUTS、Main4CDM即可,其余為函數(shù)文件無需運(yùn)行,所有程序放在一個(gè)文件夾,data為數(shù)據(jù)集,單變量時(shí)間序列;
BiGRU(雙向門控循環(huán)單元模型)與粒子群算法優(yōu)化后的BiGRU(PSOBiGRU)以及量子粒子群算法優(yōu)化后的BiGRU(QPSOBiGRU)對(duì)比實(shí)驗(yàn),可用于風(fēng)電、光伏等負(fù)荷預(yù)測(cè),時(shí)序預(yù)測(cè),數(shù)據(jù)為單變量時(shí)間序列數(shù)據(jù)集,PSO、QPSO優(yōu)化超參數(shù)為隱含層1節(jié)點(diǎn)數(shù)、隱含層2節(jié)點(diǎn)數(shù)、最大迭代次數(shù)和學(xué)習(xí)率。
4.命令窗口輸出MAE、MAPE、RMSE和R2;文章來源:http://www.zghlxwxcb.cn/news/detail-694384.html
程序設(shè)計(jì)
- 完整程序和數(shù)據(jù)下載:私信博主回復(fù)MATLAB實(shí)現(xiàn)基于QPSO-BiGRU、PSO-BiGRU、BiGRU時(shí)間序列預(yù)測(cè)。
Function_name='F1'; % Name of the test function that can be from F1 to F23 (Table 1,2,3 in the paper) 設(shè)定適應(yīng)度函數(shù)
[lb,ub,dim,fobj]=Get_Functions_details(Function_name); %設(shè)定邊界以及優(yōu)化函數(shù)
N=20;
M=1000;
[xm1,trace1]=pso(N,M,dim,lb,ub,fobj);
[xm2,trace2]=qpso(N,M,dim,lb,ub,fobj);
figure('Position',[269 240 660 290])
%Draw search space
subplot(1,2,1);
func_plot(Function_name);
title('Parameter space')
xlabel('x_1');
ylabel('x_2');
zlabel([Function_name,'( x_1 , x_2 )'])
%Draw objective space
subplot(1,2,2);
plot(trace1,'Color','b','linewidth',1.5)
hold on
plot(trace2,'Color','r','linewidth',1.5)
title('Objective space')
xlabel('Iteration');
ylabel('Best score obtained so far');
axis tight
grid on
box on
legend('PSO','QPSO')
%% 取對(duì)數(shù) 更方便看
figure
plot(log10(trace1),'linewidth',1.5)
hold on
plot(log10(trace2),'linewidth',1.5)
legend('PSO','QPSO')
title('PSO VS QPSO')
xlabel('iteration/M')
ylabel('fitness value(log10)')
function func_plot(func_name)
[lb,ub,dim,fobj]=Get_Functions_details(func_name);
switch func_name
case 'F1'
x=-100:2:100; y=x; %[-100,100]
case 'F2'
x=-100:2:100; y=x; %[-10,10]
case 'F3'
x=-100:2:100; y=x; %[-100,100]
case 'F4'
x=-100:2:100; y=x; %[-100,100]
case 'F5'
x=-200:2:200; y=x; %[-5,5]
case 'F6'
x=-100:2:100; y=x; %[-100,100]
case 'F7'
x=-1:0.03:1; y=x %[-1,1]
case 'F8'
x=-500:10:500;y=x; %[-500,500]
case 'F9'
x=-5:0.1:5; y=x; %[-5,5]
case 'F10'
x=-20:0.5:20; y=x;%[-500,500]
case 'F11'
x=-500:10:500; y=x;%[-0.5,0.5]
case 'F12'
x=-10:0.1:10; y=x;%[-pi,pi]
case 'F13'
x=-5:0.08:5; y=x;%[-3,1]
case 'F14'
x=-100:2:100; y=x;%[-100,100]
case 'F15'
x=-5:0.1:5; y=x;%[-5,5]
case 'F16'
x=-1:0.01:1; y=x;%[-5,5]
case 'F17'
x=-5:0.1:5; y=x;%[-5,5]
case 'F18'
x=-5:0.06:5; y=x;%[-5,5]
case 'F19'
x=-5:0.1:5; y=x;%[-5,5]
case 'F20'
x=-5:0.1:5; y=x;%[-5,5]
case 'F21'
x=-5:0.1:5; y=x;%[-5,5]
case 'F22'
x=-5:0.1:5; y=x;%[-5,5]
case 'F23'
x=-5:0.1:5; y=x;%[-5,5]
end
L=length(x);
f=[];
for i=1:L
for j=1:L
if strcmp(func_name,'F15')==0 && strcmp(func_name,'F19')==0 && strcmp(func_name,'F20')==0 && strcmp(func_name,'F21')==0 && strcmp(func_name,'F22')==0 && strcmp(func_name,'F23')==0
f(i,j)=fobj([x(i),y(j)]);
end
if strcmp(func_name,'F15')==1
f(i,j)=fobj([x(i),y(j),0,0]);
end
if strcmp(func_name,'F19')==1
f(i,j)=fobj([x(i),y(j),0]);
end
if strcmp(func_name,'F20')==1
f(i,j)=fobj([x(i),y(j),0,0,0,0]);
end
if strcmp(func_name,'F21')==1 || strcmp(func_name,'F22')==1 ||strcmp(func_name,'F23')==1
f(i,j)=fobj([x(i),y(j),0,0]);
end
end
end
參考資料
[1] https://blog.csdn.net/kjm13182345320/article/details/127596777?spm=1001.2014.3001.5501
[2] https://download.csdn.net/download/kjm13182345320/86830096?spm=1001.2014.3001.5501文章來源地址http://www.zghlxwxcb.cn/news/detail-694384.html
到了這里,關(guān)于時(shí)序預(yù)測(cè) | MATLAB實(shí)現(xiàn)基于QPSO-BiGRU、PSO-BiGRU、BiGRU時(shí)間序列預(yù)測(cè)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!