【开盘指数预测】基于matlab遗传算法优化小波神经网络GA-ANN股票开盘指数预测【含Matlab源码 2014期】

本文主要是介绍【开盘指数预测】基于matlab遗传算法优化小波神经网络GA-ANN股票开盘指数预测【含Matlab源码 2014期】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

⛄一、遗传算法优化小波神经网络简介

1 小波神经网络
1.1 小波神经网络结构

小波神经网络分为松散型与融合型两类, 前者将小波分析作为神经网络的前置手段, 对网络输入初步优化, 使得信息便于神经网络的处理, 但这类WNN并未改变隐含层的传递函数, 依然存在神经网络的固有缺陷;后者采用小波元替代神经元, 用小波函数的伸缩、平移参数替代输入层到隐含层的权值及隐含层阈值, 是小波和神经网络的直接融合。本文研究采用融合性WNN, 其网络拓扑结构如图1所示。
在这里插入图片描述
图1 融合性小波神经网络拓扑结构图
图1中各个字母代表含义如下:
x1, x2, …, xM:输入层数据;
wj, k:输入层到隐含层的权值参数;
ψa, b (x) :小波基函数, 本文采用Morlet函数, 其表达式如下:
在这里插入图片描述
a、b分别为小波基函数的伸缩参数和平移参数;
wi, j:隐含层到输出层的权值参数;
σ (I-t) :输出层Sigmoid函数, 其表达式如下:
在这里插入图片描述
I、t分别为输出的输入和阈值。

y1, y2, …, yN:输出层数据。

1.2 小波神经网络算法思想
为求得WNN的稳定结构, 首先借助训练集数据进行学习, 其次借助测试集数据对网络结构验证。在学习过程的第一阶段, 将经隐含层处理的样本数据作为输出向前传播, 然后与期望输出对比, 若不匹配, 则进入第二阶段。此阶段将输出误差以某种形式反向传至各层神经元, 从而获取调整各个神经元权值的误差信号。经过两个阶段重复迭代, 修正WNN网络的参数。在训练中, 以输出误差限定值或设定的迭代次数作为终止条件。整体思想如以下伪代码所示:

While不满足终止条件{
遍历训练集中的每个样本:
#1将每个样本输入沿着网络前向传播计算
输入层到隐含层:
隐含层输入表达式:
在这里插入图片描述
隐含层输出表达式:
在这里插入图片描述
隐含层到输出层:

输出层输入表达式:
在这里插入图片描述
输出层输出表达式:
在这里插入图片描述
#2使用误差项后项传播

误差函数:
在这里插入图片描述
式中:P为样本个数, dnp为输出层第n个节点的期望输出, ynp为实际输出。

输出层权重更新表达式:
在这里插入图片描述
输出层阈值调整表达式:
在这里插入图片描述
隐含层权值调整表达式:
在这里插入图片描述
伸缩参数调整表达式:
在这里插入图片描述
平移参数调整表达式:
在这里插入图片描述
式 (8) -式 (12) 中η均为小波神经网络的学习效率。

2 GA优化WNN预测算法
2.1 遗传算法

遗传算法GA (Genetic Algorithm) 是借鉴生物界优胜劣汰的进化规律演化而来的一种并行随机搜索算法, 其主要思想是把问题参数编码为染色体, 对染色体进行一系列运算。即由选择算子获得优良个体遗传给下一代;利用交叉算子进行模式重组;利用变异算子进行模式突变。经过循环这些遗传操作, 种群向有利的方向进化, 最终得到所求问题最优解。遗传算法的随机搜索能力, 使其能够避免陷入局部最优, 且有着较好的收敛速度, 可以在小波参数优化问题上充分发挥优势。

遗传算法优化的主要要素:

(1) 编码设置由于待优化参数较多, 文中遗传算法采用实数编码, 通过对种群中具有某种形式的个体进行遗传操作, 获取群体中最优个体, 然后通过解码得到网络最佳参数。

(2) 适应度函数遗传算法在迭代过程中将适应度函数作为个体优劣的评价依据, 其评估结果可直接作为选择算子的依据, 不需要外部信息。本文中适应度函数确定为:
在这里插入图片描述
式中:E是小波神经网络的误差函数。

(3) 遗传操作遗传操作是遗传算法的核心, 其目的是通过逐代优化获得问题最优解, 包括三个基本遗传算子:选择、交叉、变异。

选择算子, 在迭代过程中选择优质的个体, 淘汰劣质的个体, 本文采用基于适应度比例选择策略的轮盘赌法。

交叉算子, 选择操作后的新一代群体, 按一定的概率在两两之间进行交叉操作。交叉概率PC的大小将影响算法的全局搜索能力, 一般较大的交叉概率可以促进种群进化。

变异算子, 随机改变种群个体编码串上的值, 即某个个体的个别基因发生0-1反转。变异操作按一定的概率Pm进行, 其目的一方面是使算法具有局部搜索能力, 另一方面是保持群体多样性, 防止早熟现象的发生。

2.2 GA-WNN工作步骤
利用遗传算法对网络权值优化的全局搜索能力与神经网络良好的逼近能力, 可以对复杂的短时交通流量建模, 克服了传统小波神经网络训练时易陷入局部极值的弊端。遗传算法优化小波神经网络的原理如图2所示。
在这里插入图片描述
图2 遗传算法优化小波神经网络流程图

算法的基本步骤如下:

Step1设种群规模为M。随机生成初始种群N= (N1, N2, …, NM) , 采用实数编码对个体Ni编码。

Step2用Step1中的种群N进行训练, 此时的WNN参数由初始化获得。

Step3计算种群N中每个个体的适应度值。若满足终止条件则跳至Step6, 不满足则执行Step4。

Step4对于适应度大的个体, 选择其中一部分直接继承给下一代, 同时将遗传操作后产生的最差个体用父代适应度最大的个体替代。

Step5对当前一代群体进行交叉和变异等遗传操作, 产生下一代群体, 转Step3。

Step6循环结束, 将最后一代群体中最优个体的解码还原值作为WNN的初始参数。

Step7采用Step6获取的最优参数建立短时交通流量预测模型。

⛄二、部分源代码

tic
% 清空环境变量
clc,clear
% 网络参数配置
load stock_index
%节点个数
inputnum=6;
hiddennum=7;
outputnum=1;
NIND=40; %个体数目
MAXGEN=50; %最大遗传代数
NVAR=inputnumhiddennum+hiddennum+hiddennum+hiddennumoutputnum; %变量维数
PRECI=inputnumhiddennum+hiddennum+hiddennum+hiddennumoutputnum; %变量二进制位数
GGAP=0.9; %代沟
% 输入输出数据归一化
[inputn,inputps]=mapminmax(input’);
[outputn,outputps]=mapminmax(output’);
inputn=inputn’;
outputn=outputn’;
%节点初始化
y=zeros(1,outputnum);
net=zeros(1,hiddennum);
net_ab=zeros(1,hiddennum);
%遗传算法
trace=zeros(MAXGEN,2);
FieldD=[rep([PRECI],[1,NVAR]);rep([0;1],[1,NVAR]);rep([1;0;1;1],[1,NVAR])];
Chrom=crtbp(NIND,NVAR*PRECI);
C_x=bs2rv(Chrom,FieldD);
gen=0;
%调用函数
for i=1:NIND
ObjV(i,1)=objfun(C_x(i,:),y,inputnum,hiddennum,outputnum,net,input,inputn,outputn);
end
while gen<MAXGEN,
FitnV=ranking(ObjV);
SelCh=select(‘sus’,Chrom,FitnV,GGAP);
SelCh=recombin(‘xovsp’,SelCh,0.7);
SelCh=mut(SelCh);
for i=1:size(SelCh,1)
C_y=bs2rv(SelCh,FieldD);
ObjVSel(i,1)=objfun_1(C_y(i,:),y,inputnum,hiddennum,outputnum,net,input,inputn,outputn);
end
[Chrom ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);
gen=gen+1;
[Y,I]=min(ObjV);
trace(gen,1)=min(ObjV);
trace(gen,2)=sum(ObjV)/length(ObjV);

  plot(trace(:,1));hold on;plot(trace(:,2),'-.');grid;legend('种群均值变化','解的变化')

end
bestchrom=C_x(I,:);
%
Wjk=bestchrom(1:inputnumhiddennum);
b=bestchrom(inputnum
hiddennum+1:inputnumhiddennum+hiddennum);
a=bestchrom(inputnum
hiddennum+hiddennum+1:inputnumhiddennum+hiddennum+hiddennum);
Wij=bestchrom(inputnum
hiddennum+hiddennum+hiddennum+1:inputnumhiddennum+hiddennum+hiddennum+hiddennumoutputnum);
%赋给网络权值和阈值
Wjk=reshape(Wjk,hiddennum,inputnum);Wjk_1=Wjk;Wjk_2=Wjk_1;
Wij=reshape(Wij,outputnum,hiddennum);Wij_1=Wij;Wij_2=Wij_1;
b=reshape(b,1,hiddennum);b_1=b;b_2=b_1;
a=reshape(a,1,hiddennum);a_1=a;a_2=a_1;

lr1=0.01; %学习概率
lr2=0.001; %学习概率
maxgen=100; %迭代次数
%节点初始化
y=zeros(1,outputnum);
net=zeros(1,hiddennum);
net_ab=zeros(1,hiddennum);

%权值学习增量初始化
d_Wjk=zeros(hiddennum,inputnum);
d_Wij=zeros(outputnum,hiddennum);
d_a=zeros(1,hiddennum);
d_b=zeros(1,hiddennum);
% 网络训练
for i=1:maxgen

%误差累计
error(i)=0;% 循环训练
for kk=1:size(input,1)x=inputn(kk,:);yqw=outputn(kk,:);for j=1:hiddennumfor k=1:inputnumnet(j)=net(j)+Wjk(j,k)*x(k);net_ab(j)=(net(j)-b(j))/a(j);endtemp=mymorlet(net_ab(j));for k=1:outputnumy=y+Wij(k,j)*temp;   %小波函数endend

⛄三、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 李会超,李鸿,张博.基于遗传算法优化小波神经网络的短时交通流量预测[J].计算机应用与软件. 2018,35(07)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

这篇关于【开盘指数预测】基于matlab遗传算法优化小波神经网络GA-ANN股票开盘指数预测【含Matlab源码 2014期】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/439652

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

工厂ERP管理系统实现源码(JAVA)

工厂进销存管理系统是一个集采购管理、仓库管理、生产管理和销售管理于一体的综合解决方案。该系统旨在帮助企业优化流程、提高效率、降低成本,并实时掌握各环节的运营状况。 在采购管理方面,系统能够处理采购订单、供应商管理和采购入库等流程,确保采购过程的透明和高效。仓库管理方面,实现库存的精准管理,包括入库、出库、盘点等操作,确保库存数据的准确性和实时性。 生产管理模块则涵盖了生产计划制定、物料需求计划、