




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
MATLAB遺傳算法一:遺傳算法簡介:遺傳算法(Genetic
Algorithm)是一類借鑒生物界的進化規(guī)律(適者生存,優(yōu)勝劣汰遺傳機制)演化而來的隨機化搜索方法。它是由美國的J.Holland教授1975年首先提出,其主要特點是直接對結構對象進行操作,不存在求導和函數(shù)連續(xù)性的限定;具有內在的隱并行性和更好的全局尋優(yōu)能力;采用概率化的尋優(yōu)方法,能自動獲取和指導優(yōu)化的搜索空間,自適應地調整搜索方向,不需要確定的規(guī)則。遺傳算法的這些性質,已被人們廣泛地應用于組合優(yōu)化、機器學習、信號處理、自適應控制和人工生命等領域。它是現(xiàn)代有關智能計算中的關鍵技術。二:遺傳算法的基本步驟a)初始化:設置進化代數(shù)計數(shù)器t=0,設置最大進化代數(shù)T,隨機生成M個個體作為初始群體P(0)。b)個體評價:計算群體P(t)中各個個體的適應度。c)選擇運算:將選擇算子作用于群體。選擇的目的是把優(yōu)化的個體直接遺傳到下一代或通過配對交叉產生新的個體再遺傳到下一代。選擇操作是建立在群體中個體的適應度評估基礎上的。d)交叉運算:將交叉算子作用于群體。遺傳算法中起核心作用的就是交叉算子。e)變異運算:將變異算子作用于群體。即是對群體中的個體串的某些基因座上的基因值作變動。群體P(t)經過選擇、交叉、變異運算之后得到下一代群體P(t+1)。f)終止條件判斷:若t=T,則以進化過程中所得到的具有最大適應度個體作為最優(yōu)解輸出,終止計算。三:matlab實現(xiàn)例子:f(x)=10*sin(5x)+7*cos(4x)x∈[0,10]將變量域[0,10]離散化為二值域[0,1023],x=0+10*b/1023。1.初始化initpop.mfunctionpop=initpop(popsize,chromlength)pop=round(rand(popsize,chromlength));%rand隨機產生每個單元為0或者1行數(shù)(種群數(shù)量)為popsize,列數(shù)為chromlength(個體所含基因數(shù))的矩陣,計算目標函數(shù)值2.1將二進制數(shù)轉化為十進制數(shù)(1)decodebinary.m%產生[2^n2^(n-1)...1]的行向量,然后求和,將二進制轉化為十進制functionpop2=decodebinary(pop)[px,py]=size(pop)%Pop的行和列數(shù)fori=1:pxpop2(i)=0forj=1:pypop2(i)=pop2(i)+2.^(py-j)*pop(i,j)endend2.2將二進制編碼轉化為十進制數(shù)(2)Decodechrom.m%函數(shù)的功能是將染色體(或二進制編碼)轉換為十進制,參數(shù)spoint表示待解碼的二進制串的起始位置
functionpop2=decodechrom(pop,spoint,length)pop1=pop(:,spoint:spoint+length-1)%pop1取pop的第spoint列到spoint+length-1列為止pop2=decodebinary(pop1)2.2.3計算目標函數(shù)值
%calobjvalue.m函數(shù)的功能是實現(xiàn)目標函數(shù)的計算function[objvalue]=calobjvalue(pop)temp1=decodechrom(pop,1,10)%將pop每行轉換成十進制x=temp1*10/1023%將二值域中的數(shù)轉化為變量域的數(shù)objvalue=10*sin(5*x)+7*cos(4*x)%變量域是從1到10m=max(objvalue)b=0fori=1:100ifobjvalue(i)==mb=b+1endendfigurefplot('10*sin(5*x)+7*cos(4*x)',[010])holdonplot(x,objvalue,'or')xlabel(sprintf('%2d',b))gridon3計算個體的適應值calfitvalue.m%計算個體的適應值functionfitvalue=calfitvalue(objvalue)[px,py]=size(objvalue)fori=1:pyifobjvalue(i)>0;temp=objvalue(i)elsetemp=0.0endfitvalue(i)=tempEnd4選擇復制selection.m
%根據(jù)方程pi=fi/∑fi=fi/fsum,選擇步驟:%1)在第t代,計算fsum和pi%2)產生{0,1}的隨機數(shù)rand(.),求s=rand(.)*fsum%3)求∑fi≥s中最小的k,則第k個個體被選中%最后再產生一個0到1之間的隨機數(shù),依據(jù)該隨機數(shù)出現(xiàn)在上述哪一個概率區(qū)域內來確定各個個體被選中的次數(shù)。%4)進行N次2)、3)操作,得到N個個體,成為第t=t+1代種群function[newpop]=selection(pop,fitvalue)totalfit=sum(fitvalue)%求適應值的和fitvalue=fitvalue/totalfit%單個個體被選擇的概率%如fitvalue=[1234],則cumsum(fitvalue)=[13610]fitvalue=cumsum(fitvalue)[px,py]=size(pop)ms=sort(rand(px,1))%從小到大排列列向量fitin=1newin=1whilenewin<=px%得到px個個體if(ms(newin))<fitvalue(fitin)newpop(newin,:)=pop(fitin,:)%將pop的第fitin行復制給newpop中的newin行newin=newin+1elsefitin=fitin+1endEnd5交叉crossover.m
%交叉的概率為pcfunction[newpop]=crossover(pop,pc)[px,py]=size(pop)newpop=ones(size(pop))%所有元素為1fori=1:2:px-1if(rand<pc)cpoint=round(rand*py)newpop(i,:)=[pop(i,1:cpoint),pop(i+1,cpoint+1:py)];newpop(i+1,:)=[pop(i+1,1:cpoint),pop(i,cpoint+1:py)];elsenewpop(i,:)=pop(i,:)newpop(i+1,:)=pop(i+1,:)endend6變異mutation.m%每個個體的每一位都以概率pm翻轉,即由“1”變?yōu)椤?”,function[newpop]=mutation(pop,pm)[px,py]=size(pop)newpop=popfori=1:px*py%對每一個元素進行判斷if(rand<pm)newpop(i)=1-pop(i)endend7求出群體中最大得適應值及其個體best.m
%求出群體中適應值最大的值function[bestindividual,bestfit]=best(pop,fitvalue)[px,py]=size(pop)bestindividual=pop(1,:)bestfit=fitvalue(1);fori=2:pxiffitvalue(i)>bestfitbestindividual=pop(i,:)bestfit=fitvalue(i)endend8主程序main.m%遺傳算法主程序popsize=100%種群大小chromlength=10%字符串長度,即個體長度pc=0.6%交叉概率pm=0.001%變異概率pop=initpop(popsize,chromlength)%隨機產生初始群體[objvalue]=calobjvalue(pop)%計算目標函數(shù)值,形成一個20*1的列向量fitvalue=calfitvalue(objvalue)%計算群體中每個個體的適應度fori=1:20%20次迭代[newpop]=selection(pop,fitvalue)%選擇[newpop]=crossover(newpop,pc)%交叉[newpop]=mutation(newpop,pm)%變異[objvalue]=calobjvalue(newpop)fitvalue=calfitvalue(objvalue)[bestindividual,bestfit]=best(newpop,fitvalue)%求出群體中適應值最大的個體及適應值y(i)=max(bestfit);n(i)=i;pop5=besti
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中醫(yī)護理學(第5版)課件 舌診
- 新能源技術太陽能光伏發(fā)電系統(tǒng)安裝手冊
- 企業(yè)人際溝通培訓
- 雨水收集 規(guī)范
- 項目投資可行性報告報告完整版
- 美麗鄉(xiāng)村項目可行性研究報告
- 家居智能語音
- 農業(yè)產業(yè)鏈管理手冊
- 市場調研報告細分行業(yè)統(tǒng)計表
- 能源產業(yè)項目進度跟蹤表
- 【知識解析】南昌起義主題圖集
- 中班安全活動 保護鼻子
- 板卡錯誤代碼對應的錯誤信息及解決方案
- 重大事故后果分析
- 武漢理工大學計算機網絡試題及答案
- 先學后教當堂訓練簡介
- “順豐杯”第三屆全國大學生物流設計大賽案例
- 灌區(qū)工程施工方案與技術措施
- (完整)交叉作業(yè)施工方案
- 幼兒園繪本:《小蛇散步》 課件
- 華中師大版七年級心理 2走近老師 課件(共15張PPT)
評論
0/150
提交評論