You are on page 1of 3

C:\Users\Anca\Desktop\ListViewBasicSample\Program.

cs 25 aprilie 2017 14:27
function [ p, q ] = d_FPS( pop )
% distributia de selectie tip FPS
% I: pop - populatia curenta
% E: p - vectorul probabilitatilor de selectie individuale
% q - vectorul probabilitatilor de selectie cumulate

[m,n]=size(pop);
p=pop(1:m,n);
s=sum(p);
p=p/s;

q=zeros(1,m);
q(1)=p(1);
for i=2:m
q(i)=q(i-1)+p(i);
end;
end

function [parinti]=s_ruleta_SUS(pop)
% mecanism de selectie tip ruleta multi-brat (SUS)
% I: pop - populatia curenta, pe ultima coloana e val. fct. obiectiv
% E: parinti - parintii selectati

[m,n]=size(pop);

[~,q]=d_FPS(pop);

parinti=zeros(m,n);
i=1;
k=1;
r=unifrnd(0,1/m);
while(k<=m)
while(r<=q(i))
parinti(k,1:n)=pop(i,1:n);
r=r+1/m;
k=k+1;
end;
i=i+1;
end;
end

function [parinti]=s_ruleta( pop )
% mecanism de selectie tip ruleta
% I: pop - populatia curenta, pe ultima coloana e val. fct. obiectiv
% E: parinti - parintii selectati

[m,n]=size(pop);

[~,q]=d_FPS(pop);
% [~,q]=d_rang_l(pop); sortrows(pop,n);

parinti=zeros(m,n);
for k=1:m
r=unifrnd(0,1);
i=1;
while i<m && r>q(i)
i=i+1;
end;
parinti(k,:)=pop(i,:);
end;
end

function [Generatie]=s_elitista(pop, desc)
% selectarea elitista a generatiei noi
% I: pop - populatia curenta, desc - descendentii generati
% pe ultima coloana se afla valoarea functiei obiectiv

-1-

[max2.vectorul probabilitatilor de selectie cumulate [m.vectorul probabilitatilor de selectie individuale % q .:).m). end. q=zeros(1.k]=min(desc(:. end. q ] = d_rang_l( m.generatia noua Generatie=desc.m).populatia curenta % c . s=sum(p). -2- . val=medie-c*sigma. medie=mean(pop(:. for i=2:m q(i)=q(i-1)+p(i).vectorul probabilitatilor de selectie individuale % q . Generatie(k. c ) % distributia de selectie tip FPS cu sigma scalare % I: pop .:)=pop(i.vectorul probabilitatilor de selectie individuale % q .vectorul probabilitatilor de selectie cumulate p=zeros(1.dimensiunea populatiei % s . end function [ p.n)). end function [ p. q ] = d_FPS_ss( pop.m).n)). [~. sigma=std(pop(:.~]=max(desc(:.C:\Users\Anca\Desktop\ListViewBasicSample\Program. q ] = d_rang_e( m ) % distributia de selectie tip rang exponential % I: m .n]=size(pop). p=p/s.constanta s pentru rangul liniar % E: p .n)). p=p/c.n)). s ) % distributia de selectie tip rang liniar % I: m .m).cs 25 aprilie 2017 14:27 % E: Generatie .i]=max(pop(:. c=sum(p).vectorul probabilitatilor de selectie cumulate p=zeros(1. for i=2:m q(i)=q(i-1)+p(i). if max1>max2 [~. end. q=zeros(1.constanta c din formula de ajustare % E: p .n]=size(pop). q(1)=p(1).n)). for i=1:m p(i)=(2-s)/m+2*i*(s-1)/(m*(m+1)). for i=1:m p(i)=1-exp(-i). end. end. [max1. q(1)=p(1).dimensiunea populatiei % E: p . end function [ p.

k) % selectia de tip turneu % I: pop . for i=1:m g(i)=max([0 pop(i. q(1)=p(1).:)=pop(turneu(p).m).m). q=zeros(1.1. parinti(i. [~.numarul de participanti la turneu % pe ultima coloana se afla valoarea functiei obiectiv % E: parinti .n).p]=max(valori).n)-val]). end. end. for j=1:k valori(j)=pop(turneu(j). for i=1:m turneu=unidrnd(m. end.populatia curenta. p=g/s. valori=zeros(1. end.:).C:\Users\Anca\Desktop\ListViewBasicSample\Program. parinti=zeros(m.n]=size(pop).m).m). s=sum(g).cs 25 aprilie 2017 14:27 g=zeros(1. end -3- . for i=2:m q(i)=q(i-1)+p(i).parintii selectati [m. k . end function [parinti]=s_turneu(pop.k).

Related Interests