版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、遺傳算法1.遺傳算法的簡(jiǎn)單原理遺傳算法(Genetic Algorithm, GA)是一種基于自然群體遺傳演化機(jī)制的高效 探索算法,它摒棄了傳統(tǒng)的搜索方式,模擬自然界生物進(jìn)化過(guò)程,采用人工進(jìn) 化的方式對(duì)目標(biāo)空間進(jìn)行隨機(jī)化搜索。它將問(wèn)題域中的可能解看作是群體的一 個(gè)個(gè)體或染色體,并將每一個(gè)體編碼成符號(hào)用形式,模擬達(dá)爾文的遺傳選擇和 自然淘汰的生物進(jìn)化過(guò)程,對(duì)群體反復(fù)進(jìn)行基于遺傳學(xué)的操作(遺傳,交叉和 變異),根據(jù)預(yù)定的目標(biāo)適應(yīng)度函數(shù)對(duì)每個(gè)個(gè)體進(jìn)行評(píng)價(jià),依據(jù)適者生存,優(yōu) 勝劣汰的進(jìn)化規(guī)則,不斷得到更優(yōu)的群體,同時(shí)以全局并行搜索方式來(lái)搜索優(yōu) 化群體中的最優(yōu)個(gè)體,求得滿足要求的最優(yōu)解。我們先通過(guò)一個(gè)例
2、子來(lái)了解遺傳算法的原理:假定我們要求函數(shù)f(x) = x2的極大值,其中x為自然數(shù),0 Ex E31?,F(xiàn)在,我們將每一個(gè)數(shù)看成一個(gè)生命體, 通過(guò)進(jìn)化,我們看誰(shuí)能最后生存下來(lái),誰(shuí)就是我們所尋找的數(shù)。.編碼:我們將每一個(gè)數(shù)作為一個(gè)生命體,那么必須給其賦予一定的基因,這 個(gè)過(guò)程叫做編碼。我們可以把變量x編碼成5位長(zhǎng)的二進(jìn)制無(wú)符號(hào)整數(shù)表示形式, 比如x =13可表示為01101的形式,也就是說(shuō),數(shù)13的基因?yàn)?1101。.初始群體的生成:由于遺傳的需要,我們必須設(shè)定一些初始的生物群體, 讓 其作為生物繁殖的第一代,需要說(shuō)明的是,初始群體的每個(gè)個(gè)體都是通過(guò)隨機(jī)方 法產(chǎn)生的,這樣便可以保證生物的多樣性和競(jìng)
3、爭(zhēng)的公平性。.適應(yīng)度評(píng)估檢測(cè):生物的進(jìn)化服從適者生存,優(yōu)勝劣汰的進(jìn)化規(guī)則,因此, 我們必須規(guī)定什么樣的基因是 優(yōu)”的,什么樣的基因是 劣”的,在這里,我們稱 為適應(yīng)度。顯然,由于我們要求的最大值,因此,能使函數(shù)值較大的基因是優(yōu)的, 使函數(shù)值較小的基因是劣的,因此,我們可以將原函數(shù)f(x) = x2定義為適應(yīng)度函數(shù),用來(lái)衡量某一生物體的適應(yīng)程度。.選擇:接下來(lái),我們便可以進(jìn)行優(yōu)勝劣汰的過(guò)程,這個(gè)過(guò)程在遺傳算法里叫 做選擇。注意,選擇應(yīng)該是一個(gè)隨機(jī)的過(guò)程,基因差的生物體不一定會(huì)被淘汰, 只是其被淘汰概率比較大罷了,這與自然界中的規(guī)律是相同的。 因此,我們可以 采取賭輪的方式來(lái)進(jìn)行選擇。.交叉操作:
4、接下來(lái)進(jìn)行交叉繁殖,隨機(jī)選出兩個(gè)生物體,讓其交換一部分基 因,這樣便形成了兩個(gè)新的生物體,為第二代。.變異:生物界中不但存在著遺傳,同時(shí)還存在著變異,在這里我們也引入變 異,使生物體的基因中的某一位以一定的概率發(fā)生變化,這樣引入適當(dāng)?shù)臄_動(dòng), 能避免局部極值的問(wèn)題。以上的算法便是最簡(jiǎn)單的遺傳算法,通過(guò)以上步驟不斷地進(jìn)化,生物體的基因便 逐漸地趨向最優(yōu),最后便能得到我們想要的結(jié)果。2 .遺傳算法的步驟從上面的例子中,我們便能得到遺傳算法的一般步驟,如下圖所示:3 .遺傳算法的應(yīng)用遺傳算法主要是用來(lái)尋優(yōu),它具有很多優(yōu)點(diǎn):它能有效地避免局部最優(yōu)現(xiàn)象,有及其頑強(qiáng)的魯棒性,并且在尋優(yōu)過(guò)程中,基本不需要任何
5、搜 索空間的知識(shí)和其他輔助信息等等。為了介紹遺傳算法的應(yīng)用,我們將前面 的例子進(jìn)行完,整個(gè)過(guò)程如下:初始群體x的值適應(yīng)度f(wàn) (x)選擇概率選擇上的計(jì)數(shù)(來(lái)自賭輪)01101 11000 01000 100111324819169 576643610.14 0.490.06 0.311201交叉處0110|11100|011|00010|011下一代群體01100110011101110000x的值12252716適應(yīng)度144625729256求解過(guò)程:將自變量在給定的范圍內(nèi)進(jìn)行編碼,得到種群編碼,按照所選擇的 適應(yīng)度函數(shù)并通過(guò)選擇復(fù)制,交叉重組與變異對(duì)個(gè)體進(jìn)行篩選與進(jìn)化,使適應(yīng) 度值大的個(gè)體被
6、保留,適應(yīng)度小的個(gè)體被淘汰,新的群體繼承了上一代的信息 同時(shí)又優(yōu)于上一代,這樣反復(fù)循環(huán),直到滿足條件,最后留下來(lái)的個(gè)體集中分 布在最優(yōu)解周圍,篩選出其中的個(gè)體作為問(wèn)題的解。4 .遺傳算法的程序設(shè)計(jì)(1)謝爾菲德遺傳算法工具箱-英國(guó)謝爾菲德大學(xué)開(kāi)發(fā)1 特點(diǎn):1)使用MATLAB級(jí)語(yǔ)言編寫;2 )對(duì)問(wèn)題使用Mfc件編寫,可以看見(jiàn)源代碼;3 )為用戶提供了廣泛多樣的實(shí)用函數(shù)。安裝:1)解壓謝爾菲德遺傳算法工具箱,得到謝爾菲德遺傳算法工具 箱文件夾,內(nèi)含DO文件夾與gatbx文件夾;4 )將謝爾菲德遺傳算法工具箱文件夾拷貝到MATLABbin目錄下;5 )為謝爾菲德遺傳算法工具箱文件設(shè)置工作路徑:雙擊
7、MATLA B運(yùn)行MATLAB在MATLAB 口中選擇路徑設(shè)置窗口 :Set path ;6 ) 在 Set path 中選擇 Add folder 項(xiàng);7 )設(shè)置如下:謝爾菲德遺傳算法工具箱文件;謝爾菲德遺傳算法工具箱文件DOC謝爾菲彳惠遺傳算法工具箱文件gatbx ;謝爾菲彳惠遺傳算法工具箱文件gatbxtest_fns 。點(diǎn)擊SAV睬存,再點(diǎn)擊CLOSE閉Set path窗口。8 )將文件夾的所有字母改為小寫字母。9 )測(cè)試:在 Command Window 口 鍵入:help crtbp 。謝爾菲德遺傳算法工具箱中主要函數(shù)函數(shù)分類函數(shù)功能創(chuàng)建 種群crtbase創(chuàng)建基向量crtbp創(chuàng)建
8、離散的隨機(jī)種群crtrp創(chuàng)建實(shí)數(shù)隨機(jī)種群適應(yīng)度計(jì)算ranking基于排序的適應(yīng)度分配scaling比率適應(yīng)度計(jì)算3選擇函數(shù)reinsT隨機(jī)和基于適應(yīng)度的重插入rws輪盤選擇select高級(jí)選擇例程sus隨即便利采樣父叉算子recdis高級(jí)重組recint中間重組recline線性重組recmut具有變異特征的線性重組recombin局級(jí)重組算子xovdp兩點(diǎn)交叉算子xovdprs減少代理的兩點(diǎn)交叉xovmp通常多點(diǎn)交叉xovsh洗牌交叉xovshrs減少代理的洗牌交叉xovsp單點(diǎn)交叉xovsprs減少代理的單點(diǎn)交叉變異算子mut離散艾異mutate高級(jí)變異函數(shù)mutbga實(shí)值及異子種群的支持
9、migrate在子種群間交換個(gè)體實(shí)用函數(shù)bs2rv二進(jìn)制用到實(shí)值的轉(zhuǎn)換rep矩陣的復(fù)制常用函數(shù)1 .創(chuàng)建離散的隨機(jī)種群Chrom, Lind,BaseV=crtbp(Nind,Lind)Chrom, Lind,BaseV=crtbp(Nind,Base)Chrom, Lind,BaseV=crtbp(Nind,Lind,Base)(注意:Base的列數(shù)就是Lind,即染色體的長(zhǎng)度)Chrom, Lind,BaseV=crtbp(5 , 10)Chrom, Lind,BaseV=crtbp(5 , 2 3 4 5 6 7 8 9)2 .適應(yīng)度計(jì)算函數(shù)FitnV=ranking(ObjV)3 .選
10、擇算子select4 .交叉算子recombin5 .變異算子mut6 .重插入函數(shù)reins7 .實(shí)用函數(shù)bs2rvPhen=bs2rv(Chrom,FieldD),其中FieldD=len;lb;ub;code;scale;lbin;ubin8 .實(shí)用函數(shù)rep謝爾菲德遺傳算法工具箱應(yīng)用舉例例1.用遺傳算法求f(x)=sin(10"x), xw1,2的最小值 x遺傳算法參數(shù)設(shè)置種群規(guī)模最大遺傳代數(shù)個(gè)體長(zhǎng)度代溝父叉概率變異概率4020200.950.70.01程序清單如下:clcclear allclose all%畫出函數(shù)圖figure(1);hold on;lb=1;ub=2;
11、 %函數(shù)自變量范圍1,2ezplot('sin(10*pi*X)/X',lb,ub); %畫出函數(shù)曲線xlabel('自變量/X')ylabel('函數(shù)值 /Y')%定義遺傳算法參數(shù)NIND=40; %個(gè)體數(shù)目MAXGEN=20; % 最大遺傳代數(shù)PRECI=20; %變量的二進(jìn)制位數(shù)GGAP=0.95; % 代溝px=0.7; %交叉概率pm=0.01; %變異概率trace=zeros(2,MAXGEN); %尋優(yōu)結(jié)果的初始值FieldD=PRECI;lb;ub;1;0;1;1; % 區(qū)域描述器Chrom=crtbp(NIND,PRECI);
12、 % 產(chǎn)生初始種群%優(yōu)化gen=0; %代計(jì)數(shù)器X=bs2rv(Chrom,FieldD); %計(jì)算初始種群的十進(jìn)制轉(zhuǎn)換ObjV=sin(10*pi*X)./X; % 計(jì)算目標(biāo)函數(shù)值while gen<MAXGENFitnV=ranking(ObjV); % 分配適應(yīng)度值SelCh=select('sus',Chrom,FitnV,GGAP); % 選擇SelCh=recombin('xovsp',SelCh,px); % 重組SelCh=mut(SelCh,pm); % 變異X=bs2rv(SelCh,FieldD); %子代個(gè)體的十進(jìn)制轉(zhuǎn)換ObjVSe
13、l=sin(10*pi*X)./X; % 計(jì)算子代的目標(biāo)函數(shù)值Chrom,ObjV=reins(Chrom,SelCh,1,1,ObjV,ObjVSel); %重插入子代到父代, 得到新種群X=bs2rv(Chrom,FieldD);gen=gen+1; %代計(jì)數(shù)器增加%獲取每代的最優(yōu)解及其序號(hào),丫為最優(yōu)解,I為個(gè)體的序號(hào)Y,I=min(ObjV);trace(1,gen)=X(I); %記下每代的最優(yōu)值trace(2,gen)=Y; %記下每代的最優(yōu)值endplot(trace(1,:),trace(2,:),'bo'); % 畫出每代的最優(yōu)點(diǎn)grid on;plot(X,O
14、bjV,'b*'); %畫出最后一代的種群hold off%畫進(jìn)化圖figure(2);plot(1:MAXGEN,trace(2,:);grid onxlabel('遺傳代數(shù)')ylabel('解的變化')title('進(jìn)化過(guò)程')bestY=trace(2,end);bestX=trace(1,end);fprintf('最優(yōu)解:nX=',num2str(bestX),'nY=',num2str(bestY),'n')例2.用遺傳算法求 f (x, y) =xcos(2n y)+
15、ysin(2nx), x,yw-2,2的最大值。遺傳算法參數(shù)設(shè)置種群規(guī)模最大遺傳代數(shù)個(gè)體長(zhǎng)度代溝父叉概率變異概率405040 (2個(gè),每個(gè)長(zhǎng)20)0.950.70.01程序清單如下:clcclear allclose all%畫出函數(shù)圖figure(1);lbx=-2;ubx=2; %函數(shù)自變量x范圍-2,2lby=-2;uby=2; %函數(shù)自變量y范圍-2,2ezmesh('y*sin(2*pi*x)+x*cos(2*pi*y)',lbx,ubx,lby,uby,50); %畫出函數(shù)曲線hold on;%定義遺傳算法參數(shù)NIND=40; %個(gè)體數(shù)目MAXGEN=50; % 最
16、大遺傳代數(shù)PRECI=20; %變量的二進(jìn)制位數(shù)GGAP=0.95; % 代溝px=0.7; %交叉概率pm=0.01; %變異概率trace=zeros(3,MAXGEN); %尋優(yōu)結(jié)果的初始值FieldD=PRECI PRECI;lbx lby;ubx uby;1 1;0 0;1 1;1 1; %區(qū)域描述器Chrom=crtbp(NIND,PRECI*2); % 初始種群%優(yōu)化gen=0; %代計(jì)數(shù)器XY=bs2rv(Chrom,FieldD); %計(jì)算初始種群的十進(jìn)制轉(zhuǎn)換X=XY(:,1);Y=XY(:,2);ObjV=Y.*sin(2*pi*X)+X.*cos(2*pi*Y); %計(jì)算
17、目標(biāo)函數(shù)值while gen<MAXGENFitnV=ranking(-ObjV); % 分配適應(yīng)度值SelCh=select('sus',Chrom,FitnV,GGAP); % 選擇SelCh=recombin('xovsp',SelCh,px); % 重組SelCh=mut(SelCh,pm); % 變異XY=bs2rv(SelCh,FieldD); %子代個(gè)體的十進(jìn)制轉(zhuǎn)換X=XY(:,1);Y=XY(:,2);ObjVSel=Y.*sin(2*pi*X)+X.*cos(2*pi*Y); %計(jì)算子代的目標(biāo)函數(shù)值Chrom,ObjV=reins(Chr
18、om,SelCh,1,1,ObjV,ObjVSel); %重插入子代到父代,得到新種群XY=bs2rv(Chrom,FieldD);gen=gen+1; %代計(jì)數(shù)器增加%獲取每代的最優(yōu)解及其序號(hào),丫為最優(yōu)解,1為個(gè)體的序號(hào)Y,I=max(ObjV);trace(1:2,gen)=XY(I,:); %記下每代的最優(yōu)值trace(3,gen)=Y; %記下每代的最優(yōu)值endplot3(trace(1,:),trace(2,:),trace(3,:),'bo'); % 畫出每代的最優(yōu)點(diǎn)grid on;plot3(XY(:,1),XY(:,2),ObjV,'bo');
19、% 畫出最后一代的種群hold off%畫進(jìn)化圖figure(2);plot(1:MAXGEN,trace(3,:);grid onxlabel('遺傳代數(shù)')ylabel('解的變化')title('進(jìn)化過(guò)程')bestZ=trace(3,end);bestX=trace(1,end);bestY=trace(2,end);fprintf('最優(yōu)解:nX=',num2str(bestX),'nY=',num2str(bestY),'nZ=',num2str(bestZ),'n')作
20、業(yè):用遺傳算法求函數(shù)x; x2、,cos2二斗 cos2二 x2、f (x) = -20exp(-022 ) -exp() 20 2.71289的最小值。clcclear allclose all%畫出函數(shù)圖figure(1);lbx1=-2;ubx1=2; % 函數(shù)自變量x1范圍卜2,2lbx2=-2;ubx2=2; % 函數(shù)自變量x2范圍卜2,2ezmesh('-20*exp(-0.2*sqrt(x1A2+x2A2)/2)-exp(cos(2*pi*x1)+cos(2*pi*x2)/2)+20+2.71289',lbx1,ubx1,lbx2,ubx2,50); % 畫出函數(shù)
21、曲線hold on;%定義遺傳算法參數(shù)NIND=40; %個(gè)體數(shù)目MAXGEN=50; % 最大遺傳代數(shù)PRECI=20; %變量的二進(jìn)制位數(shù)GGAP=0.95; % 代溝px=0.7; %交叉概率pm=0.01; %變異概率trace=zeros(3,MAXGEN); %尋優(yōu)結(jié)果的初始值FieldD=PRECI PRECI;lbx lby;ubx uby;1 1;0 0;1 1;1 1; %區(qū)域描述器Chrom=crtbp(NIND,PRECI*2); % 初始種群%優(yōu)化gen=0; %代計(jì)數(shù)器XY=bs2rv(Chrom,FieldD); %計(jì)算初始種群的十進(jìn)制轉(zhuǎn)換X=XY(:,1);Y=XY(:,2);ObjV=Y.*sin(2*pi*X)+X.*cos(2*pi*Y); %計(jì)算目標(biāo)函數(shù)值while gen<MAXGENFitnV=ranking(-ObjV); % 分配適應(yīng)度值SelCh=select('sus',Chrom,FitnV,GGAP); % 選擇SelCh=recombin('xovsp',SelCh,px); % 重組SelCh=mut(SelCh,pm);
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年湖南貨運(yùn)從業(yè)資格證新政
- 2025年濰坊b2貨運(yùn)資格證多少道題
- 二零二五版籃球場(chǎng)地租賃及賽事門票銷售合同3篇
- 2025版體檢服務(wù)信息化建設(shè)合作合同協(xié)議2篇
- 2024跨國(guó)公司研發(fā)中心合作合同
- 二零二五年度城市綜合體消防安全管理代理服務(wù)合同3篇
- 二零二五年度合同擔(dān)保制度標(biāo)準(zhǔn)合同范本匯編3篇
- 2025版天然氣發(fā)電機(jī)組購(gòu)銷合同范本3篇
- 2025年度個(gè)人對(duì)公司借款及稅收優(yōu)惠合同規(guī)范4篇
- 二零二五版木地板施工與地板漆噴涂服務(wù)合同4篇
- 無(wú)人化農(nóng)場(chǎng)項(xiàng)目可行性研究報(bào)告
- 《如何存款最合算》課件
- 社區(qū)團(tuán)支部工作計(jì)劃
- 拖欠工程款上訪信范文
- 2024屆上海市金山區(qū)高三下學(xué)期二模英語(yǔ)試題(原卷版)
- 《wifi協(xié)議文庫(kù)》課件
- 《好東西》:女作者電影的話語(yǔ)建構(gòu)與烏托邦想象
- 一年級(jí)下冊(cè)數(shù)學(xué)口算題卡打印
- 2024年中科院心理咨詢師新教材各單元考試題庫(kù)大全-下(多選題部分)
- 真人cs基于信號(hào)發(fā)射的激光武器設(shè)計(jì)
- 2024年國(guó)信證券招聘筆試參考題庫(kù)附帶答案詳解
評(píng)論
0/150
提交評(píng)論