遺傳算法的MATLAB程序?qū)嵗齙第1頁
遺傳算法的MATLAB程序?qū)嵗齙第2頁
遺傳算法的MATLAB程序?qū)嵗齙第3頁
遺傳算法的MATLAB程序?qū)嵗齙第4頁
遺傳算法的MATLAB程序?qū)嵗齙第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、%將二進(jìn)制編碼轉(zhuǎn)換成十進(jìn)制function pop 2=decodechrom(pop,spo int,length) pop1=pop (:,s po int:s po int+length-1);pop 2=decodebinary (pop 1);3、計算目標(biāo)函數(shù)值calobjvalue.m函數(shù)的功能是實現(xiàn)目標(biāo)函數(shù)的計算, 改。遺傳算法的程序?qū)嵗?如求下列函數(shù)的最大值xe0,10f(x)=10*sin(5x)+7*cos(4x)一、初始化(編碼)init pop.m函數(shù)的功能是實現(xiàn)群體的初始化,pop size表示群體的大小,chromlength表示染色體的長度(二值數(shù)的長度),長度大

2、小取決于變量的二進(jìn)制編碼的長度(在本例中取10位)。代碼:%Name: init pop.m%初始化function pop=init pop(pop size,chromlength)pop=round(rand( pop size,chromlength);% rand隨機(jī)產(chǎn)生每個單元為0,1行數(shù)為pop size,列數(shù)為chromlength的矩陣,% roud對矩陣的每個單元進(jìn)行圓整。這樣產(chǎn)生的初始種群。二、計算目標(biāo)函數(shù)值1、將二進(jìn)制數(shù)轉(zhuǎn)化為十進(jìn)制數(shù)代碼:%Name: decodebinary.m%產(chǎn)生2n 2A(n-1) . 1function pop 2=decodebinary

3、(pop)的行向量,然后求和,將二進(jìn)制轉(zhuǎn)化為十進(jìn)制p x, py=size (p o p);for i=1: pypop 1(:,i)=2.A( py-1).* pop (:,i);求pop行和例數(shù)p y=py -1;endpop 2=su m(pop 1,2);求pop1的每行之和2、將二進(jìn)制編碼轉(zhuǎn)化為十進(jìn)制數(shù)(2)decodechrom.m函數(shù)的功能是將染色體(或二進(jìn)制編碼)轉(zhuǎn)換為十進(jìn)制,參數(shù)spoint的起始位置。(對于多個變量而言,如有兩個變量, 開始,另一個變量從11開始。本例為1),參數(shù) 代碼:%Name: decodechrom.m采用20為表示,每個變量101ength表示所截

4、取的長度(本例為表示待解碼的二進(jìn)制串為,則第一個變量從110)。其公式采用本文示例仿真,可根據(jù)不同優(yōu)化問題予以修代碼:%Name: calobjvalue.m %實現(xiàn)目標(biāo)函數(shù)的計算function objvalue=calobjvalue (pop)temp 1=decodechro m(pop ,1,10);%將pop每行轉(zhuǎn)化成十進(jìn)制數(shù)x=te mp 1*10/1023;objvalue=10*sin(5*x)+7*cos(4*x);%三、計算個體的適應(yīng)值將二值域中的數(shù)轉(zhuǎn)化為變量域的數(shù)計算目標(biāo)函數(shù)值代碼:%Name:calfitvalue.m%計算個體的適應(yīng)值function fitvalu

5、e=calfitvalue(objvalue) global Cmin;Cmin=0;px,p y=size(objvalue);for i=1: pxif objvalue(i)+Cmin0temp=Cmin+objvalue(i);elsetemp=0.0;endfitvalue(i)=te mp;end fitvalue=fitvalue;四選擇復(fù)制選擇或復(fù)制操作是決定哪些個體可以進(jìn)入下一代。程序中采用賭輪盤選擇法選擇,這種方法較易實現(xiàn)。根據(jù)方程Pi=fi/Efi=fi/fsum,選擇步驟:在第t代,由(1)式計算fsum和pi產(chǎn)生0,1的隨機(jī)數(shù)rand(.),求s=rand( .)*f

6、sum求刀fi中最小的k,則第k個個體被選中進(jìn)行N次2)、3)操作,得到N個個體,成為第t=t+1%Name: selection.m%選擇復(fù)制function new pop=selectio n(pop ,fitvalue)p x, py=size( pop);newin=1; %同理while newin v=pxif(ms(newin)vfitvalue(fitin) %ms(newin)數(shù)值,同理fitvalue(fitin)new pop( newin,:)=pop( fitin,:);%表示的是ms賦值,即將舊種群中 的第fitin列向量中第newin位個個體保留到下一代代種群4

7、)代碼:totalfit=sum(fitvalue);%求適應(yīng)值之和fitvalue=fitvalue/totalfit;%單個個體被選擇的概率fitvalue=cumsum(fitvalue);3 6 10%累積概率,女n fitvalue=12 3 4,貝Ll cumsum(fitvalue)=1ms=sort(rand( px,1);方法,由小到大排列%從小到大排列,將rand(px,1)產(chǎn)生的一列隨機(jī)數(shù)變成輪盤賭形式的表示fitin=1; %fivalue個體的單個個體被選擇的概率是一向量,fitin代表向量中元素位,即fitvalue(fitin)代表第fitin個chromleng

8、th=10;%字符串長度(個體長度)(new pop) newin=newin+1;elsefitin=fitin+1;end end五2.5交叉交叉(crossover),群體中的每個個體之間都以一定的概率pc交叉,即兩個個體從各自字符串的某一位置(一般是隨機(jī)確定)開始互相交換,這類似生物進(jìn)化過程中的基因分裂與重組。例如,假設(shè)2個父代個體x1,x2為:x1=0100110 x2=1010001從每個個體的第3位開始交叉,交又后得到2個新的子代個體y1,y2分別為:y1=0100001 y2=1010110這樣2個子代個體就分別具有了2個父代個體的某些特征。利用交又我們有可能由父代個體在子代組

9、合成具有更高適合度的個體。事實上交又是遺傳算法區(qū)別于其它傳統(tǒng)優(yōu)化方法的主要特點(diǎn)之一。代碼:%Name: crossover.m%交叉function new pop=crossover_multiv (pop,pc) global Numv p x, py=size( pop);m=p y/Numv;for j=1:Numvpop 1=ones (p x,m);pop2=pop(:,m*(j-1)+1:m*j);%for i=1:2: px-1取出相應(yīng)變量對應(yīng)的二進(jìn)制編碼段if(rand vpc)cpo int=round(rand*(m-1); %cpo intpop 1(i,:)=pop

10、2(i,1:c po int) pop 2(i+1,c po int+1:m);pop 1(i+1,:)=pop 2(i+1,1:c po int) pop 2(i,c po int+1:m);為交叉點(diǎn)elsepop 1(i,:)=pop 2(i,1:m);pop 1(i+1,:)=pop 2(i+1,1:m);endendn ewpop(:,m*(j-1)+1:m*j)=pop1;中將交叉后的一個參數(shù)的編碼放入新種群end六、變異變異(mutation),基因的突變普遍存在于生物的進(jìn)化過程中。變異是指父代中的每個個體的每一位都以概率pm翻轉(zhuǎn),即由“變?yōu)椤?”或由“(變?yōu)椤?”遺傳算法的變異特

11、性可以使求解過程隨機(jī)地搜索到解可能存在的整個空間,因此可以在一定程度上求得全局最優(yōu)解。代碼:%Name: mutation.m%變異function new pop=mutatio n(pop,pm) p x, py=size( pop);new pop=ones(size (pop);for i=1: pxif(randbestfitbestindividual=pop (i,:);bestfit=fitvalue(i);end end八、主程序 代碼:%Name:genmain05.mclear clfpop size=20;群體大小chromlength=10;%字符串長度(個體長度)n

12、ew pop=crossover( pop,p c);new pop=mutatio n(pop,p c);bestindividual,bestfit=best( pop ,fitvalue);%y(i)=max(bestfit);求出群體中適應(yīng)值最大的個體及其適應(yīng)值n(i)=i;pop 5=bestindividual;x(i)=decodechrom( pop 5,1,chromlength)*10/1023;pop=new pop;end fplot(10*sin(5*x)+7*cos(4*x) ,0 10) hold on plot(x,y,r*) hold offpc=0.6;pm=0.0

溫馨提示

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

評論

0/150

提交評論