遺傳算法的Matlab實現講解_第1頁
遺傳算法的Matlab實現講解_第2頁
遺傳算法的Matlab實現講解_第3頁
遺傳算法的Matlab實現講解_第4頁
遺傳算法的Matlab實現講解_第5頁
已閱讀5頁,還剩32頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

數學建模專題之

遺傳算法的MATLAB實現精選pptContentsIMatlab編程實現GA1Matlab函數調用實現GA2Matlab工具箱實現GA3精選pptMatlab編程實現GA例1:計算目標函數值函數

精選ppt主程序

%遺傳算法主程序functionMy_GAglobalCmin;Cmin=-10^6;popsize=50;%群體大小Gene=20;chromlength=20;%字符串長度〔個體長度〕pc=0.8;%交叉概率pm=0.01;%變異概率Xmax=10;Xmin=0;Matlab編程實現GApop=initpop(popsize,chromlength);%隨機產生初始群體fori=1:Gene%20為迭代次數[objvalue]=calobjvalue(pop,chromlength,Xmax,Xmin);%計算目標函數fitvalue=calfitvalue(objvalue);%計算群體中每個個體的適應度[newpop]=selection(pop,fitvalue);%復制[newpop]=crossover(newpop,pc);%交叉[newpop]=mutation(newpop,pm);%變異[bestindividual,bestfit]=best(pop,fitvalue);%求出群體中適應值最大的個體及其適應值x(i)=decodechrom(bestindividual,1,chromlength)*10/(2^chromlength-1);%最正確個體解碼y(i)=bestfit+Cmin;%最正確個體適應度y_mean(i)=mean(fitvalue+Cmin);%第i代平均適應度pop=newpop;endfplot('2*x+10*sin(5*x)+7*cos(4*x)',[010])holdonplot(x,y,'r*')holdoff精選ppt初始化(編碼)

%initpop.m函數的功能是實現群體的初始化,popsize表示群體的大小,chromlength表示染色體的長度(二值數的長度),%長度大小取決于變量的二進制編碼的長度(在本例中取20位)。%Name:initpop.mfunctionpop=initpop(popsize,chromlength)pop=round(rand(popsize,chromlength));%rand隨機產生每個單元為{0,1}行數為popsize,列數為chromlength的矩陣,%round對矩陣的每個單元進行取整。這樣產生的初始種群。Matlab編程實現GA精選ppt將二進制數轉化為十進制數

將二進制數轉化為十進制數%產生[2^n2^(n-1)...1]的行向量,然后求和,將二進制轉化為十進制functionpop2=decodebinary(pop)[px,py]=size(pop);%求pop行和列數fori=1:py pop1(:,i)=2.^(py-i).*pop(:,i);endpop2=sum(pop1,2);%求pop1的每行之和functionpop2=decodechrom(pop,spoint,length)pop1=pop(:,spoint:spoint+length-1);pop2=decodebinary(pop1);Matlab編程實現GA精選ppt計算目標函數值

計算目標函數值%calobjvalue.m函數的功能是實現目標函數的計算,其公式采用本文例如仿真,可根據不同優化問題予以修改。%遺傳算法子程序%Name:calobjvalue.m%實現目標函數的計算function[objvalue]=calobjvalue(pop,chromlength,Xmax,Xmin)temp1=decodechrom(pop,1,chromlength);%將pop每行轉化成十進制數x=temp1*(Xmax-Xmin)/(2^chromlength-1);%將十進制域中的數轉化為變量域的數objvalue=2*x+10*sin(5*x)+7*cos(4*x);%計算目標函數值Matlab編程實現GA精選ppt計算個體的適應值

functionfitvalue=calfitvalue(objvalue)globalCmin;fitvalue=objvalue-Cmin;Matlab編程實現GA精選ppt選擇復制

function[newpop]=selection(pop,fitvalue)%程序中采用賭輪盤選擇法選擇實現totalfit=sum(fitvalue);%求適應值之和fitvalue=fitvalue/totalfit;%單個個體被選擇的概率fitvalue=cumsum(fitvalue);%如fitvalue=[1234],那么cumsum(fitvalue)=[13610][px,py]=size(pop);ms=sort(rand(px,1));%從小到大排列fitin=1;newin=1;whilenewin<=px%蒙特卡洛方法抽樣if(ms(newin))<fitvalue(fitin)newpop(newin,:)=pop(fitin,:);newin=newin+1;elsefitin=fitin+1;endendMatlab編程實現GA精選ppt交叉

function[newpop]=crossover(pop,pc)[px,py]=size(pop);newpop=ones(size(pop));fori=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);endendMatlab編程實現GA精選ppt變異

function[newpop]=mutation(pop,pm)[px,py]=size(pop);newpop=ones(size(pop));fori=1:pxif(rand<pm)mpoint=round(rand*py);ifmpoint<=0mpoint=1;endnewpop(i,:)=pop(i,:);

Matlab編程實現GAifany(newpop(i,mpoint))==0newpop(i,mpoint)=1;elsenewpop(i,mpoint)=0;endelsenewpop(i,:)=pop(i,:);endend精選ppt求出群體中最大的適應值及其個體

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);endendMatlab編程實現GA或function[bestindividual,bestfit]=…best(pop,fitvalue)[bestfit,m_indx]=max(fitvalue);bestindividual=pop(m_indx,:);精選ppt結果見My_GA.m

Matlab編程實現GA精選pptMatlab函數調用實現GAMatlab的GA函數

[xfval]=ga(@fitnessfun,nvars,[],[],[],[],[],[],[],options);fitnessfcn—Fitnessfunctionnvars—NumberofvariablesfortheproblemAineq—MatrixforinequalityconstraintsBineq—VectorforinequalityconstraintsAeq—MatrixforequalityconstraintsBeq—VectorforequalityconstraintsLB—LowerboundonxUB—Upperboundonxnonlcon—NonlinearconstraintFunctionoptions—Optionsstructure精選pptMatlab函數調用實現GAMatlab的GA函數x=ga(fitnessfcn,nvars)x=ga(fitnessfcn,nvars,A,b)x=ga(fitnessfcn,nvars,A,b,Aeq,beq)x=ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB)x=ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB,nonlcon)x=ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB,nonlcon,options)x=ga(problem)[x,fval]=ga(...)[x,fval,exitflag]=ga(...)精選pptMatlab函數調用實現GAGA函數調用步驟第一步:編寫適應度函數;第二步:對GA參數進行設置;options=gaoptimset(‘參數名’,參數值,…,‘參數名’,參數值)例:options=gaoptimset('PopulationSize',100)第三步:調用GA函數;[xfval]=ga(@fitnessfun,nvars)[xfvalexitflagoutputpopulationscores]=ga(@fitnessfcn,nvars)[xfval]=ga(@fitnessfun,nvars,[],[],[],[],[],[],[],options);specifyanylinearequality,linearinequality,ornonlinearconstraints精選pptMatlab函數調用實現GA調用GA函數求例1的最大值〔見ga_eg1.m〕第一步:編寫適應度函數;functiony=fit1(x)y=-(2*x+10*sin(5*x)+7*cos(4*x));第二步:設置參數options=gaoptimset('PopulationSize',100,'PopulationType','doubleVector','PlotFcns',{@gaplotbestf,@gaplotbestindiv,@gaplotexpectation,@gaplotstopping})第三步:調用GA函數[xfval]=ga(@fit1,1,[],[],[],[],0,10,[],options);最后復原y=-1*fit1(x)%最小值復原為最大值figure;fplot('2*x+10*sin(5*x)+7*cos(4*x)',[010])holdonplot(x,y,'*')精選ppt

遺傳算法的GA工具箱實現:Matlab的GA工具箱(R2007)精選pptMatlab的GA工具箱(R2021b)

遺傳算法的GA工具箱實現:精選ppt例二求以下優化問題精選pptMatlab函數調用實現調用GA函數求解〔見ga_eg2.m〕

functionga_eg2A=[11;-12;21];b=[2;2;3];lb=zeros(2,1);[x,fval,exitflag]=ga(@lincontest6,2,A,b,[],[],lb);mesh_lincontest6;holdon;plot3(x(1),x(2),fval,'r*');

functionmesh_lincontest6m=10;n=1000;x=-n:m:n;y=-n:m:n;z=0.5*(ones(length(x),1)*x).^2+(ones(length(y),1)*y).^2...-(ones(length(x),1)*x).*(ones(length(y),1)*y)-2*(ones(...length(x),1)*x)-6*(ones(length(y),1)*y);mesh(x,y,z)精選pptMatlab函數調用實現調用GA函數求解〔見ga_eg2.m〕

精選ppt遺傳算法的GA工具箱實現Matlab的GA工具箱(R2021b)精選ppt練習一在-5<=Xi<=5,i=1,2區間內,求解f(x1,x2)=-20*exp(0.2*sqrt(0.5*(x1.^2+x2.^2)))-exp(0.5*(cos(2*pi*x1)+cos(2*pi*x2)))+22.71282的最小值。要求:種群大小20,最大代數100,變異率0.1,交叉率0.7精選pptContentsIIGA求解多目標優化問題1GA優化BP神經網絡2GA求解TSP問題3精選pptII-1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論