Documente Academic
Documente Profesional
Documente Cultură
Algoritmi genetici
3.1.Introducere. Prezentare general
Algoritmii genetici (GA) au fost dezvoltai iniial de Holland (Holland, 1975) ca un
instrument de studiu al comportamentului de tip adaptiv. Chiar dac nu ntotdeauna corect (De
Jong), GA sunt n general considerai ca aparinnd clasei metodelor de optimizare.
Un GA clasic (sau canonic) este caracterizat astfel. Reprezentarea populaiei este
realizat prin intermediul irurilor binare, operatorul de selecie a unui individ n multisetul
prinilor este proporional cu valoarea funciei de evaluare calculat pentru acel individ,
probabilitatea efecturii unei mutaii este sczut, accentul fiind pus pe procesul de recombinare,
de inspiraie biologic, ca mijloc de generare a noi candidai la soluie.
Un exemplu simplu relativ la evoluia unui GA este prezentat n (Goldberg, 1989) i se
refer la maximizarea funciei ()
, corespunztor fenotipului
, este calculat
performana sa, prin funcia de evaluare
);
2. Este determin performana ntregii populaii
(
3. Pentru fiecare cromozom
i probabilitatea cumulat
Observaie. Evident, o parte a cromozomilor populaiei curente poate fi selectat de mai
multe ori. Acest lucru corespunde intuitiv ideii conform creia cei mai buni cromozomi genereaz
mai muli copii, iar cei mai slabi dispar.
Pentru o populaie dat, pop, prin apelul funciei MATLAB selectie_parinti(pop) este
realizat calculul probabilitii de selecie, al probabilitii cumulate, al numrului de apariii a
fiecrui individ n bazinul de mperechere i este implementat o modalitate de alegere a acestuia,
pe baza unei proceduri de tip rulet (prezentat mai amplu n 3.6).
Bazinul de mperechere (multisetul prinilor) este creat prin selecii aleatoare pe baza
distribuiei de probabilitate cumulat astfel. Procesul de selecie const n rotirea ruletei de dim
ori. De fiecare dat este selectat un cte un singur cromozom astfel:
1. Se genereaz aleator un numr ,-;
2. Dac
este selectat
, cu proprietatea
function [parinti,p,q]=selectie_parinti(pop);
[dim,m]=size(pop);
% aici m este 6, adica numarul de biti+1(valoarea fitness)
p=zeros(dim,1);
p(1:dim)=pop(1:dim,6);
s=sum(p);
p(1:dim)=p(1:dim)/s;
q=zeros(dim,1);
for i=1:dim
q(i)=sum(p(1:i));
end;
parinti=zeros(dim,m);
for k=1:dim
r=unifrnd(0,1);
pozitie=1;
for i=1:dim
if(r<q(i))
pozitie=i;
break;
end;
end;
parinti(k,1:m)=pop(pozitie,1:m);
end;
end
Indivizii selectai n populaia de prini interschimb material genetic prin aplicarea
operatorului de ncruciare. Prinii sunt mperecheai aleator, din fiecare pereche rezultnd doi
copii astfel. Fie
, respectiv din
copiaz n ultimele m- pozitie +1 poziii din
, respectiv
, ultimele m- pozitie
+1 elementele din
, respectiv
.
Funcia MATLAB crossover(pop) furnizeaz copiii populaiei pop, popN, obinui pe baza
mecanismului explicat mai sus.
function [popN]=crossover(pop);
[dim,n]=size(pop);
popN=zeros(dim,n);
m=n-1;V=[];
for k=1:dim/2
% determinarea a doi indivizi distincti si care nu au fost selectati
% anetrior
poz=zeros(2,1);
for i=1:2
poz(i)=unidrnd(dim);
while(ismember(poz(i),V))
poz(i)=unidrnd(dim);
end;
V=[V poz(i)];
end;
% incrucisarea celor doi indivizi; rezulta y1,y2
disp('Incrucisare intre indivizii din pozitiile');
disp(poz);
x1=pop(poz(1),1:n);y1=x1;
x2=pop(poz(2),1:n);y2=x2;
% genereaza pozitia din care se face interschimbul
pozitie=unidrnd(4);
disp('Punctul de incrucisare');
disp(pozitie);
y1(pozitie+1:m)=x2(pozitie+1:m);
y2(pozitie+1:m)=x1(pozitie+1:m);
y1(m+1)=f_obiectiv(repr_int(y1(1:m),m));
y2(m+1)=f_obiectiv(repr_int(y2(1:m),m));
popN(2*(k-1)+1,1:n)=y1(1:n);
popN(2*k,1:n)=y2(1:n);
end;
end
Multisetul urmailor direci rezultai este supus operaiei de mutaie, efectuate cu
probabilitatea pm. n cadrul unui GA clasic, operatorul mutaie este aplicat astfel. Pentru fiecare
gen din fiecare cromozom este generat r, un numr aleator n intervalul ,-. Dac ,
atunci gena respectiv sufer o mutaie (valoarea este schimbat din 0 n 1, respectiv din 1 n 0).
n general probabilitatea efecturii unei mutaii este foarte mic (de exemplu 0.001). n exemplul
nostru, deoarece numrul de indivizi este foarte mic, am considerat . Apelul funciei
MATLAB mutatie(pop,pm) determin obinerea unei noi populaii, popN, n urma efecturii
mutaiei asupra populaiei curente pop.
function [popN]=mutatie(pop,pm);
[dim,n]=size(pop);
popN=pop;
m=n-1;
for i=1:dim
efectuat=0;
for k=1:m
r=unifrnd(0,1);
if(r<pm)
disp('Mutatie efectuata in cromozomul'); disp(i);
disp('Gena');disp(k);
popN(i,k)=not(popN(i,k));
efectuat=1;
end;
if(efectuat)
popN(i,n)=f_obiectiv(repr_int(popN(i,1:m),m));
end;
end;
end
ntr-un GA clasic, selecia supravieuitorilor este de tip generaie, n sensul c, la fiecare
moment de timp, noua populaie rezult prin nlocuirea populaiei curente cu urmaii direci i
care au suferit eventuale mutaii. n urmtoarea surs MATLAB este descris generarea
populaiei iniiale i obinerea urmtoarei generaii, conform mecanismelor descrise mai sus.
function []=o_iteratie();
dim=4;
[pop]=genereaza_ini(dim);
disp('Populatia initiala si valorile functiei obiectiv');
disp(pop);
[parinti,p,q]=selectie_parinti(pop);
disp('Probabilitatile de selectie');
disp(p);
disp('Probabilitatile cumulate');
disp(q);
disp('Bazinul de imperechere si valorile functiei obiectiv');
disp(parinti);
disp('Operatia de incrucisare');
popN=crossover(parinti);
disp('Copii rezultati');
disp(popN);
disp('Operatia de mutatie');pm=0.01;
[popN]=mutatie(popN,pm);
disp('Populatia rezultata');
disp(popN);
end
La o execuie a acestei funcii pot fi obinute urmtoarele date.
Populaia iniial
Indice
cromozom
Cromozom Valoarea
funciei obiectiv
Probabilitate
a de selecie
Probabilitatea
cumulat
1 0 1 0 0 0 64 0.0566 0.0566
2 1 1 0 0 1 625 0.5531 0.6097
3 1 0 1 0 1 441 0.3903 1.0000
4 0 0 0 0 0 0 0 1.0000
Populaia selectat pentru recombinare i populaia rezultat
Bazinul de mperechere selectat i modul de mperechere Indivizii rezultai (copiii)
Indice
cromozom
Cromozom Valoarea
funciei
obiectiv
mperecherea Cromozom Valoarea
funciei
obiectiv
1 1 1 0 0 1 625 Cromozomii 1
i 2, punctul de
ncruciare 4
1 1 0 0 1 625
2 1 1 0 0 1 625 1 1 0 0 1 625
3 1 0 1 0 1 441 Cromozomii 3
i 4, punctul de
ncruciare 3
1 1 0 0 1 625
4 1 1 0 0 1 625 1 0 1 0 1 441
Efectuarea operaiei de mutaie
Populaia urmailor direci i modul de efectuare a mutaiei Indivizii rezultai (generaia
urmtoare)
Indice
cromozom
Cromozom Valoarea
funciei
obiectiv
mperecherea Cromozom Valoarea
funciei
obiectiv
1 1 1 0 0 1 625 Mutaii
efectuate n
primul
cromozom,
genele 3 i 5
1 1 1 0 0 784
2 1 1 0 0 1 625 1 1 0 0 1 625
3 1 1 0 0 1 625 1 1 0 0 1 625
4 1 0 1 0 1 441 1 0 1 0 1 441
3.2. Reprezentarea cromozomial
Reprezentarea cromozomial presupune identificarea spaiului fenotipurilor i definirea
spaiului genotipurilor, ntre cele dou spaii existnd o coresponden biunivoc. Alegerea unei
anumite reprezentri depinde de problema particular de rezolvat. Problema alegerii unei
reprezentri adecvate este una din cele mai importante i dificile n dezvoltarea unui algoritm
evolutiv care s furnizeze o soluie foarte apropiat de cea optim. n continuare sunt prezentate o
serie dintre cele mai utilizate modaliti de reprezentare cromozomial.
Reprezentarea binar
Reprezentarea binar este una dintre primele (ca istoric) dintre cele utilizate n construirea
unui GA. n literatura de specialitate au fost raportate o serie de situaii de utilizare abuziv a
reprezentrii binare, aproape independent de problema de rezolvat, fapt care a condus la
dezvoltri GA eronate.
Pentru o problem particular, prima etap n construcia unei reprezentri binare este
stabilirea dimensiunii reprezentrii i semnificaia acesteia n obinerea unui fenotip. n alegerea
corespondenei fenotip-genotip n reprezentarea binar trebuie inut cont de faptul c modul de
codificare trebuie s asigure faptul c fiecare ir de bii din spaiul genotipurilor corespunde unei
soluii valide i, reciproc, n spaiul genotipurilor pot fi reprezentate toate soluiile posibile. n
practic, validitatea soluiilor corespunde restriciilor impuse n problema particular de rezolvat
i nu este ntotdeauna posibil. n literatura de specialitate au fost raportate o serie de strategii de
tratare a problemelor de optimizare cu restricii, din punctul de vedere al spaiului soluiilor
fezabile (Eiben, Smith, 2003; Michalewicz, Schoenauer, 1996; Joines, Houck, 1994; Goldberg,
1989).
n cazul unor clase de probleme care conin variabile de tip decizie boolean,
reprezentarea binar este cea mai natural (de exemplu, problema de tip 0-1 a rucsacului,
prezentat n 2.4). Dac informaia codificat nu este de tip boolean, poate fi reprezentat de
exemplu similar celor prezentate n 2.3 i 3.1, dar, n multe situaii, pot fi obinui GA superiori
ca performane prin utilizarea reprezentrilor directe (pe mulimile sau ), similar primelor
dou probleme rezolvate n 2.4.
Una din problemele utilizrii reprezentrii binare este aceea c bii diferii au n general
semnificaii diferite. Reprezentarea binar standard a numerelor din are dezavantajul c
distana Hamming ntre dou numere ntregi consecutive nu este ntotdeauna 1, unde distana
Hamming ntre dou iruri de aceeai dimensiune este definit ca numrul de poziii ale cror
valori corespunztoare difer. De exemplu, n reprezentarea prezentat n 3.1, numrului
i corespunde reprezentarea . Probabilitatea ca, prin k modificri succesive ale valorii unui
bit, s fie obinut numrul vecin
este 1. O variant de
reprezentare binar care s rezolve aceast problem (n cazul fenotipurilor numere din mulimea
) este codificarea Gray.
Codificarea Gray furnizeaz reprezentri ale numerelor din prin intermediul irurilor
binare astfel nct distana Hamming dintre oricare dou numere ntregi consecutive s fie 1. Fie
* +
. Fie i
( )
()
()
()
()
( )
unde este operatorul logic sau exclusiv. De exemplu, dac * +, atunci
i reprezentrile binare, standard i respectiv Gray sunt prezentate n tabelul urmtor.
Numr 0 1 2 3 4 5 6 7
Cod binar std. 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1
Cod Gray 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 0
Numr 8 9 10 11 12 13 14 15
Cod binar std. 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1
Cod Gray 1 1 0 0 1 1 0 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 1 1 0 0 1 1 0 0 0
n urmtoarele funcii MATLAB sunt prezentate obinerea codificrii Gay a unui numr
din
a cu proprietatea c i
corespunde un cod Gray dat.
function [y]=repr_int_Gray(x,m);
y=zeros(1,m);
y(1)=bitget(x,m);
for i=2:m
y(i)=xor(bitget(x,m-i+1),bitget(x,m-i+2));
end;
disp(y);
end
function [x]=repr_Gray_int(y,m);
z=zeros(m,1);
z(1)=y(1);
val=z(1);
for i=2:m
if(y(i))
val=not(val);
end;
z(i)=val;
end;
x=0;
for i=1:m
x=bitset(x,m-i+1,z(i));
end;
disp(x);
end
Reprezentarea prin intermediul numerelor ntregi
Aa cum am precizat n seciunea de mai sus, reprezentarea binar nu este ntotdeauna
potrivit n cazul problemelor n care unui fenotip i corespunde un cromozom n care fiecare
gen are mai mult de 2 valori (nu este de tip boolean). O astfel de reprezentare este utilizat, de
exemplu, n cadrul problemelor de optimizare a funciilor cu variabile lund valori n mulimea
numerelor ntregi. Problema de optimizare poate fi fr restricii (o variabil poate avea ca
valoare orice numr ntreg) sau, n cele mai multe cazuri, poate fi astfel nct variabilele s fie
restricionate la un set finit de valori. De exemplu, problema determinrii unui drum de la un
punct de start S ntr-o reea de puncte n care conexiunile posibile sunt sus, jos, stnga i respectiv
dreapta (nord, sud, est, vest) revine la determinarea unei secvene de deplasri ctre nord, sud, est,
respectiv vest cu cte o unitate (corespunztoare unei conexiuni), fiecare tip de deplasare putnd
fi codificat cu o valoare din mulimea cu elemente *+(fiecare element corespunde unui
punct cardinal).
Alegerea unei codificri i a operatorilor de variaie definii pe mulimea genotipurilor
trebuie fcut, dac este posibil, pe baza unor relaii naturale ntre valorile pe care le poate lua
fiecare atribut (variabil). Astfel de relaii pot fi evideniate uor n cazul atributelor ordinale (de
exemplu cu valori ntr-o mulime de numere ntregi: de exemplu 2 este mai similar cu 3 dect
cu 312 ), dar pot fi greu de identificat n cazul atributelor cardinale (de exemplu, dac punctele
cardinale sunt reprezentate prin numerele 0,1,2 i 3, faptul 0 este mai similar cu 1 dect cu 3 pe
mulimea nu poate fi transpus corespunztor pentru elementele din spaiul punctelor cardinale).
Reprezentarea prin intermediul numerelor reale
n multe situaii practice, reprezentarea unui candidat la soluie este realizat prin
intermediul unui ir de numere reale. n general este preferat aceast reprezentare atunci cnd
fenotipurile provin dintr-o distribuie continu. Genotipul corespunztor unui candidat soluie cu
p gene este deci vectorul (
), unde
.
Reprezentarea prin intermediul permutrilor
Permutrile sunt utilizate pentru reprezentri cromozomiale n probleme n care trebuie
stabilit ordinea apariiei unor secvene de evenimente. O consecin imediat este c, n timp ce
ntr-un GA clasic este permis ca gene diferite s aib aceleai valori (alele), n cazul reprezentrii
prin permutri, cromozomii cu proprietatea c dou sau mai multe gene posed aceeai valoare nu
corespund unor soluii fezabile. Evident, n acest caz operatorii de variaie trebuie definii astfel
nct rezultatul aplicrii acestora s corespund unor soluii admisibile.
n alegerea operatorilor de variaie este important clasa din care face parte problema
particular de rezolvat. n general, problemele care sunt rezolvate genetic utiliznd cromozomi
permutri sunt de dou tipuri. n prim clas de probleme, ordinea apariiei evenimentelor este
important. Aceast situaie apare, de exemplu, cnd evenimentele utilizeaz resurse limitate sau
se desfoar ntr-o anumit perioad de timp. Cea mai comun problem din aceast clas este
problema planificrii activitilor, a crei rezolvare prin intermediul GA este prezentat n finalul
capitolului. O a doua clas de probleme este cea n care apare dependena de adiacen, cel mai
comun exemplu din aceast clas fiind problema comis-voiajorului, n care, pentru n orae
interconectate date, trebuie determinat un drum de lungime (distan) minim care s treac prin
toate cele n orae, cu revenire n oraul de start. Diferena dintre cele dou clase de probleme este
dat de faptul c, evident, n cazul celei de-a doua clase, punctul de start (n cazul problemei
comis-voiajorului oraul de plecare) nu este important.
Pentru reprezentarea permutrilor sunt utilizate n general dou variante: n prima
variant, cel de-al i-lea element al reprezentrii semnific evenimentul care se produce n acea
poziie a secvenei, iar n varianta alternativ,valoarea celui de-al i-lea element reprezint poziia
din secven n care se produce evenimentul i. De exemplu, n prima variant de reprezentare
irul (
), n timp ce n
varianta alternativ de reprezentare corespunde irului (
) (
este n poziia 3,
este
n poziia 1,
este n poziia 4 i
- i, prin aplicarea
operatorului mutaie asupra cromozomului (
) este obinut (
),
unde
- .
Mutaia uniform presupune modificarea fiecrei gene din fiecare cromozom,
cu probabilitatea pm, prin generarea aleatoare uniform a cte unui numr din ,
-. Deci, dac
gena i, a cromozomului x a fost selectat pentru mutaie,
-. Altfel,
) s fie n
, - , respectiv n , - este aproximativ 95.45%, respectiv 99.73%. n figura de mai
jos este prezentat grafic aceast proprietate, pentru distribuia (
) .
Cu alte cuvinte, deoarece valorile cu care sunt modificate alelele trebuie s fie, de
exemplu, inferioare unui prag dat t, deci n intervalul , -, atunci ele pot fi generate din
distribuia (
), unde .
Observaie. n general, pentru distribuia (
), au loc proprietile
( )
( )
( )
O variant de implementare a acestui operator pentru o deviaie standard dat, , este
prezentat n continuare. Pentru uurina nelegerii operatorului, am considerat ,
-
, - .
function [popN]=mutatie_creep_fp(pop,pm,a,b,sigma);
[dim,n]=size(pop);
popN=pop;
for i=1:dim
efectuat=0;
for k=1:n
r=unifrnd(0,1);
if(r<pm)
disp('Mutatie efectuata in cromozomul'); disp(pop(i,:));
disp('Gena');disp(k);
% R este generat normal, cu medie 0 si deviatie sigma
R=normrnd(0,sigma);
popN(i,k)=pop(i,k)+R;
if(popN(i,k)<a)
popN(i,k)=a;
else if (popN(i,k)>b)
popN(i,k)=b;
end;
end;
efectuat=1;
end;
end;
if(efectuat)
disp('Cromozom rezultat');disp(popN(i,:));
end;
end;
end
function []=test_mutatie_creep_fp(dim,n,pm,a,b,sigma);
% generarea populatiei care sufera mutatie este realizata
% aleator, uniforma pe [a,b]
pop=zeros(dim,n);
for i=1:dim
for k=1:n
pop(i,k)=unifrnd(a,b);
end;
end;
disp('Populatia initiala');disp(pop);
%aplicarea mutatiei
popN=mutatie_creep_fp(pop,pm,a,b,sigma);
end
Exemplu de aplicare: la un apel test_mutatie_creep_fp(8,4,1/8,-2,3.5,0.3) pot fi obinute
urmtoarele rezultate:
Populatia initiala
-1.9676 1.1593 2.0915 2.4376
1.5066 -0.6180 -1.2062 1.5835
3.2035 2.4874 3.1164 -0.2953
-0.5215 0.9505 -1.1020 -0.8396
-0.8075 1.5848 -1.7097 -0.7389
1.6709 -0.2899 -0.3135 1.9637
3.2492 -1.2787 -1.6245 -1.3113
-1.0862 3.0128 -1.2506 1.3935
Mutatie efectuata in cromozomul
-0.8075 1.5848 -1.7097 -0.7389
Gena 4
Cromozom rezultat
-0.8075 1.5848 -1.7097 -0.6407
Mutatie efectuata in cromozomul
3.2492 -1.2787 -1.6245 -1.3113
Gena 3
Cromozom rezultat
3.2492 -1.2787 -1.5721 -1.3113
Mutatie efectuata in cromozomul
-1.0862 3.0128 -1.2506 1.3935
Gena 4
Cromozom rezultat
-1.0862 3.0128 -1.2506 1.3375
Operatorul mutaie n reprezentarea prin permutri
n cazul reprezentrii cromozomiale prin permutri, operatorul mutaie poate fi aplicat
doar la nivel de cromozom (aplicarea lui la nivel de gen determin obinerea unui ir care nu este
permutare), deci rata de mutaie corespunde probabilitii modificrii unui genotip, nu a unei
gene. Cele mai utilizate variante de definire a mutaiei sunt prezentate n continuare (Syswerda,
1992).
Mutaia prin interschimbare revine la selectarea aleatoare a dou gene dintr-un cromozom
i interschimbarea valorilor asociate acestora. Un exemplu de implementare a fost prezentat n
2.1 (rezolvarea problemei celor 8 regine).
Mutaia prin inserare presupune selectarea aleatoare a dou gene, ,
memorarea alelei din gena j, A, deplasarea cu o poziie ctre dreapta a valorilor genelor
i plasarea valorii A pe poziia i+1.Evident, dac , mutaia nu modific nimic n
cromozom.
Urmtoarele funcii MATLAB implementeaz acest tip de mutaie.
function [popN]=mutatie_perm_inserare(pop,pm);
[dim,n]=size(pop);
popN=pop;
for i=1:dim
efectuat=0;
r=unifrnd(0,1);
if(r<pm)
disp('Mutatie efectuata in cromozomul'); disp(pop(i,:));
p=zeros(1,2);
p(1)=unidrnd(n);
p(2)=unidrnd(n);
while(p(1)==p(2))
p(2)=unidrnd(n);
end;
poz=sort(p);
disp('Pozitiile:');
disp(poz);
popN(i,1:poz(1))=pop(i,1:poz(1));
popN(i,poz(1)+1)=pop(i,poz(2));
popN(i,poz(1)+2:poz(2))=pop(i,poz(1)+1:poz(2)-1);
popN(i,poz(2)+1:n)=pop(i,poz(2)+1:n);
disp('Cromozom rezultat');disp(popN(i,:));
end;
end;
end
function []=test_mutatie_perm_inserare(dim,n,pm);
% presupunem ca un cromozom este o permutarea a mutimii {1,2,...,n}
% dim este dimensiunea populatiei
% generarea populatiei care sufera mutatie
% este similara problemei celor n regine
pop=genereaza_ini(n,dim);
disp('Populatia initiala');disp(pop);
%aplicarea mutatiei
[popN]=mutatie_perm_inserare(pop,pm);
end
La un apel test_mutatie_perm_inserare(10,8,0.2) poate fi obinut urmtorul rezultat.
Populatia initiala
5 1 6 4 8 3 7 2
3 4 2 1 7 5 6 8
3 6 1 8 7 5 2 4
3 8 7 4 2 5 6 1
2 8 6 3 1 5 7 4
3 1 7 8 5 6 2 4
7 4 2 6 8 3 1 5
4 7 2 6 8 1 3 5
4 1 7 8 3 5 2 6
5 7 8 1 3 4 2 6
Mutatie efectuata in cromozomul
3 6 1 8 7 5 2 4
Pozitiile:
5 8
Cromozom rezultat
3 6 1 8 7 4 5 2
Mutatie efectuata in cromozomul
4 1 7 8 3 5 2 6
Pozitiile:
1 5
Cromozom rezultat
4 3 1 7 8 5 2 6
Mutatie efectuata in cromozomul
5 7 8 1 3 4 2 6
Pozitiile:
1 2
Cromozom rezultat
5 7 8 1 3 4 2 6
Mutaia prin amestec presupune repoziionarea fiecrei alele n mod aleatoriu, pentru o
secven de gene ale unui cromozom sau pentru ntreg cromozomul. De exemplu, pentru
cromozomul
4 3 1 7 8 5 2 6
prin amestecul aleator al valorilor genelor 3,4,5 i 6 poate rezulta cromozomul copil
4 3 7 1 5 8 2 6.
Mutaia prin inversiune presupune selectarea aleatoare a dou gene, , i
inversarea ordinii n secvena dintre cele dou poziii. De exemplu, pentru cromozomul
4 3 1 7 8 5 2 6
i poziiile 3 i 6, rezult cromozomul copil
4 3 5 8 7 1 2 6.
n rezolvarea problemelor bazate pe dependena de adiacen (din clasa problemei comis-
voiajorului), inversiunea unui subir aleator ntr-un cromozom este cea mai mic modificare ce
poate fi adus acelui cromozom i corespunde reprezentrii Gray n cazul spaiului genotipurilor
iruri binare. Aceast variant este cea mai des utilizat cnd datele problemei de rezolvat sunt
reprezentate prin permutri.
3.4. Operatorul de recombinare
Recombinarea (ncruciarea) este procesul crerii de noi soluii candidat pe baza
informaiei coninute n dou (sau mai multe) soluii candidat prini i este una dintre cele mai
importante caracteristici ale GA.
Operatorul de recombinare este de obicei aplicat n manier probabilist, cu o
probabilitate (rat) pc, setat n general n intervalul ,-. Procesul presupune selectarea a dou
soluii candidat printe, generarea aleatoare a unui numr din , ), r, i compararea lui cu rata
de recombinare, pc. Dac , indivizii noi sunt creai prin recombinarea celor doi prini, n
caz contrar sunt creai asexuat, adic prin duplicarea prinilor.
Spre deosebire de rata de mutaie, pm, prin care este controlat secvena de gene
modificate, rata de ncruciare, pc, corespunde ansei ca perechea de prini selectat s fie
supus operaiei de recombinare.
Recombinarea n reprezentarea prin iruri binare
n cazul reprezentrii binare exist trei modaliti uzuale de definire a operatorului de
recombinare, toate genernd o pereche de progenituri pe baza unei perechi de cromozomi printe.
n literatura de specialitate sunt menionate, de asemenea, extensii ale acestora la cazul utilizrii
n-tuplurilor de prini, , respectiv la situaia obinerii unei singure progenituri (Eiben, van
Kemenade, Kok, 2000).
ncruciarea uni punct este primul operator propus pentru recombinare, introdus de
Holland n 1975. Recombinarea este aplicat cte unei perechi de cromozomi printe (
) i
presupune efectuarea urmtoarelor operaii: selectarea aleatoare a unei gene, poz, i obinerea
progeniturile
astfel :
copiaz primele poz elemente din
, respectiv
, respectiv
copiaz n ultimele m-poz+1 poziii din
, respectiv
, ultimele m-poz+1
elementele din
, respectiv
) i presupune
selectarea aleatoare a N gene i obinerea progeniturile
()
()
()
(),
cu alte cuvinte primul descendent direct motenete valoarea genei de la primul printe, iar cel
de-al doilea de la al doilea printe. n caz contrar, copierea este invers,
()
()
()
(). Urmtoarea funcie MATLAB implementeaz acest tip de recombinare. Deoarece prin
aceast funcie dorim s exemplificm operaia de ncruciare uniform i nu modul de selecie a
prinilor, vom presupune c populaia de prini este disponibil (n cazul nostru generat aleator
pentru dimensiunea reprezentrii m i volumul datelor dim) i mperecherea se face n ordinea
apariiei indivizilor n populaie.
function [popN]=crossover_rbinara_uniform(pc,dim,m,p);
% pop este populatia de parinti
pop=genereaza_ini_binar(m,dim);
disp('Populatia de parinti:');
disp(pop);
[dim,m]=size(pop);
popN=pop;
for k=1:2:dim
x1=pop(k,1:m);
y1=pop(k+1,1:m);
r=unifrnd(0,1);
disp('Parintii:');
disp(x1);disp(y1);
if(r<=pc)
disp('Incrucisarea este realizata pe baza valorilor:');
for i=1:m
v=unifrnd(0,1);
disp(v);
if(v<=p)
popN(k,i)=pop(k,i);
popN(k+1,i)=pop(k+1,i);
else
popN(k,i)=pop(k+1,i);
popN(k+1,i)=pop(k,i);
end;
end;
else
disp('Incrucisare asexuata');
end;
disp('Urmasii:');
disp(popN(k,1:m));disp(popN(k+1,1:m));
end;
end
La un apel crossover_rbinara_uniform(0.7,8,6,0.5) poate fi obinut urmtorul rezultat.
Populatia de parinti:
0 0 1 1 0 1
0 0 1 1 0 1
1 0 0 1 1 1
0 1 0 0 1 0
0 0 1 1 0 1
0 0 0 0 0 1
1 1 0 0 0 0
0 1 1 1 0 1
Parintii:
0 0 1 1 0 1
0 0 1 1 0 1
Incrucisare asexuata
Urmasii:
0 0 1 1 0 1
0 0 1 1 0 1
Parintii:
1 0 0 1 1 1
0 1 0 0 1 0
Incrucisarea este realizata pe baza valorilor:
0.4186 0.8462 0.5252 0.2026 0.6721 0.8381
Urmasii:
1 1 0 1 1 0
0 0 0 0 1 1
Parintii:
0 0 1 1 0 1
0 0 0 0 0 1
Incrucisarea este realizata pe baza valorilor:
0.6813 0.3795 0.8318 0.5028 0.7095 0.4289
Urmasii:
0 0 0 0 0 1
0 0 1 1 0 1
Parintii:
1 1 0 0 0 0
0 1 1 1 0 1
Incrucisarea este realizata pe baza valorilor:
0.1897 0.1934 0.6822 0.3028 0.5417 0.1509
Urmasii:
1 1 1 0 0 0
0 1 0 1 0 1
Recombinarea n reprezentarea prin iruri de numere ntregi
n cazul n care spaiul genotipurilor este format din iruri de numere ntregi, operatorii de
ncruciare sunt similari celor definii pentru reprezentarea prin iruri binare (Eiben, Smith,
2003). O alt alegere, de exemplu recombinarea aritmetic (prezentat n seciunea urmtoare),
poate avea ca rezultat cromozomi care nu aparin spaiului soluiilor fezabile (nu sunt iruri de
numere ntregi).
Recombinarea n reprezentarea prin iruri de numere reale (virgul mobil)
n acest caz sunt dou clase de operatori de ncruciare folosii uzual, i anume
recombinarea de tip discret i recombinarea aritmetic.
Recombinarea de tip discret este clasa operatorilor definii similar reprezentrii prin iruri
binare, cu meniunea c, n acest caz, o alel este un numr real, nu 0 sau 1. Acest tip de
ncruciare are dezavantajul c nu sunt obinute valori noi pentru genele cromozomilor urmai,
singurul operator care poate introduce valori noi ale genelor rmnnd cel de mutaie.
Recombinarea aritmetic este clasa operatorilor prin aplicarea crora sunt obinui
cromozomi cu alele noi, rezultate prin combinarea aritmetic (prin medie ponderat) a alelelor
cromozomilor prini. n literatura de specialitate sunt prezentate o serie de variante ale
operatorilor aparinnd acestei clase, cei mai utilizai fiind prezentai n continuare (Michalewicz,
1996). Vom considera n continuare ,- i m dimensiunea reprezentrii (numrul de gene
ale unui cromozom). Acest parametru este fie generat aleatoriu, fie predefinit (n general n jurul
valorii ).
Recombinarea aritmetic simpl este aplicat cte unei perechi de cromozomi printe
(
, respectiv
, respectiv
()
() ( )
()
()
() ( )
()
De exemplu, dac i
( )
( )
rezult
( )
( )
Recombinarea aritmetic singular opereaz asupra unei perechi de cromozomi printe
(
, respectiv
, respectiv
()
() ( )
()
()
() ( )
()
copiaz n ultimele m-i poziii din
, respectiv
,
respectiv
De exemplu, dac i
( )
( )
rezult
( )
( )
Un exemplu de implementare a acestui tip de operator pentru a fost
prezentat n 2.4 (n rezolvarea problemei optimizrii unei funcii de o variabil).
Recombinarea aritmetic total este descris astfel. Fie (
) o pereche de cromozomi
printe. Progeniturile
()
() ( )
()
()
() ( )
()
Evident, pentru , cei doi cromozomi rezultai sunt identici.
De exemplu, dac i
( )
( )
rezult
( )
( )
Recombinarea n reprezentarea prin permutri
n cazul n care spaiul genotipurilor este format din permutri, au fost propui o serie de
operatori de recombinare, care au ca scop transmiterea unei cantiti ct mai mare de informaie
de la prini la copii, cu precdere din categoria informaiei comune prezente n cromozomii
prini. n continuare sunt prezentai civa dintre cei mai utilizai operatori de recombinare pe
spaiul genotipurilor permutri.
Operatorul PMX (Partially Mapped Crossover) a fost propus n (Goldberg, Lingle, 1985)
pentru rezolvarea problemei comis-voiajorului i este unul dintre cei mai utilizai operatori de
recombinare pentru rezolvarea problemelor bazate pe dependena de adiacen. Fie (
) o
pereche de cromozomi printe, (
()
()
Pas2. Calculeaz mulimea alelelor din secvena de gene
()
+ *( )|
()
+
Pas3. Pentru fiecare ( ) , calculeaz
), cu proprietatea c
() .
3.2 n caz contrar, determin cu proprietatea c
() , unde
()
Dac poziia j n
() .
Altfel i=j i reia 3.2.
Pas4. La acest moment au fost copiate n prima progenitur alelele secvenei de gene
din ambii prini. Genele rmase fr valori n prima progenitur sunt ocupate, n
ordine, de alelele nc necopiate din cel de-al doilea printe.
Cel de-al doilea copil este construit similar, plecnd de la secvena de alele din cel de-al
doilea printe i copiind restul elementelor din primul printe.
De exemplu, fie
1 2 4 6 5 7 3 9 10 8
10 5 3 7 9 2 1 8 6 4
Construcia primului copil,
6 5 7 3
La pasul 2 rezult *() () ()+
La pasul 3:
()
Deoarece
() i gena 2 din
() . Obinem
9 6 5 7 3
()
Deoarece
() i gena 4 din
are valoarea
() , rezult
()
deci i seteaz
() . Obinem
9 6 5 7 3 2
()
Deoarece
() i gena 3 din
() . Obinem
9 1 6 5 7 3 2
La pasul 4 vor fi plasate n
10 9 1 6 5 7 3 8 2 4
Observaie. Dintre relaiile de adiacen comune celor doi prini, ntre 1i 2, ntre 4 i 6
i ntre 3 i 7, nu este regsit n primul urma relaia de adiacen dintre 6 i 4, deci operatorul
PMX nu are neaprat proprietatea de a pstra relaiile comune existente ntre prini. Operatorii
de recombinare descrii pentru reprezentrile prin iruri binare, respectiv prin iruri de numere
ntregi, dar i operatorul de recombinare de tip discret definit pentru reprezentri prin iruri de
numere reale posed proprietatea de a pstra intacte n urmai relaiile de adiacen comune
existente n cromozomii printe.
1 2 4 6 5 7 3 9 10 8
10 5 3 7 9 2 1 8 6 4
Construcia celui de-al doilea copil,
7 9 2 1
La pasul 2 rezult *() () ()+
La pasul 3:
()
Deoarece
() i gena 6 din
are valoarea
() , rezult
()
deci i seteaz
() . Obinem
6 7 9 2 1
()
Deoarece
() i gena 8 din
() . Obinem
6 7 9 2 1 5
()
Deoarece
() i gena 1 din
() . Obinem
3 6 7 9 2 1 5
La pasul 4 vor fi plasate n
3 6 4 7 9 2 1 5 10 8
Funcie MATLAB PMX(m) genereaz, pentru dou permutri aleatoare de dimensiune m,
progeniturile rezultate n urma aplicrii operatorului PMX.
function [x2,y2]=PMX(m);
x1=gen_perm(m);
y1=gen_perm(m);
while(x1==y1)
y1=gen_perm(m);
end;
disp(x1);
disp(y1);
p(1)=unidrnd(m-1);
p(2)=unidrnd(m);
while(p(2)==p(1))
p(2)=unidrnd(m);
end;
poz=sort(p);disp(poz);
x2=PMX1(x1,y1,poz(1),poz(2));
y2=PMX1(y1,x1,poz(1),poz(2));
disp(x2);
disp(y2);
end
function [x2]=PMX1(x1,y1,p1,p2);
[n,m]=size(x1);
x2=zeros(1,m);
x2(p1:p2)=x1(p1:p2);
disp(x2);
for p=p1:p2
a=y1(p);
if(~ismember(a,x2))
b=x2(p);
for t=1:m
if(y1(t)==b)
i=t;break;
end;
end;
if(x2(i)==0)
x2(i)=a;
else
j=cauta(x2,y1,i,m);
while(x2(j))
i=j;
j=cauta(x2,y1,i,m);
end;
x2(j)=a;
end;
end;
end;
for i=1:m
if(~ismember(y1(i),x2))
for j=1:m
if(x2(j)==0)
x2(j)=y1(i);break;
end;
end
end;
end;
end
function [j]=cauta(x2,y1,i,m);
c=x2(i);
for t=1:m
if(y1(t)==c)
j=t;break;
end;
end;
end
La apelul PMX(8), un rezultat posibil este:
Cromozomii initiali:
2 3 1 7 6 4 8 5
5 4 7 2 1 3 6 8
Pozitiile:
1 4
Urmasii:
2 3 1 7 5 4 6 8
5 4 7 2 6 3 8 1
Observaie. n acest caz, pentru construcia primului copil algoritmul este aplicat astfel.
2 3 1 7 6 4 8 5
5 4 7 2 1 3 6 8
Construcia primului copil,
2 3 1 7 0 0 0 0
La pasul 2 rezult *() ()+
La pasul 3:
()
Deoarece
() i gena 4 din
are valoarea
() , rezult
()
deci . Deoarece
() , i rezult . n continuare,
() , i
seteaz
() . Obinem
2 3 1 7 5 0 0 0
()
Deoarece
() i gena 6 din
() . Obinem
2 3 1 7 5 4 0 0
La pasul 4 vor fi plasate n
2 3 1 7 5 4 6 8
Operatorul de recombinarea muchiilor (Edge Crossover) este dezvoltat pe baza ideii c
un cromozom copil trebuie creat utiliznd exclusiv perechi de alele (secvene de dou alele
vecine- muchii) prezente cel puin ntr-unul dintre prini. Cea mai utilizat versiune a acestui
operator este cel propus n (Whitley, 2000) i este proiectat astfel nct s asigure pstrarea
tuturor muchiilor comune prinilor n cromozomul urma. n acest scop este meninut o list a
adiacenelor (tabela de muchii) n care, pentru fiecare valoare v, sunt memorate toate alelele a
vecine cu v ntr-unul dintre genotipurile printe; dac a i v sunt vecine n ambii prini, atunci
proprietatea este marcat adugnd dup a simbolul +. Pentru o valoare dat, v, vom nota cu
() lista alelelor vecine cu v ntr-unul dintre prini i cu |()| numrul elementelor listei ().
Procedura de recombinare are ca rezultat crearea unui singur cromozom urma n modul urmtor.
Pas1. Construiete tabela de muchii.
Pas2. Alege aleator o gen, i, i copiaz valoarea acesteia, v, n cromozomul progenitur.
.
REPET
Pas3. Determin () , lista vecinilor elementului curent .
Pas4. Examineaz elementele din () nc necopiate n cromozomul urma. Dac
exist o muchie comun, adic () conine cel puin un element a+, atunci selecteaz primul
a cu aceast proprietate pentru copiere n cromozomul rezultat. Altfel, alege pentru copiere acea
valoarea () cu proprietatea c |()|
()
|()|. Seteaz . Valoarea
copiat n cromozomul printe nu va mai fi consultat ulterior: ea este eliminat din celelalte liste
de adiacen.
Pas5. Dac () , este examinat pentru expandare cellalt capt al cromozomului
urma, altfel este ales aleator un nou element (o nou alel).
PN CND TOATE GENELE CROMOZOMULUI URMA AU FOST COMPLETATE
De exemplu, fie i
1 2 4 6 5 7 3 9 10 8
10 5 3 7 9 2 1 8 6 4
cromozomii selectai pentru ncruciare.
Tabela muchiilor este prezentat mai jos.
Element Lista muchiilor Element Lista muchiilor
1 2+,8+ 6 4+,5,8
2 1+,4,9 7 3+,5,9
3 5,7+,9 8 1+,6,10
4 2,6+,10 9 2,3,7,10
5 3,6,7,10 10 4,5,8,9
n urmtoarea figur este prezentat o modalitatea de obinere a rezultatului recombinrii
cromozomilor
()
()
Pas2. Copiaz n
valorile din
la pasul 1, ncepnd
cu gena
Cel de-al doilea copil este construit similar, plecnd de la secvena de alele din cel de-al
doilea printe i copiind restul elementelor din primul printe similar procedeului descris pentru
crearea primei progenituri.
De exemplu, fie
1 2 4 6 5 7 3 9 10 8
10 5 3 7 9 2 1 8 6 4
Construcia primului copil,
6 5 7 3
Dup efectuarea pasului 2 rezult
10 9 2 6 5 7 3 1 8 4
Construcia celui de-al doilea urma, , este realizat astfel.
Dup aplicarea primului pas, obinem
7 9 2 1
n final rezult
4 6 5 7 9 2 1 3 10 8
Operatorul recombinare ciclic (CX, Cycle Crossover) este dezvoltat pe baza ideii c un
cromozom copil trebuie creat pstrnd ct mai bine posibil informaia relativ la poziia absolut
n care apare o valoare n cromozomii printe. Procedura de generare a progeniturilor grupeaz
elementele n cicluri. Un ciclu este o secven de alele cu proprietatea c fiecare element apare n
pereche cu un alt element al aceluiai ciclu n perechea de cromozomi printe. Dup partajarea
prinilor n cicluri, cromozomii rezultai sunt construii prin alegerea alternativ a cte unui ciclu
din fiecare printe. Fie (
) progeniturile calculate,
m numrul genelor unui cromozom i nrcicluri numrul ciclurilor calculate. Pentru fiecare
(alegerile impare), elementele ciclurilor din (
) (pereche ordonat) se
regsesc n aceleai poziii n (
) (pereche ordonat).
O variant de implementare a acestui operator a fost prezentat n (Oliver, Smith, Holland,
1987) pentru rezolvarea problemei comis-voiajorului, modalitatea de partiionare n cicluri fiind
descris astfel.
Ct timp nu au fost asignate toate alelele unui ciclu, execut
Pas1. Iniializeaz ciclul curent cu secvena vid,
Pas2. Fie i prima gen din
nc neutilizat;
()
Pas3. Calculeaz
()
Pas4. Determin
()
Pas5. *+
Pas6. Repet Pas3-Pas5 pn cnd
() .
De exemplu, fie , (
( )
( )
()
Grafic, procedura de identificare a ciclurilor poate fi figurat astfel.
x1
y1
1 2 4 6 5 7 3 9 10 8
10 5 2 7 9 1 3 8 6 4
x1
y1
1 2 4 6 5 7 3 9 10 8
10 5 2 7 9 1 3 8 6 4
1 2 4 6 5 7 3 9 10 8
10 5 2 7 9 1 3 8 6 4
x1
y1
1 5 2 6 9 7 3 8 10 4
10 2 4 7 5 1 3 9 6 8
x2
y2
Rezult cromozomii:
n continuare este prezentat implementarea acestui operator. Partiionarea n cicluri este
realizat prin atribuirea indicelui ciclului din care face parte fiecrei alele din fiecare cromozom,
conform algoritmului descris mai sus.
function [x2,y2]=CX(m);
x1=gen_perm(m);
y1=gen_perm(m);
while(x1==y1)
y1=gen_perm(m);
end;
%x1=[1 2 4 6 5 7 3 9 10 8];
%y1=[10 5 2 7 9 1 3 8 6 4];
disp('Parintii:');
disp(x1);
disp(y1);
[c,nrcicluri]=cicluri(x1,y1,m);
disp('Indecsii ciclurilor:');
disp(c);
x2=x1;y2=y1;
for t=2:2:nrcicluri
for i=1:m
if(c(i)==t)
x2(i)=y1(i);
y2(i)=x1(i);
end;
end;
end;
disp('Progeniturile:');
disp(x2);
disp(y2);
end
function [c1,index]=cicluri(x1,y1,m);
i=1;index=1;continua=1;
c1=zeros(1,m);
while(continua)
a=y1(i);
c1(i)=index;
while(x1(i)~=a)
for k=1:m
if(x1(k)==a)
j=k;break;
end;
end;
c1(j)=index;
a=y1(j);
end;
continua=0;
for k=1:m
if(c1(k)==0)
i=k;index=index+1;
continua=1;
break;
end;
end;
end;
end
Prezentm n continuare cteva rezultate posibile obinute la apelul CX(10), CX(12) i
CX(14).
Parintii:
6 1 8 10 5 7 9 3 4 2
9 8 7 3 6 1 5 10 4 2
Indecsii ciclurilor:
1 2 2 3 1 2 1 3 4 5
Progeniturile:
6 8 7 10 5 1 9 3 4 2
9 1 8 3 6 7 5 10 4 2
Parintii:
10 2 5 7 9 6 4 11 12 1 8 3
9 7 12 3 6 5 1 10 11 4 2 8
Indecsii ciclurilor:
1 2 1 2 1 1 3 1 1 3 2 2
Progeniturile:
10 7 5 3 9 6 4 11 12 1 2 8
9 2 12 7 6 5 1 10 11 4 8 3
Parintii:
13 4 10 7 14 6 8 3 2 1 11 5 9 12
3 1 11 8 4 6 13 9 5 10 14 12 7 2
Indecsii ciclurilor:
1 2 2 1 2 3 1 1 4 2 2 4 1 4
Progeniturile:
13 1 11 7 4 6 8 3 5 10 14 12 9 2
3 4 10 8 14 6 13 9 2 1 11 5 7 12
Recombinarea multipl
Operatorii de recombinare multipl presupun obinerea de progenituri prin utilizarea n-
tuplurilor de prini, . Astfel de operatori sunt uor de implementat, dar, spre deosebire de
recombinarea a doi cromozomi printe, nu au echivalent biologic. Din punct de vedere tehnic
utilizarea recombinrii multiple poate amplifica efectele ncrucirii. Operatorii de recombinare
multipl sunt clasificai n funcie de mecanismul care st la baza combinrii informaiei
cromozomilor printe, astfel:
bazai pe frecvena alelelor: de exemplu votul p-sexual, care generalizeaz
ncruciarea uniform;
bazai pe segmentarea i recombinarea secvenelor: ncruciarea diagonal, care
generalizeaz recombinarea multi-punct;
bazai pe operaii asupra alelelor numere reale n virgul fix: recombinarea de tip
baricentru, care generalizeaz operatorii de recombinare artitmetic.
n general creterea aritii operatorului de ncruciare de la 2 la n nu garanteaz obinerea
unor EA superiori ca performan, dar, n multe situaii raportate n literatura de specialitate
(Eiben, Schippers, 1993) utilizarea mai multor prini pentru recombinare s-a dovedit
avantajoas.
3.5. Modele de populaie
n literatura de specialitate au fost evideniate dou modele de GA: modelul generaional
i modelul strilor stabile. Exemplul prezentat la nceputul capitolului implementeaz un model
generaional.
La fiecare moment de tip, adic la fiecare generaie, populaia este de dimensiune , iar
bazinul de ncruciare (format din mulimea cromozomilor alei pentru a se reproduce) este, de
asemenea, de dimensiune . n continuare sunt create progenituri prin aplicarea
operatorilor de variaie. Populaia curent este nlocuit n ntregime cu progeniturile rezultate
(generaia urmtoare), fiecare copil fiind evaluat prin intermediul funciei de fitness asociate.
n cadrul modelelor cu stri stabile, doar o parte din progenituri nlocuiesc o parte din
membrii populaiei curente pentru a forma generaia urmtoare. n acest caz indivizi din
populaia curent sunt nlocuii cu indivizi noi. Procentul modificrilor din populaie este
i
se numete decalajul dintre generaii. De exemplu, unul din modelele intens studiate este modelul
GENITOR propus n (Whitley, 2000), unde decalajul dintre generaii este
.
3.6. Mecanismul de selectare a prinilor
Selecia proporional cu calitatea indivizilor (valorile funciei de evaluare), FPS
Principiul acestui mecanism de selectare a prinilor (numit FPS: Fitness Proportional
Selection) este urmtorul. Pentru fiecare cromozom
pentru ncruciare
este
Cu alte cuvinte, probabilitatea de selectare a individului depinde de valoarea absolut a
calitii individuale comparativ cu valoarea absolut a calitii populaiei curente. Numrul
prinilor este egal cu . Pentru fiecare individ
unde este
valoarea medie a funciei obiectiv calculat pentru populaia curent. Evident, aceste
valori nu sunt numere din mulimea ; ele reprezint realizri ale unei variabile aleatoare cu o
anumit distribuie de probabilitate.
Mecanismul de selecie FPS (Holland, 1992) are o serie de inconveniente, din care
menionm:
indivizii mult superiori restului populaiei (din punct de vedere a valorii funciei
de evaluare) vor domina ntreaga populaie ntr-un timp relativ scurt, proprietate
cunoscut drept convergen prematur;
dac indivizii din populaie sunt astfel nct valorile funciei de evaluare sunt
comparabile, atunci nu exist aproape nici o constrngere de selecie, iar selecia
urmeaz legea de repartiie uniform; indivizii cu valori ale funciei de evaluare
uor superioare restului populaiei nu vor fi favorizai, n consecin, pe parcursul
evoluiei GA, cnd indivizii mai slabi dispar i ncepe s se instaleaz procesul de
convergen, performana indivizilor generaiei curente nu este semnificativ
mbuntit;
mecanismul se comport diferit pe versiuni translatate, respectiv transpuse, ale
unei aceeai funcii de evaluare.
Ultimele dou inconveniente pot fi eliminate prin utilizarea unei proceduri de mprire n
ferestre. Aceasta presupune ca, la fiecare moment de timp t, pentru fiecare cromozom
, al populaiei curente
corespunztor fenotipului
) cu o valoare
()
O alt variant foarte utilizat este sigma scalarea (Goldberg, 1989), care incorporeaz
informaiile calitate medie i respectiv deviaie standard n carul populaiei curente
|
()
|
(()
() (() (
) )
unde c este un parametru dat (de obicei ).
Selecia rangurilor
Selecia pe baza funciei rang este o metod alternativ inspirat de FPS. Procedura
menine o valoare constant a constrngerii de selecie prin sortarea populaiei n funcie de
valorile funciei fitness i alocarea cte unei probabiliti de selecie fiecrui individ, n funcie de
rangul ocupat n irul sortat i nu de valoarea curent a funciei de evaluare a acelui individ.
Presupunem n continuare c este dimensiunea populaiei curente sortate, primul individ (cel cu
rang 1) este cel mai slab i individul cu rang este cel mai bun.
Formele uzuale de calcul al probabilitii de selecie a unui individ sunt urmtoarele.
Fie este un parametru dat. Pentru fiecare cromozom
, al populaiei
curente sortate
( )
( )
Aceast variat de definire a probabilitii de selecie are la baz presupunerea c, n
medie, un individ cu calitatea apropiat de media valorilor funciei de evaluare, deci aflat la
jumtatea irului ordonat, trebuie s aib, relativ la ntreaga populaie, o ans de a se reproduce:
pentru
( )
O alt variant de stabilire a probabilitii de selecie corespunde situaiei n care
constrngerea de selecie trebuie s fie mai mare, n sensul c probabilitatea de selecie a
indivizilor cu calitatea peste medie trebuie s fie semnificativ mai mare dect a celorlali. n acest
caz este utilizat o distribuie de tip exponenial:
)
()
unde este un parametru care asigur faptul c
Mecanisme de implementare a distribuiei de probabilitate a seleciei
Urmtoarele mecanisme de proiectare a distribuiei de probabilitate pentru selectarea
prinilor au la baz ideea c, n varianta ideal, bazinul de recombinare format din cromozomii
care interschimb material genetic corespunde exact distribuiei de probabilitate de selecie. n
practic acest deziderat nu poate fi atins, deoarece populaia are un numr finit de indivizi.
Bazinul de recombinare poate fi ales astfel nct s corespund unei probe din distribuia de
probabilitate a seleciei prinilor, dar nu o poate reflecta exact.
Mecanismul de selecie a prinilor de tip rulet este o variant de construcie a bazinului
de recombinare astfel nct s corespund unei probe din distribuia de probabilitate a seleciei.
Distribuia de probabilitate poate fi n general de tip FPS sau bazat pe ranguri. O variat de
implementare a fost prezentat n 3.1 pentru distribuia de selecie de tip fitness (FPS) i
corespunde urmtorului algoritm.
Pas1. Pentru fiecare cromozom
:
1.1 evalueaz performana sa, prin funcia de evaluare
);
1.2 calculeaz probabilitatea de selecie din mecanismul de tip FPS sau cea bazat pe
ranguri,
i probabilitatea cumulat
Pas2. Pentru execut 2.1 i 2.2
2.1. genereaz aleator un numr ,-;
2.2 dac
parinte(k)=
;
altfel, este selectat cromozomul
, , cu proprietatea
:
parinte(k)=
O variant mai bun pentru construcia unui bazin de ncruciare ct mai apropiat de o
instan a distribuiei de probabilitate a seleciei este algoritmul SUS (Stochastic Universal
Sampling). Spre deosebire de mecanismul de tip rulet, n care o rulet cu un bra este rotit de
ori, mecanismul SUS asigur o rotire a unei rulete cu brae echidistante.
Algoritmul este urmtorul.
Pas1. Pentru fiecare cromozom
:
1.1 evalueaz performana sa, prin funcia de evaluare
);
1.2 calculeaz probabilitatea de selecie din mecanismul de tip FPS sau cea bazat pe
ranguri,
i probabilitatea cumulat
Pas2. genereaz aleator un numr [
]; i=1; k=1;
Pas3. Ct timp execut 3.1 i 3.2
3.1. ct timp
;
3.1.2.
;
3.1.3. ;
3.2.
Deoarece r este generat aleator n intervalul [
- i cel mult ,