در پست قبل حل یک معادله ساده ریاضی را توسط الگوریتم ژنتیک توضیح دادیم.در این پست کد پیاده سازی این مثال در زبان متلب آورده می شود.زبان متلب یک زبان بسیار قوی برای پیاده سازی مسائل علمی است که با قابلیت های زیاد کار برنامه نویسی را برای کاربر بسیار آسان می نماید.کدها دقیقا پیاده سازی همان چیزی است که در مثال قبل گفته شده است و برای درک آن نیاز به آشنایی با کدنویسی تحت زبان برنامه نیسی متلب می باشد.
global popSize;
global chromosomeLength;
global F_OBJ;
global Fitness;
global arrProbability;
global arrCumulative;
global newPop;
global population;
global xoRate;
global mutRate;
global maxTor;
maxTor=100;
popSize=6;
chromosomeLength=4;
xoRate =0.3;
mutRate = 0.4;
initalPopulation();
for maxTorIndex=1:maxTor
global Fitness;
calculateFOBJ();
solution=find(F_OBJ==0);
if ~(isempty(solution))
numRuleFound=size(solution,1);
fprintf("We Finde %d Solution in generation %d \n",numRuleFound,maxTorIndex);
for i=1:numRuleFound
ruleIndex=solution(i);
disp(population(ruleIndex,:))
end
return;
end
calculateFitness();
calculateprobability();
calculateCumulative();
rouletteWheel();
OnePointCrossOver();
MutateGens();
end
function pop=initalPopulation()
%global population;
global popSize;
global population;
x=popSize;
population(1,:)= [12,05,23,08];
population(2,:)= [02,21,18,03];
population(3,:)= [10,04,13,14];
population(4,:)= [20,01,10,06];
population(5,:)= [01,04,13,19];
population(6,:)= [20,05,17,01];
%pop=population;
end
function calculateFOBJ()
global F_OBJ;
global popSize;
global population;
for i=1:popSize
a=population(i,1);
b=population(i,2);
c=population(i,3);
d=population(i,4);
F_OBJ(i)=abs(a+2*b+3*c+4*d-30);
end
end
ادامه مطلب ...