資源簡介
一個一個簡單的遺傳算法例子,代碼注釋詳盡,很適合初學(xué)者進(jìn)行學(xué)習(xí)。代碼已經(jīng)經(jīng)過測試,請放心下載
代碼片段和文件信息
%?下面舉例說明遺傳算法?%
%?求下列函數(shù)的最大值?%
%?f(x)=10*sin(5x)+7*cos(4x)?x∈[010]?%
%?將?x?的值用一個10位的二值形式表示為二值問題,一個10位的二值數(shù)提供的分辨率是每為?(10-0)/(2^10-1)≈0.01?。?%
%?將變量域?[010]?離散化為二值域?[01023]?x=0+10*b/1023?其中?b?是?[01023]?中的一個二值數(shù)。?%
%?%
%--------------------------------------------------------------------------------------------------------------%
%--------------------------------------------------------------------------------------------------------------%
%?編程
%-----------------------------------------------
function?y=min(x)
clear
clf
popsize=20;?%群體大小
chromlength=10;?%字符串長度(個體長度)
pc=0.6;?%交叉概率
pm=0.001;?%變異概率
pop=initpop(popsizechromlength);?%隨機(jī)產(chǎn)生初始群體
for?i=1:20?%20為迭代次數(shù)
[objvalue]=calobjvalue(pop);?%計算目標(biāo)函數(shù)
fitvalue=calfitvalue(objvalue);?%計算群體中每個個體的適應(yīng)度
[newpop]=selection(popfitvalue);?%復(fù)制
[newpop]=crossover(poppc);?%交叉
[newpop]=mutation(poppc);?%變異
[bestindividualbestfit]=best(popfitvalue);?%求出群體中適應(yīng)值最大的個體及其適應(yīng)值
y(i)=max(bestfit);
n(i)=i;
pop5=bestindividual;
x(i)
評論
共有 條評論