预览加载中,请您耐心等待几秒...
1/6
2/6
3/6
4/6
5/6
6/6

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

%读取数据data=xlsread('data.xls');%训练预测数据data_train=data(1:113,:);data_test=data(118:123,:);input_train=data_train(:,1:9)';output_train=data_train(:,10)';input_test=data_test(:,1:9)';output_test=data_test(:,10)';%数据归一化[inputn,mininput,maxinput,outputn,minoutput,maxoutput]=premnmx(input_train,output_train);%对p和t进行字标准化预处理net=newff(minmax(inputn),[10,1],{'tansig','purelin'},'trainlm');net.trainParam.epochs=100;net.trainParam.lr=0.1;net.trainParam.goal=0.00001;%net.trainParam.show=NaN%网络训练net=train(net,inputn,outputn);%数据归一化inputn_test=tramnmx(input_test,mininput,maxinput);an=sim(net,inputn);test_simu=postmnmx(an,minoutput,maxoutput);error=test_simu-output_train;plot(error)k=error./output_trainfunctionret=Cross(pcross,lenchrom,chrom,sizepop,bound)%本函数完成交叉操作%pcorssinput:交叉概率%lenchrominput:染色体的长度%chrominput:染色体群%sizepopinput:种群规模%retoutput:交叉后的染色体fori=1:sizepop%每一轮for循环中,可能会进行一次交叉操作,染色体是随机选择的,交叉位置也是随机选择的,%但该轮for循环中是否进行交叉操作则由交叉概率决定(continue控制)%随机选择两个染色体进行交叉pick=rand(1,2);whileprod(pick)==0pick=rand(1,2);endindex=ceil(pick.*sizepop);%交叉概率决定是否进行交叉pick=rand;whilepick==0pick=rand;endifpick>pcrosscontinue;endflag=0;whileflag==0%随机选择交叉位pick=rand;whilepick==0pick=rand;endpos=ceil(pick.*sum(lenchrom));%随机选择进行交叉的位置,即选择第几个变量进行交叉,注意:两个染色体交叉的位置相同pick=rand;%交叉开始v1=chrom(index(1),pos);v2=chrom(index(2),pos);chrom(index(1),pos)=pick*v2+(1-pick)*v1;chrom(index(2),pos)=pick*v1+(1-pick)*v2;%交叉结束flag1=test(lenchrom,bound,chrom(index(1),:));%检验染色体1的可行性flag2=test(lenchrom,bound,chrom(index(2),:));%检验染色体2的可行性ifflag1*flag2==0flag=0;elseflag=1;end%如果两个染色体不是都可行,则重新交叉endendret=chrom;%清空环境变量clcclear%%%网络结构建立%读取数据loaddatainputoutput%节点个数inputnum=2;hiddennum=5;outputnum=1;%训练数据和预测数据input_train=input(1:1900,:)';input_test=input(1901:2000,:)';output_train=output(1:1900)';output_test=output(1901:2000)';%选连样本输入输出数据归一化[inputn,inputps]=mapminmax(input_train);[outputn,outputps]=mapminmax(output_train);%构建网络net=newff(inputn,outputn,hiddennum);%%遗传算法参数初始化maxgen=10;%进化代数,即迭代次数sizepop=10;%种群规模pcross=[0.3];%交叉概率选择,0和