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

news/2024/10/19 15:24:17/

目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

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

基于三层网络结构的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所示:

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

2.仿真效果预览

matlab2022a仿真结果如下:

 

 

 

 

3.MATLAB核心程序

C    = OHLC(:,4); 
Mins = min(C);
Maxs = max(C);
C    = (C-Mins)/(Maxs-Mins);
LEN = 10;
%样本的划分
for i = 1:length(C)-LENPrice1(:,i) = C(i:i+LEN-1);Price2(i)   = C(i+LEN);
end%训练样本
L1 = floor(0.6*length(Price2));
for i = 1:L1train_data(:,i) = Price1(:,i); train_aim(i)    = Price2(i);
end%测试样本
L2 = length(Price2) - L1;
for i = 1:L2test_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

4.完整MATLAB

V

V


http://www.ppmy.cn/news/642.html

相关文章

双十二有哪些数码好物值得入手、双十二必买数码好物清单

双十二马上就到了,相信很多小伙伴已经按耐不住想要入手了吧?但如果目前还没什么头绪,不知道买什么的话,现在就不妨来抄一下作业吧!近期我整理了一份双十二数码好物清单,都是我从用户评价、产品亮点、折扣力…

java毕业设计的滑雪场学具租赁管理系统mybatis+源码+调试部署+系统+数据库+lw

java毕业设计的滑雪场学具租赁管理系统mybatis源码调试部署系统数据库lw java毕业设计的滑雪场学具租赁管理系统mybatis源码调试部署系统数据库lw本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse 前…

防火墙原理讲解(二)

♥️作者:小刘在C站 ♥️每天分享云计算网络运维课堂笔记,一起努力,共赴美好人生! ♥️夕阳下,是最美的,绽放。 目录 一.什么是防火墙 2.防火墙的工作原理 三.主要实现过程 五.防火墙配置 六.防火墙的…

MySQL事务详解

目录 引例 什么是事务 一个完整事务所具有的四大属性 为什么会出现事务 事务常见操作方式 事务隔离级别 为什么要存在隔离级别 一致性 引例 如下图,是一个火车售票系统,当客户端A发现还有一张票时,将票卖掉,还没执行更新…

容器运行时与k8s概述

容器运行时与k8s概述 首先我们要明确一个知识点就是容器本质上就是一个进程,一个特殊的进程,是通过 Namespace 实现资源(网络、文件系统等)隔离,通过 Cgroups 实现资源(CPU、内存)限制&#xff…

疑惑与解答

问题一、为什么链表创建时需要用到指针 当我在使用链表的时候&#xff0c;突然&#xff0c;我脑海中出现一个疑惑&#xff0c;为什么开始创建一个空链表时需要用到指针。 #include<stdio.h>typedef struct student {int num;char[10];struct student *next; }STU;int …

Flutter FlutterActivity找不到

Flutter FlutterActivity找不到1.大多数报错应该都是这个样子2.接下来找到我们自己安装的 flutterSDK 路径我放在下面 flutterSdk\flutter_windows_3.3.4-stable\flutter\bin\cache\artifacts\engine\android-arm 3.这个界面大家应该都很熟悉吧(这是快捷键 ctrlshiftalts) …

Kamiya丨Kamiya艾美捷AREG酶联免疫吸附试验原理

Kamiya艾美捷AREG酶联免疫吸附试验预期用途&#xff1a; 该试剂盒是一种用于体外定量测量大鼠AREG的夹心酶免疫测定法血清、血浆和其他生物流体。仅供研究使用。不用于诊断程序。 存储&#xff1a; 所有试剂应按照小瓶上的标签保存。校准器、检测试剂A、检测试剂B和96孔带板应…