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

news2025/1/17 22:53:44

 💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

目录

💥1 概述

📚2 运行结果

2.1 BP神经网络

2.2 RBF

2.3 PSO-RBF

🎉3 参考文献

🌈4 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代码实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/117054.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IT30--IT之职能部门(3年之约已满)

IT作为一个职能部门&#xff0c;肯定跟业务不同&#xff0c;具体有哪些事情要做&#xff0c;我们一一道来。 年终规划的二三事 组织体系规划及梳理 预算编制 今天我们先来说说组织体系规划。 1 从愿景使命价值观到行动及思考方法 无论是企业还是部门&#xff0c;软文件建设肯…

【信息检索与数据挖掘期末笔记】(六)Link Analysis

Web图 将Web当做有向图 节点&#xff1a;网页 边&#xff1a;超链接 PageRank 不同网页的重要性是不同的&#xff0c;在web-graph中&#xff0c;节点之间的连接性有巨大的差异。我们根据链接结果来对网页进行排序 想法&#xff1a;用链接来投票 如果有更多的链接指向一个网…

Linux Shell 编程,Shell 变量详解

Linux Shell 编程&#xff0c;Shell 变量详解1.第一个shell脚本2.Shell 变量初探3.位置参数变量4.预定义变量1.第一个shell脚本 打开文本编辑器(可以使用 vi/vim 命令来创建文件)&#xff0c;新建一个文件 hello.sh&#xff0c;扩展名为 sh&#xff08;sh代表shell&#xff09…

【算法】面试题 - 链表(附讲解视频)

链表相关面试题876. 链表的中间结点206. 反转链表86. 分隔链表160. 相交链表141. 环形链表问题&#xff1a;快慢指针为什么一定会相遇142. 环形链表 II问题&#xff1a;如何确认入口237. 删除链表中的节点19. 删除链表的倒数第 N 个结点21. 合并两个有序链表23. 合并K个升序链表…

【记忆增强深度条件展开网络】

Memory-augmented Deep Conditional Unfolding Network for Pan-sharpening &#xff08;面向全色锐化的记忆增强深度条件展开网络&#xff09; 全色锐化旨在为遥感系统获取高分辨率的多光谱图像&#xff0c;基于深度学习的方法已经取得了显著的成功。然而&#xff0c;大多数…

使用iServer rest api如何实现构建巷道效果

作者&#xff1a;刘大 背景 在实际生产环境中&#xff0c;特别是在采矿&#xff0c;公路建设项目上&#xff0c;我们往往会接触下图所示的巷道&#xff0c;那么在Web端如何快速通过线数据构建巷道模型呢&#xff1f;下面我们来详细说下 使用方式 第一步&#xff1a; 在iServe…

反垃圾邮件系统|基于Springboot+vue 实现反垃圾邮件系统

作者主页&#xff1a;编程指南针 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容&#xff1a;Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助 收藏点赞不迷路 关注作者有好处 文末获取源…

servlet(二)文件的上传

servlet实现文件的上传 文件上传是一个web应用常见的功能 比如&#xff1a;QQ头像&#xff0c;就使用了上传。 邮箱中也有附件的上传和下载功能。 OA系统中审批有附件材料的上传。 1.1前端需要有个form表单标签 methodpost请求 (因为post请求是没有长度限制&#xff0c;get…

Computer Graphics From Scratch - Chapter 7

系列文章目录 简介&#xff1a;Computer Graphics From Scratch-《从零开始的计算机图形学》简介 第一章: Computer Graphics From Scratch - Chapter 1 介绍性概念 第二章&#xff1a;Computer Graphics From Scratch - Chapter 2 基本光线追踪 第三章&#xff1a;Computer Gr…

新生儿喝奶后不要马上放回床上睡觉,为宝宝健康着想,先做1件事

看到一个问题&#xff0c;题主问&#xff0c;新生儿喝完奶能马上放回床上睡觉吗&#xff1f;可以吗&#xff1f;也许每个人都认为照顾新生儿是一件非常简单的事情&#xff0c;因为新生儿几乎整天都在睡觉。当他们饿的时候&#xff0c;他们会让他们的宝宝吃牛奶。他们吃饱了就要…

博客搭建教程(一):静态博客 GitHub + Gridea

同步blog文章 注册一个 Github 账号并创建仓库 注册Github账号 如果你没有 Github 的账号&#xff0c;那么可以进入 官网 开始注册&#xff08;注意一下用户名的填写&#xff0c;如果不使用自定义域名&#xff0c;用户名将会是你的 Github 分配给你的域名&#xff0c;例如你的…

D. George and Interesting Graph(最大匹配)

Problem - 387D - Codeforces 乔治喜欢图表。最重要的是&#xff0c;他喜欢有趣的图。我们将假设一个有向图是有趣的&#xff0c;如果它符合以下标准。 该图不包含任何多弧。 有一个顶点v&#xff08;我们称她为中心&#xff09;&#xff0c;这样对于图形u的任何顶点&#xff…

信息网络传播视听节目服务单位的设立与经营

一、行业准入 &#xff08;一&#xff09;网络视听业务准入范围 利用公共互联网&#xff08;含移动互联网&#xff09;向计算机、手机用户提供视听节目服务&#xff08;不含交互式网络电视&#xff08;IPTV&#xff09;、互联网电视、专网手机电视业务&#xff09;业务的&…

几个小设置让 mac 更好用

今天在 youtube 上看到一个视频[1]&#xff0c;讲新 mac 到手后一定要做的几个设置&#xff0c;有几个之前我不知道的小设置&#xff0c;非常好用&#xff0c;看完马上就用上了。一些常用的就不列了&#xff0c;比如说设置点按、三指拖拽&#xff0c;不知道的可以去搜索了解&am…

【Python数据可视化】使用geoplotlib绘制地理空间数据

geoplotlib前言一、安装geoplotlib包二、读取csv数据使用1.点密度可视化2.直方图3. Voronoi图总结前言 ❤️❤️希望大家能多多点赞。❤️❤️ 需要数据集的可以评论。 Geoplotlib 是地理空间数据可视化的开源Python库&#xff0c;包含了大量的地理空间可视化操作&#xff0c…

131. 分割回文串

131. 分割回文串 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 示例 1&#xff1a; 输入&#xff1a;s “aab” 输出&#xff1a;[[“a”,“a”,“b”]…

青少年等级考试【Python通关干货】(二级)

青少年等级考试【Python通关干货】(二级)1.列表类型的概念 2.序列的通用操作 3.可变序列及列表的通用操作 4.列表的特有操作 5.元组类型的概念与操作

激活学习:一种挑战反向传播的生物启发算法

激活学习(activation learning)是一种生物启发的简单本地学习规则构建的前向无监督通用模型&#xff0c;它的核心是构建多层神经网络使得网络输出激活强度能反映输入的相对概率大小。并且&#xff0c;它在一些任务上达到并超过反向传播的表现。激活学习的概念由山东大学教授周洪…

C++11标准模板(STL)- 算法(std::adjacent_difference)

定义于头文件 <algorithm> 算法库提供大量用途的函数&#xff08;例如查找、排序、计数、操作&#xff09;&#xff0c;它们在元素范围上操作。注意范围定义为 [first, last) &#xff0c;其中 last 指代要查询或修改的最后元素的后一个元素。 计算范围内各相邻元素之间…

MyBatis 配置文件解析

MyBatis 的核心配置文件是 mybatis-config.xml。注意配置文件中节点的顺序有要求&#xff0c;必须按照下面的顺序填写节点信息&#xff1a; (properties,settings,typeAliases,typeHandlers,objectFactory,objectWrapperFactory,reflectorFactory,plugins,environments,databa…