提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言一、工程背景二、代码(部分)1.引入库2.读入数据进化过程注意具体安装步骤声明前言
基于遗传算法的BP神经网络优化算法 GA BP
一、工程背景
基于遗传算法的BP神经网络优化算法,以某拖拉机的齿轮箱为工程背景,介绍使用基于遗传算法的BP神经网络进行齿轮箱故障的诊断。
二、代码(部分)
1.引入库
代码如下:加载神经网络的训练样本 测试样本每列一个样本 输入P 输出T
%% 加载神经网络的训练样本 测试样本每列一个样本 输入P 输出T%样本数据就是前面问题描述中列出的数据load data% warning('off')% 初始隐层神经元个数hiddennum=31;% 输入向量的最大值和最小值threshold=[0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1];inputnum=size(P,1); % 输入层神经元个数outputnum=size(T,1);% 输出层神经元个数w1num=inputnum*hiddennum; % 输入层到隐层的权值个数w2num=outputnum*hiddennum;% 隐层到输出层的权值个数N=w1num+hiddennum+w2num+outputnum; %待优化的变量的个数%% 定义遗传算法参数NIND=40; %个体数目MAXGEN=50;%最大遗传代数PRECI=10; %变量的二进制位数GGAP=0.95;%代沟px=0.7; %交叉概率pm=0.01; %变异概率trace=zeros(N+1,MAXGEN); %寻优结果的初始值FieldD=[repmat(PRECI,1,N);repmat([-0.5;0.5],1,N);repmat([1;0;1;1],1,N)]; %区域描述器Chrom=crtbp(NIND,PRECI*N); %初始种群
2.读入数据
代码如下:BP神经网络初始权值和阈值
%% BP神经网络初始权值和阈值w1num=inputnum*hiddennum; % 输入层到隐层的权值个数w2num=outputnum*hiddennum;% 隐含层到输出层的权值个数w1=x(1:w1num); %初始输入层到隐含层的权值B1=x(w1num+1:w1num+hiddennum); %隐层神经元阈值w2=x(w1num+hiddennum+1:w1num+hiddennum+w2num); %初始隐层到输出层的权值B2=x(w1num+hiddennum+w2num+1:w1num+hiddennum+w2num+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}=reshape(B2,outputnum,1);%% 训练网络net=train(net,P,T);%% 测试网络Y=sim(net,P_test);err=norm(Y-T_test);
进化过程
最优初始权值和阈值:共592个,也就是说优化的变量数量为592最优初始权值和阈值:略最小误差err=0.78338
注意
提示:网上查找发现是因为缺少遗传算法需要的一个谢菲尔德gatbx工具箱,于是参考matlab遗传算法gatbx工具箱介绍及安装说明下载并安装了gatbx工具箱。
我已下载好,直接网盘提取即可:
链接:/s/1EZcZ7J002lvJVPZ6-w4_xA
提取码:wdr6
具体安装步骤
1、把下载的gatbx工具箱压缩包,解压到MATLAB安装目录下toolbox路径下(也可以解压后再复制gatbx文件到MATLAB安装目录下toolbox路径下*)
2、打开MATLAB后在toolbox里找到gatbx文件夹添加到路径即可,不需要做任何的更改。
声明
第一次发文章,如有不足,请见谅。