- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
遗传算法优化BP神经
络实现代码
-CAL-FENGHAI.-(YICAI)-Company One 1
%馈取数据
data=xlsread();
%训练预测数据
data_train=data(l:113/:);
data_test=data(ll 8:123〃:);
input_train=data_trai n(:,l:9)‘;
output_train=data_train(:/10);
input_test=data_test(:/l-9)1;
output_test=data_test(:/10)1;
%数据归i化
[inputn/mininput/maxinput/outputn/minoutput/maxoutput]=premnmx(input_train,output_train); %对 p 和t进行字标准化预处理
net=newff(minmax(inputn)f[10/lJ/{tansig7purelin,}/,trainlm,);
%网络训练
n et=train( net,input n,o utputn);
%数据归i化
input n_test = tramnm x(input_t€Slmininput,maxinput);
an二 sim(netjnputn);
test_simu=postmnmx(an/minoutput/maxoutput);
error=test_simu-output_train;
plot(error)
k=error./output_train
function ret=Cross(pcross/lenchrom/chrom/sizepop/bound)
%本函数完成交叉操作
% pcorss input :交叉概率
% lenchrom input :染色体的长度
% chrom input :染色体群
% sizepop input :种群规模
% ret output:交叉后的染色体
for i=l:sizepop %每•轮for循坏屮,町能会进行•次交叉操作,染色体是随机选择的,交叉位置也 是随机选择的,%但该轮for循环中是否进行交叉操作则由交叉槪率决定(continue控制)
%随机选择两个染色体进行交叉
pick=rand(lz2);
while prod(pick)==0
pick=rand(l/2);
end
in dex=ceil(pick.*sizepop);
%交叉槪率决定是否进行交叉
pick=rand;
while pick==O
pick=rand;
end
if pickpcross
continue;
end
flag=O;
while flag==O
%随机选择交叉位
pick=ra nd;
while pick==O
pick=ra nd;
end
pos=ceil(pick.*sum(lenchrom)); %随机选择进行•交叉的位置,即选邛第几个变量进行交叉,注 意:两个染色体交叉的位置相同
pick=rand; %交叉开始
vl=chrom(index(l),pos);
v2=chrom(i ndex(2),pos);
chrom(index(l)/pos)=pick*v2+(l-pick)#vl;
chrom(index(2)/pos)=pick*vl+(l-pick)#v2; %交叉结束
flagl二test(lenchrom,bound〃chrom(indGX(“:)); %检验染色体 1 的可行性 flag2=test(lenchrom/bound/chrom(index(2)/:)); %检验染色体 2 旳可彳 j•性 if flagl*flag2==O
flag=O;
else flag=l;
end %如果两个染色体不是都可行,则重新交叉
end
end
ret=chrom;
%淸空环境变量
clc
clear
%
%%网络结构建立
%读取数据
load data input output
%节点个数
in putnum=2;
hidde nn um=5;
output num=l;
%训练数据和预测数据
input_train=input(l:1900/:);
input_test=input(1901:2000,:)1;
output_train=output(l::1900);
output_test=output(1901:2000);
%选连样本输入输出数据归•化
[in putnzinputps]=mapmi nmax(i nput_trai n); (outputn/outputps]=mapminmax(output_train);
%构建网络
net 二 n ewff(i nput n
文档评论(0)