資源簡介
單目標(biāo)最優(yōu)化問題的遺傳算法,可用與數(shù)學(xué)建模中,很方便快捷,matlab

代碼片段和文件信息
function[xvfv]=GA(fitnessabNPNGpcpmeps)
%待優(yōu)化的目標(biāo)函數(shù):fitness
%自變量下界:a
%自變量上界:b
%種群個體數(shù):NP
%最大進化代數(shù):NG
%雜交概率:pc
%自變量概率:pm
%自變量離散精度:eps
%目標(biāo)函數(shù)取最大值時的自變量值:xm
%目標(biāo)函數(shù)的最大值:fv
L=ceil(log2((b-a)/eps+1));???%根據(jù)離散精度,確定二進制編碼需要的碼長
x=zeros(NPL);
for?i=1:NP
????x(i:)=Initial(L);%種群初始化
????fx(i)=fitness(Dec(abx(i:)L));??%個體適應(yīng)值
end
for?k=1:NG
????sumfx=sum(fx);???%所有個體適應(yīng)值之和
????px=fx/sumfx;???%所有個體適應(yīng)值的平均值
????ppx=0;
????ppx(1)=px(1);
????for?i=2:NP??????%用于輪盤賭策略的累加
????????ppx(i)=ppx(i-1)+px(i);
????end
????for?i=1:NP
????????sita=rand();
????????for?n=1:NP
????????????if?sita<=ppx(n)
????????????????SelFather=n;??%根據(jù)輪盤賭策略確定的父親
????????????????break;
????????????end
????????end
????????Selmother=floor(rand()*(NP-1))+1;??%隨機選擇母親
????????posCut=floor(rand()*(L-2))+1;???%隨機選擇交叉點
????????r1=rand();
????????if?r1<=pc???????????????????????%交叉??????????
????????????nx(i1:posCut)=x(SelFather1:posCut);
????????????nx(i(posCut+1):L)=x(Selmother(posCut+1):L);
????????????r2=rand();
????????????if?r2<=pm????%變異
????????????????posMut=round(rand()*(L-1)+1);
????????????????nx(iposMut)=~nx(iposMut);
????????????end
????????else
????????????nx(i:)=x(SelFather:);
????????end
????end
????x=nx;
????for?i=1:NP
????????fx(i)=fitness(Dec(abx(i:)L));%子代適應(yīng)值
????end
end
fv=-inf;
for?i=1:NP
????fitx=fitness(Dec(abx(i:)L));
????if?fitx>fv
????????????fv=fitx;???????%取個體中的最好值作為最終結(jié)果
????????????xv=Dec(abx(i:)L);
????????end
????end
????function?result=Initial(length)???%初始化函數(shù)
????for?i=1:length
????????r=rand();
????????result(i)=round(r);
????end
????????function?y=Dec(abxL)??%二進制編碼轉(zhuǎn)換為十進制編碼
????????????base=2.^((L-1):-1:0);
????????????y=dot(basex);
????????????y=a+y*(b-a)/(2^L-1);
????????????%[xvfv]=GA(@fitness030501000.90.040.01)
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2021??2013-09-12?21:03??GA.m
-----------?---------??----------?-----??----
?????????????????2021????????????????????1
評論
共有 條評論