PSO优化的BP神经网络

这篇具有很好参考价值的文章主要介绍了PSO优化的BP神经网络。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🌞欢迎来到智能优化算法的世界 
🌈博客主页:卿云阁

💌欢迎关注🎉点赞👍收藏⭐️留言📝

🌟本文由卿云阁原创!

🌠本阶段属于筑基阶段之一,希望各位仙友顺利完成突破

📆首发时间:🌹2021年1月7日🌹

✉️希望可以和大家一起完成进阶之路!

🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢!


目录

0️⃣基本介绍

1️⃣代码部分

2️⃣结果

pso-bp神经网络,智能优化算法,神经网络,人工智能,深度学习

 0️⃣✨✨✨基本介绍✨✨✨


      BP神经网络作为目前运用最广泛的神经网络模型之一,具有结构简单、较强的非线性映射能力、良好的自学习能力、可高精度逼近任意函数等优点。BP神经网络算法采用梯度下降算法,从训练数据中开展学习,以输出误差平方最小为目标,采用误差反向传播,以训练网络节点权值和偏置值。当BP神经网络的结构(层数、每层节点个数)较复杂时,这一算法会表现出学习速度慢、易陷入局部极小值、稳定性差等不足。另一个广泛使用的机器学习算法为粒子群优化算法,这类算法通过群体智能开展学习,具有较好的全局寻优能力。提出基于粒子群优化的BP神经网络算法,将粒子群优化算法引入BP神经网络模型中,以加快传统BP神经网络算法的收敛速度。


1️⃣✨✨✨代码部分✨✨✨

data.m:

for i=1:2000
    input(i,:)=10*rand(1,2)-5;
    output(i)=input(i,1)^2+input(i,2)^2;
end
output=output';

save data input output

PSO.m

%% 该代码为基于PSO和BP网络的预测
%% 清空环境
clc
clear

%读取数据
load data input output

%节点个数
inputnum=2;
hiddennum=5;
outputnum=1;

%训练数据和预测数据
input_train=input(1:1900,:)';
input_test=input(1901:2000,:)';
output_train=output(1:1900)';
output_test=output(1901:2000)';

%选连样本输入输出数据归一化
[inputn,inputps]=mapminmax(input_train);
[outputn,outputps]=mapminmax(output_train);

%构建网络
net=newff(inputn,outputn,hiddennum);

% 参数初始化
%粒子群算法中的两个参数
c1 = 1.49445;
c2 = 1.49445;

maxgen=2;   % 进化次数  
sizepop=20;   %种群规模

Vmax=1;
Vmin=-1;
popmax=5;
popmin=-5;

for i=1:sizepop
    pop(i,:)=5*rands(1,21);
    V(i,:)=rands(1,21);
    fitness(i)=fun(pop(i,:),inputnum,hiddennum,outputnum,net,inputn,outputn);
end


% 个体极值和群体极值
[bestfitness bestindex]=min(fitness);
zbest=pop(bestindex,:);   %全局最佳
gbest=pop;    %个体最佳
fitnessgbest=fitness;   %个体最佳适应度值
fitnesszbest=bestfitness;   %全局最佳适应度值

%% 迭代寻优
for i=1:maxgen
    i
    
    for j=1:sizepop
        
        %速度更新
        V(j,:) = V(j,:) + c1*rand*(gbest(j,:) - pop(j,:)) + c2*rand*(zbest - pop(j,:));
        V(j,find(V(j,:)>Vmax))=Vmax;
        V(j,find(V(j,:)<Vmin))=Vmin;
        
        %种群更新
        pop(j,:)=pop(j,:)+0.2*V(j,:);
        pop(j,find(pop(j,:)>popmax))=popmax;
        pop(j,find(pop(j,:)<popmin))=popmin;
        
        %自适应变异
        pos=unidrnd(21);
        if rand>0.95
            pop(j,pos)=5*rands(1,1);
        end
      
        %适应度值
        fitness(j)=fun(pop(j,:),inputnum,hiddennum,outputnum,net,inputn,outputn);
    end
    
    for j=1:sizepop
    %个体最优更新
    if fitness(j) < fitnessgbest(j)
        gbest(j,:) = pop(j,:);
        fitnessgbest(j) = fitness(j);
    end
    
    %群体最优更新 
    if fitness(j) < fitnesszbest
        zbest = pop(j,:);
        fitnesszbest = fitness(j);
    end
    
    end
    
    yy(i)=fitnesszbest;    
        
end

%% 结果分析
plot(yy)
title(['适应度曲线  ' '终止代数=' num2str(maxgen)]);
xlabel('进化代数');ylabel('适应度');

x=zbest;
%% 把最优初始阀值权值赋予网络预测
% %用遗传算法优化的BP网络进行值预测
w1=x(1:inputnum*hiddennum);
B1=x(inputnum*hiddennum+1:inputnum*hiddennum+hiddennum);
w2=x(inputnum*hiddennum+hiddennum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum);
B2=x(inputnum*hiddennum+hiddennum+hiddennum*outputnum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum);

net.iw{1,1}=reshape(w1,hiddennum,inputnum);
net.lw{2,1}=reshape(w2,outputnum,hiddennum);
net.b{1}=reshape(B1,hiddennum,1);
net.b{2}=B2;

%% BP网络训练
%网络进化参数
net.trainParam.epochs=100;
net.trainParam.lr=0.1;
%net.trainParam.goal=0.00001;

%网络训练
[net,per2]=train(net,inputn,outputn);

%% BP网络预测
%数据归一化
inputn_test=mapminmax('apply',input_test,inputps);
an=sim(net,inputn_test);
test_simu=mapminmax('reverse',an,outputps);
error=test_simu-output_test;
figure(2)
plot(error)

fum.m

function error = fun(x,inputnum,hiddennum,outputnum,net,inputn,outputn)
%该函数用来计算适应度值
%x          input     个体
%inputnum   input     输入层节点数
%outputnum  input     隐含层节点数
%net        input     网络
%inputn     input     训练输入数据
%outputn    input     训练输出数据

%error      output    个体适应度值

%提取
w1=x(1:inputnum*hiddennum);
B1=x(inputnum*hiddennum+1:inputnum*hiddennum+hiddennum);
w2=x(inputnum*hiddennum+hiddennum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum);
B2=x(inputnum*hiddennum+hiddennum+hiddennum*outputnum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum);

 
%网络权值赋值
net.iw{1,1}=reshape(w1,hiddennum,inputnum);
net.lw{2,1}=reshape(w2,outputnum,hiddennum);
net.b{1}=reshape(B1,hiddennum,1);
net.b{2}=B2;

%网络训练
an=sim(net,inputn);

error=sum(abs(an-outputn));

2️⃣✨✨✨结果✨✨✨ 

pso-bp神经网络,智能优化算法,神经网络,人工智能,深度学习

 pso-bp神经网络,智能优化算法,神经网络,人工智能,深度学习

 pso-bp神经网络,智能优化算法,神经网络,人工智能,深度学习

 pso-bp神经网络,智能优化算法,神经网络,人工智能,深度学习

pso-bp神经网络,智能优化算法,神经网络,人工智能,深度学习

pso-bp神经网络,智能优化算法,神经网络,人工智能,深度学习文章来源地址https://www.toymoban.com/news/detail-598139.html

到了这里,关于PSO优化的BP神经网络的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • BP神经网络优化 | MATLAB基于遗传算法优化BP神经网络(GA-BP)的预测模型(含完整代码)

    文章目录 前言 一、遗传算法描述 二、优化思路 三、完整代码 预测结果  首先需要安装一下遗传算法工具箱,可参考这篇博客 MATLAB遗传算法工具箱安装包及安装方法(图解)_周杰伦今天喝奶茶了吗的博客-CSDN博客_matlab遗传算法工具箱安装 本模型可以结合自己的数据集进行

    2024年02月02日
    浏览(61)
  • Python实现猎人猎物优化算法(HPO)优化BP神经网络回归模型(BP神经网络回归算法)项目实战

    说明:这是一个机器学习实战项目(附带 数据+代码+文档+视频讲解 ),如需 数据+代码+文档+视频讲解 可以直接到文章最后获取。 猎人猎物优化搜索算法(Hunter–prey optimizer, HPO)是由Naruei Keynia于2022年提出的一种最新的优化搜索算法。受到捕食动物(如狮子、豹子和狼)和猎物

    2024年02月09日
    浏览(51)
  • 基于遗传算法优化BP神经网络的滑坡稳定性预测,BP神经网络的详细原理

    目录 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数, BP神经网络的传递函数 遗传算法原理 遗传算法主要参数 遗传算法流程图 完整代码包含数据下载链接: 遗传算法优化BP神经网络的MATALB代码,遗传算法优化BP神经网络

    2024年02月05日
    浏览(60)
  • Python实现GA遗传算法优化BP神经网络回归模型(BP神经网络回归算法)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。 遗传算法(Genetic Algorithm,GA)最早是由美国的 John holland于20世纪70年代提出,该算法是根据大自然中生物体进化规律而设计提出的。是模拟达尔文生

    2024年02月14日
    浏览(227)
  • 数学建模:BP神经网络模型及其优化

    🔆 文章首发于我的个人博客:欢迎大佬们来逛逛 设 x 1 , x 2 , . . . , x i x_1,x_2,...,x_i x 1 ​ , x 2 ​ , ... , x i ​ 为输入变量, y y y 为输出变量, u j u_j u j ​ 为隐藏层神经元 的输出, f 为 激活函数 的映射关系。 设 v i j v_{ij} v ij ​ 为第 i i i 个输入变量与第 j j j 个隐藏层神经

    2024年02月11日
    浏览(55)
  • 【人工智能Ⅰ】实验9:BP神经网络

    实验9 BP神经网络 一、实验目的 1:掌握BP神经网络的原理。 2:了解BP神经网络的结构,以及前向传播和反向传播的过程。 3:学会利用BP神经网络建立训练模型,并对模型进行评估。即学习如何调用Sklearn中的BP神经网络。 4:学会使用BP神经网络做预测。 5:通过截图和模型评

    2024年02月02日
    浏览(67)
  • 基于堆优化算法优化的BP神经网络(预测应用) - 附代码

    摘要:本文主要介绍如何用堆优化算法优化BP神经网络并应用于预测。 本案例数据一共2000组,其中1900组用于训练,100组用于测试。数据的输入为2维数据,预测的输出为1维数据 2.1 BP神经网络参数设置 神经网络参数如下: 2.2 堆优化算法应用 堆优化算法原理请参考:https://b

    2024年02月11日
    浏览(39)
  • 【SSA-BP预测】基于麻雀算法优化BP神经网络回归预测研究(Matlab代码实现)

     💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 麻雀算

    2024年02月08日
    浏览(61)
  • 基于BP神经网络的PID智能控制

    PID控制要获得较好的控制效果,就必须通过调整好比例、积分和微分三种控制作用,形成控制量中既相互配合又相互制约的关系,这种关系不一定是简单的“线性组合”,从变化无穷的非线性组合中可以找出最佳的。神经网络所具有的任意非线性表达的能力,可以通过对系统

    2024年02月02日
    浏览(50)
  • 基于水基湍流优化的BP神经网络(分类应用) - 附代码

    摘要:本文主要介绍如何用水基湍流算法优化BP神经网络,利用鸢尾花数据,做一个简单的讲解。 本案例利用matlab公用的iris鸢尾花数据,作为测试数据,iris数据是特征为4维,类别为3个类别。数据格式如下: 特征1 特征2 特征3 类别 单组iris数据 5.3 2.1 1.2 1 3种类别用1,2,3表

    2024年02月07日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包