maryam-alikahakii
یک شنبه 07 تیر 1388, 10:02 صبح
من دارم یک برنامه با متلب مینویسم که میخواهد با الگوریتم ژنتیک مقدار بهینه تابع sin2x-sinx را پیدا کنداما در قسمت selection نمیدونم وقتی احتمال هر population را حساب کرد چه جوری از بین اونها انتخاب کند لطفا توضیح دهید
function [fit1,fit2,fit3,fit4]=fitness(pop0,pop1,pop2,pop3)
%
%
%
for i=1:10
y1=sin(2*pop0(i))-sin(pop0(i));
A1=sum(y1);
y2=sin(2*pop1(i))-sin(pop1(i));
A2=sum(y2);
y3=sin(2*pop2(i))-sin(pop2(i));
A3=sum(y3);
y4=sin(2*pop3(i))-sin(pop3(i));
A4=sum(y4);
end%end of for
B=A1+A2+A3+A4;
fit1=A1/B
fit2=A2/B
fit3=A3/B
fit4=A4/B
fit=[fit1,fit2,fit3,fit4];
C=random('unif',0,2,1,4)
for i=1:4
if(C(i)>1.5 && C(i)<=2)
newpop(i)=pop0
end
if(C(i)<=1.5 && C(i)>1)
newpop(i)=pop1
end
if(C(i)<1 && C(i)>=0.5)
newpop(i)=pop2
end
if(C(i)>=0 && C(i)<0.5)
newpop(i)=pop3
end
end
function [fit1,fit2,fit3,fit4]=fitness(pop0,pop1,pop2,pop3)
%
%
%
for i=1:10
y1=sin(2*pop0(i))-sin(pop0(i));
A1=sum(y1);
y2=sin(2*pop1(i))-sin(pop1(i));
A2=sum(y2);
y3=sin(2*pop2(i))-sin(pop2(i));
A3=sum(y3);
y4=sin(2*pop3(i))-sin(pop3(i));
A4=sum(y4);
end%end of for
B=A1+A2+A3+A4;
fit1=A1/B
fit2=A2/B
fit3=A3/B
fit4=A4/B
fit=[fit1,fit2,fit3,fit4];
C=random('unif',0,2,1,4)
for i=1:4
if(C(i)>1.5 && C(i)<=2)
newpop(i)=pop0
end
if(C(i)<=1.5 && C(i)>1)
newpop(i)=pop1
end
if(C(i)<1 && C(i)>=0.5)
newpop(i)=pop2
end
if(C(i)>=0 && C(i)<0.5)
newpop(i)=pop3
end
end