遺傳算法及其MATLAB實(shí)現(xiàn)課件_第1頁(yè)
遺傳算法及其MATLAB實(shí)現(xiàn)課件_第2頁(yè)
遺傳算法及其MATLAB實(shí)現(xiàn)課件_第3頁(yè)
遺傳算法及其MATLAB實(shí)現(xiàn)課件_第4頁(yè)
遺傳算法及其MATLAB實(shí)現(xiàn)課件_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第四章遺傳算法及其MATLAB實(shí)現(xiàn)1、遺傳算法的理論現(xiàn)代生物進(jìn)化理論的基本觀點(diǎn):種群是生物進(jìn)化的基本單位,生物進(jìn)化的實(shí)質(zhì)是種群基因頻率的改變。種群進(jìn)化將最終導(dǎo)致新物種的形成。遺傳算法雜交了漸變式和爆發(fā)式兩種思想。(2)解碼目的是為了將不直觀的二進(jìn)制還原成十進(jìn)制。設(shè)某一個(gè)體的二進(jìn)制編碼為bkbk-1…b2b1,則對(duì)應(yīng)的解碼公式為解碼在宏觀上對(duì)應(yīng)著表現(xiàn)型,微觀上對(duì)應(yīng)DNA的翻譯過(guò)程。(3)交配“交配運(yùn)算”是使用單點(diǎn)或多點(diǎn)進(jìn)行交叉的算子。首先用隨機(jī)數(shù)產(chǎn)生一個(gè)或多個(gè)交配點(diǎn)位置,然后兩個(gè)個(gè)體在交配點(diǎn)位置互換部分基因碼,形成兩個(gè)子個(gè)體。原代子代交換后四位基因(4)突變?yōu)榱吮苊庠谒惴ǖ笃诔霈F(xiàn)種群過(guò)早收斂。對(duì)于二進(jìn)制的基因碼組成的個(gè)體種群,實(shí)行基因碼的小幾率翻轉(zhuǎn),即0變?yōu)?,1變?yōu)?。突變后的染色體可以看成原染色體的子代染色體。(5)倒位

指一個(gè)染色體某區(qū)段排列順序發(fā)生180°的顛倒,造成染色體內(nèi)的DNA序列重新排列。

倒位的部分倒位后(6)個(gè)體適應(yīng)度評(píng)估自然界對(duì)于生物的篩選機(jī)制與下圖相似。落在各個(gè)區(qū)域的幾率對(duì)應(yīng)遺傳算法中各條染色體被遺傳到下一代的幾率,其墜落位置對(duì)應(yīng)自變量取值。個(gè)體適應(yīng)度大的個(gè)體更容易被遺傳到下一代。通常,求目標(biāo)函數(shù)最大值的問(wèn)題可以直接把目標(biāo)函數(shù)作為檢測(cè)個(gè)體適應(yīng)度大小的函數(shù)。3、遺傳算法的MATLAB程序設(shè)計(jì)

程序設(shè)計(jì)流程及參數(shù)選取MATLAB遺傳算法工具箱①種群的規(guī)模②變異概率③交配概率④進(jìn)化代數(shù)⑤種群初始化遺傳算法的參數(shù)設(shè)計(jì)原則工具箱核心函數(shù)用法函數(shù)ga函數(shù)gaoptimset[x,fval.reason]=ga(@fitnessfun.nvars,options)options=gaoptimset(‘PropertyName1’,’PropertyValue1’,PropertyName2’,’PropertyValue2’,PropertyName3’,’PropertyValue3’……)GeneticAlgorithmandDirectSearchToolbox適應(yīng)度函數(shù)設(shè)計(jì)實(shí)例1遺傳算法和直接搜索工具箱中的函數(shù)ga是求解目標(biāo)函數(shù)最小值,可直接令目標(biāo)函數(shù)為適應(yīng)度函數(shù)function

f=fitnessfcn(x)%x為自變量實(shí)例2若有約束條件(包括自變量取值范圍)求最小值functionf=fitnessfcn()xIf(x<=-1|x>3)%表示有約束x>-1和x<=3,其他約束條件類(lèi)推f=inf;elsef=f(x);end實(shí)例3若有約束條件(包括自變量取值范圍)求最大值將f=f(x)換成f=-f(x)4、遺傳算法應(yīng)用案例案例一

>>globalBitLengthglobalboundsbeginglobalboundsendbounds=[-22]; %一維自變量取值范圍precision=0.0001;%運(yùn)算精度boundsbegin=bounds(:,1);boundsend=bounds(:,2)計(jì)算如果滿足求解精度至少需要多長(zhǎng)染色體BitLength=ceil(log2((boundsend-boundsbegin)'./precision));popsize=50;%初始種群大小Generationnmax=12;%最大代數(shù)pcrossover=0.90;%交配概率pmutation=0.09;%變異概率

產(chǎn)生初始種群population=round(rand(popsize,BitLength)); 計(jì)算適應(yīng)度,返回適應(yīng)度f(wàn)itvalue和累積概率[Fitvalue,cumsump]=fitnessfun(population);Generation=1;whileGeneration<Generationnmax+1forj=1:2:popsizeseln=selection(population,cumsump);%選擇操作scro=crossover(population,seln,pcrossover);%交叉操作scnew(j,:)=scro(1,:);scnew(j+1,:)=scro(2,:);%變異操作smnew(j,:)=mutation(scnew(j,:),pmutation);smnew(j+1,:)=mutation(scnew(j+1,:),pmutation);endpopulation=smnew[Fitvalue,cumsump]=fitnessfun(population);%記錄當(dāng)前代最好的適應(yīng)度和平均適應(yīng)度[fmax,nmax]=max(Fitvalue);fmean=mean(Fitvalue);ymax(Generation)=fmax;ymean(Generation)=fmean;%記錄當(dāng)前代的最佳染色體個(gè)體x=transform2to10(population(nmax,:));%自變量取值范圍是[-22],需要把經(jīng)過(guò)遺傳運(yùn)算的最佳染色體整合到[-22]區(qū)間xx=boundsbegin+x*(boundsend-boundsbegin)/(power((boundsend),BitLength)-1);xmax(Generation)=xx;Generation=Generation+1endGeneration=Generation-1;Bestpopulation=xxBesttargetfunvalue=targetfun(xx)%繪制經(jīng)過(guò)遺傳運(yùn)算后的適應(yīng)度曲線。一般地,如果進(jìn)化過(guò)程中種群的平均適應(yīng)度與最大適%應(yīng)度在曲線上有相互趨同的形態(tài),表示算法收斂進(jìn)行得很順利,沒(méi)有出現(xiàn)震蕩;在這種前%提下,最大適應(yīng)度個(gè)體連續(xù)若干代都沒(méi)有發(fā)生進(jìn)化表明種群已經(jīng)成熟。%給適應(yīng)度函數(shù)加上一個(gè)大小合理的數(shù)以便保證種群適應(yīng)值為正數(shù)Fitvalue=Fitvalue'+230;%計(jì)算選擇概率fsum=sum(Fitvalue);Pperpopulation=Fitvalue/fsum;%計(jì)算累積概率cumsump(1)=Pperpopulation(1);fori=2:popsizecumsump(i)=cumsump(i-1)+Pperpopulation(i);endcumsump=cumsump';%子程序:新種群變異操作,函數(shù)名稱(chēng)存儲(chǔ)為mutation.mfunctionsnnew=mutation(snew,pmutation);BitLength=size(snew,2);snnew=snew;pmm=IfCroIfMut(pmutation);%根據(jù)變異概率決定是否進(jìn)行變異操作,1則是,0則否election.mfunctionseln=selection(population,cumsump);%從種群中選擇兩個(gè)個(gè)體fori=1:2r=rand;%產(chǎn)生一個(gè)隨機(jī)數(shù)prand=cumsump-r;j=1;whileprand(j)<0j=j+1;endseln(i)=j;%選中個(gè)體的序號(hào)end%子程序:將2進(jìn)制數(shù)轉(zhuǎn)換為10進(jìn)制數(shù),函數(shù)名稱(chēng)存儲(chǔ)為transform2to10.mfFunctionx=transform2to10(Population);BitLength=size(Population,2);x=Population(BitLen

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論