遺傳算法入門(mén)新手必備matlab遺傳算法程序.doc

遺傳算法入門(mén)新手必備matlab遺傳算法程序.doc

ID:61433058

大小:30.50 KB

頁(yè)數(shù):8頁(yè)

時(shí)間:2021-01-30

遺傳算法入門(mén)新手必備matlab遺傳算法程序.doc_第1頁(yè)
遺傳算法入門(mén)新手必備matlab遺傳算法程序.doc_第2頁(yè)
遺傳算法入門(mén)新手必備matlab遺傳算法程序.doc_第3頁(yè)
遺傳算法入門(mén)新手必備matlab遺傳算法程序.doc_第4頁(yè)
遺傳算法入門(mén)新手必備matlab遺傳算法程序.doc_第5頁(yè)
資源描述:

《遺傳算法入門(mén)新手必備matlab遺傳算法程序.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。

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

2、-----------------%%--------------------------------------------------------------------------------------------------------------%%編程%-----------------------------------------------%2.1初始化(編碼)%initpop.m函數(shù)的功能是實(shí)現(xiàn)群體的初始化,popsize表示群體的大小,chromlength表示染色體的長(zhǎng)度(二值數(shù)的長(zhǎng)度),%長(zhǎng)度大小取決于

3、變量的二進(jìn)制編碼的長(zhǎng)度(在本例中取10位)。%遺傳算法子程序%Name:initpop.m%初始化functionpop=initpop(popsize,chromlength)pop=round(rand(popsize,chromlength));%rand隨機(jī)產(chǎn)生每個(gè)單元為{0,1}行數(shù)為popsize,列數(shù)為chromlength的矩陣,%round對(duì)矩陣的每個(gè)單元進(jìn)行圓整。這樣產(chǎn)生的初始種群。%2.2計(jì)算目標(biāo)函數(shù)值%2.2.1將二進(jìn)制數(shù)轉(zhuǎn)化為十進(jìn)制數(shù)(1)%遺傳算法子程序%Name:decodebinary.m%產(chǎn)生[2

4、^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ù)的功能是將染色體(或二進(jìn)制編碼)轉(zhuǎn)換為十進(jìn)制,參數(shù)spoint表示待解碼的二進(jìn)制串的起始位置%(對(duì)于多個(gè)變量而言,如有兩個(gè)變量,采用20為

5、表示,每個(gè)變量10為,則第一個(gè)變量從1開(kāi)始,另一個(gè)變量從11開(kāi)始。本例為1),%參數(shù)1ength表示所截取的長(zhǎng)度(本例為10)。%遺傳算法子程序%Name:decodechrom.m%將二進(jìn)制編碼轉(zhuǎn)換成十進(jìn)制functionpop2=decodechrom(pop,spoint,length)pop1=pop(:,spoint:spoint+length-1);pop2=decodebinary(pop1);%2.2.3計(jì)算目標(biāo)函數(shù)值%calobjvalue.m函數(shù)的功能是實(shí)現(xiàn)目標(biāo)函數(shù)的計(jì)算,其公式采用本文示例仿真,可根據(jù)不同優(yōu)化

6、問(wèn)題予以修改。%遺傳算法子程序%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*cos(4*x);%計(jì)算目標(biāo)函數(shù)值%2.3計(jì)算個(gè)體的適應(yīng)值%遺傳算法子程序%Name:calfitvalue.m%計(jì)算個(gè)體的適應(yīng)值functionfitvalue=calfitvalu

7、e(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';%2.4選擇復(fù)制%選擇或復(fù)制操作是決定哪些個(gè)體可以進(jìn)入下一代。程序中采用賭輪盤(pán)選擇法選擇,這種方法較易實(shí)現(xiàn)。%根據(jù)方程pi=fi/∑fi=fi/fsum,選擇步驟:%1)在第t代,由(1)式計(jì)算fsum和pi%2)產(chǎn)生{

8、0,1}的隨機(jī)數(shù)rand(.),求s=rand(.)*fsum%3)求∑fi≥s中最小的k,則第k個(gè)個(gè)體被選中%4)進(jìn)行N次2)、3)操作,得到N個(gè)個(gè)體,成為第t=t+1代種群%遺傳算法子程序%Name:selection.m%選擇復(fù)制functi

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

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

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