遺傳算法 最值_第1頁
遺傳算法 最值_第2頁
遺傳算法 最值_第3頁
遺傳算法 最值_第4頁
遺傳算法 最值_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

遺傳算法最值遺傳算法(GeneticAlgorithm)是模擬達爾文生物進化論的自然選擇和遺傳學機理的生物進化過程的計算模型,是一種通過模擬自然進化過程搜索最優(yōu)解的方法,它最初由美國Michigan大學J.Holland教授于1975年首先提出來的,并出版了頗有影響的專著《AdaptationinNaturalandArtificialSystem命,GA這個名稱才逐漸為人所知,J.Holland教授所提出的GA通常為簡單遺傳算法(SGA)。1-_L.■J.■?:>!?:'、'1-_L.■J.■?:>!?:'、':■1?:■■三1!~r三1J._L_-L_J--L_J--矣一「rm!■1s.■':■1?:■§計算個彼S適痕度也ftr-:■-L.J■,I■1>L_1選打1交叉■Is:J..L.J..:圖1.遺傳算法的流程圖pmutationtempbestfitmaxfitgenbestgenpoppmpnp%染色體長度%種群大小%交叉概率%變異概率,取到了最大,可以適當?shù)臏p小點設定為0.05%最大代數(shù)%淘汰概率%保護概率所求函數(shù)為y=x+10*sin(5*x)+7*cos(4*x)%主函數(shù)functionmain()globalchromlchromoldpopnewpopvariblefitnesspopsizesumfitness%定義全局變量globalpcrossglobalmaxgen%lchrom=12;popsize=30;pcross=0.6;pmutation=0.1;maxgen=100;mp二floor(pp*popsize);np二floor(po*popsize);%initpop;%forgen=1:maxgengeneration;end%best;bestfitbestgengen=1:maxgen;%保護的個數(shù)%淘汰的個數(shù)%初始種群%最佳個體適應度值輸出pmutationtempbestfitmaxfitgenbestgenpoppmpnp%染色體長度%種群大小%交叉概率%變異概率,取到了最大,可以適當?shù)臏p小點設定為0.05%最大代數(shù)%淘汰概率%保護概率mp二floor(pp*popsize);np二floor(po*popsize);%initpop;%forgen=1:maxgengeneration;end%best;bestfitbestgengen=1:maxgen;%保護的個數(shù)%淘汰的個數(shù)%初始種群%最佳個體適應度值輸出%最佳個體所在代數(shù)輸出endoldpop(i,1:lchrom)二chrom;end%%***產(chǎn)生新一代個體**********************************%functiongeneration。%計算適應度值%保護淘汰操作%選擇操作objfun;pp_po;select;crossover;mutation;%%********************計算適應度值********************************%functionobjfun()globallchromoldpopfitnesspopsizechrommaxfitgenvariblea=0;b=30;%計算適應度值%保護淘汰操作%選擇操作chrom=oldpop(i,:);c=decimal(chrom);varible(1,i)=a+c*(b-a)/(2."lchrom-1);%對應變量值fitness(1,i)=varible(1,i)*varible(1,i);%fitness(1,i)=20*cos(0.25*varible(1,i))-12*sin(0.33*varible(1,i))+40;%個體適應度函數(shù)值end%%個體排序lsort;%maxfit(1,gen)二max(fitness);%求最大適應度值%%********************二進制轉(zhuǎn)十進制****************************%functionc=decimal(chrom)globallchrompopsizec=0;forj=1:lchrom%個體排序c=c+chrom(1,j)*2.”(lchrom—j);end%

%*********************個體排序********************************%functionlsort()globalpopsizefitnessoldpopfori=1:popsizej=i+1;whilej<=popsizeiffitness(1,i)>fitness(1,j)tf=fitness(1,i);tc=oldpop(i,:);fitness(1,i)=fitness(1,j);oldpop(i,:)=oldpop(j,:);fitness(1,j)=tf;oldpop(j,:)=tc;endj=j+1;endend%********************************************************************%%********************保護/淘汰操作************************************functionpp_po()globalpopsizeoldpopnpi=np+1;%np=floor(po*popsize);%淘汰的個數(shù)j=1;whilei<=popsizetoldpop(j,:)=oldpop(i,:);j=j+1;endfori=i+1;endforoldpop(i,:)二toldpop(i,:);end%*************************************************************%********************%轉(zhuǎn)輪法選擇操作**********************************functionselect()globalfitnesspopsizesumfitnessoldpoptempmpnpsumfitness=0;i=1:(popsize-np-mp)sumfitness二sumfitness+fitness(1,i);i=1:(popsize-np-mp)sumfitness二sumfitness+fitness(1,i);endforp(1,i)=fitness(1,i)/sumfitness;%個體染色體的選擇概率endq=cumsum(p);%個體染色體的累積概率b=sort(rand(1,(popsize-mp)));%mp保護個體數(shù)j=1;k=1;whilej<=(popsize-mp)ifb(1,j)<q(1,k)temp(j,:)=oldpop(k,:);j=j+1;elsek=k+1;endendfori=(popsize-mp+1):popsizej=popsize-np-mp+1;temp(i,:)=oldpop(j,:);j=j+1;end%**************************************************************************functioncrossover()globaltemppopsizepcrosslchrommpn=floor(pcross*(popsize-mp));%交叉發(fā)生的次數(shù)ifrem(n,2)~=0n=n+1;endj=1;m=0;fori=1:(popsize-mp)p=rand;ifp<pcrossparent(j,:)=temp(i,:);%產(chǎn)生兩個父代k(1,j)=i;j=j+1;m=m+1;if(j==3)&(m<=n)pos=round(rand*(lchrom-1))+1;fori=1:poschild1(1,i)=parent(1,i);child2(1,i)=parent(2,i);endfori=(pos+1):lchromchild1(1,i)=parent(2,i);child2(1,i)=parent(1,i);endi=k(1,1);j=k(1,2);temp(i,:)=child1(1,:);temp(j,:)=child2(1,:);j=1;endendend%*********************************************************************%************************變異操作*************************************functionmutation()globalpopsizelchrompmutationtempnewpopoldpopmpm=lchrom*(popsize-mp);%總的基因數(shù)n=round(pmutation*m);%變異發(fā)生的次數(shù)fori=1:nk=round(rand*(m-1))+1;j=ceil(k/lchrom);l=rem(k,lchrom);ifl==0temp(j,lchrom)=~temp(j,lchrom);elsetemp(j,l)=~temp(j,l);endendfori=1:popsizenewpop(i,:)=temp(i,:);%產(chǎn)生新的個體oldpop(i,:)=newpop(i,:);end%*********************************************************************%****************最佳個體********************************************functionbest()globalmaxfitbestfitgenmaxgenbestgenbestfit=maxfit(1,1);gen=2;whilegen<=maxgenifbestfit<maxfit(1,gen)bestfit=maxfit(1,gen);bestgen=gen;endgen=gen+1;end%*******************************************************************function[sol,eval]=fitness(sol,options)x=sol(1);eval=x+10*sin(5*x)+7*cos(4*x);%eval為個體適應度%遺傳算法求最大值figure(1)fplot('x+10*sin(5*x)+7*cos(4*x)',[0,9])holdoninitPop=initializega(10,[09],'fitness');figure(1)plot(initPop(:,1),initPop(:,2),'b*')[x,endPop]=ga([09],'fitness',口,initPop,[1e-6:1:1],'maxGenTerm',25,'normGeomSelect',...[0.08],['arithXover'],[20],'nonUnifMutation',[2253])figureplot(endPop(:,1),endPop(:,2),'bo')[x,endPop,bPop,trace]=ga([09],'fitness',口,initPop,[1e-611],'maxGenTerm',25,'normGeomSelect',...[0.08],['arithXover'],[2],'nonUnifMutation',[2253])figureplot(endPop(:,1),endPop(:,2),'y*')f

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論