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

2024-03-15 1733阅读

温馨提示:这篇文章已超过369天没有更新,请注意相关的内容是否还可用!

文章目录

前言

一、遗传算法描述

二、优化思路

三、完整代码

预测结果 


前言

首先需要安装一下遗传算法工具箱,可参考这篇博客

MATLAB遗传算法工具箱安装包及安装方法(图解)_周杰伦今天喝奶茶了吗的博客-CSDN博客_matlab遗传算法工具箱安装


本模型可以结合自己的数据集进行预测,需要自行修改的地方均会使用【】进行标注。

一、遗传算法描述

       遗传算法(GeneticAlgorithm,GA)的理论是根据达尔文进化论而设计出来的算法,是一种通过模拟自然进化过程搜索最优解的方法。大体意思是生物是朝着好的方向进化的,在进化的过程中会自动选择优良基因淘汰劣等基因。向好的方向进化就是最优解的方向,优良的基因是符合当前条件的样本基因,可以得到充分的选择。遗传学机理中的生物进化过程中生物的一连串过程包括选择、交叉和变异三个主要的行为机制。因此遗传算法也主要分为选择、交叉和变异这三类操作完成淘汰机制,使训练后的自我进化按照条件朝着有力的方向进行,最终取得最优个体和解集合。作为一种算法的形成还需要编码、遗传变异计算适应度和解码等。

二、优化思路

       BP神经网络主要由三个层次组成,包括BP神经网络的输入层,BP神经网络的隐含层以及BP神经网络的输出层。来自外部的各种信息通过BP神经网络的输入层传输进入到其隐含层进行网络运算处理,并通过输出层输出得到最终的处理结果。当BP神经网络的输出层输出结果和其预先设置的输入值的误差较大的时候,则进入BP神经网络的反向传播阶段,并进行网络权值的更新,直到输出结果和期望结果误差满足一定条件为止。

       BP神经网络预测用遗传算法得到最优个体,并对网络进行初始权值和阈值的赋值,网络经训练后预测样本输出。遗传算法优化BP神经网络的要素包括种群初始化、适应度函数、选择算子、交叉算子和变异算子。

三、完整代码

1、main.m

包括导入数据、定义节点个数、定义算法参数、进行遗传操作和画预测对比图等部分,最后输出MAE、MAPE、RMSE、R2等评价指标。需要注意的是这里是以行为一各样本,若数据集以列为样本的话要注意转置。

%% 加载神经网络的训练样本 测试样本每行一个样本 每列一个特征 输入P 输出T
load input.mat % 【需要修改】导入输入数据集
load output.mat %【需要修改】导入输出数据集
P_train=input(1:75,1:5);   %【需要修改】第1-75行作为训练数据,输入数据集第1-5列是输入的特征
T_train=output(1:75,1);    %【需要修改】第1-75行作为训练数据,输出数据集第1列作为最终预测的特征
P_test=input(76:100,1:5);  %【需要修改】第76-100行作为测试数据,输入数据集第1-5列是输入的特征
T_test=output(76:100,1);   %【需要修改】第76-100行作为测试数据,输出数据集第1列作为最终预测的特征
%% 获取输入层节点、输出层节点个数
% 初始隐层神经元个数
inputnum=size(P_train,2); 
hiddennum=2*inputnum+1;
outputnum=size(T_train,2);
w1num=inputnum*hiddennum; % 输入层到隐层的权值个数
w2num=outputnum*hiddennum;% 隐层到输出层的权值个数
N=w1num+hiddennum+w2num+outputnum; %待优化的变量的个数
%% 定义遗传算法参数
NIND=50;        %个体数目
MAXGEN=50;      %最大遗传代数
PRECI=10;       %变量的二进制位数
GGAP=0.93;      %代沟
px=0.84;         %交叉概率
pm=0.02;        %变异概率
trace=zeros(N+1,MAXGEN);%寻优结果的初始值(初始化操作)
FieldD=[repmat(PRECI,1,N);repmat([-0.5;0.5],1,N);repmat([1;0;1;1],1,N)];%区域描述器,这一项主要是用来控制个体由2进制变成10进制的规则(个人理解就是数据由2进制转化为10进制并对样本进行归一化的过程)
Chrom=crtbp(NIND,PRECI*N);%初始种群 这里会生成一个40 x(10*N)的矩阵,即每一个种群中都包含了N个2进制的数用来表示N个个体
%% 优化
gen=0;                                 %代计数器
X=bs2rv(Chrom,FieldD);                 %计算初始种群的十进制转换(根据上述规则将X的2进制转化为10进制)
ObjV=Objfun(X,P_train,T_train,hiddennum,P_test,T_test); %计算目标函数值(将X带入适应度函数进行判断)
while gen
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]