基于BP神经网络、RBF神经网络以及PSO优化的RBF神经网络进行数据的预测(Matlab代码实现)

简介: 基于BP神经网络、RBF神经网络以及PSO优化的RBF神经网络进行数据的预测(Matlab代码实现)

1 概述

   RBF神经网络结构一般包含输入层、隐含层和神经网络的输出层11。RBF神经网络将复杂的非线性问题转化为高维特征空间,使问题转化为线性可分,避免了局部最小的问题,需要更多的隐层神经元。RBF神经网络结构如图1所示。


2 运行结果

2.1 BP神经网络

2.2 RBF



2.3 PSO-RBF

部分代码:

粒子群算法中的两个参数
c1 = 1.49445;
c2 = 1.49445;
popcount=10;   %粒子数
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;
        %粒子更新
        pop(j,:)=pop(j,:)+0.5*V(j,:);
        pop(j,find(pop(j,:)>popmax))=popmax;
        pop(j,find(pop(j,:)<popmin))=popmin;
        %计算粒子适应度值
        Center=pop(j,1:3);
        SP=pop(j,4:6); 
        W=pop(j,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(j)=SSE;
        RMSE=(sumsqr(Error)/SamNum);
        fitness(j)=RMSE;
       % Center=pop(j,1:10);
       % SP=pop(j,11:20);
       % W=pop(j,21:30);
       % fitness(j)=fun(pop(j,:));
    end
    for j=1:popcount
        %个体最优更新
        if fitness(j) < pbestfitness(j)
            pbest(j,:) = pop(j,:);
            pbestfitness(j) = fitness(j); 
        end
        %群体最优更新
        if fitness(j) < gbestfitness
            gbest = pop(j,:);
            gbestfitness = fitness(j);
        end
    end
    gbesthistory=[gbesthistory,gbest];
    %mse(i)=gbestfitness;
    %将群体最优值赋给RBF参数
    Center=gbest(1,1:3);
    SP=gbest(1,4:6); 
    W=gbest(1,7:9);
    %Center=gbest(1,1:5);
    %SP=gbest(1,11:20); 
    % W=gbest(1,21:30);
     Distance=dist(Center',SamIn);
     SPMat=repmat(SP',1,SamNum);%repmat具体作用
     UnitOut=radbas(Distance./SPMat);
     NetOut=W*UnitOut;%网络输出
     Error=SamOut-NetOut;%网络误差
     %sse(i)=sumsqr(Error);
     mse(i)=(sumsqr(Error)/SamNum);
   % sse(i)=fun(gbest);
   %if sse(i)<E0,break,end 
end
toc;
% 测试 
Center=gbest(1,1:3);
SP=gbest(1,4:6); 
W=gbest(1,7:9);
TestDistance=dist(Center',TargetIn);
TesatSpreadsMat=repmat(SP',1,TargetSamNum);
TestHiddenUnitOut=radbas(TestDistance./TesatSpreadsMat);
TestNNOut=W*TestHiddenUnitOut;
%作图 分别在训练集和测试集上
subplot(1,2,1)
plot(1:length(NetOut),NetOut,'*',1:length(NetOut),SamOut,'o')
title('In Train data')
subplot(1,2,2)
plot(1:3,TestNNOut,'*',1:3,TargetOut,'o')
title('In Test data')
%求出误差 训练集和测试集
train_error=sum(abs(SamOut-NetOut))/length(SamOut);
test_error=sum(abs(TargetOut-TestNNOut))/length(TargetOut);


3 参考文献

[1]王媛媛.基于改进PSO优化RBF神经网络的温室温度预测研究[J].计算机与数字工程,2016,44(07):1210-1215.


[2]向昭君. 群智能算法优化RBF神经网络的研究与应用[D].兰州大学,2016.DOI:10.27204/d.cnki.glzhu.2016.000078.


4 Matlab代码实现

相关文章
|
3天前
|
算法 数据可视化 安全
基于DWA优化算法的机器人路径规划matlab仿真
本项目基于DWA优化算法实现机器人路径规划的MATLAB仿真,适用于动态环境下的自主导航。使用MATLAB2022A版本运行,展示路径规划和预测结果。核心代码通过散点图和轨迹图可视化路径点及预测路径。DWA算法通过定义速度空间、采样候选动作并评估其优劣(目标方向性、障碍物距离、速度一致性),实时调整机器人运动参数,确保安全避障并接近目标。
|
6天前
|
算法 JavaScript
基于遗传优化的Sugeno型模糊控制器设计matlab仿真
本课题基于遗传优化的Sugeno型模糊控制器设计,利用MATLAB2022a进行仿真。通过遗传算法优化模糊控制器的隶属函数参数,提升控制效果。系统原理结合了模糊逻辑与进化计算,旨在增强系统的稳定性、响应速度和鲁棒性。核心程序实现了遗传算法的选择、交叉、变异等步骤,优化Sugeno型模糊系统的参数,适用于工业控制领域。
|
6天前
|
算法 决策智能
基于遗传优化的货柜货物摆放优化问题求解matlab仿真
本项目采用MATLAB2022A实现基于遗传算法的货柜货物摆放优化,初始随机放置货物后通过适应度选择、交叉、变异及逆转操作迭代求解,最终输出优化后的货物分布图与目标函数变化曲线,展示进化过程中的最优解和平均解的变化趋势。该方法模仿生物进化,适用于复杂空间利用问题,有效提高货柜装载效率。
|
10天前
|
机器学习/深度学习 算法 计算机视觉
基于CNN卷积神经网络的金融数据预测matlab仿真,对比BP,RBF,LSTM
本项目基于MATLAB2022A,利用CNN卷积神经网络对金融数据进行预测,并与BP、RBF和LSTM网络对比。核心程序通过处理历史价格数据,训练并测试各模型,展示预测结果及误差分析。CNN通过卷积层捕捉局部特征,BP网络学习非线性映射,RBF网络进行局部逼近,LSTM解决长序列预测中的梯度问题。实验结果表明各模型在金融数据预测中的表现差异。
|
12天前
|
移动开发 算法 计算机视觉
基于分块贝叶斯非局部均值优化(OBNLM)的图像去噪算法matlab仿真
本项目基于分块贝叶斯非局部均值优化(OBNLM)算法实现图像去噪,使用MATLAB2022A进行仿真。通过调整块大小和窗口大小等参数,研究其对去噪效果的影响。OBNLM结合了经典NLM算法与贝叶斯统计理论,利用块匹配和概率模型优化相似块的加权融合,提高去噪效率和保真度。实验展示了不同参数设置下的去噪结果,验证了算法的有效性。
|
11天前
|
算法 决策智能
基于SA模拟退火优化算法的TSP问题求解matlab仿真,并对比ACO蚁群优化算法
本项目基于MATLAB2022A,使用模拟退火(SA)和蚁群优化(ACO)算法求解旅行商问题(TSP),对比两者的仿真时间、收敛曲线及最短路径长度。SA源于金属退火过程,允许暂时接受较差解以跳出局部最优;ACO模仿蚂蚁信息素机制,通过正反馈发现最优路径。结果显示SA全局探索能力强,ACO在路径优化类问题中表现优异。
|
5月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
257 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
5月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
152 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
5月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
124 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
8月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度