小波神经网络的时间序列预测-短时交通流量预测

更新时间:2023-10-26 02:18:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

%% 清空环境变量 clc clear

%% 网络参数配置

load traffic_flux input output input_test output_test

M=size(input,2); %输入节点个数 N=size(output,2); %输出节点个数

n=6; %隐形节点个数 lr1=0.01; %学习概率 lr2=0.001; %学习概率 maxgen=100; %迭代次数

%权值初始化

Wjk=randn(n,M);Wjk_1=Wjk;Wjk_2=Wjk_1; Wij=randn(N,n);Wij_1=Wij;Wij_2=Wij_1; a=randn(1,n);a_1=a;a_2=a_1; b=randn(1,n);b_1=b;b_2=b_1;

%节点初始化 y=zeros(1,N); net=zeros(1,n); net_ab=zeros(1,n);

%权值学习增量初始化 d_Wjk=zeros(n,M); d_Wij=zeros(N,n); d_a=zeros(1,n);

d_b=zeros(1,n);

%% 输入输出数据归一化

[inputn,inputps]=mapminmax(input'); [outputn,outputps]=mapminmax(output'); inputn=inputn'; outputn=outputn';

%% 网络训练 for i=1:maxgen

%误差累计 error(i)=0;

% 循环训练 for kk=1:size(input,1) x=inputn(kk,:); yqw=outputn(kk,:);

for j=1:n for k=1:M

net(j)=net(j)+Wjk(j,k)*x(k); net_ab(j)=(net(j)-b(j))/a(j); end

temp=mymorlet(net_ab(j)); for k=1:N

y=y+Wij(k,j)*temp; %小波函数 end end

%计算误差和

error(i)=error(i)+sum(abs(yqw-y));

%权值调整 for j=1:n

%计算d_Wij

temp=mymorlet(net_ab(j)); for k=1:N

d_Wij(k,j)=d_Wij(k,j)-(yqw(k)-y(k))*temp; end

%计算d_Wjk

temp=d_mymorlet(net_ab(j)); for k=1:M for l=1:N

d_Wjk(j,k)=d_Wjk(j,k)+(yqw(l)-y(l))*Wij(l,j) ; end

d_Wjk(j,k)=-d_Wjk(j,k)*temp*x(k)/a(j); end %计算d_b for k=1:N

d_b(j)=d_b(j)+(yqw(k)-y(k))*Wij(k,j); end

d_b(j)=d_b(j)*temp/a(j); %计算d_a for k=1:N

d_a(j)=d_a(j)+(yqw(k)-y(k))*Wij(k,j); end

d_a(j)=d_a(j)*temp*((net(j)-b(j))/b(j))/a(j); end

%权值参数更新 Wij=Wij-lr1*d_Wij; Wjk=Wjk-lr1*d_Wjk; b=b-lr2*d_b; a=a-lr2*d_a;

d_Wjk=zeros(n,M); d_Wij=zeros(N,n); d_a=zeros(1,n); d_b=zeros(1,n);

y=zeros(1,N); net=zeros(1,n); net_ab=zeros(1,n);

Wjk_1=Wjk;Wjk_2=Wjk_1; Wij_1=Wij;Wij_2=Wij_1; a_1=a;a_2=a_1; b_1=b;b_2=b_1; end end

%% 网络预测 %预测输入归一化

x=mapminmax('apply',input_test',inputps); x=x';

%网络预测 for i=1:92 x_test=x(i,:);

for j=1:1:n for k=1:1:M

net(j)=net(j)+Wjk(j,k)*x_test(k); net_ab(j)=(net(j)-b(j))/a(j); end

temp=mymorlet(net_ab(j)); for k=1:N

y(k)=y(k)+Wij(k,j)*temp ; end end

yuce(i)=y(k); y=zeros(1,N); net=zeros(1,n); net_ab=zeros(1,n); end

%预测输出反归一化

ynn=mapminmax('reverse',yuce,outputps);

%% 结果分析 figure(1) plot(ynn,'r*:') hold on

plot(output_test,'bo--')

title('预测交通流量','fontsize',12) legend('预测交通流量','实际交通流量') xlabel('时间点') ylabel('交通流量')

%这里面用到的两个子程序分别是: function y=mymorlet(t)

y = exp(-(t.^2)/2) * cos(1.75*t); function y=d_mymorlet(t)

y = -1.75*sin(1.75*t).*exp(-(t.^2)/2)-t* cos(1.75*t).*exp(-(t.^2)/2) ;

%这里面用到的两个子程序分别是: function y=mymorlet(t)

y = exp(-(t.^2)/2) * cos(1.75*t); function y=d_mymorlet(t)

y = -1.75*sin(1.75*t).*exp(-(t.^2)/2)-t* cos(1.75*t).*exp(-(t.^2)/2) ;

本文来源:https://www.bwwdw.com/article/pss2.html

Top