You are on page 1of 14

1.

Schema generala a algoritmului evolutiv

Pasul 1: Inițializarea populației ( P
i
)
Noțiuni teoretice:
Se obține prin generarea aleatoare a candidaților la soluție.
O populație este un multiset (o mulțime de elemente nu neapărat distincte) de
genotipuri.
Un genotip este constituit din mai multe elemente, numite valori sau alele.
Rolul populației în dezvoltarea algoritmilor evolutivi este de a menține o mulțime de
indivizi ( genotipuri sau cromozomi ) corespunzătoare unor soluții posibile.
Indivizii unei populații sunt obiecte statice, în sensul că nu pot fi modificați și nu se
pot adapta mediului în care trăiesc. Aceste proprietăți le are, în schimb populația. Dacă este
stabilit modul de reprezentare (spațiul genotipurilor), populația poate fi definită prin
specificarea numărului de indivizi care o compun. În situația unor Algoritmi Evolutivi
complecși, populației îi este asociată și o structură spațială adițională, definită prin
intermediul unei funcții de tip distanță sau prin relații de tip vecinătate. În astfel de cazuri,
definirea populației trebuie însoțită de specificarea structurii spațiale asociate.
Etape de parcurgere:
1. Se declara o funcție pentru generarea populației inițiale. Funcție va primi ca
parametru de intrare: dimensiunea populației precum si in anumite cazuri date
privind domeniul de definiție al alelelor (valorilor) ce vor caracteriza genele.
2. Definirea populației într-o matrice nula. Matricea se inițializează cu toate
valorile nule (0) folosind funcția zeros(m, n), ce ia ca parametrii numărul de
linii si numărul de coloane. În cele mai multe situații, problema de rezolvat
utilizând Algoritmi Evolutivi revine la o problemă de optimizare. Dacă
funcția obiectiv trebuie minimizată, atunci este realizată o transformare a ei
astfel încât problema de optim să fie una de maxim (din punct de vedere
matematic, de exemplu, a minimiza o funcție f este echivalent cu a maximiza
funcția –f sau, în situația în care f nu se anulează pe spațiul fenotipurilor, cu a
maximiza funcția

).
ATENTIE: Numărul de coloane al matricei populației inițiale va fi +1 ,
deoarece pe ultima coloana se vor retine valorile funcției obiectiv (fitness).
3. Atribuire valori (alele) aleatoare pentru gene. Parcurgem fiecare membru
(cromozom) al populației si fiecare gena a lui. Pentru fiecare gena vom stabilii
valoarea ei folosind funcțiile de generare aleatoare.
ATENTIE: Se va verifica ca rezultatul funcției obiectiv se încadrează pe
domeniul de soluțiilor.
Funcțiile de generare aleatoare se pot afla sub o anumita restricție , cele mai
uzuale fiind :
o pentru generare numere întregi – unidrnd(n)
o pentru generare numere binare – se generează un număr random ( in
general întreg) după care se folosește funcția de reprezentare binara
bitget(nr. generat, nr biți : -1(pentru reprezentare inversa) : 1 )
sau dec2base(nr. generat,2 ( in baza 2),nr de biți)-48 ( cod ascii
pentru 0, se asigura ca ne convertește rezultatul la număr).
o pentru generare numere reale – unifrnd(a, b), unde a si b sunt
capetele intervalului.
o pentru permutări – Se va itera de la 1 la dimensiunea populației,
urmând ca in fiecare pas sa se genereze in mod aleator un număr. Se
verifica existenta numărului in populația curenta(a permutărilor). Daca
exista, se va genera alt număr fără ca numărul anterior sa fie reținut in
populație. Atunci când numărul nu exista, se va scrie in populație.
Pasul 2: Evaluarea candidaților:
Noțiuni teoretice:
Pentru fiecare cromozom (individ), x aparține populației inițiale, P
i
se determina
funcția obiectiv, f(x).
Rolul funcției de evaluare (de fitness) este de a măsura gradul de adaptabilitate a
fiecărui individ la mediul în care trăiește, mai exact este de definire a noțiunii de calitate.
Funcția de evaluare stă la baza procesului de selecție și reprezintă modulul de rezolvare a
problemei date în contextul evolutiv. Din punct de vedere tehnic, este o funcție care asociază
fiecărui genotip(individ sau cromozom) o măsură a calității și, în general, este derivată pe
baza unei funcții de tip calitate definită pe spațiul fenotipurilor.
Fenotipul este ansamblul de însușiri și caractere care se manifestă în mod vizibil la
un individ și care este determinat pe bază ereditară și de condițiile de mediu (DEX).
Caracteristicile fenotipului unui individ determină gradul lui de adaptabilitate la condițiile
de mediu (fitness). Fiecare individ reprezintă o combinație unică de caracteristici ale
fenotipului și este evaluat de condițiile de mediu. Dacă evaluarea este favorabilă, atunci
fenotipul individului este propagat spre urmași (progenituri), altfel caracteristicile
fenotipului dispar și individul moare fără a se putea reproduce. Viziunea lui Darwin despre
evoluție este aceea că, în procesul trecerii de la o generație la alta prin reproducere, apar
mutații (variații) mici, aleatoare, în caracteristicile fenotipului. Ca rezultat al acestor variații,
apar și sunt evaluate noi combinații de caracteristici ale fenotipului. Cele mai bune dintre ele
supraviețuiesc și se reproduc și în acest mod evoluția conduce la progres.

Pasul 3: Repeta
3.1. Selectează mulțimea de părinți BP
i
Noțiuni teoretice:
Rolul operatorului de selectare a părinților este de a distinge între indivizii
populației pe baza calității acestora, în particular de a permite celor mai buni indivizi să se
reproducă, deci să participe la generarea populației următoare. Alături de operatorul de
selecție a „supraviețuitorilor”, mecanismul de selecție a părinților forțează îmbunătățirea
calității globale a populației de la o generație la alta. În calculul evolutiv, selectarea
părinților este de tip probabilist: alegerea unui individ pentru a se reproduce depinde direct
proporțional de calitatea lui, deci un individ are șanse mai mari de a se reproduce comparativ
cu cei inferior lui din punct de vedere calitativ.
Indivizii „slabi” (cu valori mici ale funcției de evaluare) nu sunt eliminați din procesul
de selectare pentru reproducere, ci doar au asociate probabilități mici, dar nenule, de selecție.
Etape de parcurgere:
3.1.1. Determinarea distribuției de probabilitate de selecție
Se poate face in doua feluri:
3.1.1.1. Metoda Goldberg – sigma scalare (FPS)
Incorporează informațiile: calitate medie si respectiv deviația standard in cadrul
populației curente.
 Se determina valoarea medie a calității populației. Valoarea medie este
data de suma tuturor valorilor funcțiilor obiectiv împărțit la numărul de
indivizi. (1/dim * sum ( f(x)) ).
 Pentru fiecare individ se determina deviația fata de medie ( f(x
i
) -
̅
)
 Se determina valoarea totala a deviației ( sum ( f(x
i
) -
̅
))
 Se determina pentru fiecare individ in parte abaterea medie
pătratica.

||
∑ (()
̅

)

 Se determina cu ajutorul unui parametru adițional ( c, de obicei 2)
aplicând criteriul de maxim intre :
(

) (,() (
̅

)-)
 Determinam probabilitatea pentru fiecare individ după formula

(

)
∑ (

)

 Pentru fiecare set de indivizi calculam q final care, fiind suma de
probabilități, acesta va avea valoarea 1. Q se calculează de la pas la pas
(trecere de la individ la individ) prin adunarea valorii probabilității
curente.
(

) ∑(

)

3.1.1.2. Selecția rangurilor – Holland
 Ordonam crescător populația după calitate (valoarea funcției fitness),
f(x
i
)
 Determinam probabilitatea de selecție setata linear. Alocam cate o
probabilitate de selecție fiecărui individ in funcție de rangul ocupat in
șirul sortat si nu de valoarea curenta a funcției de evaluare a acelui
individ

(

)

( )
()

s – parametru dat si ia valori din intervalul (1,2]. Pentru fiecare
cromozom y
i
, unde i € [1, dim]

o

(

)

(

)

(

)

o

(

) ∑ (

)

3.1.2 Mecanisme de selecție a părinților
3.1.2.1. De tip ruleta
Distribuția de probabilitate poate fi in general de tip FPS (Fitnes proportioning
selection = selecția proporționalităților fitness) sau bazata pe ranguri.

Pentru fiecare cromozom se parcurg următorii pasi:
 Pas1. Pentru fiecare cromozom

:
o evaluează performanta sa, prin funcția de evaluare

(

);
o calculează probabilitatea de selecție din mecanismul de tip FPS
sau cea bazată pe ranguri,

și probabilitatea cumulată

(vezi punctul 3.1.1)
 Pas2. Pentru execută 2.1 şi 2.2
o generează aleator un număr ,-;
o dacă

parinte(k)=

;
o altfel, este selectat cromozomul

, , cu
proprietatea

:
o parinte(k)=

3.1.2.2. SUS
Asigura o rotire a unei rulete cu dim brațe echidistante.
 Pas1. Pentru fiecare cromozom

:
o evaluează performanta sa, prin funcția de evaluare

(

);
o calculează probabilitatea de selecție din mecanismul de tip FPS
sau cea bazată pe ranguri,

și probabilitatea cumulată

(vezi punctul 3.1.1)
 Pas2. generează aleator un număr [

⁄ ]; i=1; k=1;
 Pas3. Cât timp execută
o cât timp

execută
 parinte(k)=

;

⁄ ;
 ;
o
3.1.2.3. Turneu
Acesta selecție se folosește in cazul in care populația este extrem de mare sau
populația este distribuita in sisteme paralele deoarece calculul probabilităților
de tip FPS poate dura foarte mult sau e imposibila
 Pas1. Pentru execută
o generează aleator k indivizi din populație în setul S (cu sau fără
înlocuire);
o calculează ()

(), cel mai bun individ din S;
o parinte(i)=;

3.2. Recombina perechi de părinți ( sau n – tupluri )
Noțiuni teoretice:
Un operator de variație binar este numit operator de recombinare sau încrucișare și
are ca efect obținerea unuia sau a două genotipuri urmaș direct prin combinarea informației
purtate de două genotipuri părinte. Recombinarea este un operator stohastic: alegerea
acelor pârți ale genotipurilor părinți care vor fi combinate și modalitatea de recombinare
rezultă în urma unor extrageri aleatoare. Rolul recombinării diferă de la o clasă de algoritmi
evolutivi la alta: în cadrul algoritmilor genetici este cel mai utilizat operator de variație, în
programarea genetică este în general unicul operator de variație folosit, în timp ce în
programarea evolutivă nu este implementat.
În dezvoltări de tip Algoritm Evolutiv pot fi folosiți și operatori de recombinare de
aritate mai mare decât 2. Astfel de operatori sunt ușor de implementat dar nu au corespondent
biologic.
Prin împerecherea a două genotipuri părinte cu caracteristici diferite și superioare
calitativ pot fi obținute progenituri care să îmbine caracteristicile celor doi părinți.
Recombinarea (încrucișarea) este procesul creării de noi soluții candidat pe baza
informației conținute în două soluții candidat părinți și este una dintre cele mai importante
caracteristici ale Algoritmilor Genetici.

Etape de parcurgere:
Operatorul de recombinare este de obicei aplicat în manieră probabilistă, cu o
probabilitate (rată) pc, setată în general în intervalul ,-.
Procesul de recombinare presupune:
 selectarea a două soluții candidat părinte, generarea aleatoare a unui număr din
, ), r,
 compararea lui cu rata de recombinare, pc.
o dacă , indivizii noi sunt creați prin recombinarea celor doi
părinți ( acest punct se continua cu pași din recombinări).
o în caz contrar sunt creați asexuat, adică prin duplicarea părinților.
Observație: Spre deosebire de rata de mutație, prin care este controlată secvența de
gene modificate, rata de încrucișare, corespunde șansei ca perechea de părinți selectată să fie
supusă operației de recombinare.

3.2.1. Recombinarea în reprezentarea prin șiruri binare
În cazul reprezentării binare există trei modalități uzuale de definire a operatorului de
recombinare, toate generând o pereche de progenituri pe baza unei perechi de cromozomi
părinte.
3.2.1.1. Încrucișarea uni punct
Recombinarea este aplicată câte unei perechi de cromozomi părinte (

) şi
presupune efectuarea următoarelor operaţii:
 generez aleatoriu o poziție de încrucișare, poz ( cu ajutorul funcției unidrnd(n) );
 obținerea progeniturile

astfel :
 copiază primele poz (gene) elemente din

(parinte), respectiv

(parinte)
în

(copil) , respectiv

(copil)
 copiază în ultimele m( nr. de gene) -poz+1 ( unde +1 este valoarea funcției
obiectiv) poziții din

, respectiv

, ultimele m-poz+1 elementele din

,
respectiv

, unde m este lungimea reprezentării


3.2.1.2. Încrucișarea multipunct
Este o extensie naturală a operatorului de recombinare uni punct. Recombinarea este
aplicată câte unei perechi de cromozomi părinte (

) şi presupune selectarea aleatoare a N
gene și obținerea progeniturile

prin copierea alternativă a secvenţelor din cromozomii
fiecărui părinte.
 generez aleatoriu n poziții de încrucișare, poz
i
( cu ajutorul funcției unidrnd(n) );
 obținem progeniturile

astfel :
 pentru poz
i
unde i – impar copiază de la poz
i-1
pana la poz
i
elemente din

(parinte), respectiv

(parinte) în

(copil) , respectiv

(copil)
 pentru poz
i
unde i – par copiază de la poz
i-1
pana la poz
i
elemente din

,
respectiv

in

respectiv

.


3.2.1.3. Încrucișarea uniformă
Este aplicată câte unei perechi de cromozomi părinte și presupune obținerea
progeniturile

prin consultarea fiecărei gene în mod independent și atribuirea valorii
corespunzătoare din gena unuia dintre părinți, ales aleatoriu astfel:
 Fie m este dimensiunea reprezentării prin șiruri binare și p un parametru dat (în
general ).
 Pentru fiecare genă , este generată aleator, din distribuția uniformă, o
valoarea v.
o Dacă , atunci

()

()

()

(), cu alte cuvinte primul
descendent direct moşteneşte valoarea genei de la primul părinte, iar cel
de-al doilea de la al doilea părinte.
o În caz contrar, copierea este inversă,

()

()

()

().

3.2.2. Recombinarea în reprezentarea prin șiruri de numere întregi
În cazul în care spațiul genotipurilor este format din șiruri de numere întregi,
operatorii de încrucișare sunt similari celor definiți pentru reprezentarea prin șiruri binare.
(vezi 3.2.1)

3.2.3. Recombinarea în reprezentarea prin șiruri de numere reale (virgulă mobilă)
În acest caz sunt două clase de operatori de încrucișare folosiți uzual, și anume
recombinarea de tip discret și recombinarea aritmetică.

3.2.3.1. Recombinarea de tip discret
Este clasa operatorilor definiți similar reprezentării prin șiruri binare, cu mențiunea că,
în acest caz, o alelă este un număr real, nu 0 sau 1. Acest tip de încrucișare are dezavantajul
că nu sunt obținute valori noi pentru genele cromozomilor urmași, singurul operator care
poate introduce valori noi ale genelor rămânând cel de mutație.

3.2.3.2. Recombinarea aritmetică
Este clasa operatorilor prin aplicarea cărora sunt obținuți cromozomi cu alele noi,
rezultate prin combinarea aritmetică (prin medie ponderată) a alelelor cromozomilor părinți.
Vom considera în continuare ,- şi m dimensiunea reprezentării (numărul de gene ale
unui cromozom). Acest parametru este fie generat aleatoriu, fie predefinit (în general în jurul
valorii ).

3.2.3.2.1. Recombinarea aritmetică simplă
Este aplicată câte unei perechi de cromozomi părinte (

) şi presupune obţinerea
progeniturile

 prin selectarea aleatoare a unei gene , şi efectuarea operaţiilor
 copiază primele i-1 elemente din

, respectiv

în

, respectiv

 pentru fiecare gena p, aplicam:

()

() ( )

()

()

() ( )

()
Unde α este de obicei dat.

3.2.3.2.2. Recombinarea aritmetică singulară
Operează asupra unei perechi de cromozomi părinte (

) şi determină obţinerea
cromozomilor

în modul următor:
 Este selectată aleator o genă , şi sunt efectuate următoarele operaţii:
 copiază primele i-1 elemente din

, respectiv

în

, respectiv

()

() ( )

()

()

() ( )

()
 copiază în ultimele m-i poziții din

, respectiv

, ultimele m-i
elementele din

, respectiv

3.2.3.2.3. Recombinarea aritmetică totală
Este descrisă astfel. Fie (

) o pereche de cromozomi părinte. Progeniturile

sunt obţinute prin:

()

() ( )

()

()

() ( )

()

Evident, pentru , cei doi cromozomi rezultaţi sunt identici.

3.2.4. Recombinarea în reprezentarea prin permutări
În cazul în care spațiul genotipurilor este format din permutări, au fost propuși o serie
de operatori de recombinare, care au ca scop transmiterea unei cantități cât mai mare de
informație de la părinți la copii, cu precădere din categoria informației comune prezente în
cromozomii părinți.

3.2.4.1. Operatorul PMX (Partially Mapped Crossover)
Pentru rezolvarea problemei comis-voiajorului și este unul dintre cei mai utilizați
operatori de recombinare pentru rezolvarea problemelor bazate pe dependența de
adiacență. Fie (

) o pereche de cromozomi părinte, (

) progeniturile calculate şi m
numărul genelor unui cromozom. O variantă de implementare a acestui operator este descrisă
astfel (Whitley, 2000).
 Pas1. Alege aleator

puncte de încrucișare, efectuează:
o

()

()

 Pas2. Calculează mulțimea alelelor din secvența de gene

din cel de-al
doilea părinte, care nu au fost deja copiate în prima progenitură,
o
*( )|

()

+ *( )|

()

+
 Pas3. Pentru fiecare ( ) , calculează

() (valoarea genei p din
prima progenitură care a fost copiată în poziția lui a din cel de-al doilea
părinte, a nefiind copiat încă în

), cu proprietatea că

() (poziţia lui
b din cel de-al doilea părinte).
o Dacă în poziția i din prima progenitură nu a fost plasată nici o valoare,
setează

() .
o În caz contrar, determină cu proprietatea că

() , unde

()
 Dacă poziția j în

este neocupată, setează

() .
 Altfel i=j și reia 3.2.
 Pas4. La acest moment au fost copiate în prima progenitură alelele secvenței
de gene

din ambii părinți.
Genele rămase fără valori în prima progenitură sunt ocupate, în ordine, de
alelele încă necopiate din cel de-al doilea părinte.
Cel de-al doilea copil este construit similar, plecând de la secvența de alele din cel de-
al doilea părinte și copiind restul elementelor din primul părinte.

3.2.4.2. Operatorul de recombinarea muchiilor
Este dezvoltat pe baza ideii că un cromozom copil trebuie creat utilizând exclusiv
perechi de alele prezente cel puțin într-unul dintre părinți. Cea mai utilizată versiune a acestui
operator este proiectat astfel încât să asigure păstrarea tuturor muchiilor comune părinților în
cromozomul urmaș.
În acest scop este menținută o listă a adiacențelor (tabela de muchii) în care, pentru
fiecare valoare v, sunt memorate toate alelele a vecine cu v într-unul dintre genotipurile
părinte; dacă a și v sunt vecine în ambii părinți, atunci proprietatea este marcată adăugând
după a simbolul „+‟. Pentru o valoare dată, v, vom nota cu () lista alelelor vecine cu v într-
unul dintre părinți și cu |()| numărul elementelor listei (). Procedura de recombinare are
ca rezultat crearea unui singur cromozom urmaș în modul următor.
 Pas1. Construiește tabela de muchii.
 Pas2. Alege aleator o genă, i,
o copiază valoarea acesteia, v, în cromozomul progenitură. .
o REPETĂ
 Pas3. Determină () , lista vecinilor elementului curent .
 Pas4. Examinează elementele din () încă necopiate în cromozomul
urmaş.
o Dacă există o muchie comună, adică () conţine cel puţin un
element a+, atunci selectează primul a cu această proprietate pentru
copiere în cromozomul rezultat.
o Altfel, alege pentru copiere acea valoarea () cu proprietatea
că |()|
()
|()|. Setează . Valoarea copiată în
cromozomul părinte nu va mai fi consultată ulterior: ea este eliminată
din celelalte liste de adiacență.
 Pas5.
o Dacă () , este examinat pentru expandare celălalt capăt al
cromozomului urmaș, altfel este ales aleator un nou element (o nouă
alelă).
o PÂNĂ CÂND TOATE GENELE CROMOZOMULUI URMAŞ AU
FOST COMPLETATE
3.2.4.3. Operatorul de recombinarea de ordine
A fost propus în (Davis, 1991) pentru rezolvarea problemelor în care spațiul
genotipurilor este dat printr-un set de permutări semnificând ordinea apariției unor
evenimente. Fie (

) o pereche de cromozomi părinte, (

) progeniturile calculate şi
m numărul genelor unui cromozom.
Procedura de recombinare revine la parcurgerea următorilor pași:
 Pas1. Alege aleator

puncte de încrucișare, efectuează:
o

()

()

 Pas2. Copiază în

valorile din

care nu au fost deja copiate în

la pasul 1,
începând cu gena

până la gena m şi apoi din poziţia 1 în poziţia

Cel de-al doilea copil este construit similar, plecând de la secvența de alele din cel de-
al doilea părinte și copiind restul elementelor din primul părinte similar procedeului descris
pentru crearea primei progenituri.

3.2.4.4. Operatorul recombinare ciclică
Este dezvoltat pe baza ideii că un cromozom copil trebuie creat păstrând cât mai bine
posibil informația relativă la poziția absolută în care apare o valoare în cromozomii părinte.
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 aceluiași ciclu în perechea de cromozomi părinte.
După partajarea părinților în cicluri, cromozomii rezultați sunt construiți prin alegerea
alternativă a câte unui ciclu din fiecare părinte.
Fie (

) o pereche de cromozomi părinte, (

) progeniturile calculate, m
numărul genelor unui cromozom și nr cicluri numărul ciclurilor calculate. Pentru fiecare
(alegerile impare), elementele ciclurilor din (

) (pereche ordonată) se
regăsesc în aceleași poziții în (

)(pereche ordonată), în timp ce, pentru fiecare
(alegerile pare), elementele ciclurilor din (

)(pereche ordonată) se
regăsesc în aceleași poziții în (

) (pereche ordonată).
O variantă de implementare a acestui operator a fost prezentată pentru rezolvarea
problemei comis-voiajorului, modalitatea de partiționare în cicluri fiind descrisă astfel.
Cât timp nu au fost asignate toate alelele unui ciclu, execută
 Pas1. Inițializează ciclul curent cu secvența vidă,
 Pas2. Fie i prima genă din

încă neutilizată;

()
 Pas3. Calculează

()
 Pas4. Determină

()
 Pas5. *+
 Pas6. Repetă Pas3-Pas5 până când

() .

3.2.5. Recombinarea multiplă
Operatorii de recombinare multiplă presupun obținerea de progenituri prin
utilizarea n-tuplurilor de părinți, .
Astfel de operatori sunt ușor de implementat, dar, spre deosebire de recombinarea a
doi cromozomi părinte, nu au echivalent biologic. Din punct de vedere tehnic utilizarea
recombinării multiple poate amplifica efectele încrucișării.
Operatorii de recombinare multiplă sunt clasificați în funcție de mecanismul care stă
la baza combinării informației cromozomilor părinte, astfel:
 bazați pe frecvența alelelor: de exemplu votul p-sexual, care generalizează
încrucișarea uniformă;
 bazați pe segmentarea și recombinarea secvențelor: încrucișarea diagonală,
care generalizează recombinarea multi-punct;
 bazați pe operații asupra alelelor numere reale în virgulă fixă: recombinarea de
tip baricentru, care generalizează operatorii de recombinare aritmetică.


3.3. Efectuează mutații asupra progeniturilor rezultate
Noțiuni teoretice
Mutația este operator unar (cu aritate 1), în urma aplicării acestuia asupra unui
genotip rezultă o variantă „mutantă”, numită progenitură sau copil.
Operatorul mutație este întotdeauna stohastic, rezultatul depinzând de o serie de
alegeri aleatoare. În general aceste alegeri constau în utilizarea unui generator de numere
aleatoare din diferite distribuții de probabilitate și sunt numite extrageri aleatoare.
Rolul mutației în calculul evolutiv depinde de tipul de algoritm implementat. In
cazul algoritmilor genetici, mutația are rolul de a „împrospăta” structura genetică a unei
populații, în cazul programării evolutive este unicul operator de variație care dirijează
procedura de căutare, în timp ce în cazul programării genetice în general nu este folosit.
Mutația este acel operator genetic prin care, dintr-un singur părinte este obținut un
singur copil prin aplicarea unei modificări aleatoare a reprezentării.
Operatorul mutație depinde de modalitatea de reprezentare cromozomială și are
asociat un parametru, pm ( probabilitatea de mutație), care reprezintă rată de aplicare.

Etape de parcurgere

3.3.1. Operatorul mutație în reprezentarea binară
Cel mai utilizat operator de mutație în reprezentarea binară consideră fiecare genă a
fiecărui cromozom pentru inversarea valorii asociate (din 0 în 1, respectiv din 1 în 0) cu o
probabilitate pm în general mică. Numărul valorilor modificate nu este fixat, dar, în medie,
dacă populația conține dim cromozomi cu câte n gene, este egal cu .
Setarea ratei de mutație depinde în general de rezultatul dorit, în sensul în care
aplicația trebuie să conducă fie la obținerea unei populații în care toți indivizii sunt buni
(valoare mare a funcției de evaluare), fie la obținerea unei populații cu un singur individ cu
adaptare foarte bună la mediu.
În general, în cele mai multe dezvoltări de Algoritmi Genetici care folosesc
reprezentarea binară pentru construirea spațiului genotipurilor (cromozomi, indivizi),
parametrul pm este setat în următoarele limite:
 într-o generație, în medie, este modificată o singură genă a unui singur
cromozom din populație,
 în populația curentă este modificată, în medie, câte o genă din fiecare
cromozom.

3.3.2. Operatorul mutație în reprezentarea prin șiruri de numere întregi
În cazul reprezentării cromozomiale pe mulțimea numerelor întregi sunt două
modalități uzuale de a defini mutația:

3.3.2.1. Resetarea aleatoare
Prin care, cu probabilitatea pm, valoarea fiecărei gene este modificată prin generarea
aleatoare a unei valori din mulțimea valorilor admisibile pentru gena respectivă.
Acest operator este utilizat în situația în care genele codifică atribute de tip cardinal.
 P1: Este generat aleator un număr întreg intre M si N (capete de interval
închis):
o generează aleator un număr R intre 1 si N-M+1
o aduna la R valoarea M-1 ( se asigura ca de afla încă in intervalul
dat)
 P2: Generarea populației care suferă mutație
o Aplicarea mutației

3.3.2.2. Mutației de tip fluaj.
Operatorul este utilizat în cazul atributelor de tip ordinal și, cu o probabilitate p,
adaugă/scade o anumită cantitate (de obicei mică) la/din valoarea fiecărei gene a fiecărui
cromozom.
În general valorile cu care sunt modificate alelele sunt generate aleator dintr-o
distribuție de medie 0 și astfel încât probabilitatea apariției unei valori mici să fie mult mai
mare decât probabilitatea generării unei valori mari.
Mutația de tip fluaj necesită setarea parametrilor ce caracterizează distribuția de
probabilitate din care sunt generate valorile ce modifică alelele, deci a numărului de pași
efectuați de operatorul mutație în spațiul de căutare.
Determinarea unei setări potrivite a acestor parametri este în general un proces dificil,
în general fiind preferată utilizarea în tandem a mai multor operatori de mutație de acest tip.
De aceea, o variantă alternativă este de a utiliza un operator mutație resetare aleatoare cu rată
foarte mică împreună cu un operator fluaj care să efectueze modificări mici asupra alelelor.

3.3.3. Operatorul mutație în reprezentarea prin șiruri de numere reale

3.3.3.1 Virgula mobila
În cazul reprezentării cromozomiale prin șiruri de numere din reprezentate în
virgulă mobilă sunt utilizați în general următorii operatori.
Fie n numărul genelor unui cromozom și presupunem că, pentru , valoarea
genei i aparține intervalului ,

- şi, prin aplicarea operatorului mutaţie asupra
cromozomului (

) este obţinut (

), unde

,

-
.

3.3.3.2. Mutația uniformă
Presupune modificarea fiecărei gene din fiecare cromozom, cu
probabilitatea pm, prin generarea aleatoare uniformă a câte unui număr din ,

-. Deci,
dacă gena i, a cromozomului x a fost selectată pentru mutație,

este generat
aleator, cu distribuţie uniformă, în ,

-. Altfel,

.
Acest tip de operator este corespondentul mutației prin resetare aleatoare în cazul
reprezentării cromozomiale prin șiruri de numere întregi.
 Pasul 1: generam aleatoriu o probabilitate r pentru fiecare gena.
 Pasul 2: comparam r cu probabilitatea de mutație, pm (data).
o Daca r<pm se generează o noua gena random din același interval
o Altfel se păstrează valoarea inițiala.

3.3.3.3. Mutația neuniformă, cu distribuție fixată
Este una dintre cele mai des utilizate în reprezentările cromozomiale în virgulă mobilă
și este corespondentul operatorului de mutație fluaj.
Operatorul este proiectat astfel încât cantitatea de informație modificată să fie mică.
Aplicarea lui asupra unei gene i, , presupune modificarea valorii curente cu o
valoare generată de obicei din distribuția gaussiană cu medie 0 și deviație standard
specificată, , (distribuție notată (

)) rezultatul fiind apoi adus pe intervalul ,

-.
Motivul alegerii unei astfel de distribuții este următorul.
Probabilitatea ca un număr generat aleator (

) să fie în , - , respectiv în
, - este aproximativ 95.45%, respectiv 99.73%.

3.3.4. Operatorul mutație în reprezentarea prin permutări
În cazul reprezentării cromozomiale prin permutări, operatorul mutație poate fi aplicat
doar la nivel de cromozom, deci rata de mutație corespunde probabilității modificării unui
genotip, nu a unei gene. Cele mai utilizate variante de definire a mutației sunt prezentate în
continuare.

3.3.4.1. Mutația prin interschimbare
Revine la selectarea aleatoare a două gene dintr-un cromozom și interschimbarea
valorilor asociate acestora.

3.3.4.2. Mutația prin inserare
Presupune selectarea aleatoare a două gene, memorarea alelei din gena j, A,
deplasarea cu o poziție către dreapta a valorilor genelor şi plasarea valorii A
pe poziția i+1.Evident, dacă , mutaţia nu modifică nimic în cromozom.

3.3.4.3. Mutația prin amestec
Presupune repoziționarea fiecărei alele în mod aleatoriu, pentru o secvență de gene ale
unui cromozom sau pentru întreg cromozomul.

3.3.4.4. Mutația prin inversiune
Presupune selectarea aleatoare a două gene, , şi inversarea ordinii în
secvența dintre cele două poziții.

3.4. Evaluează noii candidați la soluție (vezi pas 2)

3.5. Selectează indivizii pentru construirea generației următoare ( P
i+1
)

Noțiuni teoretice:
Rolul acestui operator, numit și selecția mediului sau strategia de înlocuire a
populației curente, este de a diferenția indivizii în funcție de calitatea lor.
Din acest punct de vedere este similar procesului de selecție a părinților dar este
utilizat într-o etapă diferită a evoluției unui Algoritm Evolutiv.
Mecanismul de selecție a membrilor următoarei generații este aplicat după generarea
progeniturilor indivizilor populației curente și, deoarece dimensiunea populației este în
general constantă în timp, revine la aplicarea unei funcții de decizie fiecărui individ
aparținând populației curente sau mulțimii progeniturilor.
Funcția de decizie aplicată unui individ exprimă proprietatea acestuia de a fi selectat
pentru includerea în populația următoare și este de obicei construită pe baza funcției de
evaluare, luând în calcul calitatea fiecărui individ și, în unele situații, factorul vârstă.
În general selecția mediului este un proces determinist. Obținerea generației
următoare poate fi realizată, de exemplu, fie prin ordonarea indivizilor multisetului obținut
prin reuniunea populației curente cu multisetul progeniturilor și selectarea celor mai buni
indivizi, fie prin selectarea indivizilor exclusiv din multisetul urmașilor direcți.
Mecanismul de selectare a generației următoare (numit și schimbul de generații) este
responsabil de modalitatea de a selecta, din indivizi ai populaţiei curente și
progenituri (eventual mutante) indivizi care să formeze generația următoare.

3.5.1. Schimbul de generații bazat pe vârstă
Ideea care stă la baza schimbului de generații efectuat în funcție de factorul vârstă este
de a asigura prezenta fiecărui individ într-un număr fixat de generații și nu în funcție de
calitatea indivizilor. Un mecanism de acest tip este utilizat de obicei în cazul Algoritmi
Genetici simpli.
Deoarece, în general, numărul urmașilor, , este ealgoritmi geneticil cu dimensiunea
populației, , strategia schimbă populaţia curentă cu multisetul de progenituri (eventual
mutante) create, indiferent dacă populația curentă și/sau multisetul progeniturilor conțin
indivizi care se repetă (sunt mutiseturi de cromozomi, nu mulțimi în sens matematic).
La polul opus este strategia care constă în crearea unui singur cromozom copil la
fiecare ciclu şi înlocuirea celui mai “bătrân” individ al populației curente cu noul cromozom
creat. O astfel de strategie este de corespunde unei organizări FIFO (First-In-First-Out) a
cromozomilor. O alternativă la această strategie utilizată în modelele cu stări stabile revine la
selectarea aleatoare a unui individ din populație și înlocuirea lui cu cromozomul copil nou
creat. Aplicarea acestei strategii conduce la obținerea de Algoritmi Genetici cu performante
care pot varia foarte mult comparativ cu Algoritmi Genetici generaționali, motivul principal
fiind acela că probabilitatea ca cel mai bun individ din populație să fie eliminat la o alegere
aleatoare este mult superioară situației strategiei FIFO de eliminare a celui mai vechi individ.

3.5.2. Schimbul de generații bazat pe calitatea indivizilor
Schimbul de generații dirijat de valorile funcției de evaluare poate fi realizat prin
strategii utilizate și în selectarea părinților, cele mai utilizate fiind FPS, selecția de tip turneu
și varianta stocastică a selecției bazate pe ranguri. În plus fată de acestea, sunt uzual folosite
mecanismul GENITOR și elimtismul.
Schema de substituire GENITOR presupune înlocuirea celor mai slabi
indivizi din populaţia curentă. Acest mecanism conduce la îmbunătăţirea semnificativă a
calităţii globale a populaţiei (măsurată ca media calităţii indivizilor care compun populaţia),
dar are dezavantajul că poate conduce la convergență prematură. Din acest motiv modelul
este utilizat pentru populații de dimensiuni mari sau în cazul populațiilor care nu conțin
duplicate.
Elitismul este o strategie utilizată în combinație cu scheme de substituire bazate pe
vârstă și scheme stohastice de înlocuire bazate pe funcția de evaluare, scopul fiind acela de a
evita pierderea celor mai bine adaptați indivizi la schimbul de generații. Aceasta presupune
urmărirea celui mai bun individ din populația curentă, b: dacă b este ales pentru înlocuire și
nici unul dintre urmașii care sunt selectați pentru schimbul de generații nu are valoarea
funcției obiectiv cel puțin egală cu cea corespunzătoare lui b, atunci b este menținut în
generația următoare și este eliminat unul dintre urmașii selectați pentru înlocuire.

3.6. Incrementare. Repetare pași anteriori ( Pas 2 si Pas 3).
Pana când condiția de terminare este satisfăcută.
Condiția terminală în Algoritmii Evolutivi este stabilită în funcție de tipul de
problemă de rezolvat, în felul următor. Dacă problema are o valoare de optim cunoscută,
atunci un posibil criteriu de oprire este atingerea acelei valori sau atingerea acelei valori cu o
eroare dată . Dar, deoarece algoritmii evolutivi sunt stohastici și nu garantează atingerea
valorii optime, criteriul poate să nu fie satisfăcut la nici o iterație, deci el trebuie reformulat.
Cele mai utilizate opțiuni sunt:
 atingerea unui număr maxim de iterații (generații);
 atingerea unui număr maxim de evaluări ale calității indivizilor;
 pentru o anumită perioadă de timp;
 diversitatea populației scade sub un prag dat.
În situația în care problema de rezolvat nu are un optim cunoscut, poate fi utilizată oricare din
variantele menționate mai sus.