【RBF数据预测】基于matlab粒子群优化RBF神经网络数据预测【含Matlab源码 1755期】

举报
海神之光 发表于 2022/05/29 00:07:36 2022/05/29
【摘要】 一、粒子群优化RBF神经网络简介 1 粒子群优化算法 粒子群优化算法( PSO)是指通过模拟鸟群觅食的协作行为,实现群体最优化。PSO是一种并行计算的智能算法,其基本模型如下: 假设群体规模为M,在D...

一、粒子群优化RBF神经网络简介

1 粒子群优化算法
粒子群优化算法( PSO)是指通过模拟鸟群觅食的协作行为,实现群体最优化。PSO是一种并行计算的智能算法,其基本模型如下:

假设群体规模为M,在D维空间中,群体中的第i个个体表示为XD= ( xm1,xm2…xm D)T,速度表示为VD= ( vm1,vm2…vm D)T,位置( 代表在当前空间中搜索到的最佳点,即个体极值) 表示为PD= ( pm1,pm2…pm D)T,m = 1,2,…,M,将粒子个体的最小极值最为当前全局最优位置, 表示为Pg= ( pg1,pg2…pg D)T。速度与位置的更新公式[2]为:
在这里插入图片描述
式中: i = 1,2,…M; j为粒子的第j维; k为迭代次数; c1与c2为加速度常数,分别用于调节粒子自身最佳位置和全局最佳位置的步长,一般在0 ~ 2 之间取值; r1与r2为在[0,1]区间分别的随机函数。为了减少搜索空间的可能性,通常要给粒子的速度设定范围,即vij∈[Vmin,Vmax]。

粒子群优化算法的流程如下:

  1. 初始化。设置种群相关初始化参数,包括种群数目M、迭代次数T、粒子速度与位置、速度范围。
  2. 计算粒子适应度。
  3. 更新个体极值。如果当前适应度值优于上次的迭代的值,那么则将当前值作为新的个体极值。
  4. 更新种群极值。
  5. 更新粒子的速度与位置。
  6. 判断。若满足设定的结束条件,则进行下一步,若不满足,则返回到步骤2。
  7. 结束。

2 RBF神经网络
径向神经网络( Radical Basis Function,RBF)是一种前馈神经经网络,具有计算速度快、最佳逼近及收敛能力强的优点。其拓扑结构如图3所示。
在这里插入图片描述
1 ) 输入层: 输入向量X = ( x1,x2…xI)T。该向量为输入数据标准化处理后所得。
2) 隐含层: 设隐含层节点数目为J,隐含层第j的神经元中心与宽度分别为cj和 σj,该神经元的输出为:
在这里插入图片描述
式中: ‖·‖ 为欧几里得距离; φ(·) 为径向基函数。常用的基函数见表1。
表1 径向基函数
在这里插入图片描述
4) 输出层:
在这里插入图片描述
其中wjk为连接权值。

3 基于粒子群优化的RBF神经网络预测方法
由于RBF神经网络具有最佳逼近的能力,而粒子群优化算法的收敛能力较强,因此,本文将2 种算法进行结合,即用粒子群优化算法优化RBF神经网络中的参数,算法流程如图4 所示。
在这里插入图片描述
图4 流程图
由RBF神经网络模型相关参数构成粒子的向量,在每次迭代后,将得到的粒子极值映射到RBF网络中,并将RBF神经网络的误差函数作为粒子群优化过程中的适应度函数,计算方法为:
在这里插入图片描述
式中: Yn为RBF神经网络的输出值;^Yn为实际值; N为样本总数。

二、部分源代码

clc;
clear;
tic;
SamNum=48;                         %训练样本数
TargetSamNum=3;                   %测试样本数
InDim=1;                            %样本输入维数
UnitNum=2;                          %隐节点数
MaxEpoch=1200;                      %最大训练次数
num=2;%对应四个特征
%E0=0.2;                             %目标误差
gbesthistory=[];
% 根据目标函数获得样本输入输出(训练样本)
rand('state',sum(100*clock));
%NoiseVar=0.0005;
%Noise=NoiseVar*randn(1,SamNum);
load data
%归一化
data1=data';
data=mapminmax(data1,0,1);
data=data';

%建立训练集测试集
x_train=[data(1:48,1).';data(1:48,2).';data(1:48,3).';data(1:48,4).'];
x_test=[data(2:49,num).'];
y_train=[data(49:51,1).';data(49:51,2).';data(49:51,3).';data(49:51,4).'];
y_test=[data(50:52,num).'];
SamIn=x_train;
SamOut=x_test;
%测试样本
TargetIn=y_train;
TargetOut=y_test;


%粒子群算法中的两个参数
c1 = 1.49445;
c2 = 1.49445;
popcount=50;   %粒子数
poplength=6;  %粒子维数
Wstart=0.9;%初始惯性权值
Wend=0.2;%迭代次数最大时惯性权值
%个体和速度最大最小值
Vmax=1;
Vmin=-1;
popmax=4;
popmin=-4;
%粒子位置速度和最优值初始化

for i=1:popcount
    pop(i,:)=rand(1,9);%初始化粒子位置
    V(i,:)=rand(1,9);%初始化粒子速度
    %计算粒子适应度值
    Center=pop(i,1:3);
    SP=pop(i,4:6); 
    W=pop(i,7:9);
    Distance=dist(Center',SamIn);
    SPMat=repmat(SP',1,SamNum);%repmat具体作用
    UnitOut=radbas(Distance./SPMat);%径向基函数
    NetOut=W*UnitOut;%网络输出
    Error=SamOut-NetOut;%网络误差
    %SSE=sumsqr(Error);
    %fitness(i)=SSE;
    RMSE=sqrt(sumsqr(Error)/SamNum);
    fitness(i)=RMSE;
    %fitness(i)=fun(pop(i,:));
end
%适应度函数(适应度值为RBF网络均方差)


[bestfitness bestindex]=min(fitness);
gbest=pop(bestindex,:);%全局最优值
pbest=pop;%个体最优值
pbestfitness=fitness;%个体最优适应度值
gbestfitness=bestfitness;%全局最优适应度值
%迭代寻优
for i=1:MaxEpoch
   Vmax=1.00014^(-i);
   Vmin=-1.00014^(-i);
    for j=1:popcount
       % if (fitness(j)<gbestfitness|fitness==gbestfitness)
           % S(j)=0;
        %end
        %S(j)=1-(fitness(j)/100)^2;
       % GW(j)=Wstart-S(j)*(Wstart-Wend);
       % GW(j)=Wend+(GW(j)-Wend)*(MaxEpoch-i)/MaxEpoch;
        GW=Wstart-(Wstart-Wend)*i/MaxEpoch;
        %速度更新(第一种方法精度最高)
        V(j,:) = 1.000009^(-i)*(gbestfitness/fitness(j)+2)*rand*V(j,:) + c1*rand*(pbest(j,:) - pop(j,:)) + c2*rand*(gbest - pop(j,:));
        %V(j,:) = GW*((fitness(j)/2000)^2+1)*rand*V(j,:) + c1*rand*(pbest(j,:) - pop(j,:)) + c2*rand*(gbest - pop(j,:));
        %V(j,:) = GW*V(j,:) + c1*rand*(pbest(j,:) - pop(j,:)) + c2*rand*(gbest - pop(j,:));
        %V(j,:) = 0.9*V(j   ,:) + c1*rand*(pbest(j,:) - pop(j,:)) + c2*rand*(gbest - pop(j,:));
        %V(j,:) = 0.9*1.0003^(-j)* V(j,:) + c1*rand*(pbest(j,:) - pop(j,:)) + c2*rand*(gbest - pop(j,:));
        %V(j,:) = (gbestfitness/(exp(-fitness(j))+1)+0.5)*rand*V(j,:) + c1*rand*(pbest(j,:) - pop(j,:)) + c2*rand*(gbest - pop(j,:));
        V(j,find(V(j,:)>Vmax))=Vmax;
        V(j,find(V(j,:)<Vmin))=Vmin;

  
 
  • 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

三、运行结果

在这里插入图片描述
在这里插入图片描述

四、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.
[6]韦波.粒子群优化的RBF神经网络在海上运输事故预测中的应用[J].舰船科学技术. 2016,38(04)

文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。

原文链接:qq912100926.blog.csdn.net/article/details/123327894

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。