| |
|
开发:
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代码 |
? 内容介绍为了提高数据分类准确率,提出一种基于萤火虫算法和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电子书和数学建模资料 ??部分理论引用网络文献,若有侵权联系博主删除 ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |