全文預覽已結束
下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第一步:定義目標函數(shù)即將二進制碼的X轉為十進制碼并轉化到實際定義域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)新矩陣由二進制轉為十進制end pop2=sum(pop1,2);計算每一行的和(2表示第二維即行)function pop2=decodechrom(pop,spoint,length)pop1=pop(:,spoint:spoint+length-1);將pop從一到十列分別賦值給pop1%spoint待解碼的二進制串的起始位置,此處為1,length表示所截取的長度(10)pop2=decodebinary(pop1);pop2所有已轉為十進制的每一行和即20個解function objvalue=calobjvalue(pop) temp1=decodechrom(pop,1,10); 將已定義且已轉為十進制的pop賦值給temp1x=temp1*10/1023; 將二值域 中的數(shù)轉化為變量域的數(shù)即(0,10)objvalue=10*sin(5*x)+7*cos(4*x); 正式給出定義好的目標函數(shù),注意此時objvalue實質上為20個x代入而得的20 X 1的矩陣第二步:計算適應值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;即將列矩陣轉換為行矩陣第三步:選擇復制function newpop=selection(pop,fitvalue) totalfit=sum(fitvalue); 求得所有列的適應值的和fitvalue=fitvalue/totalfit; 單個個體被選擇的概率 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); 產生20行值為(0,1)之間的隨機數(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 意義在于只有當適應值大于隨即產生的ms時才能被保留到newpop中end第三步:交叉function newpop=crossover(pop,pc) px,py=size(pop); px=20,py=10newpop=ones(size(pop); 產生20行10列的全1矩陣for i=1:2:px-1 對i從1到20,步長為2if(randpc) 如果隨機數(shù)小于交叉交叉概率pccpoint=round(rand*py); cpoint=隨機數(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 對于i從1到20 if(randpm) 如果隨機數(shù)小于變異概率pmmpoint=round(rand*py); mpoint=隨機數(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; %字符串長度(個體長度) pc=0.6; %交叉概率 pm=0.001; %變異概率 pop=initpop(popsize,chromlength); %隨機產生初始群體 for i=1:20 %20為迭代次數(shù) objvalue=calobjvalue(pop); %計算目標函數(shù) fitvalue=calfitvalue(objvalue); %計算群體中每個個體的適應度 newpop=selection(pop,fitvalue); %復制 newpop=crossover(pop,pc); %交叉 newpop=mutation(pop,pc); %變異 bestindividual,bestfit=best(pop,fitvalue); %求出群體中適應值最大的個體及其適應值 y(i)=max(bestfit); y(i)= bestfit最大值n(i)=i; 此時的迭代次數(shù)pop5=bestindividual; 將適應值最大的那個解賦值給pop5x(i)=decodechrom(pop5,1,chromlength)*10/1023; 將pop5翻譯成十進制pop=newpop; 下一次從第二代開始復制
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 采購合同類型的編寫要求解析3篇
- 采購框架合同簽訂3篇
- 采購合同意向書編寫3篇
- 采購合同風險評估工具介紹3篇
- 采購合同模板樣式樣式樣式指南3篇
- 2024年度大米出口貿易代理合同3篇
- 2024學校綠化用地租賃及維護管理合同2篇
- 2024年度大理石石材雕刻技術研發(fā)合作合同3篇
- 2024年企業(yè)員工帶薪休假期間免責與權益維護協(xié)議3篇
- 2024年度田地承包權合作種植與市場銷售合同3篇
- 集成電路板維修方法
- 小升初小學數(shù)學幾何圖形應用題專題練習《巧算周長》
- 旅游學概論最新復習題庫與答案
- 水電站調速器系統(tǒng)最權威講義課件
- 膠合板生產工藝
- TROXLER3440核子密度儀
- 課程設計--高位自卸汽車的設計
- 初中數(shù)學八年級上《整式的乘法及因式分解》知識點及經典題型
- 天罡儀表CR40系列數(shù)據集中器用戶手冊
- 威尼斯狂歡節(jié)長笛鋼琴伴奏譜PierreAgricolaGeninC
- 古傳五禽戲內功法詳解(圖)
評論
0/150
提交評論