基于遗传算法的BP神经网络优化算法

遗传算法优化BP神经网络分为BP神经网络结构确定、遗传算法优化和 BP神经网络预测3个部分。其中,BP神经网络结构确定部分根据拟合函数输入输出参数个数确定 BP神经网络结构,这样就可以确定遗传算法的优化参数个数,进而确定遗传算法个体的编码长度。因为遗传算法优化的参数是 BP神经网络的初始权值和阈值,只要网络的结构已知,权值和阈值的个数就已知了。种群中的每个个体都包含了一个网络所有权值和阈值,个体通过适应度函数计算个体适应度值,遗传算法通过选择、交叉和变异操作找到最优适应度值对应的个体。BP神经网络预测用遗传算法得到最优个体对网络进行初始权值和阈值的赋值,网络经训练后预测样本输出。神经网络的权值和阈值一般是通过初始化为【-0.5,0.5】区间的随机数,这个初始化参数对网络训练的影响很大,但是又无法准确获得,对于相同的初始权重值和阈值,网络的训练结果是一样的,引入遗传算法就是为了优化出最优的初始权值和阈值。

遗传算法优化BP神经网络的算法流程如下:

《基于遗传算法的BP神经网络优化算法》

遗传算法的基本要素包括染色体编码方法、适应度函数、遗传操作和运行参数。其中染色体编码方法是指个体的编码方法,目前包括二进制法、实数法等。二进制法是指把个体编码成为一个二进制串,实数法是指把个体编码成为一个实数串。适应度函数是指根据进化目标编写的计算个体适应度值的函数,通过适应度函数计算每个个体的适应度值,提供给选择算子进行选择。遗传操作是指选择操作、交叉操作和变异操作。运行参数是遗传算法在初始化时确定的参数,主要包括群体大小 M,遗传代数G,交叉概率Pc和变异概率Pm。(下面都是引用的MATLAB智能算法30个案例里面的内容,太多了,偷了个懒)

《基于遗传算法的BP神经网络优化算法》
《基于遗传算法的BP神经网络优化算法》
《基于遗传算法的BP神经网络优化算法》
《基于遗传算法的BP神经网络优化算法》
《基于遗传算法的BP神经网络优化算法》
《基于遗传算法的BP神经网络优化算法》

下面是函数实现的代码部分:
clc
clear all
close all
%% 加载神经网络的训练样本 测试样本每列一个样本 输入P 输出T,T是标签
%样本数据就是前面问题描述中列出的数据
%epochs是计算时根据输出误差返回调整神经元权值和阀值的次数
load data
% 初始隐层神经元个数
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); %初始种群
%% 优化
gen=0; %代计数器
X=bs2rv(Chrom,FieldD); %计算初始种群的十进制转换
ObjV=Objfun(X,P,T,hiddennum,P_test,T_test); %计算目标函数值
while gen

    原文作者:遗传算法
    原文地址: https://blog.csdn.net/dulingtingzi/article/details/51114832
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞