基于遗传优化的双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

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软件算法开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值