m基于GA遗传优化的BP神经网络时间序列预测算法matlab仿真

简介: m基于GA遗传优化的BP神经网络时间序列预测算法matlab仿真

1.算法描述

   将遗传算法(GA)与BP神经网络相结合,使用GA优化BP神经网络的主要参数。然后将影响输出响应值的多个特征因素作为GA-BP神经网络模型的输入神经元, 输出响应值作为输出神经元进行预测测试。BP神经网络的网络层包括输入层,隐含层和输出层三个网络层次,其基本结构如下图所示:

1.png

基于三层网络结构的BP神经网络具有较为广泛的应用场合和训练效果。

    在BP神经网络中,隐含层数量对神经网络的性能有着至关重要的影响,如果隐含层数量过多,会大大增加BP神经网络的内部结构的复杂度,从而降低学习效率,增加训练时间;如果隐含层数量过少,则无法精确获得训练输入数据和输出结果之间的内在规律,增加预测误差。因此,选择合适的隐含层个数具有十分重要的意义。由于隐含层个数的设置没有明确的理论可以计算,通常情况下,采用逐次分析的方法获得,即通过对不同隐含层所对应的神经网络进行预测误差的仿真分析,选择误差最小情况下所对应的隐含层个数。

    学习率,即网络权值得更新速度,当学习率较大的时候,网络权值的更新速度快,当网络稳定性会下降;当学习率较小的时候,网络权值的更新速度慢,网络较为稳定。这里选择BP神经网络的学习率方式参考上一章节隐含层的选择方式,即通过对比不同学习率的网络训练误差,选择性能较优的学习率。

   BP神经网络的初始网络权值对网络训练的效率以及预测性能有着较大的影响,通常情况下,采用随机生成[-1,1]之间的随机数作为BP神经网络的初始权值。

    本文,通过matlab的BP神经网络工具箱函数newff来构建BP神经网络,通过newff函数构建BP网络,其主要步骤如下:

     第一,BP神经网络初始化后,其matlab程序如下:

     net = newff(traindata, trainaim, HiddenNum);

    其中traindata表示训练数据,trainaim表示训练目标,HiddenNum表示BP神经网络隐含层个数,net表示BP神经网络模型函数。

     第二,BP神经网络参数设置,其matlab程序所示:

设置学习率,其matlab程序为 net.trainParam.lr = 0.25;

设置训练误差目标,其matlab程序为net.trainParam.goal = 1e-8;

设置神经网络训练次数,其matlab程序为net.trainParam.epochs = 200;

    第三,BP神经网络的训练,其matlab程序所示:

    net = train(net,train_data,train_aim);

这里通过train函数对神经网络net进行训练,得到训练后的BP神经网络模型。

其算法流程图如图2所示:

2.jpeg

    从图2的算法流程图可知,基于自适应遗传优化的BP神经网络模型其主要通过交叉概率与变异概率的自适应调节,使个体对网络权值进行不断的更新,从而提高BP神经网络的预测精度。通过MATLAB对BP神经网络,基于遗传优化的BP神经网络,基于改进遗传优化的BP神经网络以及基于改进遗传优化的组合BP神经网络等多种算法的股价预测性能。从仿真结果可知,基于改进遗传优化的组合BP神经网络性能略优于改进遗传优化的BP神经网络,而比起传统的BP神经网络预测算法和基于传统遗传优化的BP神经网络预测算法,具有较大的性能优势。

2.仿真效果预览
matlab2022a仿真结果如下:

3.png
4.png
5.png
6.png
7.png
8.png
9.png

3.MATLAB核心程序

Mins = min(C);
Maxs = max(C);
C    = (C-Mins)/(Maxs-Mins);
LEN = 10;
%样本的划分
for i = 1:length(C)-LEN
    Price1(:,i) = C(i:i+LEN-1);
    Price2(i)   = C(i+LEN);
end
 
%训练样本
L1 = floor(0.6*length(Price2));
for i = 1:L1
    train_data(:,i) = Price1(:,i); 
    train_aim(i)    = Price2(i);
end
 
%测试样本
L2 = length(Price2) - L1;
for i = 1:L2
    test_data(:,i) = Price1(:,i+L1); 
    test_aim(i)    = Price2(i+L1);
end
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%如下的是改进BP网络算法
%定义神经网络的各个层的个数
Num_In     = LEN;
Num_Hidden = 5;
Num_Out    = 1;
%构建BP网络
net        = newff(train_data,train_aim,Num_Hidden);
 
ERR1 = [];
ERR2 = [];
ERR3 = [];
 
 
%通过改进遗传算法优化BP参数
net        = func_newGA2(net,Num_In,Num_Hidden,Num_Out,train_data,train_aim);
%网络训练
net.trainParam.showWindow = 0;
net        = train(net,train_data,train_aim);
outputs    = sim(net,test_data);
d1         = test_aim*(Maxs-Mins) + Mins;
d2         = outputs*(Maxs-Mins) + Mins;
 
ERR1   = [ERR1,mean(abs(d1-d2)./d2) ];
ERR2   = [ERR2,mean((abs(d1-d2)./d2).^2) ];
ERR3   = [ERR3,std((abs(d1-d2)./d2).^2) ];
02_034m
相关文章
|
7月前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
558 0
|
6月前
|
机器学习/深度学习 算法
采用蚁群算法对BP神经网络进行优化
使用蚁群算法来优化BP神经网络的权重和偏置,克服传统BP算法容易陷入局部极小值、收敛速度慢、对初始权重敏感等问题。
467 5
|
6月前
|
机器学习/深度学习 数据采集 人工智能
深度学习实战指南:从神经网络基础到模型优化的完整攻略
🌟 蒋星熠Jaxonic,AI探索者。深耕深度学习,从神经网络到Transformer,用代码践行智能革命。分享实战经验,助你构建CV、NLP模型,共赴二进制星辰大海。
|
7月前
|
机器学习/深度学习 并行计算 算法
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
173 8
|
6月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
583 0
|
6月前
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
378 2
|
7月前
|
传感器 机器学习/深度学习 编解码
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
322 3
|
7月前
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
233 6
|
6月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
289 8
|
6月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
338 8

热门文章

最新文章

下一篇
开通oss服务