資源描述:
《遺傳算法優(yōu)化BP神經網絡實現(xiàn)代碼》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。
1、%讀取數(shù)據(jù)data=xlsread('data.xls');%訓練預測數(shù)據(jù)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)';%數(shù)據(jù)歸一化[inputn,mininput,maxinput,outputn,minoutput,maxoutpu
2、t]=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);%數(shù)據(jù)歸一化inputn_tes
3、t=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)%本函數(shù)完成交叉操作%pcorssinput:交叉概率%lenchrominput:染色體的長度%
4、chrominput:染色體群%sizepopinput:種群規(guī)模%retoutput:交叉后的染色體fori=1:sizepop%每一輪for循環(huán)中,可能會進行一次交叉操作,染色體是隨機選擇的,交叉位置也是隨機選擇的,%但該輪for循環(huán)中是否進行交叉操作則由交叉概率決定(continue控制)%隨機選擇兩個染色體進行交叉pick=rand(1,2);whileprod(pick)==0pick=rand(1,2);endindex=ceil(pick.*sizepop);%交叉概率決定是否進行交叉pick=rand;whil
5、epick==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*v
6、2+(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;%清空環(huán)境變量clcclear%%%網絡結構建
7、立%讀取數(shù)據(jù)loaddatainputoutput%節(jié)點個數(shù)inputnum=2;hiddennum=5;outputnum=1;%訓練數(shù)據(jù)和預測數(shù)據(jù)input_train=input(1:1900,:)';input_test=input(1901:2000,:)';output_train=output(1:1900)';output_test=output(1901:2000)';%選連樣本輸入輸出數(shù)據(jù)歸一化[inputn,inputps]=mapminmax(input_train);[outputn,outputps
8、]=mapminmax(output_train);%構建網絡net=newff(inputn,outputn,hiddennum);%%遺傳算法參數(shù)初始化maxgen=10;%進化代數(shù),即迭代次數(shù)sizepop=10;%種群規(guī)模pcross=[0.3];%交叉概率選擇,0和