Ⅰ 谁有用于数据预测的用遗传算法改进的BP神经网络程序
给你来一段
%主程序
%数据归一化预处理
nntwarn off
[pn,minp,maxp]=premnmx(p);
pp=(pn+1)/2;
[tn,mint,maxt]=premnmx(t);
%建立BP网络
net=newff(minmax(pp),[15,1],{'logsig','purelin'},'trainlm');
%应用遗传算法对优化网络初始值
in=size(pn,1);
out=size(tn,1);
hi=15;%隐含层节点数
L=in*hi+hi*out+hi+out;%遗传算法编码长度
aa=ones(L,1)*[-1,1];
popu=50;%种群规模
initPpp=initializega(popu,aa,'ISeval');%初始化种群
gen=100;%遗传世代
%调用GAOT工具箱,其中目标函数定义为ISeval
[x,endPop,bPop,trace]=ga(aa,'ISeval',[],initPpp,[1e-6 1 1],'maxGenTerm',…
,gen,'normGeomSelect',[0.09],['arithXover'],[2],'nonUnifMutation',[2 gen 3]);
%绘收敛曲线图
figure(1)
plot(trace(:,1),1./trace(:,3),'r-');
hold on
plot(trace(:,1),1./trace(:,2),'b-');
xlabel('Generation');
ylabel('Sum-Squared Error');
figure(2)
plot(trace(:,1),trace(:,3),'r-');
hold on
plot(trace(:,1),trace(:,2),'b-');
xlabel('Generation');
ylabel('Fittness');
%将得到的权值矩阵赋给尚未开始训练的BP网络
[w1,b1,w2,b2,a1,a2,se,eval]=IScode(x); %调用自定义编解码函数
%创建网络
net.iW{1,1}=w1;
net.LW{2,1}=w2;
net.b{1,1}=b1;
net.b{2,1}=b2;
%设置训练参数
net.trainParam.show=10;
net.trainParam.epochs=5000;
net.trainParam.goal=0.05;
%训练网络
net=train(net,pp,t);
%自定义目标函数
function [sol, eval] = ISeval(sol,options)
% eval - the fittness of this indivial
% sol - the indivial, returned to allow for Lamarckian evolution
% options - [current_generation]
p=[];%原始输入数据
t=[];%原始输出数据
in=size(p,1);
out=size(t,1);
hi=15;%隐含层节点数
L=in*hi+hi*out+hi+out;%遗传算法编码长度
for i=1:L,
x(i)=sol(i);
end;
[w1, b1, w2, b2, a1, a2, se, eval]=IScode(x);
%自定义编解码函数
function [w1, b1, w2, b2, a1, a2, se, eval]=IScode(x)
[pn,minp,maxp]=premnmx(p);
pp=(pn+1)/2;
[tn,mint,maxt]=premnmx(t);
in=size(pn,1);%输入层结点数
out=size(tn,1);%隐含层结点数
hi=15;%隐含层结点数
L=in*hi+hi*out+hi+out;%遗传算法编码长度
% 前in*hi个编码为w1
for i=1:hi,
for j=1:in,
w1(i,j)=x(in*(i-1)+j);
end
end
% 接着的hi*out个编码为w2
for i=1:out,
for j=1:hi,
w2(i,j)=x(hi*(i-1)+j+in*hi);
end
end
% 接着的hi个编码为b1
for i=1:hi,
b1(i,1)=x((in*hi+hi*out)+i);
end
% 最后的out个编码b2
for i=1:out,
b2(i,1)=x((in*hi+hi*out+hi)+i);
end
% 计算hi层与out层的输出
a1=tansig(w1*pp,b1);
a2=purelin(w2*a1,b2);
% 计算误差平方和
se=sumsqr(t-a2);eval=1/se; % 遗传算法的适应值
Ⅱ 你好看你发帖问过用BP神经网络预测股票价格的提问
首先你要搞清bp的基本原理,基于梯度法的原则,因为这种算法按梯度走,极易进入局部最小点二出不来,所以对于比较简单的模型如高斯曲面有一定的逼近能力,但是现实如你所说的股票,相关因素特别多,也就是说神经网络输入通道会很多,而且通道和通道直接哟相关性,模型在超曲面上就像是大海海面一样跌宕起伏,使用bp明显太过于困难,而且实际中样本有限的很,bp理论基于样本无限的学习规则(21实际70年代),你要证明的话,可以例举一个简单的单极二次型函数,用来试试看bp能否完全逼近这个函数
Ⅲ 大家用遗传算法优化BP神经网络做预测效果好吗
不好 可以选择其他方式
Ⅳ 遗传神经网络算法和神经网络算法的区别
最本质的区别可以说是学习方法不同,或者说模型的优化方法不同。
前者应该是基于遗传算法进行网络权值的学习,而后者大都是采用反向传播(BP)算法进行权值学习,而这两种算法差异很大。建议你分别了解:
1)遗传算法
2)反向传播算法
Ⅳ 遗传算法优化bp神经网络,训练好后,做预测会更加准确求大神告知!
1、遗传算法优化BP神经网络是指优化神经网络的参数; 2、因此,对训练时间没有影响。
Ⅵ bp神经网络股票价格预测的MATLAB编程
P=[];‘输入,开盘价,最高价,最低价,收盘价成交量依次5天的数据’
T=[];’输出,即第二日的收盘’
net=newff(minmax(P),[7,1],{'tansig','logsig'},'traingdx');
net.trainParam.epochs=1000; ‘最大训练次数,根据需要可自行调节’
net.trainParam.goal=0.01; ‘误差’
net.trainParam.lr=0.01; ‘学习率’
net=train(net,P,T); ‘训练网络’
test=[];‘待预测数据输入’
out=sim(net,test); ‘仿真预测’
我的这个程序没有进行初始化,你还需要先将数据进行初始化后才能算。
Ⅶ matlab优化神经网络预测股票程序,求大神帮忙,有重谢。
我这里有遗传算法优化的神经网络,但是粒子群的没有啊!
Ⅷ 你好,你能帮我解释一下怎么用神经网络做预测以及用遗传算法做优化吗具体点谢谢了
我当时数学建模比赛时用到过
有两种方法
第一种:自己编代码
当然这种比较麻烦,但是比较灵活,你可以按照自己的要求在代码中修改。具体代码我这已经没了,因为过了好久了,你可以网络一下 MATLAB 神经网络算法代码。
第二种:直接使用MATLAB
MATLAB带有神经网络工具箱,在控制台输入命令即可打开。这个工具箱是MATLAB集成的,功能强大而且简单易用,不知道符合你的要求不。
给你个使用说明网址链接: