遺傳算法實(shí)例注釋.docx_第1頁(yè)
遺傳算法實(shí)例注釋.docx_第2頁(yè)
遺傳算法實(shí)例注釋.docx_第3頁(yè)
遺傳算法實(shí)例注釋.docx_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

第一步:定義目標(biāo)函數(shù)即將二進(jìn)制碼的X轉(zhuǎn)為十進(jìn)制碼并轉(zhuǎn)化到實(shí)際定義域function pop=initpop(popsize,chromlength) pop=round(rand(popsize,chromlength);20行10列的元素為0或1的矩陣function pop2=decodebinary(pop) px,py=size(pop); px=20,py=10for i=1:py 從第一列到第10列pop1(:,i)=2.(py-i).*pop(:,i); 每一列乘2(py-1)新矩陣由二進(jìn)制轉(zhuǎn)為十進(jìn)制end pop2=sum(pop1,2);計(jì)算每一行的和(2表示第二維即行)function pop2=decodechrom(pop,spoint,length)pop1=pop(:,spoint:spoint+length-1);將pop從一到十列分別賦值給pop1%spoint待解碼的二進(jìn)制串的起始位置,此處為1,length表示所截取的長(zhǎng)度(10)pop2=decodebinary(pop1);pop2所有已轉(zhuǎn)為十進(jìn)制的每一行和即20個(gè)解function objvalue=calobjvalue(pop) temp1=decodechrom(pop,1,10); 將已定義且已轉(zhuǎn)為十進(jìn)制的pop賦值給temp1x=temp1*10/1023; 將二值域 中的數(shù)轉(zhuǎn)化為變量域的數(shù)即(0,10)objvalue=10*sin(5*x)+7*cos(4*x); 正式給出定義好的目標(biāo)函數(shù),注意此時(shí)objvalue實(shí)質(zhì)上為20個(gè)x代入而得的20 X 1的矩陣第二步:計(jì)算適應(yīng)值function fitvalue=calfitvalue(objvalue) global Cmin; Cmin=0; px,py=size(objvalue); px=20,py=1for i=1:px i從1到20if objvalue(i)+Cmin0 此處為求極大值(具體參考PPT)temp=Cmin+objvalue(i); else temp=0.0; end fitvalue(i)=temp; 即大于零的保留,小于等于零的剔除end fitvalue=fitvalue;即將列矩陣轉(zhuǎn)換為行矩陣第三步:選擇復(fù)制function newpop=selection(pop,fitvalue) totalfit=sum(fitvalue); 求得所有列的適應(yīng)值的和fitvalue=fitvalue/totalfit; 單個(gè)個(gè)體被選擇的概率 fitvalue=cumsum(fitvalue); fitvalue=1 2 3 4,則 cumsum(fitvalue)=1 3 6 10 px,py=size(pop); px=20,py=10ms=sort(rand(px,1); 產(chǎn)生20行值為(0,1)之間的隨機(jī)數(shù)并從小到大排列 fitin=1; 賦值1newin=1; 賦值1while newin=px 如果1小于1024 if(ms(newin)fitvalue(fitin) 如果ms(1) fitvalue(1)newpop(newin)=pop(fitin); newpop(1)=pop(1)newin=newin+1; newin=2else 否則fitin=fitin+1; fitin=2end 意義在于只有當(dāng)適應(yīng)值大于隨即產(chǎn)生的ms時(shí)才能被保留到newpop中end第三步:交叉function newpop=crossover(pop,pc) px,py=size(pop); px=20,py=10newpop=ones(size(pop); 產(chǎn)生20行10列的全1矩陣for i=1:2:px-1 對(duì)i從1到20,步長(zhǎng)為2if(randpc) 如果隨機(jī)數(shù)小于交叉交叉概率pccpoint=round(rand*py); cpoint=隨機(jī)數(shù)乘以10再取整 newpop(i,:)=pop(i,1:cpoint),pop(i+1,cpoint+1:py); pop第一行的1到3列與第二行的4到10列組合形成newpop的第一行newpop(i+1,:)=pop(i+1,1:cpoint),pop(i,cpoint+1:py); pop第二行的1到3列與第一行的4到10列組合形成newpop的第二行else 否則newpop(i,:)=pop(i); newpop的第一行依舊為原pop第一行newpop(i+1,:)=pop(i+1); newpop的第一行依舊為原pop第一行end end 第四步:變異 function newpop=mutation(pop,pm) px,py=size(pop); px=20,py=10newpop=ones(size(pop); newpop為20行10列的全1矩陣for i=1:px 對(duì)于i從1到20 if(randpm) 如果隨機(jī)數(shù)小于變異概率pmmpoint=round(rand*py); mpoint=隨機(jī)數(shù)與10相乘取整if mpoint=0 如果mpointbestfit 如果fitvalue(i)大于以前的bestindividual=pop(i,:); bestindividual=pop第i行bestfit=fitvalue(i); bestfit=fitvalue第i列end end 第六步:主程序popsize=20; %群體大小 chromlength=10; %字符串長(zhǎng)度(個(gè)體長(zhǎng)度) pc=0.6; %交叉概率 pm=0.001; %變異概率 pop=initpop(popsize,chromlength); %隨機(jī)產(chǎn)生初始群體 for i=1:20 %20為迭代次數(shù) objvalue=calobjvalue(pop); %計(jì)算目標(biāo)函數(shù) fitvalue=calfitvalue(objvalue); %計(jì)算群體中每個(gè)個(gè)體的適應(yīng)度 newpop=selection(pop,fitvalue); %復(fù)制 newpop=crossover(pop,pc); %交叉 newpop=mutation(pop,pc); %變異 bestindividual,bestfit=best(pop,fitvalue); %求出群體中適應(yīng)值最大的個(gè)體及其適應(yīng)值 y(i)=max(bestfit); y(i)= bestfit最大值n(i)=i; 此時(shí)的迭代次數(shù)pop5=bestindividual; 將適應(yīng)值最大的那個(gè)解賦值給pop5x(i)=decodechrom(pop5,1,chromlength)*10/1023; 將pop5翻譯成十進(jìn)制pop=newpop; 下一次從第二代開始復(fù)制

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論