IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【预测模型-BP分类】基于萤火虫算法优化BP神经网络实现数据分类附matlab代码 -> 正文阅读

[人工智能]【预测模型-BP分类】基于萤火虫算法优化BP神经网络实现数据分类附matlab代码

?作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法 ?神经网络预测 雷达通信? 无线传感器

信号处理 图像处理 路径规划 元胞自动机 无人机

? 内容介绍

为了提高数据分类准确率,提出一种基于萤火虫算法和BP神经网络的分类方法.针对反向传播(BP)神经网络存在全局搜索能力差,萤火虫算法来优化BP神经网络对初始权重敏感的问题,进而实现对数据的分类.实验结果表明,所提算法对数据的分类准确率更高,分类准确率达到94.5%,而且可以加快收敛速度

? 部分代码

%==========================================================================

% 算法说明:荧火虫算法(GSO:Glowworm swarm optimisation:a new method for optimising mutlti-modal functions)

% =========================================================================

clc

clear;%清除变量

close all;

% ================================初始化开始================================

domx=[-3,3;-3,3];%定义域

%domx=[-2.048,2.048;-2.048,2.048];

rho? ?=0.4; %荧光素挥发因子

gamma =0.6; %适应度提取比例

beta? =0.08;%邻域变化率

nt? ? =5;? ?%邻域阀值(邻域荧火虫数)

s? ? ?=0.01;%步长

iot0? =5;? ?%荧光素浓度

rs? ? =3;? ?%3;%感知半径

r0? ? =1.5; %3;%决策半径

% ================================初始化结束================================

% ===============================分配空间开始===============================

m =size(domx,1);? ? %函数空间维数

n =50;? ? ? ? ? ? ? %萤火虫个数

gaddress =zeros(n,m);%分配荧火虫地址空间

ioti? ? ?=zeros(n,1);? ? %分配荧光素存放空间

rdi? ? ? =zeros(n,1);? ? ?%分配荧火虫决策半径存放空间

% ===============================分配空间结束===============================

figure(1);

sign_first = 1;

step_track = 0;

x = -3:0.1:3;

y = -3:0.1:3;

[xx,yy] = meshgrid(x,y);

j1=3*(1-xx).^2.*exp(-(xx.^2+(yy+1).^2));

j2=10*(xx./5-xx.^3-yy.^5).*exp(-(xx.^2+yy.^2));

j3=(1/3)*exp(-((xx+1).^2+yy));

zz=j1-j2-j3;

figure(1);

surf(xx,yy,zz);

hold on

% ===========================荧火虫常量初始化开始============================

%1.初始化地址

for i=1:m

? ? gaddress(:,i)=domx(i,1)+(domx(i,2)-domx(i,1))*rand(n,1);

end

gvalue = maxfun(gaddress);

gbest_old = max(gvalue);

%

%可视化

plot3(gaddress(:,1),gaddress(:,2),gvalue(:),'b*');

drawnow;

pause(1);

%

%2.初始化荧光素

ioti(:,1)=iot0;

%3.初始化决策半径

rdi(:,1)=r0;

iter_max=500;%最大迭代次数

t=1;%迭代累计

unchange = 0;

% ===========================荧火虫常量初始化结束============================

% =============================iter_max迭代开始=============================

while(t<=iter_max) && (unchange<60)

? ? %1.更新荧光素

? ? ioti=max(0,(1-rho)*ioti+gamma*maxfun(gaddress));

? ? %2.各荧火虫移动过程开始

? ? for i=1:n

? ? ? ? %2.1 决策半径内找更优点

? ? ? ? Nit=[];%存放荧火虫序号

? ? ? ? for j=1:n

? ? ? ? ? ? if (norm(gaddress(j,:)-gaddress(i,:))<rdi(i))&&(ioti(i,1)<ioti(j,1))

? ? ? ? ? ? ? ? Nit(numel(Nit)+1)=j;

? ? ? ? ? ? end

? ? ? ? end

? ? ? ? %2.2 找下一步移动的点开始

? ? ? ? if length(Nit)>0 %先判断Nit个数不为0

? ? ? ? ? ? Nitioti=ioti(Nit,1);%选出Nit荧光素

? ? ? ? ? ? SumNitioti=sum(Nitioti);%Nit荧光素和

? ? ? ? ? ? Molecular=Nitioti-ioti(i,1);%分子

? ? ? ? ? ? Denominator=SumNitioti-ioti(i,1);%分母

? ? ? ? ? ? Pij=Molecular./Denominator;%计算Nit各元素被选择概率

? ? ? ? ? ? Pij=cumsum(Pij);%累计

? ? ? ? ? ? Pij=Pij./Pij(end);%归一化

? ? ? ? ? ? Pos=find(rand<Pij);%确定位置

? ? ? ? ? ? j=Nit(Pos(1));%确定j的位置

? ? ? ? ? ? %荧火虫i向j移动一小步

? ? ? ? ? ? gaddress(i,:)=gaddress(i,:)+s*(gaddress(j,:)-gaddress(i,:))/norm(gaddress(j,:)-gaddress(i,:));

? ? ? ? ? ? gaddress(i,:)=range(gaddress(i,:),domx);%限制范围

? ? ? ? ? ??

? ? ? ? ? ? %

? ? ? ? ? ? %更新决策半径

? ? ? ? ? ? rdi(i)=rdi(i)+beta*(nt-length(Nit));

? ? ? ? ? ? if rdi(i,1)<0

? ? ? ? ? ? ? ? rdi(i,1)=0;

? ? ? ? ? ? end

? ? ? ? ? ? if rdi(i,1)>rs

? ? ? ? ? ? ? ? rdi(i,1)=rs;

? ? ? ? ? ? end

? ? ? ? end

? ? ? ? %2.2 找下一步移动的点结束

? ? end

? ? %

? ? %可视化

? ? gvalue = maxfun(gaddress);

? ? gbest_new = max(gvalue);

? ??

? ? if gbest_new > gbest_old

? ? ? ? unchange = 0;

? ? ? ? gbest_old = gbest_new;

? ? else

? ? ? ? unchange = unchange + 1;

? ? end

? ??

? ? %plot(gaddress(:,1),gaddress(:,2),'b.','markersize',6);hold on;

? ? if mod(t,20)

? ? ? ? plot3(gaddress(:,1),gaddress(:,2),gvalue(:),'b*');

? ? ? ? drawnow;

? ? ? ? pause(0.01);

? ? end

? ? %2.各荧火虫移动过程结束

? ? %保存动态图gif

? ? ? ? ? ? f=getframe(gcf);??

? ? ? ? ? ? imind=frame2im(f);

? ? ? ? ? ? [imind,cm] = rgb2ind(imind,256);

? ? ? ? ? ? ?if(sign_first==1)

? ? ? ? ? ? ? ? ?sign_first=0;

? ? ? ? ? ? ? ? imwrite(imind,cm,'track.gif','gif', 'Loopcount',inf,'DelayTime',0.02);

? ? ? ? ? ? ?else

? ? ? ? ? ? ? ? imwrite(imind,cm,'track.gif','gif','WriteMode','append','DelayTime',0.02);

? ? ? ? ? ? ?end

? ? ? ? ? ? ?%保存动态图gif

? ? t=t+1;

end

% =============================iter_max迭代结束=============================

% =============================输出最优结果开始=============================

gvalue=maxfun(gaddress);%求各个荧火虫的值

disp('最大值为:')

num=find(gvalue==max(gvalue));%最大值序号

MaxValue=-max(gvalue)

disp('最优解为:')

BestAddress=gaddress(num,:);

% =============================输出最优结果结束=============================

? 运行结果

? 参考文献

[1]彭新建, 翁小雄. 基于萤火虫算法优化BP神经网络的公交行程时间预测[J]. 广西师范大学学报:自然科学版, 2017, 35(1):9.

?? 关注我领取海量matlab电子书和数学建模资料

??部分理论引用网络文献,若有侵权联系博主删除

?

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:33:42  更:2022-10-17 12:37:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:54:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码