matlab新手入门 | 基于GA-BP神经网络的预测模型(含完整代码)

文章目录

前言

一、主函数

二、其它函数

预测结果


前言

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

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


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

一、主函数

main.m

%% 加载神经网络的训练样本 测试样本每行一个样本 每列一个特征 输入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


预测结果 

matlab新手入门 | 基于GA-BP神经网络的预测模型(含完整代码)_第1张图片

matlab新手入门 | 基于GA-BP神经网络的预测模型(含完整代码)_第2张图片

你可能感兴趣的:(matlab,神经网络,算法,启发式算法)