遺傳算法matlab

遺傳算法matlab

ID:25509425

大?。?0.50 KB

頁數(shù):9頁

時間:2018-11-20

遺傳算法matlab_第1頁
遺傳算法matlab_第2頁
遺傳算法matlab_第3頁
遺傳算法matlab_第4頁
遺傳算法matlab_第5頁
資源描述:

《遺傳算法matlab》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、%下面舉例說明遺傳算法%%求下列函數(shù)的最大值%%f(x)=10*sin(5x)+7*cos(4x)x∈[0,10]%%將x的值用一個10位的二值形式表示為二值問題,一個10位的二值數(shù)提供的分辨率是每為(10-0)/(2^10-1)≈0.01。%%將變量域[0,10]離散化為二值域[0,1023],x=0+10*b/1023,其中b是[0,1023]中的一個二值數(shù)。%%%%-------------------------------------------------------------------

2、-------------------------------------------%%--------------------------------------------------------------------------------------------------------------%%編程%-----------------------------------------------%2.1初始化(編碼)%initpop.m函數(shù)的功能是實(shí)現(xiàn)群體的初始化,popsize表示群體

3、的大小,chromlength表示染色體的長度(二值數(shù)的長度),%長度大小取決于變量的二進(jìn)制編碼的長度(在本例中取10位)。%遺傳算法子程序%Name:initpop.m%初始化functionpop=initpop(popsize,chromlength)pop=round(rand(popsize,chromlength));%rand隨機(jī)產(chǎn)生每個單元為{0,1}行數(shù)為popsize,列數(shù)為chromlength的矩陣,%roud對矩陣的每個單元進(jìn)行圓整。這樣產(chǎn)生的初始種群。%2.2計(jì)算目標(biāo)函數(shù)值%

4、2.2.1將二進(jìn)制數(shù)轉(zhuǎn)化為十進(jìn)制數(shù)(1)%遺傳算法子程序%Name:decodebinary.m%產(chǎn)生[2^n2^(n-1)...1]的行向量,然后求和,將二進(jìn)制轉(zhuǎn)化為十進(jìn)制functionpop2=decodebinary(pop)[px,py]=size(pop);%求pop行和列數(shù)fori=1:pypop1(:,i)=2.^(py-i).*pop(:,i);endpop2=sum(pop1,2);%求pop1的每行之和%2.2.2將二進(jìn)制編碼轉(zhuǎn)化為十進(jìn)制數(shù)(2)%decodechrom.m函數(shù)的功

5、能是將染色體(或二進(jìn)制編碼)轉(zhuǎn)換為十進(jìn)制,參數(shù)spoint表示待解碼的二進(jìn)制串的起始位置%(對于多個變量而言,如有兩個變量,采用20為表示,每個變量10為,則第一個變量從1開始,另一個變量從11開始。本例為1),%參數(shù)1ength表示所截取的長度(本例為10)。%遺傳算法子程序%Name:decodechrom.m%將二進(jìn)制編碼轉(zhuǎn)換成十進(jìn)制functionpop2=decodechrom(pop,spoint,length)pop1=pop(:,spoint:spoint+length-1);pop2=

6、decodebinary(pop1);%2.2.3計(jì)算目標(biāo)函數(shù)值%calobjvalue.m函數(shù)的功能是實(shí)現(xiàn)目標(biāo)函數(shù)的計(jì)算,其公式采用本文示例仿真,可根據(jù)不同優(yōu)化問題予以修改。%遺傳算法子程序%Name:calobjvalue.m%實(shí)現(xiàn)目標(biāo)函數(shù)的計(jì)算function[objvalue]=calobjvalue(pop)temp1=decodechrom(pop,1,10);%將pop每行轉(zhuǎn)化成十進(jìn)制數(shù)x=temp1*10/1023;%將二值域中的數(shù)轉(zhuǎn)化為變量域的數(shù)objvalue=10*sin(5*x)

7、+7*cos(4*x);%計(jì)算目標(biāo)函數(shù)值%2.3計(jì)算個體的適應(yīng)值%遺傳算法子程序%Name:calfitvalue.m%計(jì)算個體的適應(yīng)值functionfitvalue=calfitvalue(objvalue)globalCmin;Cmin=0;[px,py]=size(objvalue);fori=1:pxifobjvalue(i)+Cmin>0temp=Cmin+objvalue(i);elsetemp=0.0;endfitvalue(i)=temp;endfitvalue=fitvalue';%

8、2.4選擇復(fù)制%選擇或復(fù)制操作是決定哪些個體可以進(jìn)入下一代。程序中采用賭輪盤選擇法選擇,這種方法較易實(shí)現(xiàn)。%根據(jù)方程pi=fi/∑fi=fi/fsum,選擇步驟:%1)在第t代,由(1)式計(jì)算fsum和pi%2)產(chǎn)生{0,1}的隨機(jī)數(shù)rand(.),求s=rand(.)*fsum%3)求∑fi≥s中最小的k,則第k個個體被選中%4)進(jìn)行N次2)、3)操作,得到N個個體,成為第t=t+1代種群%遺傳算法子程序%Name:selection.m

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。