【交通流预测】基于matlab小波神经网络短时交通流预测【含Matlab源码 400期】
一、获取代码方式
获取代码方式1:
完整代码已上传我的资源:【交通流预测】基于matlab小波神经网络短时交通流预测【含Matlab源码 400期】
获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。
备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);
二、小波神经网络(WNN)简介
1 人工神经网络(ANN)简介
是对人脑若干基本特性通过数学方法进行的抽象和模拟,是一种模仿人脑结构及其功能的非线性信息处理系统。具有较强的非线性逼近功能和自学习、自适应、并行处理的特点,具有良好的容错能力。
1.1 人工神经元
神经元是构成神经网络的最基本单元。要想构造一个人工神经网络系统,首要任务是构造人工神经元模型。
一个人工神经网络的神经元模型和结构描述了一个网络如何将它的输入矢量转换为输出矢量的过程。
一个神经元有两个输入:输入向量p,阈值b,也叫偏差。
输入向量p通过与它相连的权值分量w相乘,求和后,形成激活函数f(.)的输入。激活函数的另一个输入是神经元的阈值b。
权值w和输入p的矩阵形式可以由w的行矢量以及p的列矢量来表示:
神经元模型的输出矢量可以表示为:
激活函数是一个神经元及网络的核心。
激活函数的基本作用是:
1、控制输入对输出的激活作用;
2、对输入、输出进行函数转换;
3、将可能无限域的输入变换成指定的有限范围内的输出。
激活函数的常用类型:
小波(wave/let):波-震荡,小-衰减速度比较快。
小波分析具有多分辨分析的特点,是一种窗口大小固定不变但其形状可以改变的分析方法,被称为信号的显微镜。
小波分析的种类:Haar小波规范正交基、Morlet小波、Mallat算法、多分辨分析、多尺度分析、紧支撑小波基、时频分析等。
2 小波神经网络(WNN)
集人工神经网络和小波分析优点于一身,即使网络收敛速度快、避免陷入局部最优,又有时频局部分析的特点。
WNN是将神经网络隐结点的S函数由小波函数来代替,相应的输入层到隐含层的权值及隐含层的阈值分别由小波函数的尺度伸缩因子和时间平移因子所代替。
三、部分源代码
%% 清空环境变量
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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
四、运行结果
五、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
[3]周品.MATLAB 神经网络设计与应用[M].清华大学出版社,2013.
[4]陈明.MATLAB神经网络原理与实例精解[M].清华大学出版社,2013.
[5]方清城.MATLAB R2016a神经网络设计与应用28个案例分析[M].清华大学出版社,2018.
文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。
原文链接:qq912100926.blog.csdn.net/article/details/114126599
- 点赞
- 收藏
- 关注作者
评论(0)