版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
數(shù)學(xué)建模專題之
遺傳算法的MATLAB實現(xiàn)遺傳算法的Matlab實現(xiàn)講解ContentsIMatlab編程實現(xiàn)GA1Matlab函數(shù)調(diào)用實現(xiàn)GA2Matlab工具箱實現(xiàn)GA3遺傳算法的Matlab實現(xiàn)講解Matlab編程實現(xiàn)GA例1:計算目標(biāo)函數(shù)值函數(shù)
遺傳算法的Matlab實現(xiàn)講解主程序
%遺傳算法主程序functionMy_GAglobalCmin;Cmin=-10^6;popsize=50;%群體大小Gene=20;chromlength=20;%字符串長度(個體長度)pc=0.8;%交叉概率pm=0.01;%變異概率Xmax=10;Xmin=0;Matlab編程實現(xiàn)GApop=initpop(popsize,chromlength);%隨機產(chǎn)生初始群體fori=1:Gene%20為迭代次數(shù)
[objvalue]=calobjvalue(pop,chromlength,Xmax,Xmin);%計算目標(biāo)函數(shù)
fitvalue=calfitvalue(objvalue);%計算群體中每個個體的適應(yīng)度
[newpop]=selection(pop,fitvalue);%復(fù)制
[newpop]=crossover(newpop,pc);%交叉
[newpop]=mutation(newpop,pm);%變異[bestindividual,bestfit]=best(pop,fitvalue);%求出群體中適應(yīng)值最大的個體及其適應(yīng)值
x(i)=decodechrom(bestindividual,1,chromlength)*10/(2^chromlength-1);%最佳個體解碼
y(i)=bestfit+Cmin;%最佳個體適應(yīng)度
y_mean(i)=mean(fitvalue+Cmin);%第i代平均適應(yīng)度
pop=newpop;endfplot('2*x+10*sin(5*x)+7*cos(4*x)',[010])holdonplot(x,y,'r*')holdoff遺傳算法的Matlab實現(xiàn)講解初始化(編碼)
%initpop.m函數(shù)的功能是實現(xiàn)群體的初始化,popsize表示群體的大小,chromlength表示染色體的長度(二值數(shù)的長度),%長度大小取決于變量的二進制編碼的長度(在本例中取20位)。%Name:initpop.mfunctionpop=initpop(popsize,chromlength)pop=round(rand(popsize,chromlength));%rand隨機產(chǎn)生每個單元為{0,1}行數(shù)為popsize,列數(shù)為chromlength的矩陣,%round對矩陣的每個單元進行取整。這樣產(chǎn)生的初始種群。Matlab編程實現(xiàn)GA遺傳算法的Matlab實現(xiàn)講解將二進制數(shù)轉(zhuǎn)化為十進制數(shù)
將二進制數(shù)轉(zhuǎn)化為十進制數(shù)%產(chǎn)生[2^n2^(n-1)...1]的行向量,然后求和,將二進制轉(zhuǎn)化為十進制functionpop2=decodebinary(pop)[px,py]=size(pop);%求pop行和列數(shù)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編程實現(xiàn)GA遺傳算法的Matlab實現(xiàn)講解計算目標(biāo)函數(shù)值
計算目標(biāo)函數(shù)值%calobjvalue.m函數(shù)的功能是實現(xiàn)目標(biāo)函數(shù)的計算,其公式采用本文示例仿真,可根據(jù)不同優(yōu)化問題予以修改。%遺傳算法子程序%Name:calobjvalue.m%實現(xiàn)目標(biāo)函數(shù)的計算function[objvalue]=calobjvalue(pop,chromlength,Xmax,Xmin)temp1=decodechrom(pop,1,chromlength);%將pop每行轉(zhuǎn)化成十進制數(shù)x=temp1*(Xmax-Xmin)/(2^chromlength-1);%將十進制域中的數(shù)轉(zhuǎn)化為變量域的數(shù)objvalue=2*x+10*sin(5*x)+7*cos(4*x);%計算目標(biāo)函數(shù)值Matlab編程實現(xiàn)GA遺傳算法的Matlab實現(xiàn)講解計算個體的適應(yīng)值
functionfitvalue=calfitvalue(objvalue)globalCmin;fitvalue=objvalue-Cmin;Matlab編程實現(xiàn)GA遺傳算法的Matlab實現(xiàn)講解選擇復(fù)制
function[newpop]=selection(pop,fitvalue)%程序中采用賭輪盤選擇法選擇實現(xiàn)totalfit=sum(fitvalue);%求適應(yīng)值之和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編程實現(xiàn)GA遺傳算法的Matlab實現(xiàn)講解交叉
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編程實現(xiàn)GA遺傳算法的Matlab實現(xiàn)講解變異
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編程實現(xiàn)GAifany(newpop(i,mpoint))==0newpop(i,mpoint)=1;elsenewpop(i,mpoint)=0;endelsenewpop(i,:)=pop(i,:);endend遺傳算法的Matlab實現(xiàn)講解求出群體中最大的適應(yīng)值及其個體
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編程實現(xiàn)GA或function[bestindividual,bestfit]=…best(pop,fitvalue)[bestfit,m_indx]=max(fitvalue);bestindividual=pop(m_indx,:);遺傳算法的Matlab實現(xiàn)講解結(jié)果見My_GA.m
Matlab編程實現(xiàn)GA遺傳算法的Matlab實現(xiàn)講解Matlab函數(shù)調(diào)用實現(xiàn)GAMatlab的GA函數(shù)
[xfval]=ga(@fitnessfun,nvars,[],[],[],[],[],[],[],options);fitnessfcn—Fitnessfunctionnvars—NumberofvariablesfortheproblemAineq—MatrixforinequalityconstraintsBineq—VectorforinequalityconstraintsAeq—MatrixforequalityconstraintsBeq—VectorforequalityconstraintsLB—LowerboundonxUB—Upperboundonxnonlcon—NonlinearconstraintFunctionoptions—Optionsstructure遺傳算法的Matlab實現(xiàn)講解Matlab函數(shù)調(diào)用實現(xiàn)GAMatlab的GA函數(shù)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(...)遺傳算法的Matlab實現(xiàn)講解Matlab函數(shù)調(diào)用實現(xiàn)GAGA函數(shù)調(diào)用步驟第一步:編寫適應(yīng)度函數(shù);第二步:對GA參數(shù)進行設(shè)置;options=gaoptimset(‘參數(shù)名’,參數(shù)值,…,‘參數(shù)名’,參數(shù)值)例:options=gaoptimset('PopulationSize',100)第三步:調(diào)用GA函數(shù);[xfval]=ga(@fitnessfun,nvars)[xfvalexitflagoutputpopulationscores]=ga(@fitnessfcn,nvars)[xfval]=ga(@fitnessfun,nvars,[],[],[],[],[],[],[],options);specifyanylinearequality,linearinequality,ornonlinearconstraints遺傳算法的Matlab實現(xiàn)講解Matlab函數(shù)調(diào)用實現(xiàn)GA調(diào)用GA函數(shù)求例1的最大值(見ga_eg1.m)第一步:編寫適應(yīng)度函數(shù);functiony=fit1(x)y=-(2*x+10*sin(5*x)+7*cos(4*x));第二步:設(shè)置參數(shù)options=gaoptimset('PopulationSize',100,'PopulationType','doubleVector','PlotFcns',{@gaplotbestf,@gaplotbestindiv,@gaplotexpectation,@gaplotstopping})第三步:調(diào)用GA函數(shù)[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,'*')遺傳算法的Matlab實現(xiàn)講解
遺傳算法的GA工具箱實現(xiàn):Matlab的GA工具箱(R2007)遺傳算法的Matlab實現(xiàn)講解Matlab的GA工具箱(R2010b)
遺傳算法的GA工具箱實現(xiàn):遺傳算法的Matlab實現(xiàn)講解例二求下列優(yōu)化問題遺傳算法的Matlab實現(xiàn)講解Matlab函數(shù)調(diào)用實現(xiàn)調(diào)用GA函數(shù)求解(見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)遺傳算法的Matlab實現(xiàn)講解Matlab函數(shù)調(diào)用實現(xiàn)調(diào)用GA函數(shù)求解(見ga_eg2.m)
遺傳算法的Matlab實現(xiàn)講解遺傳算法的GA工具箱實現(xiàn)Matlab的GA工具箱(R2010b)遺傳算法的Matlab實現(xiàn)講解練習(xí)一在-5<=Xi<=5,i=1,2區(qū)間內(nèi),求解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,最大代數(shù)100,變異率0.1,交叉率0.7遺傳算法的Matlab實現(xiàn)講解ContentsIIGA求解多目標(biāo)優(yōu)化問題1GA優(yōu)化BP神經(jīng)網(wǎng)絡(luò)2GA求解TSP問題3遺傳算法的Matlab實現(xiàn)講解II-1GA求解多目標(biāo)優(yōu)化問題通常多目標(biāo)優(yōu)化,例如非線性整數(shù)規(guī)劃是一個具有指數(shù)復(fù)雜度的NP問題,如果約束較為復(fù)雜,Matlab優(yōu)化工具箱和一些優(yōu)化軟件比如lingo等,常常無法應(yīng)用,即使能應(yīng)用也不能給出一個較為令人滿意的解。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 掛靠公司的車終止合同范本(2篇)
- 二零二五年度出租車司機職業(yè)發(fā)展規(guī)劃合同樣本3篇
- 二零二五年份農(nóng)家院農(nóng)業(yè)觀光園租賃管理合同4篇
- 2025年度專業(yè)培訓(xùn)中心場地租賃及配套設(shè)施租賃合同3篇
- 2025年度煤炭鐵路運輸合同爭議解決機制
- 2025年度危險化學(xué)品運輸安全管理合同4篇
- 2025年度南京琴行教師學(xué)生家長溝通與協(xié)作合同4篇
- 二零二五年度城市地下空間開發(fā)利用承包經(jīng)營合同4篇
- 二零二五版木材行業(yè)木方板材庫存管理合同范本3篇
- 二零二五年度美團商家入駐信息安全管理合同4篇
- 2025年度杭州市固廢處理與資源化利用合同3篇
- 部編版二年級下冊《道德與法治》教案及反思(更新)
- 充電樁項目運營方案
- 退休人員出國探親申請書
- 傷殘撫恤管理辦法實施細(xì)則
- 高中物理競賽真題分類匯編 4 光學(xué) (學(xué)生版+解析版50題)
- 西方經(jīng)濟學(xué)-高鴻業(yè)-筆記
- 幼兒園美術(shù)教育研究策略國內(nèi)外
- 物業(yè)公司介紹
- 2024屆河南省五市高三第一次聯(lián)考英語試題及答案
- 【永輝超市公司員工招聘問題及優(yōu)化(12000字論文)】
評論
0/150
提交評論