PSO算法和BP神经网络都是现在非常热门的两个算法,在各自的领域都担当着至关重要的作用,下面通过MATLAB中的一个实例来介绍一下如何将二者进行完美的结合,以发挥其最大优势:

1、在MATLAB的主界面编辑器中写入下列代码:

function main()
clc;clear all;close all;
tic;                              %程序运行计时
E0=0.001;                        %允许误差
MaxNum=100;                    %粒子最大迭代次数
narvs=1;                         %目标函数的自变量个数
particlesize=30;                    %粒子群规模
c1=2;                            %每个粒子的个体学习因子,也称为加速常数
c2=2;                            %每个粒子的社会学习因子,也称为加速常数
w=0.6;                           %惯性因子
vmax=0.8;                        %粒子的最大飞翔速度
x=-5+10*rand(particlesize,narvs);     %粒子所在的位置
v=2*rand(particlesize,narvs);         %粒子的飞翔速度
%用inline定义适应度函数以便将子函数文件与主程序文件放在一起,
%目标函数是:y=1+(2.1*(1-x+2*x.^2).*exp(-x.^2/2))
%inline命令定义适应度函数如下:
fitness=inline('1/(1+(2.1*(1-x+2*x.^2).*exp(-x.^2/2)))','x');
%inline定义的适应度函数会使程序运行速度大大降低
for i=1:particlesizefor j=1:narvsf(i)=fitness(x(i,j));end
end
personalbest_x=x;
personalbest_faval=f;
[globalbest_faval i]=min(personalbest_faval);
globalbest_x=personalbest_x(i,:);
k=1;
while k<=MaxNumfor i=1:particlesizefor j=1:narvsf(i)=fitness(x(i,j));endif f(i)<personalbest_faval(i) %判断当前位置是否是历史上最佳位置personalbest_faval(i)=f(i);personalbest_x(i,:)=x(i,:);endend[globalbest_faval i]=min(personalbest_faval);globalbest_x=personalbest_x(i,:);for i=1:particlesize %更新粒子群里每个个体的最新位置v(i,:)=w*v(i,:)+c1*rand*(personalbest_x(i,:)-x(i,:))...+c2*rand*(globalbest_x-x(i,:));for j=1:narvs    %判断粒子的飞翔速度是否超过了最大飞翔速度if v(i,j)>vmax;v(i,j)=vmax;elseif v(i,j)<-vmax;v(i,j)=-vmax;endendx(i,:)=x(i,:)+v(i,:);endif abs(globalbest_faval)<E0,break,endk=k+1;
end
Value1=1/globalbest_faval-1; Value1=num2str(Value1);
% strcat指令可以实现字符的组合输出
disp(strcat('the maximum value','=',Value1));
%输出最大值所在的横坐标位置
Value2=globalbest_x; Value2=num2str(Value2);
disp(strcat('the corresponding coordinate','=',Value2));
x=-2:0.1:3;
y=2.1*(1-x+2*x.^2).*exp(-x.^2/2);
plot(x,y,'m-','linewidth',3);
hold on;
plot(globalbest_x,1/globalbest_faval-1,'kp','linewidth',4);
legend('样本的输出值','网络的输出值');xlabel('X');ylabel('Y');grid on;toc;

2、命名保存至自定义路径下,点击运行,效果如下:

如图所示,我们可以 清晰看到通过PSO算法来优化BP神经网络,网络误差和目标输出误差之间还是存在一定的优化空间,可以验证网络学习后的输出值是能够减少误差的,最终命令行窗口显示的SSE误差稳定在0.0146,相比于之前的0.0627优化很多,还有非常具有代表性的,至此基本介绍完毕,请大家继续关注!!!

PSO算法优化BP神经网络相关推荐

  1. PSO粒子群算法优化BP神经网络(PSO-BPNN)回归预测MATLAB代码

    PSO粒子群算法优化BP神经网络(PSO-BPNN)回归预测MATLAB代码(有优化前后的对比) 代码注释清楚. main为运行主程序,可以读取本地EXCEL数据,也可以加载本地数据.mat,使用换自 ...

  2. 基于粒子群优化BP神经网络的预测 采用PSO算法优化bp网络实现预测

    基于粒子群优化BP神经网络的预测 采用PSO算法优化bp网络实现预测,源码注释详细,matlab实现,直接运行即可. ID:72100632211160748韩雅涵122

  3. 【回归预测-BP预测】基于灰狼算法优化BP神经网络实现数据回归预测附matlab代码

    1 内容介绍 Mirjalili 等在 2014 年 提 出 了 灰 狼 优 化 ( Grey Wolf Optimizer,GWO) 算法,是一种新型群智能优化算法,通过模拟自然界中灰狼寻找.包围和 ...

  4. 蚁群算法优化BP神经网络回归预测的算法设计-附代码

    蚁群算法ACO优化BP神经网络回归预测的算法设计及其MATLAB代码实现 文章目录 蚁群算法ACO优化BP神经网络回归预测的算法设计及其MATLAB代码实现 1. 蚁群算法简介 2. 蚁群算法优化BP ...

  5. 【BP预测】基于鸟群算法优化BP神经网络实现数据预测附Matlab代码

    1 简介 热舒适度是室内环境舒适性的评价指标,由于热舒适度的计算是一个复杂的非线性迭代过程,不便应用于空调实时控制系统中,为解决这一问题,可利用BP神经网络算法对热舒适度进行预测.但为了改善传统BP神 ...

  6. 【BP数据预测】基于matlab鸟群算法优化BP神经网络数据预测【含Matlab源码 1772期】

    一.鸟群算法优化BP神经网络简介 1 BP 神经网络 BP神经网络是一种按误差逆向传播算法训练的多层前馈网络, 主要由输入层.中间层和输出层组成, 拓扑结构如图1所示. BP 神经网络是通过不断对样本 ...

  7. 鲸鱼优化算法优化BP神经网络回归预测的算法设计-附代码

    鲸鱼优化算法WOA优化BP神经网络回归预测模型以及MATLAB代码实现 文章目录 鲸鱼优化算法WOA优化BP神经网络回归预测模型以及MATLAB代码实现 1. 算法描述 2. 鲸鱼优化算法优化BP神经 ...

  8. 【PID优化】基于matlab粒子群算法优化BP神经网络PID控制【含Matlab源码 2022期】

    ⛄一.粒子群算法优化BP神经网络PID控制简介 BP神经网络PID控制算法 传统PID控制器作为一种线性控制器,具备结构,容易实现的优点,其基本原理是将系统的实际输出值和期望输出值之间的偏差按照比例. ...

  9. ACO蚁群算法优化BP神经网络(ACO-BPNN)回归预测MATLAB代码(有优化前后的对比)

    ACO蚁群算法优化BP神经网络(ACO-BPNN)回归预测MATLAB代码(有优化前后的对比) 代码注释清楚. main为运行主程序,可以读取本地EXCEL数据. 很方便,容易上手. (以电厂运行数据 ...

最新文章

  1. HTML转WORD WORD转PDF--来源网络
  2. 基坑计算理论m法弹性支点法_基坑支护结构设计应注意的一些问题
  3. 在Init之前究竟执行了什么?
  4. JVM运行时数据区分析
  5. 要启用实时(jit)调试 该应用计算机,解决%_启用实时(JIT)调试+编译应用程序时还必须启用方法歩骤?谁有最终解决方案?...
  6. 第十天-linux命令及基础手把手实战
  7. Ansible中文权威指南
  8. encodingaeskey java,消息体签名与加解密-开发者QA
  9. linux终端 介绍,全面介绍Linux终端命令(二)
  10. 解决eclipse中git中cannot open git-upload-pack(无法打开Git上传包)问题
  11. mac上设置新版chrome浏览器跨域
  12. 【数学建模】7 线性规划及例题详解
  13. C语言基础选择题100道(附答案)01
  14. 打飞机小游戏html代码,纯汇编实现打飞机小游戏的示例代码
  15. 软考高级项目管理师都考哪些内容?详解
  16. 2022-06-26 笔记本新机重装系统
  17. 京东大客户开放平台VOP接口对接记录
  18. oracle 01405 提取的值为null,ORA-01405 : fetched column value is NULL
  19. excel制作斜线表头
  20. python 主力资金_邢不行 | 量化投资中如何计算机构、主力、散户资金流数据【视频】...

热门文章

  1. 可调电源LM317 的内部原理 - 特殊的电压跟随器
  2. 学会python做什么兼职_学会python能干嘛 学会python可以做哪些兼职?
  3. BTC突破2.8万美元 加密货币集体大涨,从银行危机中获益
  4. java node子节点_[Java教程]Node节点
  5. [WIFI] AP硬件知识- PHY/Radio Card/MAC
  6. SVN小乌龟 merge分支到主干时,代码冲突的解决思路
  7. get 请求 中文乱码
  8. 西部数码服务器文件,西部数码虚拟主机文件管理器功能介绍
  9. L1-077 大笨钟的心情(分数 15)
  10. 锁定select下拉框