基于遗传优化的双BP神经网络金融序列预测算法matlab仿真

目录

1.程序功能描述

2.测试软件版本以及运行结果展示

3.核心程序

4.本算法原理

5.完整程序


1.程序功能描述

基于遗传优化的双BP神经网络金融序列预测算法matlab仿真,采用的双BP神经网络结构如下:

2.测试软件版本以及运行结果展示

MATLAB2022A版本运行

三个算法的误差对比:

3.核心程序

...................................................................
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 = 60;
Num_Out    = 1;
%构建BP网络
net        = newff(train_data,train_aim,Num_Hidden);

ERR1 = [];
ERR2 = [];
ERR3 = [];
for j = 1:5
    j
    %通过改进遗传算法优化BP参数
    net        = func_newGA(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) ];
end

figure;
plot(d1,'b');
hold on
plot(d2,'r');
legend('真实股价','预测股价');
xlabel('时间(days)');
ylabel('收盘价格对比');

disp('平均误差:');
mean(ERR1)
disp('平方差:');
mean(ERR2)
disp('均方差:');
mean(ERR3)
save r2.mat d1 d2
04_004m

04_004m

4.本算法原理

整个BP算法的整体结构如下所示:

首先看下传统的遗传算法,遗传算法优化的过程如下所示:

 1.选择问题解的一个编码,给出一个有N个染色体的初始群体pop(1),t=1。

2.对群体中的每一个染色体 ,计算它的适应函数值f(xi)。

3.若停止规则满足,则算法停止,否则计算概率P,并以此概率分布,从pop(t)中随机选取N个染色体构成一个新的种群newpop(t)。

4.通过交叉(交叉概率为),得到N个染色体的crosspop(t+1)。

5.以较小的变异概率 ,使得某染色体的一个基因发生变异,形成新的群体mutpop(t+1)。  令t=t+1,pop(t)=mutpop(t),重复第(2)步。

其详细步骤如下:

      这里,通过设置两个BP神经网络的方法来实现预测功能,一个神经网络的初始学习率设置较大,一个神经网络的初始学习率设置较小,两个神经网络的误差分别为e1,e2,最后得到的结果按如下公式计算:

5.完整程序

VVV

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/616147.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用户登录后端:登录密码解密后用PasswordEncoder验证密码是否正确

前置知识: 前端登录加密看用户登录 PasswordEncoder加密看PasswordEncoder详解 项目中因为要判断用户登录密码是否正确,通过输入错误次数锁住用户 1.后端配置rsa私钥 #密码加密传输,前端公钥加密,后端私钥解密 rsa:private_key: xxxx2. 读…

HCIP_BGP综合实验

一:实验拓扑: 二:实验要求: 1、AS1中存在两个环回,一个地址为192.168.1.0/24,该地址不能在任何协议中宣告; AS3中存在两个环回一个地址为192.168.2.0/24,该地址不能在任何协议中宣告&am…

JAVA课程设计

一:Java连接mysql数据库 1.1点击进入mysql jar包下载官网 MySQL :: MySQL Community Downloads 将下载好的压缩包进行解压 解压之后下图就是连接数据库所用到的jar包: 将jar包复制到IDEA所用的项目下,放置jar包的目录为lib,需要…

医院如何做好漏费管理?什么是控费系统?控费系统现在成熟吗?

在中国深厚的人情土壤之中,某些医院里的医技科室,宛如隐秘的灰色地带,悄然滋生着利用职务之便谋取私利的暗流。这些科室的医务人员,以低于医院明文规定的收费标准,私下里为熟识的患者提供检查服务,仿佛形成…

IM是什么意思?

IM(即时通讯)作为现代通讯领域的重要且普遍应用,已成为人们日常生活和工作中不可或缺的通信方式。随着科技的不断发展和互联网的普及,IM工具通过实时信息传递,将沟通变得更加迅速、便捷、高效。 IM的诞生极大地改变了…

探索全画面塑料焊接透光率检测仪的科技魅力

在精密工业和科研领域中,对材料的光学性能有着严格的要求。全画面塑料焊接透光率检测仪是一种先进的设备,它能够精确测量塑料焊接接头的透光率,确保焊接质量符合高标准。本文将详细介绍这一设备的特点、工作原理以及它在实际应用中的重要性。…

未授权访问:JBoss未授权访问漏洞

目录 1、漏洞原理  2、环境搭建 3、未授权访问 4、利用jboss.deployment getshell 防御手段 今天继续学习各种未授权访问的知识和相关的实操实验,一共有好多篇,内容主要是参考先知社区的一位大佬的关于未授权访问的好文章,还有其他大佬…

ppt转pdf的java实现

一、实现方式 java采用jacob包的功能,把ppt演示文稿转换为pdf。 支持文件格式:pptx,ppt 二、事先准备 1、依赖于office,需安装office办公软件 2、需要下载一个jacob-1.20-x64.dll的文件,放到java的bin目录下。 文件可以网上搜…

【DevOps】Linux 安全:iptables 组成、命令及应用场景详解

导读:全面掌握 iptables:从基础到实践 在 Linux 系统中,iptables 是一个非常强大的工具,它不仅是系统管理员用来构建和管理网络防火墙的首选工具,而且也是一个功能丰富的网络流量处理系统。无论是进行包过滤、监控网络…

二叉树进阶 --- 上

目录 1. 二叉搜索树的概念及结构 1.1. 二叉搜索树的概念 1.2. 二叉搜索树的结构样例 2. 二叉搜索树的实现 2.1. insert 的非递归实现 2.2. find 的非递归实现 2.3. erase 的非递归实现 2.3.1. 第一种情况:所删除的节点的左孩子为空 2.3.1.1. 错误的代码 2…

【工具篇】-什么是.NET

“.NET":.NET Core是由Microsoft开发,目前在.NET Foundation(一个非营利的开源组织)下进行管理。.NET Core是用C#和C编写的,并采用MIT协议作为开源协议。 简单来说:就是开发框架。 .NET 又称 .NET 平台或 .NET 框架&#xf…

Container exited with a non-zero exit code 1

最近遇到运行yarn pi的时候遇到如下问题。 很明显是container出错了,但是错误没有提示的很清楚。然后去看nodemanager日志也是如此。这时候笔者第一个想到要去看container的执行日志。container具体的日志目录位置是通过YARN的配置文件(如yarn-site.xml&…

JavaSE——集合框架一(1/7)-集合体系概述(集合体系结构,Collection集合体系)、Collection的常用方法(介绍,实例演示,代码)

目录 集合体系概述 集合体系结构 Collection集合体系 Collection的常用方法 介绍 实例演示 完整代码 集合体系概述 集合体系结构 集合是一种容器,用来装数据的,类似于数组,但集合的大小可变,开发中也非常常用。 为了满足…

sql注入之bool盲注

目录 盲注步骤 1、进入靶场 2、如下图所示输入?id1‘ 判断此时存在注入点 3、判断列数 ​编辑 4、开始盲注 普通的python脚本 代码思想 结果 二分查找python脚本 二分查找算法思想简介 二分查找与普通查找的主要差距 代码思想 代码 结果​编辑 下面以…

Fcos源码训练编译问题

训练fcos代码时出现问题 ImportError: cannot import name ‘_C’ 原因是没有对代码进行编译 运行python setup.py develop --no-deps进行代码编译 编译过程中出现报错: fcos_core/csrc/cuda/ROIAlign_cuda.cu:5:10: fatal error: THC/THC.h: No such file or dire…

iphone进入恢复模式怎么退出?分享2种退出办法!

iPhone手机莫名其妙的进入到了恢复模式,或者是某些原因需要手机进入恢复模式,但是之后我们不知道如何退出恢复模式怎么办? 通常iPhone进入恢复模式的常见原因主要是软件问题、系统升级失败、误操作问题等导致。那iphone进入恢复模式怎么退出&…

Python-VBA函数之旅-staticmethod函数

目录 一、staticmethod函数的常见应用场景 二、staticmethod函数使用注意事项 三、如何用好staticmethod函数? 1、staticmethod函数: 1-1、Python: 1-2、VBA: 2、推荐阅读: 个人主页: https://blog…

【EMQX实践】如何感知设备上下线?

序言 在智能物联时代,存设备需要联网上云场景。EMQX在此场景中属于设备连接网关关键节点,EMQX不紧紧只是消息中间件的作用,我们更需要监控哪些设备什么时候连接上线,又在什么时候断开下线。 为什么需要感知设备上下线 感知设备…

二叉树介绍

引入 定义 区别 定义不同 形态不同 基本形态

vscode默认终端设置为cmd的方法

vscode默认终端是powershell,执行某些命令时会提示权限等问题,如果更习惯使用cmd终端的话,可以将默认终端配置为cmd。 方法一: 方法二: 如果你想更改默认的终端,可以通过以下步骤操作: 打开 VSCode。使用…