Algoritmi Genetici Cursuri

Descărcați ca pdf sau txt
Descărcați ca pdf sau txt
Sunteți pe pagina 1din 259

RCAI

Seria

"Computer Science"

212
UNIVERSITATEA DIN CRAIOVA
Facultatea de Matematic i Informatic

CENTRUL DE CERCETARE N INTELIGEN ARTIFICIAL

CALCUL
EVOLUTIV
ION IANCU
EDITURA UNIVERSITARIA

CRAIOVA, 2009

Refereni tiinifici:
Prof. dr. I. Vduva,
Universitatea din Bucureti

Prof. dr. D. Dumitrescu,


Universitatea Babe-Bolyai, Cluj-Napoca

CUPRINS
Prefa9
1

Introducere n calculul evolutiv.....13


1.1 Specificul calculului evolutiv..........................................13
1.2 Noiuni de baz...............................................................19
1.3 Domenii de aplicabilitate.................................................24

Spaiul de cutare i funcia de adecvare..27


2.1 Codificarea spaiului de cutare ........28
2.1.1 Structuri de date.....28
2.1.2 Reguli de codificare.......28
2.1.2.1 Codificarea binar ......29
2.1.2.2 Codificarea ntreag .......33
2.1.2.3 Codificarea real ........34
2.1.2.4 Codificarea specific.......35
2.1.2.4.1 Codificarea prin adiacen ......35
2.1.2.4.2 Codificarea ordinal.....36
2.1.2.4.3 Codificarea prin drumuri ....37
2.1.2.4.4 Codificarea prin numerotare...37
2.1.2.4.5 Codificarea matriceal ....38
2.2 Construirea funciei de adecvare 41

Metode de selecie........47
3.1 Introducere....47

4
3.2
3.3
3.4
3.5
3.6
3.7
3.8

Selecia dup rang ...49


Metoda ruletei ......50
Metoda fitnessului proporionat ......52
Selecia stochastic universal ....54
Selecia trunchiat 54
Selecia de tip turneu .......55
Selecia local ......56

3.9 Compararea metodelor de selecie .......59


4

Operatori genetici....61
4.1 ncruciarea ..61
4.1.1 ncruciarea binar ....61
4.1.1.1 ncruciarea simpl ......61
4.1.1.2 ncruciarea multipl .. 62
4.1.1.3 ncruciarea uniform ..63
4.1.1.4 ncruciarea amestecat ...... 65
4.1.1.5 Algoritmul de ncruciare ............................65
4.1.2 ncruciarea real ...66
4.1.2.1 ncruciarea discret .... 66
4.1.2.2 ncruciarea intermediar ... 68
4.1.2.3 ncruciarea liniar ...70
4.1.3 ncruciarea adiacent ...71
4.1.3.1 ncruciarea prin muchii alternante .... 71
4.1.3.2 ncruciarea prin subtrasee ...72
4.1.3.3 ncruciarea euristic ... 72
4.1.4 ncruciarea ordinal. 74
4.1.5 ncruciarea prin drumuri 75

5
4.1.5.1 ncruciarea PMX ... 75
4.1.5.2 ncruciarea OX .. 77
4.1.5.3 Variante ale ncrucirii OX ... 78
4.1.5.4 ncruciarea CX .. 80
4.1.6 ncruciarea prin muchii ... 81
4.1.7 ncruciarea matriceal . 83
4.2. Mutaia ..... 86
4.2.1 Mutaia binar .... 86
4.2.1.1 Mutaia tare ..................................................87
4.2.1.2 Mutaia slab ............................................... 87
4.2.1.3 Mutaia neuniform ..................................... 87
4.2.1.4 Mutaia auto-adaptiv .................................. 88
4.2.1.5 Mutaia cromozomial 89
4.2.2 Mutaia real .. 90
4.2.2.1 Mutaia uniform ........................................90
4.2.2.2 Mutaia neuniform .................................... 91
4.2.2.3 Mutaia auto-adaptiv ................................. 92
4.2.3 Mutaia ntreag . 93
4.2.4 Mutaia specific ... 93
4.3 Reinseria . 95
4.3.1 Reinseria global . 95
4.3.2 Reinseria local .96
5

Funcionarea algoritmilor genetici....99


5.1 Maximizarea unei funcii ........100
5.2 Problema comis-voiajorului ...115
5.3 Aplicaii n probleme de algebr ................................ 119

6
5.4 Orarul unei coli.......................................................... 122
5.5 O problem de proiectare.............................................. 127

Scheme i blocuri...133
6.1 Scheme: definiie, proprieti .133
6.2 Teorema schemei ....................................................... 138
6.3 Blocuri.........................................................................148

Variante de algoritmi genetici......151


7.1 Probleme de convergen ........................................... 151
7.2 Algoritmul genetic modificat ..................................... 154
7.3 Algoritmul hillclimbing ............................................. 156
7.4 Algoritmul clire simulat .......................................... 159
7.5 Algoritmi de tip contracie ..........................................161
7.6 Algoritmi cu dimensiunea variabil a populaiei ....167
7.7 Algoritmi cu constrngeri ....... 171
7.8 Algoritmi genetici dezordonai ... 177
7.9 Algoritmi virali ... 180
7.10 Algoritmul delta..... 185
7.11 Studiul calitativ al algoritmilor genetici .... 186

Strategii evolutive.........193
8.1 Generaliti.................... ............................................ 193
8.2 Operatori de evoluie................................................... 197
8.2.1 ncruciarea ........................................................... 197
8.2.1.1 ncruciarea discret ...................................... 197
8.2.1.2 ncruciarea intermediar............................... 198

7
8.2.2 Mutaia .....199
8.3 Funcionarea strategiilor evolutive.... 200
8.3.1 Strategia (1 + 1) ...... 200

8.3.2 Strategia ( + 1) .. 203


8.3.3 Strategii multidescendent ...203
8.3.4 Utilizarea mutaiilor corelate....207
8.4 Analiza convergenei 210
8.5 Domenii de aplicabilitate...............................................213
9

Programare evolutiv i programare genetic......215


9.1 Programare evolutiv.................................................. 215

9.1.1 Generaliti ........................................................... 215


9.1.2 Funcionarea automatului Turing .......................... 217
9.1.3 Optimizare folosind programarea evolutiv........... 219
9.2 Programare genetic.... 223
9.2.1 Reprezentarea indivizilor.......224
9.2.2 Populaia iniial.... 228
9.2.3 Operatori de evoluie 234
9.2.4 Rularea programelor n programarea genetic236
10 Software de algoritmi evolutivi.......241
Bibliografie................................................................................249

PREFA
La mijlocul anilor 70 s-a constatat c tot mai multe probleme
care modelau fenomene complexe din domenii precum biologia,
mecanica,

climatologia,

chimia,

analiza

datelor

rmneau

nerezolvabile sau soluiile oferite de metodele matematice, cunoscute


n acel moment, erau nesatisfctoare datorit aproximrilor grosiere.
Astfel, a aparut ideea de a rezolva astfel de probleme folosind
principiile evoluiei i ereditii. O astfel de tehnic menine o
mulime (populaie) de soluii poteniale i folosete metode de
selecie bazate pe fitnessul (adecvarea) indivizilor i anumii
operatori genetici pentru a construi generaia urmtoare. Astfel a
aprut calculul evolutiv iar conjenctura lui Rechenberg constituie i
azi justificarea aplicrii tehnicilor evolutive n rezolvarea problemelor
de optimizare: ''Evoluia natural este, sau cuprinde, un proces de
optimizare foarte eficient, care, prin simulare, poate duce la
rezolvarea de probleme dificil de optimizat''.
Ideea de baz a calculului evolutiv este imitarea unor procese
evolutive din natur; de aceea el este o ramur a calculului natural i,
mai general, a calculului inteligent (soft computing).
La rndul su, calculul evolutiv cuprinde mai multe direcii,
precum cele enumerate n continuare:
- strategiile evolutive, care sunt algoritmi ce imit evoluia natural
pentru a rezolva probleme de optimizare parametric, avnd ca

10
element distinctiv un parametru al evoluiei, utilizat pentru a modifica
soluia curent;
- programarea genetic, a crei caracteristic principal const n
faptul c populaia este format din programe care candideaz la
rezolvarea problemei;
-

algoritmii genetici, care - n accepiunea lui John Holland erau

algoritmi evolutivi ce utilizau ca structur de date irul de bii pentru a


rezolva probleme de optimizare discret. Azi, n foarte multe cazuri,
prin algoritm genetic se nelege orice model de tip evolutiv;
-

programarea evolutiv, introdus de Fogel cu scopul de a genera

un comportament inteligent pentru un sistem artificial, folosind


mutaia ca principal mijloc de evoluie. Variantele actuale de
programare evolutiv au foarte multe lucruri n comun cu strategiile
evolutive.
Cartea de fa trateaz aspectele de baz ale calculului
evolutiv, insistnd asupra algoritmilor genetici, ale cror principii se
regsesc n toate celelalte modele evolutive.
Capitolul 1 are un caracter introductiv, rolul su fiind de a
familiariza cititorul cu terminologia utilizat, cu principiile de
funcionare i cu domeniile de aplicabilitate.
Capitolul 2 se ocup de codificarea spaiului n care se caut
soluia problemei de optimizat i de construirea funciei de adecvare a
indivizilor.
Capitolul 3 este consacrat metodelor folosite pentru a selecta
indivizii ce vor fi supui operaiilor de evoluie genetic. Se prezint

11
principalele tehnici: selecia dup rang, metodele ruletei i fitnessului
proporionat, seleciile stochastic universal, trunchiat, turneu i
local.
Capitolul 4 studiaz operatorii de evoluie genetic. Se ncepe
cu ncruciarea, fiind prezentate diverse metode asociate tipului de
reprezentare ales pentru indivizii populaiei: binar, real, prin grafuri
(pe modelul problemei comis voiajorului). n partea a doua se
analizeaz operatorii de mutaie corespunztori reprezentrilor de tip
binar, ntreg, real i specifice problemei comis voiajorului. n final se
prezint metode de inserare n noua populaie a descendenilor.
Capitolul 5 prezint modele de funcionare a algoritmilor
genetici: maximizarea unei funcii, problema comis voiajorului,
rezolvarea unei ecuaii diofantice, problema orarului, o problema de
proiectare.
Capitolul 6 se ocup de scheme i blocuri. Dup ce se prezint
noiunile de baz referitoare la scheme, se deduce teorema schemei,
comparnd rezultatele furnizate de aceasta cu cele obinute pe un
exemplu. n final se prezint blocul ca un tip special de schem.
n capitolul 7, dup o scurt analiz a convergenei
algoritmilor genetici, se prezint mai multe tipuri de algoritmi
genetici:

versiunea

modificat,

hillclimbing,

clire

simulat,

algoritmul de tip contracie, algoritmi cu dimensiunea variabil a


populaiei, cu constrngeri, dezordonai, virali, algoritmul delta.
Capitolul 8 se ocup de strategii evolutive. Dup prezentarea
operatorilor genetici specifici, se prezint principalele variante de

12
strategii evolutive: (1 + 1) , ( + 1) ,

( + ) , ( , )

i o analiz a

convergenei.
Capitolul 9 studiaz programarea evolutiv i programarea
genetic. n cadrul programrii evolutive, dup ce se explic
funcionarea automatului Turing, se prezint modul de utilizare n
rezolvarea problemelor de optimizare. n cadrul programrii genetice
se prezint reprezentarea indivizilor, generarea populaiei iniiale i
evoluia ei i, n final, un exemplu de utilizare ntr-o problem de
regresie.
Capitolul 10 realizeaz o succint prezentare a principalelor
produse soft consacrate utilizrii algoritmilor evolutivi: GENESIS,
GENEsYs, DGENESIS, Simple GA, GAL, GALIB, SUGAL, GAGA,
GENOCOP, Genetic-2, Genetic-2N, GenET, SES, EM, LICE,
WinGA, TOLKIEN, Gaucsd, GAC, GAGS, GAMusic, GENALG,
GenET, Genie, GENlib, mGA, ParaTSP .
Cartea este o sintez a informaiilor despre Calculul evolutiv,
existente n literatura de specialitate. Ea

se

adreseaz

studenilor,

cadrelor didactice i specialitilor din diferite domenii care, n


activitatea curent, se confrunt cu probleme de optimizare. De
asemenea, mi exprim convingerea c ea va fi un instrument util
pentru cei care doresc s se iniieze n acest domeniu al inteligenei
artificiale.

1
INTRODUCERE N CALCULUL
EVOLUTIV
1.1 Specificul calculului evolutiv
n matematic optimizarea este neleas ca nsemnnd gsirea
unei soluii optime. n acest scop s-au obinut rezultate importante n
calculul diferenial, calculul variaional, controlul optimal, cercetri
operaionale. Drumul de la rezultatele teoretice, referitoare la teoreme
de existen, unicitate, caracterizare a soluiei, etc., la optimizarea
efectiv este de multe ori prea lung, fie datorit complexitii prea
mari a problemelor reale fa de modelul matematic utilizat, fie
datorit complexitii (timp, memorie) algoritmilor utilizai.
La mijlocul anilor '70, odat cu creterea performanelor
calculatoarelor i, implicit, a complexitii problemelor reale ce se
puteau rezolva cu ajutorul calculatorului, au devenit frecvente
situaiile n care modelele clasice de optimizare nu mai conduceau la
soluii acceptabile pentru probleme modelabile pe calculator. Tot mai
frecvent, probleme din biologie, climatologie, chimie, mecanic,
analiza datelor, etc., probleme ale cror modele includ sute sau mii de

14
variabile, ale cror funcii de optimizat prezint multiple optime locale
i neregulariti nestudiate din punct de vedere numeric, rmneau
nerezolvate sau cu soluii aproximate grosier.
Studiindu-se excelenta adaptare a fiinelor vii, n ceea ce privete
forma, structura, funciile i stilul de via, numeroi cercettori au
ajuns la concluzia c natura ofer soluii optimale la problemele sale,
soluii superioare oricror performane tehnologice. S-a demonstrat,
chiar matematic, optimalitatea unor sisteme biologice: raportul
diametrilor ramificaiilor arterelor, poziia punctelor de ramificare a
vaselor de snge, valoarea hematocritului (procentul volumului
particolelor solide din snge). n consecin, au aprut primele
ncercri de imitare a procesului de evoluie natural. nc din
perioada anilor 1950, oameni de tiin precum Turing i von
Neumann au fost interesai n modelarea i nelegerea fenomenelor
biologice n termeni de procesri naturale ale informaiei. nceputul
erei calculatoarelor a promovat tendina de simulare a proceselor i a
modelelor naturale i a condus la dezvoltarea unor modele evolutive
artificiale.
n anul 1970 profesorii Hans-Paul Schwefel (Dortmund) i
Ingo Rechenberg (Berlin) avnd de rezolvat o problem de mecanica
fluidelor, referitoare la optimizarea formei unui corp ce se deplaseaz
ntr-un fluid, au cutat o nou tehnic de optimizare deoarece
metodele cunoscute pn n acel moment nu conduceau la o soluie
acceptabil. Ideea lor a ntruchipat conjectura lui Rechenberg, rmas
pn azi justificarea fundamental a aplicrii tehnicilor evolutive:
''Evoluia natural este, sau cuprinde, un proces de optimizare foarte

15
eficient, care, prin simulare, poate duce la rezolvarea de probleme
dificil de optimizat''.
Modelul de simulare propus de Rechenberg i Schwefel [71,
76, 77] este cunoscut azi sub numele de ''strategii evolutive'' i iniial
se aplica doar problemelor de optimizare de variabil continu.
Soluiile candidat x se reprezint n virgul mobil iar individul i ,
cruia i se aplic procesul evolutiv, const din aceast reprezentare i
dintr-un parametru al evoluiei, notat , reprezentat tot in virgul
mobil: i = ( x, ) . La fiecare pas soluia curent este modificat pe
fiecare component conform lui i n cazul unei mbuntiri este
nlocuit cu cea nou obinut. Parametrul joac rolul pasului din
metodele iterative clasice i este astfel folosit nct s fie respectat
principiul "mutaiilor mici". Pentru strategiile evolutive au fost
dezvoltate scheme de adaptare a parametrilor de control ( autoadaptare ).
A doua direcie de studiu s-a conturat la Universitatea San
Diego; punctul de pornire a fost tot simularea evoluiei biologice iar
structura de date aleas a fost maina cu numr finit de stri. Urmnd
aceast abordare, Fogel [25, 28] a generat programe simple,
anticipnd "programarea genetic". Populaia este reprezentat de
programe care candideaz la rezolvarea problemei. Exist diverse
reprezentri ale elementelor populaiei, una dintre cele mai utilizate
fiind aceea n care se utilizeaz o structur arborescent. n anumite

16
aplicaii, cum este regresia simbolic, programele sunt de fapt
expresii.
De exemplu, programul expresie " a + (b * c )" poate fi descris
prin (+ a ( b c )) . O astfel de structur poate fi uor codificat n Lisp,
astfel c primele implementri din programarea genetic foloseau
acest limbaj.
Dup mai muli ani de studiere a simulrii evoluiei, John
Holland de la Universitatea Michigan a propus n 1975 [44] conceptul
de "algoritm genetic". Au fost abordate probleme de optimizare
discret iar structura de date aleas

a fost irul de bii. ntr-o

accepiune strict, noiunea de algoritm genetic se refer la modelul


studiat de Holland i de studentul su De Jong. ntr-un sens mai larg,
algoritm genetic este orice model bazat pe ideea de populaie i care
folosete operatori de selecie i recombinare pentru a genera noi
puncte n spaiul de cutare.
O alt direcie o constituie programarea evolutiv. Iniial, ea
a avut ca obiectiv dezvoltarea unor structuri automate de calcul
printr-un proces de evoluie n care operatorul principal este cel de
mutaie. Bazele domeniului au fost puse de ctre Fogel [28]. Ulterior,
programarea evolutiv a fost orientat ctre rezolvarea problemelor de
optimizare avnd aceeai sfer de aplicabilitate ca i strategiile
evolutive.

17
Calculul evolutiv folosete algoritmi ale cror metode

de

cutare au ca model cteva fenomene naturale: motenirea genetic


i lupta pentru supravieuire. Cele mai cunoscute tehnici din clasa
calculului evolutiv sunt cele amintite anterior: algoritmii genetici,
strategiile evolutive, programarea genetic i programarea evolutiv.
Exist i alte sisteme hibride care ncorporeaz diferite proprieti ale
paradigmelor de mai sus; mai mult, structura oricrui algoritm de
calcul evolutiv este, n mare msur, aceeai.
Calculul evolutiv este un domeniu al calculului inteligent n
care rezolvarea unei probleme este vzut ca un proces de cutare n
spaiul tuturor soluiilor posibile. Aceast cutare este realizat prin
imitarea unor mecanisme specifice evoluiei n natur. n scopul
gsirii soluiei, se utilizeaz o populaie de cutare. Elementele
acestei populaii reprezint soluii poteniale ale problemei. Pentru a
ghida cutarea ctre soluia problemei, asupra populaiei se aplic
transformri specifice, inspirate din evoluia natural, precum:
Selecia. Elementele populaiei care se apropie de soluia
problemei sunt considerate adecvate i sunt favorizate n sensul c au
mai multe anse de a supravieui n generaia urmtoare precum i de a
participa la generarea de descendeni.
ncruciara. La fel ca n nmulirea din natur, pornind de la dou
sau mai multe elemente ale populaiei (numite prini), se genereaz
noi elemente (numite descendeni). n funcie de calitatea acestora

18
(apropierea de soluia problemei) descendenii pot nlocui prinii sau
ali indivizi din populaie.
Mutaia. Pentru a asigura diversitatea populaiei se aplic, la fel ca
n natur, transformri cu caracter aleator asupra elementelor
populaiei, permind apariia unor trsturi (gene) care doar prin
ncruciare i selecie nu ar fi aprut n cadrul populaiei.
n continuare, un algoritm de rezolvare bazat pe aceste idei va fi
numit algoritm evolutiv. Principalele caracteristici ale algoritmilor
evolutivi, comparativ cu cei tradiionali sunt:
sunt algoritmi probabiliti ce mbin cutarea dirijat cu cea

aleatoare;
realizeaz un echilibru aproape perfect ntre explorarea spaiului

strilor i gsirea celor mai bune soluii;

n timp ce metodele clasice de cutare acioneaz la un moment

dat asupra unui singur punct din spaiul de cutare, algoritmii


evolutivi menin o mulime (numit populaie) de soluii posibile;
algoritmii evolutivi nu acioneaz direct asupra spaiului de

cutare ci asupra unei codificri a lui;


sunt mai robuti dect algoritmii clasici de optimizare i dect

metodele de cutare dirijat;


sunt simplu de utilizat i nu cer proprieti importante ale funciei

obiectiv precum continuitate, derivabilitate, convexitate, ca n cazul


algoritmilor clasici;

19
furnizeaz, cu o mare probabilitate, o soluie apropiat de cea

exact.

1.2 Noiuni de baz


Principalele noiuni care permit analogia ntre rezolvarea
problemelor de cutare i evoluia natural sunt urmtoarele:
Cromozomul este o mulime ordonat de elemente, numite gene, ale
cror valori determin caracteristicile unui individ. n genetic,
poziiile pe care se afl genele n cadrul cromozomului se numesc loci,
iar valorile pe care le pot lua se numesc alele. n calculul evolutiv
cromozomii sunt, de obicei, vectori ce conin codificarea unei soluii
poteniale i sunt numii indivizi. Astfel, genele nu sunt altceva dect
elementele acestor vectori.
Populaia. O populaie este constituit din indivizi care triesc ntr-un
mediu la care trebuie s se adapteze. n calculul evolutiv, un individ
este de cele mai multe ori identificat cu un cromozom i reprezint un
element din spaiul de cutare asociat problemei de rezolvat.
Genotipul este ansamblul tuturor genelor unui individ sau chiar a
ntregii populaii. n calculul evolutiv genotipul reprezint codificrile
corespunztoare tuturor elementelor populaiei.

20
Fenotipul este ansamblul trsturilor determinate de ctre un anumit
genotip. n calculul evolutiv fenotipul reprezint valorile obinute prin
decodificare, adic valori din spaiul de cutare.
Generaia este o etap n evoluia unei populaii. Dac vedem evoluia
ca un proces iterativ n care

o populaie se transform n alt

populaie atunci generaia este o iteraie n cadrul acestui proces.


Selecia. Procesul de selecie natural are ca efect supravieuirea
indivizilor cu grad ridicat de adecvare la mediu (fitness mare). Acelai
scop l are i mecanismul de selecie de la algoritmii evolutivi i
anume de a favoriza supravieuirea elementelor cu grad mare de
adecvare. Aceasta asigur apropierea de soluia problemei ntruct se
exploateaz informaiile furnizate de ctre cele mai bune elemente ale
populaiei. Unul dintre principiile teoriei evoluioniste este acela c
selecia este un proces aleator i nu unul determinist. Acest lucru este
ntlnit n majoritatea mecanismelor de selecie utilizate de ctre
algoritmii evolutivi.
Reproducerea este procesul prin care, pornind de la populaia curent,
se construiete o nou populaie. Indivizii noii populaii (generaii)
motenesc caracteristici de la prinii lor, dar pot dobndi i
caracteristici noi ca urmare a unor procese de mutaie care au un
caracter ntmpltor. n cazul n care n procesul de reproducere
intervin cel puin doi prini, caracteristicile motenite de descendeni
se obin prin combinarea (ncruciarea) caracteristicilor prinilor.

21
Mecanismele de ncruciare i mutaie asigur explorarea spaiului
soluiilor prin descoperirea de noi configuraii.
Fitnessul

sau adecvarea. n evoluia natural fiecare individ al

populaiei este adaptat mai mult sau mai puin mediului iar unul dintre
principiile teoriei evoluioniste este acela c supravieuiesc doar cei
mai buni indivizi. Fitnessul (adecvarea) este o msur a gradului de
adaptare a individului la mediu. Scopul evoluiei este ca toi indivizii
s ajung la o adecvare ct mai bun la mediu, ceea ce sugereaz
legtura ntre un proces de evoluie i unul de optimizare. n calculul
evolutiv, gradul de adecvare al unui element al populaiei este o
msur a calitii acestuia n raport cu problema care trebuie rezolvat.
Dac este vorba de o problem de maximizare atunci gradul de
adecvare va fi direct proporional cu valoarea funciei obiectiv (un
element este cu att mai bun cu ct valoarea acestei funcii este mai
mare).
Noiunile de adecvare i evaluare sunt folosite n general cu
acelai sens; totui se poate face o distincie ntre ele. Funcia de
evaluare, sau funcia obiectiv, reprezint o msur a performanei n
raport cu o mulime de parametri, n timp ce funcia de adecvare
transform aceast msur a performanei n alocare de faciliti
reproductive. Evaluarea unui ir reprezentnd o mulime de parametri
este independent de evaluarea altor iruri. Adecvarea unui ir este,
ns, definit n raport cu ali membri ai populaiei curente; de

22
exemplu, prin

fi
, unde f i este evaluarea asociat irului i iar f este
f

evaluarea medie a tuturor irurilor populaiei.


Funcia de evaluare i codificarea sunt, de obicei, singurele
componente ale algoritmilor evolutivi care depind de problema de
rezolvat. Un algoritm evolutiv, folosit pentru rezolvarea unei
probleme de optimizare, poate fi privit ca o ''cutie neagr'' cu o serie
de butoane de control reprezentnd diveri parametri. Ieirea cutiei
negre este valoarea unei funcii indicnd n ce msur o anumit
distribuie a parametrilor rezolv problema dat. n termeni
tradiionali,

dorim

minimizm

(maximizm)

funcie

F ( x1 , x 2 ,L, x n ) . De cele mai multe ori este imposibil de tratat


independent fiecare parametru. Apariia interaciunilor face necesar
considerarea efectelor combinate ale parametrilor n vederea
optimizrii

cutiei

negre.

limbajul

algoritmilor

genetici,

interaciunea dintre variabile este numit epistasis.


Variabilele reprezentnd parametrii sunt, de obicei, codificate
prin iruri binare, dar exist i alte codificri: numere ntregi, numere
reale, codul Gray, codificare alfabetic, arbori. Condiiile pe care
trebuie s le ndeplineasc o reprezentare bun sunt: independena
relativ a genelor, includerea a ct mai multe restricii ale problemei
direct n reprezentare, complexitate sczut a decodificrii/codificrii
cromozomilor. Rezolvarea problemelor de codificare este considerat,

23
de obicei, ca parte a construciei funciei de evaluare. Funcia de
evaluare este parte a descrierii problemei. Precizarea funciei de
evaluare poate implica o simulare i poate fi aproximativ sau parial.
De exemplu, s considerm o problem de control optimal, n care
mulimea strilor n care se poate afla sistemul poate fi exponenial de
mare. Folosirea unui algoritm evolutiv pentru gsirea unei strategii
optime de control presupune reducerea spaiului strilor (prin
eantionare) i, astfel, evaluarea realizat este aproximativ i afectat
de perturbaii. Funcia de evaluare trebuie s fie uor de calculat,
avnd n vedere c fiecare generaie trebuie evaluat; deci, funcia de
evaluare este apelat de foarte multe ori.
La aplicarea unui algoritm evolutiv pentru rezolvarea unei
probleme concrete trebuie alese n mod adecvat: modul de codificare a
elementelor, funcia de adecvare i operatorii de selecie, ncruciare i
mutaie. Unele dintre aceste elemente sunt strns legate de problema
de rezolvat, iar altele mai puin.
Structura unui algoritm evolutiv este urmtoarea
Procedure AE
begin
t := 0

iniializare P (t )

evaluare P (t )
while (not condiie terminare) do
begin

24
t := t + 1

selectare P (t ) din P (t 1)
modificare P (t )
evaluare P (t )
end
end.

1.3. Domenii de aplicabilitate


Sistemele evolutive se utilizeaz atunci cnd nu exist alt
strategie de rezolvare a problemei i este acceptat un rspuns
aproximativ. Se utilizeaz n special atunci cnd problema poate fi
formulat ca una de optimizare, ns nu numai. Algoritmii evolutivi
sunt utilizai n diverse domenii, precum:
Planificare. Majoritatea problemelor de planificare (de
exemplu, alegerea traseelor optime ale unor vehicule, rutarea
mesajelor ntr-o reea de telecomunicaii, planificarea unor activiti,
etc.) pot fi formulate ca probleme de optimizare cu sau fr restricii.
Multe din acestea sunt de tip NP, necunoscndu-se algoritmi de
rezolvare care s aib complexitate polinomial. Pentru astfel de
probleme algoritmii evolutivi ofer posibilitatea obinerii, n timp
rezonabil, a unor soluii sub-optimale de calitate acceptabil.

25
Proiectare. Algoritmii evolutivi au fost aplicai cu succes n
proiectarea circuitelor digitale, a filtrelor dar i a unor structuri de
calcul cum sunt reelele neuronale. Ca metode de estimare a
parametrilor unor sisteme ce optimizeaz anumite criterii, algoritmii
evolutivi se aplic n diverse domenii din inginerie cum ar fi:
proiectarea avioanelor, proiectarea reactoarelor chimice, proiectarea
structurilor n construcii, etc.
Simulare i identificare. Simularea presupune s se determine
modul de comportare a unui sistem pornind de la un model al acestuia.
Identificarea este sarcina invers, a determinrii structurii sistemului
pornind de la modul de comportare. Algoritmii evolutivi sunt utilizai
att n simularea unor probleme din inginerie dar i din economie.
Identificarea unui model este util n special n efectuarea unor
predicii n diverse domenii ( economie, finane, medicin, tiinele
mediului, etc.).
Control. Algoritmii evolutivi pot fi utilizai pentru a
implementa controlere on-line asociate sistemelor dinamice (de
exemplu pentru a controla roboii mobili ).
Clasificare. Se poate considera c din domeniul calculului
evolutiv fac parte i sistemele de clasificare. Un sistem de clasificare
se bazeaz pe o populaie de reguli de asociere (reguli de producie)
care evolueaz pentru a se adapta problemei de rezolvat (calitatea unei
reguli se stabilete pe baza unor exemple). Evoluia regulilor are
acelai scop ca i la nvarea n reelele neuronale. Algoritmii

26
evolutivi sunt aplicai cu succes n clasificarea imaginilor, n biologie
(pentru determinarea structurii proteinelor) sau n medicin (pentru
clasificarea electrocardiogramelor).

2
SPAIUL DE CUTARE I FUNCIA
DE ADECVARE

La proiectarea unui algoritm evolutiv trebuie s se stabileasc:

Modul de codificare. Se specific modul n care fiecrei

configuraii din spaiul de cutare i se asociaz un cromozom.


Funcia de adecvare. Se construiete funcia care exprim gradul
de adecvare la mediu, pornind de la restriciile i funcia obiectiv
asociate problemei.
Dimensiunea i modul de iniializare a populaiei. Se pot utiliza
populaii de dimensiune fix sau de dimensiune variabil. De cele mai
multe ori populaia se iniializeaz n manier aleatoare cu elemente
din spaiul de cutare.
Mecanismul de selecie a prinilor i supravieuitorilor.
Mecanismul de ncruciare a prinilor pentru a genera urmai.
Mecanismul de mutaie, care asigur perturbarea indivizilor ce
compun populaia.

28
Criteriul de oprire. Atunci cnd nu se cunoate un criteriu specific
problemei se opteaz pentru un numr maxim de iteraii. Se pot folosi
informaii despre populaie, cum ar fi gradul de diversitate al acesteia.

2.1. Codificarea spaiului de cutare


Codificarea spaiului de cutare este una dintre cele mai
importante etape ale proiectrii unui algoritm evolutiv ntruct
determin modul n care se va desfura procesul de evoluie. Se
refer la urmtoarele aspecte: structuri de date folosite, regula de
codificare i regula de decodificare.

2.1.1. Structuri de date


n algoritmii genetici cromozomii sunt reprezentai prin
structuri liniare cu numr fix de elemente (tablouri) sau cu numr
variabil de elemente (liste nlnuite). Prima variant este cea mai
frecvent folosit. Structuri de alt tip (de exemplu, structuri
arborescente ) se folosesc n alte metode evolutive ( de exemplu n
programarea genetic ).

2.1.2. Reguli de codificare


Modul n care o configuraie este codificat ntr-un cromozom
depinde de problema concret, existnd mai multe variante de
codificare.

29
2.1.2.1 . Codificarea binar
Aceasta este varianta clasic: cromozomii sunt vectori cu
elemente din {0, 1} iar spaiul de cutare este S = {0, 1}n , cu n
numrul de gene.
Exemplul 2.1. Problema submulimii de sum maxim
limitat. Se consider o mulime W = {w1 , L, wn } de valori ntregi i
V o valoare ntreag. Se caut o submulime S W cu proprietatea

c suma elementelor lui S este ct mai apropiat de V , dar nu


depete aceast valoare. Orice submulime S poate fi reprezentat
printr-un vector ( s1 , s 2 , L , s n ) cu s i = 0 dac wi S i s i = 1 dac
wi S . Suma elementelor submulimii S este

w s
i =1

i i

Exemplul 2.2. Problema rucsacului. Se consider o mulime


de n obiecte caracterizate de greutile (w1 , L , wn ) i de valorile

(v1 , L, vn ) .

Se pune problema determinrii unei submulimi de

obiecte pentru a fi introduse ntr-un rucsac de capacitate C astfel nct


valoarea obiectelor selectate s fie maxim. O soluie a acestei
probleme poate fi codificat ca un ir de n valori binare n felul
urmtor: s i = 1 dac obiectul i este selectat, respectiv s i = 0 dac
obiectul nu este selectat.
Exemplul 2.3. Problema mpachetrii. Se consider o mulime
de n obiecte caracterizate de dimensiunile (d1 , L, d n ) i o mulime de

30
m cutii avnd capacitile (C1 , L , C m ) . Se pune problema plasrii

obiectelor n cutii astfel nct capacitatea acestora s nu fie depit


iar numrul de cutii utilizate s fie ct mai mic. O posibil
reprezentare binar pentru aceast problem este urmtoarea: se
utilizeaz o matrice A cu n linii i m coloane iar elementul aij are
valoarea 1 dac obiectul i este plasat n cutia j i 0 n caz contrar
(obiectul i nu este plasat n cutia j ). Prin liniarizarea matricei se
ajunge ca fiecare soluie s fie reprezentat printr-un cromozom
coninnd m n gene.
Exemplul 2.4. Optimizarea unei funcii definit pe un domeniu

continuu. Se consider o funcie


f : D = [a1 , b1 ] [a 2 , b2 ] L [a n , bn ] R n R

i se caut x * = x1* , L, xn* care minimizeaz pe f . Pentru a utiliza

codificarea binar, fiecare component xi ale lui x = ( x1 , L, x n ) se


transform dup regulile:
se scaleaz pentru a fi adus n intervalul [0, 1] :
vi =

xi a i
bi ai

se stabilete numrul r de bii necesari pentru reprezentare i se

aduce valoarea vi n mulimea {0, 1, L, 2 r 1}:

u i = vi 2 r 1 ,

31
unde reprezint partea ntreag. Valoarea astfel obinut se
reprezint n baza 2.
De exemplu, pentru x = (1.25, 2.3) [1, 2] [2, 3] i r = 5 se
obine x = (0.25, 0.3) iar cromozomul asociat va avea 2 r = 10
componente binare: (0, 0, 1, 1, 1, 0, 1, 0, 0, 1) . Este evident c aceast
codificare are caracter aproximativ, motiv pentru care n cazul
variabilelor reale se prefer utilizarea codificrii reale.
Utilizarea reprezentrii binare n cazul n care configuraiile
corespunztoare problemei sunt vectori de valori reale prezint
dezavantajul c unele valori reale aflate la distan mic au asociate
reprezentri binare aflate la distan mare (difer n multe poziii
binare). De exemplu, reprezentarea lui 7 pe 4 bii este 0111 iar
reprezentarea lui 8 este 1000 . Se remarc faptul c trecerea de la
reprezentarea lui 7 la cea a lui 8 necesit 4 modificri de bii. O alt
variant de codificare care evit acest dezavantaj este codificarea de
tip Gray caracterizat prin faptul c valori ntregi succesive au
asociate iruri de bii care difer ntr-o singur poziie.
Pornind de la reprezentarea binar (b1 , L, bn ) (cifrele binare
sunt specificate ncepnd cu cea mai semnificativ), codul Gray,

(a1 , L, an ) , se construiete dup regula:


b
ai = i
bi 1 bi

unde reprezint adunarea modulo 2.

i =1
i >1

32
Reprezentarea clasic
0

000 001 010 011 100 101 110 111


Codificarea Gray
0

000 001 011 010 110 111 101 100


Tabelul 1: Reprezentri binare: reprezentarea clasic n baza 2
i codul Gray
n cazul codificrii binare clasice a unei valori din intervalul

[a, b] , pentru a obine valoarea decodificat pornind de la irul de bii


obinut prin codificare se folosete relaia:
(s1,,sn)= a +

ba

s j 2 j 1

2 n 1 j =1

n cazul codificrii de tip Gray decodificarea se bazeaz pe


relaia:
(s1,,sn)= a +

ba

( s k )2 n j .

2 n 1 j =1

k =1

n cazul decodificrii irul de bii se parcurge de la dreapta la stnga.

33
2.1.2.2. Codificarea ntreag

Exist mai multe posibiliti de a reprezenta un numr ntreg


nenegativ p , n funcie de mulimea n care ia valori.
dac

p ia valori n mulimea 0, 1, L, 2n 1 atunci el poate fi

reprezentat ca un ir binar b0b1 Lbn cu bi {0, 1}, 0 i n .

dac p m, m + 1, L, m + 2 n 1 atunci se codific p m ca n


cazul anterior
dac p {1, 2, L, l 1} i nu exist n astfel nct l = 2 n atunci
sunt posibile mai multe soluii:
a) se ia

n = [log2 l ] + 1 i se transform fiecare ir binar

(b0b1 Lbn )10 l

n p = l 1 (operaie numit tietur); n acest caz

fiecare numr p cuprins ntre 0 i l 2 este reprezentat printr-un ir


binar, n timp ce p = l 1 este reprezentat prin 2 n l iruri
b) se ia n = [log2 l ] + 1 i se transform fiecare ir s = b0b1 Lbn n

p=

s10

2n 1

(l 1)

(operaie numit scalare), unde s10 reprezint

scrierea irului s n baza 10.

34
2.1.2.3. Codificarea real

Este adecvat pentru problemele de optimizare pe domenii


continue. Presupunem c se dorete maximizarea unei funcii de k
variabile f : R k R ; fiecare variabil xi ia valori ntr-un domeniu
Di = [ai , bi ] R i

f ( x1 , L , xk ) > 0 pentru orice xi Di . Cernd o

precizie de 4 zecimale pentru valorile variabilelor, fiecare interval Di


va trebui divizat n 10 4 (bi ai ) subintervale egale. Fie li cel mai mic
ntreg astfel nct
10 4 (bi ai ) 2 li 1 .

Atunci o reprezentare a variabilei xi ca un ir binar

de

lungime li va satisface precizia dorit.


Acum fiecare cromozom este reprezentat printr-un ir binar de
k

lungime l = li ; primii l1 bii reprezint o valoare din [a1 , b1 ] ,


i =1

urmtorii l 2 bii reprezint o valoare din [a2 , b2 ] i aa mai departe.


Decodificarea se face cu formula

xi = ai + zecimal(string2 )

bi ai
2li 1

unde zecimal(string 2 ) reprezint valoarea zecimal a irului binar

string .

35
2.1.2.4. Codificarea specific

Se alege o variant ct mai apropiat de specificul problemei.


Majoritatea codificrilor de acest tip vor fi explicate pentru problema
comis voiajorului [60]: se consider o mulime de n orae i se pune
problema gsirii unui traseu care s treac o singur dat prin fiecare
ora i care s aib costul minim (dac costul este proporional cu
lungimea traseului atunci se caut trasee de lungime minim).
Rezolvarea problemei const n gsirea celei mai bune permutri a
oraelor

(v1 , L , vn ) ,

unde vi {1, L, n} . Pentru a fi respectat

restricia ca fiecare ora s fie vizitat o singur dat este necesar ca


elementele vectorului V = (v1 , L , v n ) s fie distincte.
2.1.2.4.1. Codificarea prin adiacen

Un cromozom (care reprezint un traseu) este o list de n


orae: oraul j este plasat n poziia i dac i numai dac exist o
muchie de la oraul i la oraul j . De exemplu, vectorul

(2,

4, 8, 3, 9, 7, 1, 5, 6 )

reprezint traseul
1 2 4 3 8 5 9 6 7 .
Unele liste de adiacen pot reprezenta trasee ilegale, ca de exemplu

(2,

4, 8, 1, 9, 3, 5, 7, 6 )

care duce la
1 2 4 1,

36
adic la o ciclare (prematur) obinut nainte de terminarea traseului.

2.1.2.4.2. Codificarea ordinal

n acest caz un traseu se reprezint ca o list de n orae,


elementul aflat pe poziia i n list fiind un numr din intervalul

[1, n i + 1] . Se folosete o list ordonat

L a oraelor, care servete ca

referin pentru reprezentarea ordinal. Considernd lista


L = (1, 2, 3, 4, 5, 6, 7, 8, 9 ) ,

traseul
1 2 4 3 8 5 9 6 7
va fi codificat ca o list
l = (1, 1, 2, 1, 4, 1, 3, 1, 1)

interpretat astfel:
primul numr din lista l este 1, aa c primul ora din lista L este
luat ca prim ora al traseului i este ters din lista L ; traseul parial
este (1)
urmtorul ora din lista l este 1, aa c se ia primul ora din lista
curent L ca oraul urmtor al traseului i se sterge din lista L ;
rezult traseul parial (1 2 )
urmtorul numr din lista l este 2, deci se alege al doilea ora din
lista curent L ca urmtorul ora al traseului i se terge din list; n
acest moment traseul parial este (1 2 4 ) .

37
n final rezult traseul
1 2 4 3 8 5 9 6 7 .

2.1.2.4.3. Codificarea prin drumuri

Aceasta este cea mai natural codificare a unui traseu. De


exemplu, traseul
5 1 7 8 9 4 6 2 3
este codificat simplu ca

(5, 1,

7 , 8 , 9 , 4 , 6 , 2 , 3) .

2.1.2.4.4. Codificarea prin numerotare

Considerm din nou problema mpachetrii. n varianta de


codificare binar propus n Exemplul 2.3 apare dezavantajul c pot fi
generate configuraii care nu sunt fezabile. Acestea sunt de exemplu
matricele care conin mai multe elemente egale cu 1 pe o linie (aceasta
ar nsemna c un obiect este simultan inclus n mai multe cutii).
Pentru a evita astfel de situaii se poate utiliza un alt tip de
reprezentare: un vector cu n componente

(v1 , L, vn )

vi {1, L, m} reprezint cutia n care este inclus obiectul i .

n care

38
2.1.2.4.5. Codificarea matriceal

Fox i McMahon [30] au propus reprezentarea unui traseu ca


o matrice binar M n care elementul mij are valoarea 1 dac i numai
dac oraul i apare naintea lui j n traseu. De exemplu, traseul

3 1 2 8 7 4 6 9 5
este reprezentat prin matricea de mai jos.
1

n aceast reprezentare matricea M

de dimensiune n n

reprezint un traseu de n orae (total ordonate) cu urmtoarele


proprieti:
1. numrul valorilor 1 este exact

n(n 1)
2

2. mii = 0 pentru orice i cu 1 i n

39
3. dac mij = 1 i m jk = 1 atunci mik = 1 .
Dac numrul valorilor 1 din matrice este mai mic dect

n(n 1)
2

iar celelalte dou condiii sunt satisfcute atunci oraele sunt parial
ordonate, adic exist cel puin o modalitate de completare a matricei
astfel nct s se obin un traseu legal.
O alt reprezentare de tip matriceal a fost folosit de Seniw [84] i
Homaifar i Guan [45] . n aceast reprezentare, elementul mij ia
valoarea 1 dac i numai dac exist un traseu de la oraul i direct la
oraul j (matricea de adiacen).
1

Astfel, matricea anterioar reprezint un traseu care viziteaz oraele

(1,

2 , 4 , 3, 8 , 6 , 5 , 7 , 9 ) ,

aceast

ordine.

Aceast

reprezentare nu specific oraul de start, fiind valide i alte trasee:

40

(2,

4, 3, 8, 6 , 5, 7 , 9 , 1) ,

(4,

3, 8, 6 , 5, 7 , 9 , 1, 2 ) ,

etc.
Un traseu complet este reprezentat printr-o matrice binar
avnd un singur 1 pe fiecare linie i fiecare coloan. Totui, nu orice
matrice cu aceste proprieti reprezint un traseu complet. Unele
matrice pot reprezenta subtrasee care nu sunt conectate ntre ele. De
exemplu,

(1,

matricea

urmtoare

reprezint

dou

subtrasee:

2 , 4 , 5, 7 ) i (3, 8, 6 , 9 ) .

41

2.2. Construirea funciei de adecvare


n procesul de evoluie natural se urmrete maximizarea
gradului de adecvare a indivizilor la mediu. Pentru a ne folosi de
analogia dintre procesele de cutare i cele de evoluie este util s
reformulm problemele de optimizare ca probleme de maximizare
(orice problem de minimizare poate fi transformat ntr-una de
maximizare prin schimbarea semnului funciei obiectiv). Pentru o
problem de minimizare de forma: s se determine x * D cu
proprietatea c f (x * ) f ( x ) pentru orice x D , funcia de adecvare

poate fi chiar funcia obiectiv F ( x) = f ( x) . Lucrurile

devin

mai

complicate n cazul problemelor cu restricii.


S considerm o problem de minimizare cu restricii:
s se determine x * D cu proprietatea c minimizeaz funcia
obiectiv f : D R i satisface restriciile:
g j ( x* ) = 0, 1 j k1

( restricii de tip egalitate )

h j ( x* ) 0, 1 j k 2

( restricii de tip inegalitate )

O variant de a trata restriciile este de a folosi tehnica


penalizrii, care permite includerea acestora n cadrul funciei de
adecvare:

F( x ) = f ( x ) + a
unde

k1

k2

j =1

j =1

(g j (x )) 2 + b (h (x ))
j

42
u 2

u <0

u 0

(u ) =

iar a i b sunt parametri pozitivi care reflect importana relativ a


nclcrii restriciilor (cu ct a i b sunt mai mari cu att restricia
este mai important i nclcarea ei este penalizat mai mult). Dac se
fac diferenieri ntre restricii atunci se pot utiliza mai multe valori
( a1 , L, a k1 i b1 , L, bk2 n loc de a si respectiv b ).
Exemplul

2.5.

Problema

submulimii.

Un

vector

s = (s1 , L , s n ) este admisibil (adic este o soluie potenial) dac


satisface relaia

wi si M . Funcia de adecvare depinde de starea

i =1

vectorului (admisibil sau nu):


n
wi si

F ( s ) = i =n1
w s
i =1 i i

dac s este admisibil


dac s nu este admisibil

Modul de specificare a funciei de adecvare sugereaz c dac


o soluie este acceptabil atunci ea este cu att mai bun cu ct se
apropie mai mult de optim ( n cazul nostru nseamn c suma este cu
att mai apropiat de M ). Dac soluia nu este admisibil atunci ea
este cu att mai bun cu ct abaterea fa de o soluie admisibil este
mai mic. Aceast tehnic de a trata diferit soluiile admisibile i cele

43
neadmisibile permite compararea ntre ele a soluiilor. Regulile
naturale sunt urmtoarele:
orice soluie admisibil este mai bun dect o soluie care nu este
admisibil;
dintre dou soluii admisibile este mai bun cea care are adecvarea
mai mare (n cazul problemei submulimii aceasta nseamn c suma
valorilor elementelor submulimii este mai mare)
dintre dou soluii neadmisibile cea mai bun este cea care ncalc
mai puin restriciile (n cazul acestei probleme nseamn c suma
elementelor este mai mic, adic depete cu mai puin pragul M ).
Exemplul 2.6. Problema rucsacului. Fiind o problem cu

restricii, trebuie luat n considerare i cazul configuraiilor care nu


sunt admisibile. O posibil funcie de adecvare este:
n
dac
v js j
j =1
F (s) = n
n
v s b( w s C ) dac
j j
j j

j =1
j =1

wjs j C
j =1
n

wjs j > C
j =1

Exemplul 2.7. Problema comis-voiajorului. n acest caz, dac se

folosete o reprezentare de tip permutare restricia problemei (trecerea


o singur dat prin fiecare ora) este implicit satisfcut. Dac
matricea C conine costurile ( c(i, j ) reprezint costul trecerii de la
oraul i la oraul j ) atunci funcia de cost poate fi descris prin:

44
n 1

f ( s1 ,........, s n ) = c( si , si +1 ) + c( sn , s1 )
i =1

n multe probleme ne intereseaz nu numai gsirea optimului


global ci i mulimea tuturor soluiilor acceptabile. Dac exist un
optim global i mai multe optime locale, populaia va migra spre zona
optimului global. De aceea trebuie gsit un mecanism care s
favorizeze apariia unor subpopulaii corespunztoare diferitelor
puncte de optim. Soluia este oferit de conceptul biologic de ni

ecologic, conform cruia indivizii unei populaii se grupeaz n nie


ecologice iar indivizii unei nie mpart ntre ei resursele.
Aplicarea acestui principiu la algoritmi genetici presupune
modificarea funciei de adecvare. Pentru aceasta se folosete funcia

de partajare care definete faptul c doi indivizi ai populaiei i


mpart resursele. Deoarece cu ct indivizii sunt mai apropiai cu att
i impart mai mult resursele, nseamn c funcia de partajare trebuie
s fie descresctoare n raport cu distana dintre cromozomi.
O funcie de partajare p : R [0, 1] trebuie s verifice
condiiile:
1) p este descresctoare
2) p(0) = 1
3) lim p(d ) = 0 .
d

Un exemplu de astfel de funcie este

45
d
pentru d < a
1
p(d ) = a
0
pentru d a
unde a este diametrul niei, adic distana maxim dintre doi
cromozomi.
Distana dintre doi cromozomi se poate defini n mai multe
feluri:
distana euclidian, care realizeaz nie sferice
distana Hamming, care reprezint numrul poziiilor n care cei
doi cromozomi difer
distana Levenstein, care reprezint numrul de tergeri, adugri
sau modificri efectuate asupra elementelor unui ir pentru a-l face
identic cu cellalt.
Pentru fiecare individ xi din populaie se calculeaz valoarea
vi a niei corespunztoare lui:
vi = p (d (xi , x j ))
n

j =1

iar funcia de adecvare partajat se definete prin


f * ( xi ) =

f ( xi )
vi

unde n este dimensiunea populaiei iar f este funcia obiectiv.


Funcia de adecvare partajat favorizeaz meninerea punctelor
de optim care au puini reprezentani n populaie. Fie M mulimea
indivizilor unui astfel de punct; avem

46
d (xi , x j ) < a pentru xi , x j M i
d (xi , x k ) a pentru xi M , x k M
ceea ce implic p (d ( xi , x k )) = 0 pentru xi M , x k M .
Deoarece M

are puini indivizi, valoarea vi

a niei

corespunztoare individului xi M va fi mic n raport cu valorile


corespunztoare altor puncte de optim. Rezult c valorile funciei de
adecvare partajat f * vor fi mai mari pentru indivizii din M ceea ce
face ca n generaia urmtoare s se obin mai muli indivizi
corespunztori acestui optim.

3
METODE DE SELECIE
3.1. Introducere
Selecia are ca scop determinarea populaiei intermediare ce
conine prinii care vor fi supui operatorilor de ncruciare i mutaie
precum i determinarea indivizilor ce vor face parte din generaia
urmtoare. Criteriul de selecie se bazeaz pe gradul de adecvare al
indivizilor la mediu, exprimat prin valoarea funciei de adecvare. Nu
este obligatoriu ca att prinii ct i supravieuitorii s fie determinai
prin selecie, fiind posibil ca selecia s fie folosit ntr-o singur
etap.
Exist dou clase principale de metode de selecie [98]:

Metode deterministe. Acestea se caracterizeaz prin faptul c

elementele cu grad mai mare de adecvare sunt ntotdeauna selectate n


defavoarea celor cu un grad mai mic de adecvare. Un exemplu de
astfel de metod este selecia prin trunchiere.

Metode aleatoare. Acestea se caracterizeaz prin faptul c n

procesul de selecie intervin elemente aleatoare. Variantele cel mai

48
frecvent ntlnite se bazeaz pe stabilirea unor probabiliti de selecie
care depind de gradul de adecvare. n felul acesta elementele cu grad
mai mare de adecvare au anse mai mari de a fi selectate, astfel c
numrul de copii ale acestora este mai mare dect al celor cu grad mai
mic de adecvare. Metodele cele mai reprezentative sunt selecia
proporional, selecia pe baza rangurilor i selecia de tip turneu.
Calitatea seleciei este definit de o serie de parametri [98],
dintre care amintim
presiunea selectiv = probabilitatea celui mai bun individ de a fi
selectat, comparativ cu media probabilitii de selecie a tuturor
indivizilor
abaterea = diferena n valoare absolut dintre fitnessul normalizat
al individului i probabilitatea sa ateptat de reproducere
ntinderea = plaja de valori posibile pentru numrul de descendeni
ai individului
pierderea diversitii: proporia de indivizi din populaie care nu
sunt selectai

intensitatea seleciei: valoarea medie ateptat a fitnessului

populaiei dup aplicarea metodei de selecie la distribuia Gauss-ian


normalizat

variana seleciei: variana ateptat a distribuiei fitnessului

populaiei dup aplicarea metodei de selecie la distribuia Gauss-ian


normalizat.

49

3.2. Selecia dup rang


Indivizii sunt sortai descresctor dup valorile funciei
obiectiv, fitnessul atribuit fiecrui individ depinde numai de poziia sa
n ir i nu de valoarea funciei obiectiv. Fiecrui individ i se asociaz
probabilitatea de a fi selectat pi astfel nct

= 1 . Exist dou

tipuri standard de probabiliti [98]:


liniar: pi = a i + b , cu a < 0
exponenial: pi = a e bi +c .
Avantajele seleciei dup rang const n faptul c nu duce la
convergen prematur i nici la stagnare.
Fie notaiile:

Nind - numrul de indivizi din populaie


Pos - poziia unui individ n populaie (individul cel mai
neconvenabil are Pos=1, iar cel mai bun are Pos=Nind )

SP presiunea seleciei
Fitnessul unui individ se calculeaz astfel:

aranjarea liniar:

Fitness( Pos ) = 2 SP + 2( SP 1 )( Pos 1 ) /( Nind 1 )


Aranjarea liniar permite valori ale parametrului SP n intervalul

[1.0, 2.0] .
aranjarea neliniar:

50
Fitness( Pos ) = Nind x Pos 1 /

Nind

x i 1
i =1

unde x este rdcina ecuaiei


( SP 1 ) X Nind 1 + SP X Nind 2 + L +

SP X + SP = 0 .

Aranjarea neliniar permite valori ale lui SP din intervalul

[1.0, Nind 2] .
Probabilitatea unui individ de a fi selectat este dat de fitnessul su
normalizat prin fitnessul total al populaiei.

3.3. Metoda ruletei


Principiul ruletei reprezint cea mai simpl metod de selecie,
fiind un algoritm stochastic ce folosete urmtoarea tehnic:
indivizii sunt vzui ca segmente continuie pe o dreapt, astfel nct
fiecare segment asociat unui individ este egal cu fitnessul su;
se genereaz un numr aleator i individul al crui segment conine
numrul respectiv va fi selectat
se repet pasul anterior pn cnd este selectat numrul dorit de
indivizi.
Aceast tehnic este similar cu cea a ruletei, n care fiecare
segment este proporional cu fitnessul unui individ.

51
Exemplul 3.1. [98]Tabelul urmtor arat probabilitatea de

selecie pentru 11 indivizi, folosind aranjarea liniar i presiunea


selectiv 2.
Individul 1 este cel mai bun i ocup intervalul cel mai mare, n timp
ce individul 10 este penultimul n ir i ocup intervalul cel mai mic;
individul 11, ultimul din ir, avnd fitnessul 0 nu poate fi ales pentru
reproducere.
nr 4

nr 2

nr 6

nr 5

nr 1

nr 3

individ

Probabilitatea n acest tabel se calculeaz ca fiind raportul dintre


fitnessul unui individ i suma fitnessurilor tuturor indivizilor.

Numr
individ
Fitness
Probabilitate

10

2.0

1.8

1.6

1.4

1.2

0.8

0.6

0.4

0.2

0.18

0.16

0.15

0.13

0.11

0.09

0.07

0.06

0.03

0.02

selecie

Dorind s selectm 6 indivizi, se genereaz 6 numere aleatoare


uniform distribuite n intervalul (0, 1) . Fie acestea 0.81 , 0.32 , 0.96 ,
0.01 , 0.65 , 0.42 . Aeznd cei 10 indivizi pe o dreapt, n ordinea

52
1, 2, ... ,10, individul 1 va ocupa segmentul cuprins ntre 0.0 i 0.18,
individul 2 segmentul dintre 0.18 i 0.34, individul 3 segmentul dintre
0.34 i 0.49, etc.

Deoarece individul 6 corespunde segmentului

delimitat de 0.73 i 0.82 iar primul numr generat (= 0.81) cade n


acest segment, individul 6 va fi selectat pentru reproducere. n mod
similar se selecteaz indivizii 1, 2, 3, 5, 9; deci, populaia selectat
este format din indivizii 1, 2, 3, 5, 6, 9.

3.4. Metoda fitnessului proporionat


Este metoda cea mai des utilizat i funcioneaz astfel:
se calculeaz fitnessul f i al fiecrui individ i i fitnessul mediu al
populaiei
f =

individul i este selectat pentru reproducere cu probabilitatea


pi =

fi

fi

fi
.
n f

dac trebuie selectai N indivizi, numrul N i al indivizilor ce vor fi


selectai cu probabilitatea pi va fi apoximativ egal cu N pi .
Metoda fitnessului proporionat poate fi implementat cu ajutorul
algoritmului ruletei.

53
Exemplul 3.2. Fie n = 4 indivizi avnd f1 = f 2 = 10 , f 3 = 15

i f 4 = 25 . n practic, metoda ruletei poate fi implementat folosind


un vector v cu m componente i un index aleator r , urmnd ca
individul v(r ) s fie selectat la fiecare mturare. Lund m = 12 n
exemplul nostru, deoarece
p1 = p2 =

1
1
5
, p3 = , p 4 =
i N i = m pi ,
6
4
12

rezult v = (1 1 2 2 3 3 3 4 4 4 4 4) . Pentru r = 6 va fi selectat


individul v(6) = 3 .
La terminarea seleciei este posibil ca un individ s fie selectat
de mai multe ori (s aib mai multe copii). Dac se selecteaz un
numr de indivizi egal cu dimensiunea n a populaiei, deoarece
numrul ateptat de copii ale individului i este

N i = pi n =

fi
,
f

nseamn c indivizii pentru care f i > f tind s aib mai mult de o


copie. Un individ cu
f f i f max

va fi selectat ntr-o generaie timpurie iar ctre sfritul rulrii toi


indivizii tind s aib valori ale fitnessului relativ mari i similare,
adic f i f max

i . n acest moment
N1 L N n 1 ,

astfel c exist o presiune selectiv foarte mic.

54

3.5. Selecia stochastic universal


Acest tip de selecie furnizeaz abaterea zero i ntinderea
minim. Indivizii sunt vzui ca segmente aezate pe dreapt ca la
metoda ruletei. Pointeri, egal deprtai, sunt plasai pe aceast dreapt,
indicnd indivizii ce vor fi selectai. Dac N este numrul indivizilor
ce vor fi selectai, atunci distana dintre pointeri este

1
iar poziia
N

primului pointer este un numr generat aleator n intervalul [0 ,1 N ] .


De exemplu [98], pentru a selecta 6 indivizi, distana dintre pointeri
este 1/6=0.167. Considernd c numrul generat aleator n intervalul
[0, 0.167] este 0.1 i plasnd pointerii pe exemplul de la metoda
ruletei se obin urmtorii indivizi selectai: 1, 2, 3, 4, 6, 8 .
pointer 1

pointer 2 pointer 3 pointer 4 pointer 5 pointer 6

individ
numr aleator

3.6. Selecia trunchiat


Este o metod de selecie artificial utilizat de cresctorii de
animale pentru a efectua selecia la nivelul populaiilor de dimensiuni
mari. Indivizii sunt ordonai dup fitnessul lor i sunt selectai ca
prini cei mai buni. Parametrul folosit pentru selecie este pragul de

55
trunchiere Trunc. El indic proporia populaiei ce va fi selectat ca
prini i ia valori n intervalul 50% - 10%. Indivizii aflai sub pragul
de trunchiere nu vor produce descendeni. Intensitatea seleciei este un
termen utilizat frecvent n selecia trunchiat. Relaia dintre pragul de
trunchiere i intensitatea seleciei rezult din tabelul urmtor
Prag

1%

Intensitate 2.66

10%

20%

40%

50%

80%

1.76

1.2

0.97

0.8

0.34

3.7. Selecia de tip turneu


n acest tip de selecie, un numr de indivizi (Tur) este ales
aleator din populaie i, apoi, cel mai bun individ din acest grup este
selectat ca printe. Acest procedeu este repetat ori de cte ori trebuie
ales un nou individ. Parametrul Tur al seleciei d dimensiunea
turneului i ia valori din intervalul [2, Nind], unde Nind este numrul
de indivizi din populaie.
Tabelul urmtor [98] d relaia dintre dimeniunea turneului i
intensitatea seleciei.
dimensiunea
turneului

10

30

intensitatea
seleciei

0.56

0.85

1.15

1.53

2.04

56

3.8. Selecia local


n selecia local fiecare individ acioneaz n interiorul unui
mediu restrns numit vecintate local. Indivizii interacioneaz
numai n interiorul unei vecinti. Vecintatea este definit de
structura n care este distribuit populaia i poate fi vzut ca un grup
de poteniali parteneri de ncruciare. Indivizii se selecteaz folosind
una din metodele discutate anterior, apoi se definete vecintatea
local pentru fiecare individ. n interiorul vecintii se selecteaz un
singur individ: cel mai bun, aleator, etc.
Structura unei vecinti poate fi [98]

liniar: grup complet sau grup incomplet

vecintate liniar ( distana =2 )

grup complet

grup incomplet

57

bidimensional : cruce complet sau cruce incomplet


Vecintate bidimensional ( distana =1 )
cruce complet

cruce incomplet

tridimensional : stea complet sau stea incomplet


Vecintate tridimensional ( distana =1 )
stea complet

stea incomplet

58
Distana dintre vecini mpreun cu structura aferent determin

dimensiunea vecintii. Tabelul urmtor d exemplu de dimensiuni


ale vecintii pentru o structur dat, n funcie de valorile distanei
distana
structura
grup complet
grup incomplet
cruce complet
cruce incomplet
stea complet
stea incomplet

ntre indivizii unei populaii exist o izolare prin distan.


Totui, datorit suprapunerii vecintilor au loc schimburi de
informaii ntre toi indivizii. Dimensiunea vecintii determin viteza
de propagare a informaiei ntre indivizii unei populaii, trebuind ales
ntre propagarea rapid i meninerea unei diversiti crescute n
cadrul populaiei. O diversitate mare este adesea dorit, prevenindu-se
astfel probleme cum ar fi convergena prematur spre un minim local.
Selecia local ntr-o vecintate mic este mai performant
dect cea ntr-o vecintate mare. Vecintatea bidimensional cu
structur stea incomplet i distana 1 este recomandat n majoritatea
cazurilor. Dac populaia este mare (peste 100 indivizi) se recomand
o distan mai mare i o alt vecintate bidimensional.

59

3.9. Compararea metodelor de selecie


Numrul de generaii necesar asigurrii convergenei unui
algoritm genetic este invers proporional cu intensitatea seleciei i
direct proportional cu

n , unde n este dimensiunea funciei obiectiv.

Aceast cerin sugereaz o intensitate a seleciei mare, pentru a avea


o schem de selecie bun. Totui, o intensitate mare duce la o
convergen prematur i la o calitate slab a soluiei.
Numrul de generaii necesar atingerii convergenei, pentru
cteva scheme de selecie, este [98]:
selecia dup rang: GenConv Rang =

n
2(PresSel Rang 1)

selecia trunchiat: GenConvTtrunc =

n
2 IntSelTrunc

selecia turneu:
GenConvTur =

2 log(Tur ) log 4.14 log(Tur )

unde am folosit notaiile:


- GenConv = numrul de generaii care asigur convergena
- PresSel = presiunea seleciei
- IntSel = intensitatea seleciei.

4
OPERATORI GENETICI
4.1. ncruciarea
ncruciarea permite combinarea informaiilor provenite de la
doi sau mai muli prini pentru generarea unuia sau mai multor
urmai. ncruciarea depinde de modul de codificare a datelor,
aplicndu-se direct asupra cromozomilor [15, 16, 60, 98].

4.1.1. ncruciarea binar


Acest operator creaz descendeni prin combinarea unor pri
alternative ale prinilor.
4.1.1.1. ncruciarea simpl
Dac N este numrul poziiilor binare ale unui individ, poziia
de ncruciare k {1, 2 , L , N 1} este selectat uniform i aleator iar
valorile situate la dreapta acestui punct sunt schimbate ntre cei doi
indivizi, rezultnd doi descendeni.

62
prini

descendeni

Figura 4.1
Ca exemplu [98], considerm urmtorii prini, avnd 11 bii
fiecare, i poziia de ncruciare 5
p1:

01110011010

p2:

10101100101

Rezult descendenii :
d1:

0 1 1 1 0| 1 0 0 1 0 1

d2:

1 0 1 0 1| 0 1 1 0 1 0

4.1.1.2. ncruciarea multipl


n acest caz, se folosesc m > 1 puncte de ncruciare
k i {1, 2 , L , N 1} alese aleator, diferite ntre ele i sortate cresctor.
Valorile aflate ntre puncte de ncruciare consecutive sunt schimbate
ntre cei doi prini pentru a obine doi descendeni.

63
prini

descendeni

Figura 4.2
De exemplu [98], indivizii
p1:

01110011010

p2:

10101100101

cu 3 puncte de ncruciare date de poziiile : 2, 6, 10


genereaz descendenii
d1:

0 1| 1 0 1 1| 0 1 1 1| 1

d2:

1 0| 1 1 0 0| 0 0 1 0| 0

Ideea ncrucirii multiple este aceea c pri ale cromozomilor


care contribuie la mbuntirea performanei unui individ nu este
necesar s fie coninute n subiruri adiacente. Mai mult, ncruciarea
multipl pare s ncurajeze explorarea n spaiul de cutare mai
degrab, dect s favorizeze convergena rapid ctre indivizii de elit.
4.1.1.3. ncruciarea uniform
ncruciarea simpl sau multipl permite ca punctele de
ncruciare s fie plasate de la prima la penultima poziie a

64
cromozomului. ncruciarea uniform generalizeaz aceast schem
permind i ultimei poziii s fie punct de ncruciare.
O masc de ncruciare, de aceeai lungime cu a indivizilor
este creat aleator, iar paritatea biilor din masc indic printele care
va furniza descendentul corespunztor biilor respectivi.
Considerm prinii [98]
p1:

01110011010

p2:

10101100101

Descendentul 1 este obinut lund bitul din printele 1 dac bitul


corespunzator din masc este 1 i bitul din printele 2 dac bitul
corespunztor din masc este 0. Descendentul 2 este creat inversnd
masca. Considernd mtile
masca 1: 0 1 1 0 0 0 1 1 0 1 0
masca 2: 1 0 0 1 1 1 0 0 1 0 1
indivizii anteriori dau urmtorii descendeni:
d1:

11101111111

d2:

00110000000

Spears i De Jong [87] au emis ipoteza c ncruciarea


uniform poate fi parametrizat prin aplicarea unei probabiliti
interschimbrii biilor.

65
4.1.1.4. ncruciarea amestecat
Acest tip de ncruciare este similar celei simple: se selecteaz
o singur poziie de ncruciare, dar nainte ca valorile s fie
schimbate ntre ele sunt amestecate aleator n ambii prini.
4.1.1.5. Algoritmul de ncruciare
Fie P (t ) populaia curent i P s populaia aleas n urma
operaiei de selecie. Asupra indivizilor din P s se aplic operatorul de
ncruciare cu probabilitatea p c (indicele c provine de la termenul
crossover, folosit n limba englez pentru ncruciare ).
Algoritmul
P1. Pentru fiecare individ din P s :

[ ]

se genereaz un numr aleator q 0, 1


dac q < p c

atunci individul respectiv este reinut pentru

ncruciare; n caz contrar nu particip la aceast operaie.


P2. Fie m numrul indivizilor reinui la pasul P1.

m
perechi.
2
dac m este impar atunci, n mod aleator, se terge un individ
dac m este numr par, se formeaz aleator

selectat sau se adaug unul nou la P s , apoi se formeaz

66
perechile.
P3. Perechile formate anterior sunt supuse operaiei de ncruciare.
pentru fiecare pereche se

stabilesc aleator

ncruciare k i , 1 k i < l , unde

punctele de

este lungimea

unui

cromozom.
se execut ncruciarea pentru perechea curent, descendenii

devenind membri ai generaiei urmatoare P (t + 1) , iar prinii se

terg din P(t )


se adaug la P (t + 1) indivizii rmai n P (t ) .

Observaie

Probabilitatea de ncruciare are valori mici, de regul n


intervalul [0.2, 0.95]; p c = 0.3 nseamn c 30% din indivizi vor
suferi ncruciri.

4.1.2. ncruciarea real


4.1.2.1. ncruciarea discret

Acest operator efectueaz un schimb de valori ntre variabilele


prinilor i poate fi folosit cu orice tip de variabile (binare, reale sau
simboluri).
Considerm urmtorii prini [98]
p1:

12 25 5

67
p2:

123 4 34

Pentru fiecare variabil, printele care contribuie cu variabil la


generarea descendenilor, este ales aleator cu probabilitate egal; de
exemplu
alegere pentru descendentul 1:

2 2 1

alegere pentru descendentul 2: 1 2 1


Noii indivizi creai dup ncruciare sunt
d1: 123 4 5
d2:
n

figura

urmtoare

12

4 5

sunt

prezentate

poziiile

posibile

descendenilor dup ncruciarea discret :

descendent posibil
variabila 1

prini

variabila 2

Figura 4.3

ale

68

4.1.2.2. ncruciarea intermediar

Este o metod aplicabil numai variabilelor reale; n acest caz


valorile variabilelor descendenilor sunt alese n jurul i ntre valorile
corespunztoare ale prinilor [98].
Descendenii sunt generai dup regula:
descendent = printe1 + (printe 2 - printe1)
unde este un factor de scalare ales uniform i aleator n intervalul

[ d , 1 + d ] .

n ncruciarea intermediar simpl d = 0

iar n

ncruciarea intermediar extins d > 0 ; o alegere bun

este

d = 0.25

Fiecare variabil din descendent este rezultatul combinrii


variabilelor

corespunztoare

ale

prinilor

conform

formulei

anterioare, cu o nou valoare pentru fiecare variabil.


n figura urmtoare se prezint zonele n care iau valori prinii i
descendenii lor :
printe 2

printe 1
aria prinilor
zona posibil a descendeilor

Figura 4.4

69

Considerm urmtorii prini, cu trei variabile fiecare:


p1:

12 25 5

p2:

123 4 34

i urmtoarele valori ale lui corespunztoare celor doi descendeni:


exemplul 1: 0.5 1.1 - 0.1
exemplul 2: 0.1 0.8 0.5
Rezult urmtorii descendeni
d1:

67.5 1.9 2.1

d2:

23.1 8.2 19.5

ncruciarea intermediar este capabil s produc orice punct n


interiorul unui hipercub mai mare dect cel definit de prini, aa cum
arat figura urmtoare
zona descendentilor

posibil descendent
variabila 2
printe

variabila 1

Figura 4.5

70
4.1.2.3. ncruciarea liniar

ncruciarea liniar este similar celei intermediare, cu


deosebirea c o singur valoare a lui este utilizat pentru toate
variabilele. Considernd prinii [98]
p1:

12 25 5

p2:

123 4 34

i corespunztor celor doi descendeni dat de


exemplul 1: 0.5
exemplul 2: 0.1
rezult urmtorii descendeni
d1:

67.5 14.5 19.5

d2:

23.1 22.9

7.9

ncruciarea liniar poate genera orice punct aflat pe linia


definit de prini:

posibil descendent
variabila 2

printe
linia posibilului descendent
variabila 1

Figura 4.6

71

4.1.3. ncruciarea adiacent


Acest tip de ncruciare [60] este specific reprezentrii
adiacente, iar o problem tipic pentru care se utilizeaz este cea a
comis voiajorului.
4.1.3.1. ncruciarea prin muchii alternante

Acest tip de ncruciare construiete un descendent prin


alegerea aleatoare a unui nod (ora) din primul printe apoi selecteaz
nodul corespunztor din al doilea printe; adic, traseul se extinde prin
alegerea nodurilor n mod alternativ din cei doi prini. Dac un nod
nou introduce un ciclu n traseul curent, operatorul de ncruciare va
selecta n locul lui n mod aleator un nod dintre cele rmase i
care nu introduce cicluri. De exemplu, din prinii
p1:

2 3 8 7 9 4 1 5 6

p2:

7 5 1 6 9 2 8 4 3

care reprezint treseele


1 2 3 8 5 9 6 4 7

i respectiv
1 7 8 4 6 2 5 9 3

se obine descendentul

72
d1: 2 5 8 7 9 1 6 4 3
care reprezint traseul
1 2 5 9 3 8 4 7 6 .

Se procedeaz astfel: oraul 2 aflat pe poziia 1 n p1 se introduce n


d1 pe poziia 1. Pe poziia 2 n p2 se afl oraul 5, care va ocupa
poziia 2 n d1. Pe poziia 5 n p1 se afl oraul 9, care se introduce n
descendent pe poziia 5, i aa mai departe; n final se introduce
aleator muchia (7, 6 ) n loc de (7, 8) care ar fi introdus un ciclu
prematur.
4.1.3.2. ncruciarea prin subtrasee

Specificul acestei ncruciri const n faptul c genereaz un


descendent alegnd alternativ cte un subtraseu din fiecare printe;
lungimea fiecrui subtraseu este aleatoare. Frecvent se lucreaz cu
subtrasee de lungime 1, deci traseul se extinde prin alegerea
alternativ a muchiilor din cei doi prini. Dac ultima muchie
selectat introduce un ciclu prematur, se selecteaz n locul ei una
nou dintre cele rmase i care nu introduce cicluri.
4.1.3.3. ncruciarea euristic

Aceasta construiete un descendent prin alegerea aleatoare a


unui ora ca punct de start pentru traseul descendentului. Apoi

73
compar cele dou muchii (din cei doi prini) care pleac din acest
ora i selecteaz pe cea mai bun (scurt). Oraul de la cellalt capt
al muchiei selectate va deveni punct de start pentru selectarea
urmtoarei muchii. Dac la un anumit moment, o muchie nou
introduce un ciclu n traseul parial atunci aceasta se va nlocui cu alta
aleas aleator din cele rmase i care nu introduce cicluri.
n [49] se modific ncruciarea euristic astfel: dac cea mai
scurt muchie a unui printe introduce un ciclu n traseul
descendentului atunci se alege urmtoarea muchie mai scurt dintre
cele rmase; dac aceasta nu introduce cicluri se accept n vederea
extinderii traseului iar n caz contrar se selecteaz cea mai scurt
muchie dintre q muchii selectate aleator, unde q este un parametru al
metodei. Efectul acestui operator const n alipirea drumurilor
scurte din traseele prinilor. Totui, aceast metod poate duce la
ncruciri nedorite; de aceea, n [88] a fost introdus un operator
euristic suplimentar care acioneaz astfel:
selecteaz aleator dou muchii (i, j ) i (k, l )
dac
d (i, j ) + d (k , l ) > d (i, l ) + d (k , j )

atunci muchiile (i, j ) i (k, l ) se nlocuiesc cu muchiile (i, l ) i

(k, j ) .
Principalul dezavantaj al reprezentrii adiacente const n

74
faptul c rezultatele furnizate de operatori sunt relativ srace.
ncruciarea muchiilor alternante duce, adeseori, la distrugerea
traseelor bune. ncruciarea prin subtrasee este mai bun dect cea a
muchiilor alternante deoarece rata distrugerii este mai mic dar
performanele sunt nc slabe. Prin faptul c dintre dou muchii se
alege cea mai scurt, ncruciarea euristic este mai bun dect
celelalte dou. Totui, performanele sale nu sunt spectaculoase: n
trei experimente [41] cu 50, 100 i 200 de orae au fost gsite trasee
aflate la o distan mai mic de 25%, 16% i 27% de traseul optim,
dup un numr de 15.000, 20.000 i respectiv 25.000 generaii.

4.1.4. ncruciarea ordinal


Principalul avantaj al reprezentrii ordinale const n faptul c
permite ncruciarea clasic. Oricare doi prini pot fi ncruciai cu
orice punct de tietur i produc descendeni care reprezint trasee
legale [60].
De exemplu, prinii

p1:

1 1 2 1|4 1 3 1 1

p2:

5 1 5 5|5 3 3 2 1

care corespund traseelor

1 2 4 3 8 5 9 6 7
5 1 7 8 9 4 6 3 2

75
dau descendenii

d1: 1 1 2 1 5 3 3 2 1
d2: 5 1 5 5 4 1 3 1 1
care corespund traseelor

1 2 4 3 9 7 8 6 5
5 1 7 8 6 2 9 3 4
Se observ c traseele pariale situate la stnga punctului de
ncruciare (reprezentat prin bara vertical) nu se schimb n timp ce
traseele de la dreapta acestui punct sunt distruse ntr-un mod destul de
aleator.

Unele

rezultate

experimentale

([41])

au

artat

reprezentarea ordinal nu este prea indicat pentru problema comis


voiajorului. Rezultatele anterioare au fost obinute considerm lista
L = (1, 2, 3, 4, 5, 6, 7, 8, 9 ) .

4.1.5. ncruciarea prin drumuri


Trei tipuri de ncruciare sunt utilizate n cazul reprezentrii prin
drumuri [60]: parial aplicat (PMX), de ordine (OX) i ciclic (CX).
4.1.5.1. ncruciarea PMX

A fost propus de Goldberg i Lingle [37] i construiete un


descendent alegnd un subtraseu din unul dintre prini i pstrnd

76
ordinea i poziia a ct mai multe orae din cellalt printe. Subtraseul
este selectat prin alegerea a dou puncte aleatoare de taietur care
definesc frontierele operaiei de interschimbare. De exemplu, prinii

p1:

1 2 3 | 4 5 6 7 | 8 9

p2:

4 5 2 |1 8 7 6 | 9 3

vor produce descendeni n felul urmtor. Mai nti, poriunea


cuprins ntre cele dou puncte de tietur este schimbat ntre cei doi
prini, obinndu-se descendenii:

d1:

|1 8 7 6 |

d2:

| 4 5 6 7 |

n acelai timp, se obine aplicaia


1 4 , 8 5 , 7 6 i 6 7 .

Apoi, se copiaz n locurile libere din cei doi descendeni elementele


corespunztoare din prini, dac acestea nu genereaz conflicte;
rezult

d1:

2 3 |1 8 7 6 | 9

d2:

2 | 4 5 6 7 | 9 3

Primul din descendentul d1 (care ar trebui s fie 1, dar aceast


valoare este interzis deoarece ea exist deja n descendent) este

77
nlocuit cu 4, datorit aplicaiei 1 4 . n mod similar, al doilea din
descendentul d1 este nlocuit cu 5 iar caracterele din cellalt
descendent sunt nlocuite cu 1 i 8. n final rezult descendenii

d1:

4 2 3 |1 8 7 6 | 5 9

d2:

1 8 2 | 4 5 6 7 | 9 3

4.1.5.2. ncruciarea OX

A fost propus de Davis [12] i construiete un descendent


alegnd un subtraseu n unul dintre prini i pstrnd ordinea relativ
a oraelor din cellalt printe. De exemplu, prinii

p1:

1 2 3 | 4 5 6 7 | 8 9

p2:

4 5 2 |1 8 7 6 | 9 3

vor produce descendeni n felul urmtor. Mai nti, poriunile dintre


punctele de tietur sunt copiate n cei doi descendeni

d1:

| 4 5 6 7 |

d2:

|1 8 7 6 |

Apoi, pornind de la al doilea punct de tietur al unuia dintre prini se


copiaz oraele din cellalt printe, pstrnd ordinea i omind
oraele care sunt deja prezente; cnd se ajunge la sfritul traseului se

78
continu cu primul ora. irul oraelor din al doilea printe, ncepnd
cu al doilea punct de tietur, este
9 3 4

5 2 1 8

7 6;

Eliminnd oraele 4, 5, 6 i 7, care sunt deja prezente n primul


descendent, se obine

9 3 2 1 8
Aseast secven este plasat n primul descendent, ncepnd cu al
doilea punct de tietur, i rezult

d1:

2 1 8 | 4 5 6 7 | 9 3.

Similar se obine cellalt descendent:

d2:

3 4 5 | 1 8 7 6 | 9 2.

Pentru ncruciarea OX este important ordinea oraelor i nu poziia


lor n reprezentare.

4.1.5.3. Variante ale ncrucirii OX

Este posibil s se defineasc i ali operatori pentru


reprezentarea unui drum. Syswerda [89] a definit dou variante ale
ncrucirii de ordine. Prima modificare ( bazat pe ordine) selecteaz
aleator cteva poziii iar ordinea oraelor aflate n poziiile selectate n

79
unul din prini este impus oraelor corespunztoare din cellalt
printe. Ca exemplu, considerm prinii

p1:

1 2 3

4 5 6 7

p2:

4 1 2

8 7 6

8 9

9 3 5.

Presupunem c au fost selectate poziiile 3, 4, 6 i 9; oraele aflate pe


aceste poziii n printele p2 sunt 2, 8, 6 i 5. Primul descendent se
obine copiind elementele lui p1, cu excepia poziiilor 2, 5, 6 i 8:

d1:

1 3

4 7

9.

Elementele rmase libere se completeaz cu elementele din p2, n


ordinea stabilit anterior, adic 2, 8, 6, 5; n final rezult

d1:

1 2 3

4 8 6 7

5 9.

n mod similar se obine cellalt descendent:

d2:

3 1 2

8 7 4 6

9 5.

A doua modificare (ncruciarea bazat pe poziie) seamn i


mai mult cu ncruciarea de ordine original. Singura diferen const
n faptul c n locul unui subtraseu ce trebuie copiat n descendent se
selecteaz n mod aleator cteva orae.
Este interesant de observat c aceti doi operatori sunt, n
unele cazuri, echivaleni. Astfel, dac au ca puncte de ncruciare
mulimi complementare, ei vor produce acelai rezultat. nseamn c

80
dac numrul mediu al punctelor de ncruciare este

m
(unde m este
2

numrul oraelor), cei doi operatori vor avea aceleai performane.

4.1.5.4. ncruciarea CX

A fost propus de Oliver i colaboratorii si [67] i


construiete descendenii astfel nct fiecare ora (i poziia sa)
provine din unul din prini. S considerm prinii

p1:

1 2 3

4 5 6 7

p2:

4 1 2

8 7 6

8 9

9 3 5

Pentru a obine primul descendent se selecteaz primul ora din primul


printe:

d1:

Pe prima poziie din p2 este 4, ceea ce spune c se introduce n


descendent elementul aflat pe poziia 4 n primul printe; rezult

d1:

n continuare, valoarea 8 aflat pe poziia 4 n p2 determin


introducerea elementului aflat pe poziia 8 n p1:

d1:

81
Urmnd aceast regul se introduc oraele 3 i 2; dar oraul 2
determin selectarea lui 1 care este deja introdus n descendent. n
acest moment se ncheie ciclul de introducere de orae din p1:

d1:

1 2 3

Poziiile rmase libere se completeaz cu orae din cellalt printe,


obinndu-se

d1:

1 2 3

4 7 6 9

8 5.

n mod similar se construiete cellalt descendent

d2:

4 1 2

8 5 6 7

3 9.

4.1.6. ncruciarea prin muchii


Whitley, Starkweather i Fuquay [95] au dezvoltat un nou
operator de ncruciare: ncruciarea prin muchii (edge recombination
= ER), care exploreaz informaia despre muchiile unui traseu
transfernd peste 95% din muchiile prinilor ntr-un singur
descendent. Pentru traseul
3 1 2 8 7 4 6 9 5
definit de printele
(3, 1, 2, 8, 7, 4, 6, 9, 5),
muchiile sunt

82

(3 1) , (1 2) , (2 8) , (8 7 ) , (7 4) , (4 6) , (6 9) , (9 5)

i (5 3) .

Direcia dat de o muchie nu este important; de exemplu, muchiile

(3 1)

i (1 3) semnaleaz faptul c oraele 1 i 3 sunt conectate

direct.
Ideea metodei este de a utiliza pentru fiecare ora o list a
oraelor conectate cu el, aflate n cel puin unul din prini. Evident, o
list conine cel puin dou i cel mult patru orae. De exemplu,
pentru prinii

p1:

1 2 3

4 5 6 7

p2:

4 1 2

8 7 6

8 9

9 3 5

listele sunt urmtoarele


oraul 1: 9, 2, 4
oraul 2: 1, 3, 8
oraul 3: 2, 4, 9, 5
oraul 4: 3, 5, 1
oraul 5: 4, 6, 3
oraul 6: 5, 7, 9
oraul 7: 6, 8
oraul 8: 7, 9, 2
oraul 9: 8, 1, 6, 3.
Construirea unui descendent ncepe prin selectarea unui ora
iniial al unuia dintre prini; n [95] autorii selecteaz unul din oraele
aflate pe prima poziie ( 1 sau 4 n exemplul nostru). Se introduce n
descendent oraul care are mai puine muchii n lista asociat lui; dac

83
au acelai numr atunci se alege unul n mod aleator. Presupunem c
am selectat oraul 1; el este conectat cu 9, 2 i 4, aa c urmtorul
ora este selectat dintre acestea. Oraele 4 i 2 au trei muchii iar 9 are
4. Are loc o alegere aleatoare ntre 4 i 2; presupunem ca a fost
selectat 4. Candidatul pentru noul ora este ales dintre 3 i 5; este
selectat oraul 5 care are mai puine muchii n lista sa. Continund n
acest mod se obine descendentul

1 4 5

6 7 8

2 3 9,

compus n ntregime din muchii aflate n cei doi prini. O serie de


experimente [95] au scos n eviden faptul c o muchie ilegal apare
destul de rar (cu o rat de 1% pn la 1.5%).

4.1.7. ncruciarea matriceal


Acest tip de ncruciare (numit MX) a fost definit n [45],
folosete unu sau dou puncte de ncruciare i este folosit n cazul
reprezentrii cu un singur 1 pe fiecare linie i coloan. Dup operaia
de ncruciare propriu zis sunt necesari doi algoritmi de reparare:
unul pentru a terge duplicrile astfel nct fiecare linie i coloan
s conin un singur 1
iar cellalt pentru a lega ntre ele eventualele subtrasee i a produce
un traseu legal.

84
Urmtorul exemplu ilustreaz ncruciarea cu dou puncte. Cei
doi prini sunt dai de matricele

1 2 3 4 5 6 7 8 9

1 2 3 4 5 6 7 8 9

1 0 1 0 0 0 0 0 0 0

1 0 0 0 1 0 0 0 0 0

2 0 0 0 1 0 0 0 0 0

2 0 0 0 0 0 0 0 1 0

3 0 0 0 0 0 0 0 1 0

3 0 0 0 0 0 1 0 0 0

4 0 0 1 0 0 0 0 0 0

4 0 0 1 0 0 0 0 0 0

5 0 0 0 0 0 0 1 0 0

5 0 0 0 0 0 0 1 0 0

6 0 0 0 0 1 0 0 0 0

6 0 0 0 0 1 0 0 0 0

7 0 0 0 0 0 0 0 0 1

7 0 1 0 0 0 0 0 0 0

8 0 0 0 0 0 1 0 0 0

8 0 0 0 0 0 0 0 0 1

9 1 0 0 0 0 0 0 0 0

9 1 0 0 0 0 0 0 0 0

i reprezint traseele

(1

2 4 3 8 6 5 7 9)

(1

4 3 6 5 7 2 8 9) .

Alegem punctele de ncruciare ntre coloanele 2 i 3 i respectiv ntre


6 i 7. Prinii vor schimba ntre ei poriunile cuprinse ntre cele dou
puncte i rezult urmtorii descendeni intermediari:

85
1 2 3 4 5 6 7 8 9

1 2 3 4 5 6 7 8 9

1 0 1 0 1 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0

2 0 0 0 0 0 0 0 0 0

2 0 0 0 1 0 0 0 1 0

3 0 0 0 0 0 1 0 1 0

3 0 0 0 0 0 0 0 0 0

4 0 0 1 0 0 0 0 0 0

4 0 0 1 0 0 0 0 0 0

5 0 0 0 0 0 0 1 0 0

5 0 0 0 0 0 0 1 0 0

6 0 0 0 0 1 0 0 0 0

6 0 0 0 0 1 0 0 0 0

7 0 0 0 0 0 0 0 0 1

7 0 1 0 0 0 0 0 0 0

8 0 0 0 0 0 0 0 0 0

8 0 0 0 0 0 1 0 0 1

9 1 0 0 0 0 0 0 0 0

9 1 0 0 0 0 0 0 0 0

Ambii descendeni sunt ilegali, dei numrul total de 1-uri


din fiecare este corect. Primul pas al algoritmului de reparare mut
unele valori 1 astfel nct n fiecare linie i fiecare coloan s fie un
singur 1. Astfel:
pentru primul descendent: se mut 1 din poziia m14 n poziia

m84 iar 1 din m38 se mut n m28


pentru al doilea descendent: se mut 1 din m24 n m34 iar 1 din

m86 se mut n m16 .


Dup acest pas al algoritmului de reparare, primul descendent
reprezint traseul valid

(1

2 8 4 3 6 5 7 9)

iar al doilea descendent definete dou subtrasee:

86

(1

6 5 7 2 8 9 ) i (3 4 ) .

Al doilea pas al algoritmului de reparare se aplic numai celui


de-al doilea descendent. Pentru aceasta se selecteaz o muchie
existent n unul dintre prini i se utilizeaz pentru a face jonciunea
ntre cele dou subtrasee; fie aceasta (2 4 ) . Traseul legal pentru al
doilea descendent este:

(1

6 5 7 2 4 3 8 9) .

4.2. Mutaia
Mutaia este cel mai simplu operator genetic i const n
schimbarea aleatoare a unor valori ale cromozomului pentru a
introduce noi soluii. Scopul su este de a mpiedica pierderea
ireparabil a diversitii, evitnd, astfel, convergena prematur.
Diversitatea permite explorarea unor zone largi din spaiul de cutare.
Mutaia folosete ca parametru probabilitatea de mutaie p m , care ia
valori mici; de obicei n intervalul [0.001, 0.01] .

4.2.1. Mutaia binar


Dac n este dimensiunea populaiei iar l este lungimea unui
cromozom atunci numrul mediu de bii ce vor suferi mutaie este

87

N = n l p m . Mutaia binar poate fi implementat sub mai multe


forme [16].
4.2.1.1. Mutaia tare

Pentru fiecare poziie a fiecrui cromozom se execut paii:


P1: se genereaz un numr aleator q [0, 1]
P2: dac q < p m atunci se schimb poziia respectiv, n caz contrar

nu se efectueaz nimic.
4.2.1.2. Mutaia slab

Pentru fiecare poziie a fiecrui cromozom se execut paii:


P1: se genereaz un numr aleator q [0, 1]
P2: dac q < p m atunci se alege aleator una din valorile 0 sau 1 i se

atribuie poziiei curente, n caz contrar nu se efectueaz nimic.


4.2.1.3. Mutaia neuniform

Probabilitatea de mutaie depinde de generaie, descrescnd cu


indicele t al acesteia. Dac p 0 este probabilitatea de mutaie la prima
generaie iar 1 este un parametru real atunci probabilitatea de
mutaie la generaia t va fi

pm (t ) = p0 e t .

88
Bck i Schtz [10] au definit o nou probabilitate de mutaie:

pm (t ) =

1
l2 ,
2+
t
T

unde l este lungimea unui cromozom iar T este numrul maxim de


generaii.
4.2.1.4. Mutaia auto-adaptiv

Bck i Schtz [10] au definit un mecanism de auto-adaptare


pentru probabilitatea de mutaie pm . Ideea const n ncorporarea
parametrului de mutaie n genotipul indivizilor. Un genotip g are
forma g = ( x, pm ) , unde x = {0, 1}l este vectorul de cutare iar

p m [0, 1] .
Prin mutaie, genotipul

( x, p m )

se transform n

conform relaiilor
p'm =

1
1 p m N (0, 1)
1+
e
pm

xi
x 'i =
1 xi

unde

dac q p 'm
dac q < p 'm

(x' , p ' m )

89
N (0, 1) este o realizare a variabilei aleatoare de medie 0 i
dispersie 1
este rata de nvare; o valoare recomandat este = 0.2
xi este componenta vectorului x care este supus mutaiei
q [0, 1] este un numr aleator.
Schema anterioar poate fi generalizat prin alocarea pentru
fiecare variabil xi a unei probabiliti de mutaie proprie pi . n acest
caz genotipul este de forma

g = ( x, p )

cu

p = ( p1 , L, pl ) .

Probabilitatea de mutaie se modific dup regula


p' i =

1
1 pi Ni (0 ,1)
1+
e
pi

, i {1, 2 , L , l}.

4.2.1.5. Mutaia cromozomial

n aceast variant, mutaia are loc la nivelul a una sau mai


multe gene dintr-un singur cromozom. Se poate utiliza oricare din
variantele de mutaie prezentate anterior.

90

4.2.2. Mutaia real


Considerm cromozomi cu n gene exprimate prin numere reale,
pentru fiecare gen cunoscndu-se domeniul valorilor posibile.
4.2.2.1. Mutaia uniform

Acest tip de mutaie nlocuiete o singur gen a unui


cromozom selectat cu un numr real generat aleator n domeniul
parametrului reprezentat de acea gen [16]. Se consider c toate
genele au aceeai probabilitate de mutaie. Dac x = ( x1 , L , x n ) este
un cromozom printe, se alege aleator gena i ce va fi supus mutaiei
i se obine descendentul x' = ( x1 , L, x'i , L, x n ) , unde valoarea x'i
este aleas aleator din domeniul parametrului de pe poziia i .
O variant de mutaie uniform este cea care perturb toate
genele cromozomului. Aceast operaie se poate efectua n mai multe
moduri:
mutaia aditiv normal:
x'i = xi + i N (0, i ) , i {1, L , n}
unde i este un parametru real iar N (0, i ) reprezint un numr
aleator cu repartiia normal de medie 0 i dispersie i . De obicei se
lucreaz cu i = i i = , i {1, L , n} .
mutaia multiplicativ:

91
x'i = xi N (0, i ) , i {1, L , n}
mutaia multiplicativ lognormal:
x' = x e N (0 , i ) , i {1, L , n}
i

cu parametru real.

4.2.2.2. Mutaia neuniform

Prin aceast operaie, genele sufer modificri importante n


primele generaii i descresc treptat, pn la atenuare, n generaiile
urmtoare. Astfel se permite o explorare uniform a spaiului de
cutare n primele generaii i o cutare local, datorat variaiilor
mici, n ultimele generaii [16].
Creterea sau descreterea valorii unei gene este dat de un
parametru aleator p : p = 1 indic o cretere a valorii iar p = 1
indic o descretere. Amplitudinea schimbrii este dat de funcia
h : {0, 1, L , T } [0, 1)

cu proprietile
1) h este descresctoare
2) h(T ) = 0
unde T este numrul maxim de iteraii.
Un exemplu de astfel de funcie este

92

h(t )

t
1
= 1 r T

unde r este un parametru aleator din [0, 1] iar b 1 este un parametru


ce determin gradul de neuniformitate. n acest tip de mutaie gena i
se transform astfel:

x'i = xi + ( xmax xi ) h(t ) dac p = 1


x'i = xi ( xi xmin ) h(t ) dac p = 1
unde x max i xmin reprezint cea mai mare i respectiv cea mai mic
component a lui x .

4.2.2.3. Mutaia auto-adaptiv

Acest tip de mutaie este specific strategiilor evolutive i


lucreaz la nivelul unui genotip g = (x, ) , unde x este variabila
obiect (fenotipul) iar este vectorul parametrilor strategiei. Mutaia
de acest tip se poate efectua n mai multe feluri [16]:
parametrii strategiei se modific folosind metoda multiplicativ
lognormal

' i = i e aN (0 , 1) + bNi (0 , 1) ,
sau folosind metoda aditiv

'i = i + i N (0, i )

93
unde a , b i i sunt parametrii reali ai metodei
variabilele obiect se modific folosind metoda aditiv

x'i = xi + N (0, 'i ) .

4.2.3. Mutaia ntreag


Este similar mutaiei uniforme din cazul real i se poate
aplica astfel:
prin nlocuirea unei valori cu alta aflat n domeniul genei care
sufer mutaia
prin adugarea sau scderea la fiecare gen a unei valori mici,
fr a se depi domeniul de valori al genei respective.

4.2.4. Mutaia specific


n cazul reprezentrii specifice [ 60] mutaia nu mai poate
aciona independent asupra fiecrei gene. Cele mai cunoscute tipuri
de mutaie folosite n acest caz sunt:
mutaia prin schimbare, prin care se selecteaz aleator dou gene
ale cromozomului i se schimb ntre ele valorile; de exemplu,
plecnd de la cromozomul

(1

2 3 4 5 6 7 8 9)

94
i alegnd genele (poziiile) 3 i 7 rezult cromozomul

(1

2 7 4 5 6 3 8 9)

mutaia prin inserare: se aleg aleator dou gene i apoi una dintre
ele se insereaz lng cealalt; de exemplu, din

(1

2 3 4 5 6 7 8 9)

i poziiile 3 i 7 se obine

(1

2 3 7 4 5 6 8 9) .

mutaia prin amestec: se alege n mod aleator o poriune din


cromozom i se amestec valorile din aceast zona; de exemplu,
plecnd de la cromozomul

(1

2 3 4 5 6 7 8 9)

(1

2 5 3 6 4 7 8 9) .

se poate obine

mutaia prin inversiune: se aleg aleator dou poziii din cromozom


i se inverseaz valorile situate n zona

definit de acestea; de

exemplu, alegnd cromozomul

(1

2 3 4 5 6 7 8 9)

i poziiile 3 i 6 se obine

(1

2 6 5 4 3 7 8 9) .

95

4.3. Reinseria
Odat ce un nou descendent a fost obinut prin operaiile de
selectie, ncruciare i/sau mutaie trebuie decis dac el va face parte
sau nu din noua generaie; pentru aceasta se utilizeaz o schem de
reinserie. Metoda de selecie utilizat determin schema de inserie ce
va fi folosit: reinserie local pentru selecia local i reinserie

global n cazul tuturor celorlalte metode de selecie.

4.3.1. Reinseria global


Exist diferite scheme de reinserie global:
reinseria pur: se produce un numr de descendeni egal cu cel al
prinilor, ceea ce determin nlocuirea tuturor prinilor cu
descendenii lor
reinseria uniform: se produc mai puini descendeni dect prini
i se nlocuiesc unii prini uniform i aleator
reiseria elitist: se produc mai puini descendeni dect prini, iar
prinii mai puin performani sunt nlocuii de descendeni
reinseria bazat pe fitness: se produc mai muli descendeni dect
sunt necesari i se reinsereaz descendenii cei mai buni.
Reinseria pur este cea mai simpl metod, fiecare individ
trind o singur generaie. Combinarea ntre reinseria elitist i cea

96
bazat pe fitness previne pierderea de informaie i este metoda
recomandat. La fiecare generaie, un numr dintre prinii cei mai
neperformani sunt nlocuii cu descendenii cei mai buni. Schema de
inserie bazat pe fitness implementeaz selecia trunchiat ntre
descendeni, indivizii elititi putnd tri mai multe generaii. Totui, la
fiecare generaie sunt inserai civa indivizi noi. Deoarece prinii pot
fi nlocuii prin descendeni cu fitness mic, fitnessul mediu al
populaiei poate descrete. Totui, dac descendenii inserai sunt
extrem de neperformani ei vor fi nlocuii n generaiile urmtoare.

4.3.2. Reinseria local


n selecia local indivizii sunt cutai ntr-o vecintate
mrginit. Reinseria descendenilor are loc exact n aceeai vecintate
i, astfel, caracterul local al informaiei se pstreaz. Structurile de
vecintate sunt aceleai ca la selecia local. Pentru selectarea
prinilor ce vor fi nlocuii i a descendenilor de inserat sunt posibile
urmtoarele scheme:

se insereaz orice descendent i se nlocuiesc indivizii din

vecintate n mod uniform i aleator


se insereaz orice descendent i se nlocuiesc indivizii cei mai
neperformani din vecintate
se insereaz individul mai bun dect cel mai slab individ din
vecintate i se elimin individual cel mai slab

97

se insereaz descendentul mai bun dect individul cel mai

neperformant din vecintate i se nlocuiesc indivizii din vecintate


uniform i aleator

se insereaz indivizii mai buni dect prinii i se nlocuiesc

prinii.

5
FUNCIONAREA ALGORITMILOR
GENETICI

Pentru a rezolva o problem cu ajutorul algoritmilor genetici,


trebuie inut cont de urmtoarele observaii.
Problema trebuie transformat mai nti ntr-una de optimizare,
adic s se minimizeze sau s se maximizeze o valoare.
Algoritmii genetici sunt algoritmi euristici, adic soluia gsit
de ei nu este ntotdeauna cea mai bun, dar se afl ntr-o
vecintate a soluiei optime. Deci, dac avem de ales ntre un
algoritm polinomial care rezolv sigur problema i un algoritm
genetic, ar fi de preferat s folosim algoritmul polinomial.

Algoritmii genetici, de obicei, au complexitate polinomial. De

aceea ei sunt foarte des utilizai pentru a rezolva problemele


dificile (NP-complete). Rezultatele obinute sunt foarte apropiate de
cele furnizate de algoritmii siguri, dar care au rulat un timp foarte
mare.

100

Dac problema este complex se recomand un algoritm

genetic i nu o strategie evolutiv. De obicei mutaia este un


operator de cutare slab, deci, dac se folosete doar acesta,
exist anse mari s se obin soluii locale i nu globale.

5.1. Maximizarea unei funcii


Explicm funcionarea algoritmilor genetici pentru o problem
de maximizare deoarece minimizarea funciei f este echivalent cu
maximizarea funciei g = f . n plus, presupunem c funcia obiectiv

f ia valori pozitive, n caz contrar putndu-se aduna o constant


pozitiv C i maximizndu-se f + C .
Presupunem c se dorete maximizarea unei funcii de k
variabile
f : Rk R ;
fiecare variabil xi ia valori ntr-un domeniu
Di = [ai , bi ] R
i
f ( x1 , L , x k ) > 0 pentru xi Di .
Cernd o precizie de p zecimale pentru valorile variabilelor, fiecare
interval Di va trebui divizat n (bi ai ) 10 p subintervale egale. Fie li

cel mai mic ntreg astfel nct

(bi ai ) 10 p 2l

1 .

101
Atunci, o reprezentare a variabilei xi ca un ir binar de
lungime li va satisface precizia dorit. n plus, are loc formula

xi = ai + zecimal (string 2 )

bi ai
2li 1

unde zecimal (string 2 ) reprezint valoarea zecimal a irului binar


string .
Acum fiecare cromozom este reprezentat printr-un ir binar de
k

lungime l = li ; primii l1 bii reprezint o valoare din [a1 , b1 ] ,


i =1

urmtorii l 2 bii reprezint o valoare din [a 2 , b2 ] i aa mai departe.


Populaia iniial const din n cromozomi alei aleator. Totui dac
avem informaii despre optimul potenial, ele pot fi utilizate pentru a
genera populaia iniial. n continuare algoritmul funcioneaz astfel:

se evalueaz fiecare cromozom al fiecrei generaii, utiliznd

funcia f

se selecteaz noua populaie conform distribuiei de probabilitate

bazat pe fitness

se modific cromozomii din noua populaie prin operatori de

mutaie i ncruciare

dup un numr de generaii, cnd nu mai sunt observate

mbuntiri substaniale, cel mai bun cromozom este selectat ca

102
soluie optim; deseori algoritmul se oprete dup un numr finit de
iteraii.
Pentru procesul de selecie vom utiliza tehnica ruletei:

se calculeaz fitnessul eval (vi ) pentru fiecare cromozom

vi , i = 1, 2, L , n

se gsete fitnessul total


n

F = eval (vi )
i =1

se calculeaz probabilitatea de selecie

pi pentru fiecare

cromozom vi , i = 1, 2, L , n :
pi =

eval (vi )
F

se calculeaz probabilitatea cumulat qi pentru fiecare cromozom

vi , i = 1, 2, L , n :
qi =

pj
j =1

Procesul de selecie const n folosirea ruletei de n ori; de


fiecare dat se selecteaz un singur cromozom astfel:

se genereaz un numr aleator a [0, 1]

103

dac a < q1 , se selecteaz primul cromozom; altfel se selecteaz

cromozomul vi , 2 i n , astfel nct qi 1 < a qi .


Este evident c unii cromozomi vor fi selectai de mai multe
ori, cromozomii cei mai buni genernd mai multe copii.
Dup selecie se aplic operatorul de ncruciare. Folosind
probabilitatea de ncruciare pc se determin numrul pc n de
cromozomi supui ncrucirii. Se procedeaz astfel, pentru fiecare
cromozom din noua populaie:

se genereaz un numr aleator a [0, 1]


dac

a < pc , cromozomul curent se selecteaz pentru

ncruciare.
n continuare se mperecheaz aleator cromozomii i pentru
fiecare pereche se genereaz un numar aleator ntreg pos [1, l 1] , l
fiind lungimea unui cromozom iar pos este poziia de ncruciare.
Doi cromozomi
b1b2 Lb pos b pos +1 L bl

c1c 2 L c pos c pos +1 L cl


sunt nlocuii prin descendenii

b1b2 Lb pos c pos +1 L cl

104
i

c1c 2 L c pos b pos +1 Lbl .


Se aplic, apoi, operatorul de mutaie. Probabilitatea de mutaie p m d
numrul p m l n al biilor ce vor suferi mutaie. Pentru fiecare bit al
fiecrui cromozom au loc operaiile:

se genereaz un numr aleator a [0, 1]

dac a < p m , bitul va suferi mutaie.


n urma operaiilor de selecie, ncruciare i mutaie, noua

populaie este gata pentru urmtoarea evaluare.


Urmtorul exemplu [60] ne arat modul de funcionare.
Presupunem c vrem sa maximizm funcia
f ( x1 , x 2 ) = 21.5 + x1 sin (4x1 ) + x 2 sin (20x 2 )

unde
3.0 x1 12.1 i 4.1 x 2 5.8 .

Vom lucra cu o populaie de dimensiune n = 20 , cu probabilitatea de


ncruciare pc = 0.25 i probabilitatea de mutaie p m = 0.01 .
Cerem ca precizia s fie de patru zecimale pentru fiecare variabil.
Deoarece domeniul lui x1 are lungimea 15.1 , precizia cerut implic
divizarea intervalului [ 3.0, 12.1] n cel puin 15.1 10 4 subintervale
egale. nseamn c sunt necesari 18 bii pentru a reprezenta prima

105
parte a cromozomului: 217 < 151000 218 . Domeniul lui x 2 are
lungimea 1.7

iar precizia impus determin mprirea intervalului

[4.1, 5.8] n cel puin


partea

doua

214 < 17000 215 .

1.7 10 4 subintervale egale. nseamn c pentru


cromozomului
Lungimea

total

vor
a

fi

15

bii:

cromozom

este

utilizai

unui

l = 18 + 15 = 33 bii; Primii 18 bii codific pe x1 iar ultimii 15 pe

x2 .

Fie, de exemplu, cromozomul


010001001011010000111110010100010 .

Primii 18 bii
010001001011010000

reprezint pe
x1 = 3.0 + zecimal (010001001011010000 2 )

= 3.0 + 70352

12.1 ( 3.0)
218 1

15.1
= 3.0 + 4.052426 = 1.052426 .
262143

Urmtorii 15 bii
111110010100010

reprezint pe
x2 = 4.1 + zecimal (111110010100010 2 )

= 4.1 + 31906

5.8-4.1
215 -1

1.7
= 4.1 + 1.655330 = 5.75533.
32767

106
Astfel cromozomul
010001001011010000111110010100010

corespunde valorilor
( x1 , x 2 ) = (1.052426 , 5.755330) .

Valoarea fitnessului pentru acest cromozom este

f (1.052426, 5.755330) = 20.25264 .


Iniializm o populaie cu 20 de cromozomi i 33 de bii fiecare, alei
aleator, i obinem
v1 = (100110100000001111111010011011111)
v 2 = (111000100100110111001010100011010)

v3 = (000010000011001000001010111011101)
v 4 = (100011000101101001111000001110010)

v5 = (000111011001010011010111111000101)
v6 = (000101000010010101001010111111011)
v7 = (001000100000110101111011011111011)
v8 = (100001100001110100010110101100111)
v9 = (010000000101100010110000001111100)
v10 = (000001111000110000011010000111011)
v11 = (011001111110110101100001101111000)
v12 = (110100010111101101000101010000000)

107

v13 = (111011111010001000110000001000110)
v14 = (010010011000001010100111100101001)

v15 = (111011101101110000100011111011110)

v16 = (110011110000011111100001101001011)
v17 = (011010111111001111010001101111101)
v18 = (011101000000001110100111110101101)
v19 = (000101010011111111110000110001100)
v20 = (101110010110011110011000101111110)
Decodificnd fiecare cromozom i evalund fitnessul obinem:
eval (v1 ) = f (6.084492 , 5.652242) = 26.019600
eval (v 2 ) = f (10.348434 , 4.380264) = 7.580015

eval (v3 ) = f (-2.516603, 4.390381) = 19.526329


eval (v 4 ) = f (5.278638, 5.593460) = 17.406725

eval (v5 ) = f (-1.255173, 4.734458) = 25.341160


eval (v6 ) = f (-1.811725, 4.391937) = 18.100417
eval (v7 ) = f (-0.991471, 5.680258) = 16.020812
eval (v8 ) = f (4.910618, 4.703018) = 17.959701
eval (v9 ) = f (0.795406, 5.381472) = 16.127799
eval (v10 ) = f (-2.554851, 4.793707) = 21.278435

108
eval (v11 ) = f (3.130078, 4.996097) = 23.410669
eval (v12 ) = f (9.356179, 4.239457) = 15.011619

eval (v13 ) = f (11.134646, 5.378671) = 27.316702


eval (v14 ) = f (1.335944, 5.151378) = 19.876294

eval (v15 ) = f (11.089025, 5.054515) = 30.060205


eval (v16 ) = f (9.211598, 4.993762) = 23.867227
eval (v17 ) = f (3.367514, 4.571343) = 13.696165
eval (v18 ) = f (3.843020, 5.158226) = 15.414128
eval (v19 ) = f (-1.746635, 5.395584) = 20.095903
eval (v 20 ) = f (7.935998, 4.757338) = 13.666916
Se observ c cromozomul v15 este cel mai bun iar v 2 este cel
mai neperformant. Utilizm metoda ruletei pentru selecie. Fitnessul
total al populaiei este
20

F = eval (vi ) = 387.776822


i =1

Probabilitatea

de

selecie

pi

pentru

fiecare

cromozom

vi , i {1, 2, ..., 20} este:


p1 =

eval (v1 )
= 0.067099
F

p2 =

eval (v 2 )
= 0.019547
F

p3 =

eval (v3 )
= 0.050355
F

p4 =

eval (v 4 )
= 0.044889
F

109
p5 =

eval (v5 )
= 0.065350
F

p6 =

eval (v 6 )
= 0.046677
F

p7 =

eval (v7 )
= 0.041315
F

p8 =

eval (v8 )
= 0.046315
F

p9 =

eval (v9 )
= 0.041590
F

p10 =

eval (v10 )
= 0.054873
F

p11 =

eval (v11 )
= 0.060372
F

p12 =

eval (v12 )
= 0.038712
F

p13 =

eval (v13 )
= 0.070444
F

p14 =

eval (v14 )
= 0.051257
F

p15 =

eval (v15 )
= 0.077519
F

p16 =

eval (v16 )
= 0.061549
F

p17 =

eval (v17 )
= 0.035320
F

p18 =

eval (v18 )
= 0.039750
F

p19 =

eval (v19 )
= 0.051823
F

p 20 =

eval (v 20 )
= 0.035244
F

Probabilitile cumulate qi pentru fiecare cromozom sunt


q1 = 0.067090 ,

q 2 = 0.086647 ,

q3 = 0.137001 ,

q 4 = 0.181890 ,

q5 = 0.247240 ,

q 6 = 0.293917 ,

q 7 = 0.335232 ,

q8 = 0.381546 , q9 = 0.423137 ,

q10 = 0.478009 , q11 = 0.538381 , q12 = 0.577093 ,

110

q13 = 0.647537 , q14 = 0.698794 , q15 = 0.776314 ,


q16 = 0.837863 , q17 = 0.873182 , q18 = 0.912932 ,
q19 = 0.964756 , q 20 = 1.000000
Acum se poate aplica tehnica ruletei de 20 de ori, selectnd de
fiecare dat cte un cromozom. Presupunem c au fost generate
urmtoarele numere aleatoare din [0, 1] :
0.513870 , 0.175741 , 0.308652 , 0.534534 , 0.947628 ,
0.171736 , 0.702231 , 0.226431 , 0.494773 , 0.424720 ,
0.703899 , 0.389647 , 0.277226 , 0.368071 , 0.983437 ,
0.005398 , 0.765682 , 0.646473 , 0.767139 , 0.780237 .

Primul numr a = 0.513870 satisface relaia q10 < a < q11 , deci
cromozomul v11 este selectat pentru noua populaie. Pentru al doilea
numr

a = 0.175741

avem

q3 < a < q 4 ,

deci

se

selecteaz

cromozomul v 4 , etc.
n final, noua populaie va conine indivizii
v'1 = v11 , v' 2 = v 4 , v'3 = v7 ,

v' 4 = v11 , v'5 = v19 , v' 6 = v 4 , v' 7 = v15 ,

v'8 = v5 , v'9 = v11 , v'10 = v3 , v'11 = v15 , v'12 = v9 , v'13 = v6 , v'14 = v8 ,


v'15 = v 20 , v'16 = v1 , v'17 = v10 , v'18 = v13 , v'19 = v15 , v' 20 = v16 .

111
Acum putem aplica operatorul de ncruciare indivizilor din
noua populaie. Lum probabilitatea de ncruciare

pc = 0.25 .

Procedm astfel:
pentru fiecare cromozom din noua populaie, se genereaz un

numr aleator a [0, 1]


dac a < 0.25 , individul respectiv va fi selectat.

Presupunem ca au fost selectate urmtoarele secvene de


numere:
0.822951 , 0.151932 , 0.625477 , 0.314685 , 0.346901 ,
0.917204 , 0.519760 , 0.401154 , 0.606758 , 0.785402 ,
0.031523 , 0.869921 , 0.166525 , 0.674520 , 0.758400 ,

0.581893 , 0.389248 , 0.200232 , 0.355635 , 0.826927 .

nseamn

c,

pentru

ncruciare,

se

selecteaz

indivizii

v' 2 , v'11 , v'13 , v'18 . Indivizii selectai se mperecheaz aleator; de


exemplu (v' 2 , v'11 ) i (v'13 , v'18 ) . Pentru fiecare pereche se genereaz
numrul pos [1, 32], care indic poziia punctului de ncruciare.
Pentru prima pereche
v' 2 = (100011000 | 101101001111000001110010 )
v'11 = (111011101 | 101110000100011111011110 )

i pos = 9 rezult descendenii

112
v"2 = (100011000 | 101110000100011111011110 )
v"11 = (111011101 | 101101001111000001110010 )

A doua pereche de indivizi este

v'13 = (00010100001001010100 | 1010111111011)


v'18 = (11101111101000100011 | 0000001000110)
i pos = 20 . Ei vor fi nlocuii prin descendenii

v"13 = (00010100001001010100 | 0000001000110)


v"18 = (11101111101000100011 | 1010111111011)
Acum, populaia curent este:
v'1 , v"2 , v'3 , v' 4 , v'5 , v' 6 , v' 7 , v'8 , v'9 , v'10 , v"11 , v'12 ,

v"13 , v'14 , v'15 , v'16 , v'17 , v"18 , v'19 , v' 20 .


n continuare se aplic operatorul de mutaie cu probabilitatea

p m = 0.01 . Pentru fiecare bit se genereaz un numr aleator a [0, 1]


i dac a < 0.01 atunci el va suferi operaia de mutaie.
Generm l n = 33 20 = 660 numere aleatoare; dintre ele 5 sunt mai
mari dect 0.01 : aceste valori sunt prezentate n tabelul care urmrez.
Tabelul al doilea arat numrul individului i poziia bitului ce va
suferi operaia de mutaie.

113
Poziia bitului

numrul aleator

112

0.000213

349

0.009945

418

0.008809

429

0.005425

602

0.002836

poziie bit

nr. individ

Nr. bit n individ

112

13

349

11

19

418

13

22

429

13

33

602

19

Deci, patru cromozomi sunt afectai de operatorul de mutaie, unul


dintre ei avnd doi bii schimbai.
n final rezult urmtoarea populaie:
v1 = (011001111110110101100001101111000 )
v 2 = (100011000101110000100011111011110 )

v3 = (001000100000110101111011011111011)
v4 = (011001111110 | 0 | 10101100001101111000 )

114

v5 = (000101010011111111110000110001100)
v6 = (100011000101101001111000001110010)
v7 = (111011101101110000100011111011110)
v8 = (000111011001010011010111111000101)
v9 = 011001111110110101100001101111000
v10 = (000010000011001000001010111011101)
v11 = (111011101101101001 | 0 | 11000001110010 )
v12 = (010000000101100010110000001111100 )

v13 = (000101000010010101000 | 1 | 0000100011 | 1 |)


v14 = (100001100001110100010110101100111)

v15 = (101110010110011110011000101111110)
v16 = (100110100000001111111010011011111)
v17 = (000001111000110000011010000111011)
v18 = (111011111010001000111010111111011)
v19 = (11101110 | 0 | 101110000100011111011110)
v 20 = (110011110000011111100001101001011)
unde biii cuprini ntre linii verticale sunt cei care au rezultat n urma
mutaiei. S-a ncheiat o iteraie a algoritmului, putndu-se trece la
urmtoarea.

115

5.2. Problema comis voiajorului


Prezentm o nou aplicaie a algoritmilor genetici [101]:
Fiind dat o colecie de orae i costul trecerii ntre fiecare

pereche de orae, atunci, problema comis voiajorului este de a gsi


cel mai ieftin mod de a vizita toate oraele i de ntoarcere n oraul
de start.
Aceasta este o binecunoscut problem NP-complet, echivalent cu
gsirea, ntr-un graf, a unui circuit hamiltonian de cost minim.
O problem NP-complet nu poate fi rezolvat ntr-un timp rezonabil
dect prin folosirea unor algoritmi nedeterminiti. Exist, ns, riscul
de a gsi un minim local, apropiat mai mult sau mai puin ca valoare
de minimul global.
Specificul problemei comis voiajorului a dus la crearea unor
noi modaliti de reprezentare a cromozomilor i noi tipuri de
operatori genetici, aa cum s-a precizat anterior.
Reprezentarea problemei:

Funcia de evaluare:
Vom lua ca funcie de evaluare suma distanelor euclidiene dintre
dou orae consecutive:
N

Fitness = ( xi xi 1 )2 + ( y i y i 1 )2
i =1

Reprezentarea datelor:

116
O reprezentare a traseului este cea n care oraele sunt listate n
ordinea n care ele sunt vizitate; de exemplu

3, 0, 1, 4, 2, 5 sau 0, 5, 1, 4, 2, 3 .

Operatori genetici:

ncruciarea
ncruciarea tradiional nu este potrivit pentru problema
comis voiajorului deoarece descendenii pot s nu respecte restricia
de a se trece o singur dat prin fiecare ora. De exemplu, din prinii
1 2 3 4 5 0

2 0 5 3 1 4

lund poziia de ncruciare pos = 3 , rezult descendenii


1 2 3 3 1 4 i 2 0 5 4 5 0.

Vom folosi o ncruciare de tip euristic, inventat de Grefenstette n


1985 [38].
Fie doi prini
123450

413205

pentru a genera un descendent utiliznd al doilea printe ca ablon


selectm primul ora din ablon ca prim ora al descendentului i
obinem 4 x x x x x
apoi gsim muchiile care au ca prim extremitate oraul 4 n ambii
prini, comparm lungimile lor i reinem pe cea mai scurt: dintre

117
(4, 5) i (4, 1), presupunnd c oraul 4 este mai apropiat de 1, alegem
muchia

(4, 1) i selectm oraul 1 ca fiind urmtorul ora al

descendentului 1: 4 1 x x x x
gsim apoi muchiile ce pleac din oraul 1: acestea sunt (1, 2) i
(1, 3). Dac oraul 1 este mai apropiat de oraul 2 , selectm oraul 2
ca urmtorul ora al traseului: 4 1 2 x x x
din oraul 2 pleac muchiile (2, 3) i (2, 0). Dac distana dintre
oraul 2 i oraul 0 este mai scurt, selectm oraul 0: 4 1 2 0 x x
muchiile ce au ca prim extremitate oraul 0 sunt (0, 1) i (0, 5).
Deoarece oraul 1 apare deja n descendent, selectm oraul 5 ca ora
urmtor: 4 1 2 0 5 x
muchiile ce au ca prim extremitate oraul 5 sunt (5, 0) i (5, 4),
dar oraele 4 i 0 apar ambele n descendent. Selectm un ora
neselectat, care este oraul 3 i astfel producem un descendent legal: 4
12053

Utiliznd aceeai metod, generm cellalt descendent: 1 2 0 5 4 3

Mutaia
Din acelai motiv ca la ncruciare, nu putem utiliza mutaia
tradiional. De aceea vom folosi mutaia prin interschimbare:
selectm aleator doi bii dintr-un cromozom i le interschimbm
valorile. De exemplu, din 1 2 3 4 5 0

obinem

1 5 3 4 2 0.

118

Selecia
Cnd folosim metoda tradiional de selecie bazat pe
principiul ruletei, cel mai bun individ are cea mai mare probabilitate
de supravieuire, dar nu supravieuiete neaprat. De aceea, vom
utiliza selecia CHC [17] care ne asigur c cel mai bun individ va
supravieui ntotdeauna n noua generaie.

lungimea

modelul ruletei

generaii

Figura 5.1. Comparaie ntre selecia pe modelul ruletei i


selecia CHC

119
Procedeul este urmtorul:
dac dimensiunea populaiei este N, se genereaz N descendeni
folosind metoda ruletei

se sorteaz dup fitness mulimea format din prini i

descendeni

se aleg cei mai buni N

indivizi, care vor forma generaia

urmtoare.
Selecia CHC asigur o convergen mai rapid n comparaie
cu metoda ruletei. Pentru a preveni convergena la un optim local,
metoda se va modifica astfel: dup ce s-a ajuns la convergen, se
salveaz cei mai buni indivizi iniializnd aleator restul populaiei i
relund procesul.

5.3. Aplicaii n probleme de algebr


Ne vom ocupa de rezolvarea unei ecuaii diofantice [58]. O
ecuaie diofantic este o ecuaie cu mai multe necunoscute, coeficieni
ntregi

soluie

ntreag.

lum

ca

exemplu

ecuaia

x + 2 y + 3 z + 4t = 30 . Se poate obine soluia prin ncercarea tuturor


valorilor x, y, z , t ce satisfac restricia 1 x , y , z , t 30 . Algoritmii
genetici permit ca soluia s fie obinut mai rapid, deoarece soluiile
mai bune au anse mai mari de supravieuire i reproducere, n

120
opoziie cu parcurgerea tuturor soluiilor posibile i testarea validitii
fiecreia.
Vom lucra cu o populaie de 5 indivizi ce satisfac restricia
precizat anterior:
individul1: v1 = (1, 28, 15, 3)
individul2: v 2 = (14, 9, 2, 4 )
individul3:

v3 = (13, 5, 3, 3)

individul4: v 4 = (23, 8, 16, 19 )


individul5:

v5 = (9, 13, 5, 2)

Fiind dat cromozomul v = (a, b, c, d ) definim fitnessul su ca


fiind
eval (v ) =

1
a + 2b + 3c + 4d 30

i obinem
eval (v1 ) =

1
1
=
= 0.011904
114 30 84

eval (v 2 ) =
eval (v3 ) =

1
1
=
= 0.041666
54 30 24

1
1
=
= 0.038461
56 30 26

121
eval (v 4 ) =

1
1
=
= 0.007518
163 30 133

eval (v5 ) =

1
1
=
= 0.035714 .
58 30 28

Fitnessul total al populaiei este


5

F = eval (vi ) = 0.135266


i =1

iar probabilitile de selecie asociate fiecrui individ sunt:


p1 =

eval (v1 )
= 0.088 ,
F

p3 =

eval (v3 )
= 0.284 ,
F
p5 =

p2 =

eval (v 2 )
= 0.308 ,
F

p4 =

eval (v 4 )
= 0.056 ,
F

eval (v5 )
= 0.264 .
F

Folosind metoda ruletei selectm urmtoarele cinci perechi de


indivizi:

(3, 1) , (5, 2) , (3, 5) , (2, 5) , (5, 3) .


ncrucim cei doi prini ai fiecrei perechi i, pentru a
menine dimensiunea populaiei, reinem doar unul din cei doi
descendeni. De exemplu, plecnd de la prinii

(a1 | b1, c1, d1) i (a2 | b2, c2, d2)

122
i lund punctul de ncruciare n poziia precizat de bara vertical,
reinem descendentul

(a1 | b2, c2, d2) .


Astfel obinem:

prinii

(13 | 5, 7, 3)

(1 | 28, 15, 3)

dau

descendentul

(13, 28, 15, 3)


prinii (9, 13| 5, 2 ) i (14, 9 | 2, 4 ) dau descendentul (9, 13, 2, 4 )
prinii (13, 5, 7 | 3) i (9, 13, 5 | 2 ) dau descendentul (13, 5, 7, 2 )
prinii (14 | 9, 2, 4 ) i (9 | 13, 5, 2 ) dau descendentul (14, 13, 5, 2 )
prinii (13, 5 | 7, 3) i (9, 13 | 5, 2 ) dau descendentul (13, 5, 5, 2 )
Nu mai folosim mutaia, aa c descendenii obinui formeaz
noua populaie; aceasta va fi supus n continuare acelorai prelucrri.
Algoritmul se termin la gsirea unei soluii, ecuaia avnd mai multe.
De exemplu, (7, 4, 1, 3) i (2, 6, 0, 4 ) sunt soluii ale ecuaiei din
exemplul nostru.

5.4. Orarul unei coli


Problema orarului este una dintre cele mai cunoscute probleme
de algoritmic, pn n prezent necunoscndu-se nici un algoritm
eficient pentru rezolvarea ei. Formularea ei este urmtoarea:

123

Se d matricea ncadrrilor, preciznd pentru fiecare profesor


numrul de ore la fiecare clas. Cerina principal este aceea de a se
obine un orar, adic o repartizare a profesorilor la clase, pentru
fiecare dintre zilele sptmnii i, n cadrul fiecrei zile, pentru
fiecare or, astfel nct ntr-o aceeai or (dintr-o anumit zi a
sptmnii) fiecare profesor s intre la cel mult una din clasele
asociate lui prin matricea de ncadrare i la fiecare clas s intre cel
mult cte unul din profesorii asociai clasei.
Vom considera urmtoarele date de intrare:
NrC : numrul de clase din coal;
NrO : numrul maxim de ore pe zi ale unui elev;
NrZ : numrul de zile n care sunt ore;
NrP : numrul de profesori;
matricea ncadrrilor: ncadrarea profesorilor este dat printr-o
matrice A cu NrP linii i NrC coloane. Profesorii vor fi codificai cu
numere i {1, 2, L , NrP}, iar clasele cu numere j {1, 2 ,L , NrC} ;
elevii din clasele 9-10 nva dup-amiaza, iar cei din clasele 1112 dimineaa.
Exemplu

NrC = 40 ; 40 de clase - acestea ar putea fi clasele 9A, ..., 9J, 10A,


..., 10J, 11A, ..., 11J, 12A, ..., 12J;
NrO = 6 (ase ore pe zi);
NrZ = 5 (cinci zile pe sptmn);

124
NrP = 80 (80 de profesori - se pstreaz i o list cu numele lor:
Aldea, Andrei, ..., Voicu);
Un exemplu de informaie coninut de o linie a matricei
ncadrrilor este: profesorul Aldea are: 5 ore la 10B, 4 ore la 11A, 3
ore la 12 C, 3 ore la 12D, 3 ore la 12E.
Orarul de funcionare se poate modela printr-o matrice cu NrP
linii i 2 NrO NrZ

coloane. Indicele liniei reprezint codul

profesorului, iar indicele coloanei reprezint un anumit moment de


timp (zi i or). Un element al acestei matrice va fi codul unei clase. O
linie a matricei va indica programul pe zile al unui profesor, iar o
coloan va indica profesorii ce au ore la momentul respectiv.
Condiiile pe care trebuie s la ndeplineasc un orar sunt
urmtoarele:
trebuie s fie conform cu ncadrarea (linia de orar trebuie s
exprime exact ncadrarea profesorului);
la un anumit moment de timp (zi i or), la o anumit clas trebuie
s predea cel mult un profesor;
un profesor nu poate preda simultan la mai multe clase;
elevii nu vor avea ferestre (ore libere ntre dou ore la care li se
pred).
Vom numi un astfel de orar ca fiind un orar valid. Pe lng
cele patru condiii absolut necesare ar fi de dorit ca profesorii s aib
un numr ct mai mic de ferestre, iar elevii s aib cel mult dou ore
la aceeai disciplin n aceeai zi. Un orar valid cu numr mic de

125
ferestre pentru profesori va fi numit un orar bun. Vom prezenta o
posibilitate de ntocmire a orarului folosind algoritmi genetici [91].
Pentru nceput va trebui s gsim un orar valid de pornire.
Vom prefera o variant de generare aleatoare a unui asemenea orar de
pornire. Pentru fiecare linie se utilizeaz un algoritm de generare a
unui aranjament aleator de ore conform cu matricea ncadrrilor.
Dup generarea orarului de pornire, acesta trebuie optimizat n
raport cu numrul de ferestre. Un orar valid poate fi considerat ca
fiind o matrice B cu NrP linii i 2 NrO NrZ coloane. Pentru
exemplul considerat vor fi 80 de linii i 60 de coloane; 30 dintre
coloane vor reprezenta ore de diminea iar celelalte 30 ore de dupamiaz. Un element al acestei matrice va fi codul unei clase (de la 1 la
NrC ) sau valoarea 0 dac pe linia profesorului p , la timpul t nu este

planificat desfurarea unei ore.


O linie a matricei B va fi considerat cromozom. Pentru
exemplul ales, lungimea cromozomului este 60. O gen va putea lua
valori cuprinse ntre 0 i NrC . Vor putea fi 41 de valori distincte
pentru gene. Dimensiunea populaiei este egal cu NrP . n cazul
acestui exemplu, valoarea este 80.
Ca operator de evoluie se folosete mutaia ncruciat. Fie
profesorii p1 i p 2 care la timpii t1 i t 2 au ore la clasele c1 i c 2 ;
cu alte cuvinte avem B( p1, t1) = B( p 2, t 2) = c1 i B( p1, t 2) = B( p 2 , t1) = c 2 ;
cromozomii corespunztori liniilor p1 i p 2 se vor ncrucia
interschimbnd genele de pe poziiile t1 i t 2 ; operaia poate fi
reprezentat grafic astfel:

126

Observm c prin astfel de mutaii se pstreaz validitatea


orarelor. Este greu de gsit un tip de mutaie simpl care s conserve
proprietatea unui orar de a fi valid . Funcia de minimizat este funcia
care calculeaz numrul de ferestre ale unui profesor. Aceast funcie
se poate eventual pondera, n sensul ca o fereastr de dou ore s fie
echivalent, de exemplu, cu trei ferestre de cte o or.
Construirea unui orar bun va nsemna optimizarea prin
algoritmul genetic a unui orar valid de pornire. Optimizarea are ca
scop reducerea numrului de ferestre ale profesorilor.
n cele ce urmeaz vom prezenta cteva modificri care ar
putea fi aduse algoritmului prezentat. Fie P0 , P1 , P2 ......, irul de orare
generate de algoritm. Pg va reprezenta populaia din generaia g . O
posibilitate de optimizare implic introducerea a nc doi parametri
ntregi pozitivi p i . Fie g generaia curent. n cadrul buclei
repetitive se vor executa urmtoarele operaii:
salvarea populaiei corespunztoare generaiei curente Pg ;

127
generarea a noi populaii conform algoritmului prezentat; noile
orare vor fi identificate prin Pg +1 , Pg + 2 , L , Pg + ;
pstrarea celei mai valoaroase generaii, care va deveni generaia

Pg +1 ;
creterea numrului de generaii: g g + 1 .
O a doua posibilitate de optimizare implic introducerea
parametrului ntreg i a unui parametru S care este un ir
descresctor de numere naturale care conine Ne elemente. n cadrul
buclei repetitive se vor executa urmtoarele operaii:
salvarea populaiei corespunztoare generaiei curente Pg ;
generarea a noi populaii conform algoritmului prezentat; noile
orare vor fi identificate prin Pg +1 , Pg + 2 , L , Pg + ;
repetarea pasului anterior pn cnd numrul total de ferestre scade
sub valoarea S (g ) ; populaia corespunztoare devine generaia Pg +1
creterea numrului de generaii: g g + 1 .

5.4. O problem de proiectare


Considerm o cutie de conserve cilindric, cu doi parametri:
diametrul d i nlimea h (evident, pot fi considerai i ali
parametri, cum ar fi grosimea, proprieti ale materialului,
forma, e t c . , dar sunt suficieni doar cei doi parametri pentru a
ilustra modul de lucru) [42].

128
S considerm c aceast conserv trebuie s aib un volum
de cel puin 300 ml i obiectivul este de a minimiza costul
materialului folosit la fabricarea conservei. Putem formula
problema astfel: s se minimizeze valoarea funciei

d 2
f (d , h ) = c
+ dh

2
unde c reprezint costul materialului conservei pe cm 2 , iar
expresia din parantez reprezint suprafaa conservei. Mai trebuie
ndeplinit i condiia ca volumul cutiei s fie cel puin 300 ml:

g (d , h ) =

d 2 h
4

300 ,

cu parametrii d i h variind ntre anumite limite:

d min d d max i hmin h hmax .


Reprezentarea soluiei
Vom folosi reprezentarea binar, utiliznd cte 5 bii pentru a
reprezenta fiecare din parametrii

d i h . De exemplu, irul

reprezint o conserv cu diametrul de 8 cm

0100001010

(corespunztor

primilor

bii)

nlimea

de

10

cm

(corespunztoare ultimilor 5 bii). n aceste condiii,

d min = hmin = 0 i d max = hmax = 31 .


Lungimea unui cromozom fiind 10, exist 210 soluii posibile ale

129
problemei.

Funcia fitness
Funcia de optimizat va fi f , unde vom lua = 3.14 i c = 0.0654 .
Pentru valorile parametrilor d i h din exemplul anterior , costul
cutiei este de 23 de uniti. Scopul problemei este de a minimiza
costul. O soluie trebuie s satisfac cerina impus de funcia g ; cele
care ncalc aceast restricie vor fi penalizate ca n exemplul
urmtor. Considerm o populaie de 6 indivizi avnd evalurile
23, 26, 30, 24, 11, 9;
cutiile corespunztoare ultimelor dou valori nu satisfac restricia
impus de funcia g , de aceea vor fi penalizate astfel nct s devin
mai puin promitoare dect oricare dintre soluiile acceptabile. Dup
penalizare noile evaluri sunt:
23, 26, 30, 24, 11+28, 9+35.
Selecia
Folosim selecia de tip turneu cu mrimea turneului egal cu 2:

se aleg aleator doi cromozomi,


se calculeaz performanele lor,
se selecteaz cel mai bun, introducndu-se n populaia
intermediar.
De exemplu,

dintre cromozomii cu evalurile 23 i 30 se selecteaz cel cu

130
evaluarea 23

dintre cromozomii cu evalurile 26 i 11+28 se selecteaz cel cu


evaluarea 26

dintre cromozomii cu evalurile 24 i 9+35 se selecteaz cel cu


evaluarea 24

dintre cromozomii cu evalurile 24 i 26 se selecteaz cel cu


evaluarea 24

dintre cromozomii cu evalurile 11+28 i 23 se selecteaz cel cu


evaluarea 23

dintre cromozomii cu evalurile 9+35 i 30 se selecteaz cel cu


evaluarea 30.
Se observ c soluiile cele mai promitoare au mai multe copii n
populaia intermediar.
Operatori de evoluie
Vom folosi ncruciarea cu un singur punct de tietur. De exemplu,
considernd punctul de ncruciare n poziia 3, din cromozomii ce
definesc cutiile cu

fitness = 23, h = 8, d = 10
i respectiv

fitness = 26 , h = 14, d = 6
vor rezulta descendenii cu

fitness = 22 , h = 10, d = 6
i respectiv

fitness = 38, h = 12, d = 10 :

131
010 M 0001010
011M1000110

010 M1000110
011M 0001010

Se folosete mutaia tare: de exemplu, din soluia cu fitnessul 22 prin


mutaia bitului din poziia 4 se obine o soluie cu fitnessul 16.

6
SCHEME I BLOCURI

O problem important n studiul algoritmilor genetici este


legat de similitudinile care exist ntre diferii cromozomi ai unei
populaii. Mai precis, ne intereseaz n ce msur un cromozom este
reprezentativ pentru o clas de cromozomi, la nivelul poziiilor
genelor.

6.1. Scheme: definiie, proprieti


O schem este un ablon care descrie o submulime de
cromozomi avnd asemnri n anumite poziii. Schema se obine
prin introducerea caracterului (cu semnificaia indiferent, nu tiu
care, etc.) n alfabetul general, obinnd astfel o cale compact de a
analiza similitudinile bine definite ntre cromozomi. Vom considera,
n continuare, c lucrm cu alfabetul binar {0, 1} i cu cromozomi de
lungime m ; atunci, un cromozom este un element al spaiului {0 ,1}m
iar schema este un element al spaiului {0 ,1, }m .

134
Un cromozom este o instan a unei scheme dac fiecrei
poziii din cromozom diferit de i corespunde o poziie din schem
avnd aceeai valoare. De exemplu, schema 0 1 definete 8
cromozomi. n general, pentru un alfabet de cardinalitate k exist

(k + 1)m

scheme, m fiind lungimea cromozomului. De asemenea, un

cromozom de lungime m aparine la 2 m scheme diferite, deoarece


fiecare poziie a sa poate lua fie valoarea curent fie simbolul .
Unui ir de lungime m i corespund 3m scheme posibile iar
ntr-o populaie de dimensiune n pot fi reprezentate ntre 2 m i n 2 m
scheme diferite. n acest fel, populaii cu dimensiune moderat aduc o
informaie important cu privire la similitudinile semnificative dintre
indivizi.
Dac m este lungimea cromozomilor, acetia pot fi privii ca
puncte ntr-un spaiu de cutare de dimensiune m ; cu alte cuvinte sunt
vrfurile unui hipercub, vrfurile vecine fiind reprezentate prin iruri
ce difer printr-un bit. Ca exemplu s considerm cromozomi de
lungime 3 (Figura 6.1). Planul din fa conine toate punctele ce ncep
cu 0 , irul 000

reprezentnd originea. Acest plan poate fi

reprezentat prin schema 0 ; deci o schem corespunde unui


hiperplan n spaiul de cutare.
Trecerea la un hipercub de dimensiune mai mare se face [93]
ca n Figura 6.2, unde este ilustrat un spaiu 4-dimensional reprezentat
ca un cub atrnnd n interiorul altui cub.

135

110

111

011

010

101

100

000

001

Figura 6.1

0110

0111

1111

1110

0010

0011
1010

1011
1100

1101
1001

1000

0101

0100
0001

0000

Figura 6.2

136
Etichetarea punctelor se face astfel: punctele cubului interior i
punctele cubului exterior se reprezint ca n cazul 3-dimensional apoi
punem 1 n faa fiecrui ir din cubul interior i 0 n faa fiecrui ir

din cubul exterior. n felul acesta, dou iruri adiacente difer printrun bit. Cubul interior aparine schemei 1 , n timp ce cubul
exterior corespunde schemei 0 . Este uor de vzut c 0
corespunde planului din fa al fiecrui cub iar schema 10
corespunde planului din fa al cubului interior.
Un ir de bii aparine unei scheme particulare dac poate fi
obinut din aceasta prin nlocuirea semnului cu bii corespunztori.
Fiecare ir binar este un cromozom ce aparine unui vrf al
hipercubului. Un ir binar aparine la 2 m 1 hiperplane diferite, unde
m este lungimea cromozomilor; irul cu toate simbolurile

corespunde ntregului spaiu i nu se consider hiperplan. Cum fiecare


poziie din cele m poate conine un bit sau caracterul , nseamn c
sunt 3 m 1 hiperplane pe ntreg spaiul de cutare.
Faptul c un ir aparine la 2 m 1 hiperplane nu aduce foarte
mult informaie dac fiecare punct este examinat izolat. Acesta este
motivul pentru care noiunea de cutare bazat pe populaie este
esenial n algoritmi genetici.
Vom folosi urmtoarele notaii:
(S ) = ordinul schemei S , adic numrul poziiilor fixate; deci
ocupate cu 0 sau 1 . De exemplu, pentru schemele

137
S1 = ( 001 110 )
S 2 = ( 00 0 )

S 3 = (11101 001)

avem (S1 ) = 6, (S 2 ) = 3, (S 3 ) = 8 ; deci S 3 este cea mai specific.


O schem de ordin reprezint 2 m iruri diferite.
(S ) = lungimea schemei S i reprezint distana dintre prima i
ultima poziie fixate. Pe exemplul anterior avem:

(S1 ) = 10 4 = 6 , (S 2 ) = 9 5 = 4 i (S 3 ) = 10 1 = 9 .
O schem cu o singur poziie fixat are lungimea 0 . Lungimea unei
scheme este o msur a numrului de puncte de ncruciare aflate n
poriunea semnificativ a schemei. Dac se folosete ncruciarea
simpl, atunci

(S )
m 1

este o msur a probabilitii ca punctul de

ncruciare s aparin poriunii semnificative a schemei.


O populaie cu n cromozomi de lungime m conine ntre 2 m

i min n 2 m , 3 m

scheme, astfel c algoritmii genetici opereaz

implicit pe un numr de scheme mult mai mare dect dimensiunea


populaiei (proprietate numit paralelism intrinsec). De exemplu,
pentru m = 6 i n = 20 numrul de scheme este cuprins ntre 64 i 729
iar pentru m = 100 i n = 300 va fi ntre 1.267650 10 30 i
3.802951 10 32 .

138

6.2. Teorema schemei


Simularea procesului de evoluie ntr-un algoritm genetic
const n repetarea a patru pai:
t := t + 1

selecteaz P (t ) din P(t 1)


recombin P (t )
evalueaz P (t )
Principalul fenomen din procesul de evoluie apare n paii de
selecie i recombinare; de aceea discutm efectul lor [60].
Considerm o populaie de dimensiune PopSize = 20 i lungimea
unui individ m = 33 . Considerm c populaia curent (la iteraia t )
const din urmtorii indivizi
v1 = (100110100000001111111010011011111)
v2 = (111000100100110111001010100011010 )

v3 = (000010000011001000001010111011101)
v4 = (100011000101101001111000001110010 )

v5 = (000111011001010011010111111000101)
v6 = (000101000010010101001010111111011)

139
v7 = (001000100000110101111011011111011)
v8 = (100001100001110100010110101100111)
v9 = (010000000101100010110000001111100)
v10 = (000001111000110000011010000111011)
v11 = (011001111110110101100001101111000 )
v12 = (110100010111101101000101010000000 )

v13 = (111011111010001000110000001000110)
v14 = (010010011000001010100111100101001)

v15 = (111011101101110000100011111011110)
v16 = (110011110000011111100001101001011)
v17 = (011010111111001111010001101111101)
v18 = (011101000000001110100111110101101)
v19 = (000101010011111111110000110001100)
v20 = (101110010110011110011000101111110)
Notm cu (S, t ) numrul indivizilor din populaie care se potrivesc
cu schema S la momentul t . De exemplu, pentru schema
S 0 = ( 111 )

140

(S 0 , t ) = 3 deoarece v13 , v15 i v16 se potrivesc cu schema S 0 .


O alt proprietate a schemei este evaluarea la momentul t ,
eval (S , t ) , definit ca fiind media evalurilor indivizilor din populaie

care se potrivesc cu schema S . Dac p indivizi vi1 ,L, vi p

} se

potrivesc cu schema S la momentul t atunci

eval (v
p

eval (S , t ) =

j =1

ij

)
.

n timpul seleciei este creat o nou populaie, fiecare individ


fiind copiat de 0, 1 sau mai multe ori, n funcie de evaluarea sa.
Notnd cu F (t ) evaluarea ntregii populaii la momentul t ,
PopSize

F (t ) = eval (vi ) ,
i =1

probabilitatea ca individul vi s fie selectat este


pi =

eval (vi )
.
F (t )

Deoarece
probabilitatea de selectare a indivizilor care se potrivesc cu schema
S este

eval (S , t )
F (t )

141
numrul indivizilor ce se potrivesc cu schema S la momentul t
este (S, t )
numrul indivizilor selectai este PopSize
rezult c numrul indivizilor care se potrivesc cu schema S la
momentul t + 1 este

(S , t + 1) =

(S , t ) PopSize eval (S , t )
F (t )

innd seama c evaluarea medie a populaiei este


F (t ) =

F (t )
,
PopSize

formula anterioar devine

(S , t + 1) =

(S , t ) eval (S , t )
F (t )

adic numrul indivizilor care se potrivesc cu schema la momentul


t + 1 crete n funcie de raportul dintre evaluarea schemei i evaluarea

medie al populaiei. nseamn c o schema deasupra mediei duce la


creterea numrului de indivizi iar una sub medie determin
scderea numrului lor. Presupunnd c schema rmne deasupra
mediei cu %, adic

eval (S , t ) = F (t ) + F (t ) ,
atunci

(S , t ) = (S ,0 )(1 + ) t ,

142
adic schema aflat deasupra mediei duce chiar la o cretere
exponenial a numrului de indivizi care se potrivesc cu ea n
generaiile urmtoare.
Pentru a explica teorema schemei, considerm exemplul de
funcionare a algoritmilor genetici prezentat n capitolul anterior.
ntorcndu-ne la schema S 0 , deoarece trei iruri se potrivesc cu
schema, avem
eval (S 0 , t ) =

27.316702 + 30.060205 + 23.867227


= 27.081378
3

iar evaluarea medie al ntregii populaii este


20

F (t ) =

eval (v )
i =1

PopSize

387.776822
= 19.388841 .
20

Raportul dintre evaluarea schemei S 0 i evaluarea medie a populaiei


este
eval ( S 0 , t )
= 1.396751
F (t )
adic schema S 0 este deasupra mediei.
La momentul t + 1 vor fi 3 1.396751 = 4.19 iruri ce se potrivesc
cu S 0 (adic, probabil 4 sau 5) iar la momentul t + 2 vor fi
3 1.3967512 = 5.85 iruri (deci, foarte probabil 6).
Simulnd procesul de selecie, rezult urmtoarea populaie

143
v'1 = v11 ,

v'2 = v4 , v'3 = v7 , v'4 = v11 , v'5 = v19 , v'6 = v4 v'7 = v15 ,

v'8 = v5 , v'9 = v11 v'10 = v3 , v'11 = v15 , v'12 = v9 , v'13 = v6 , v'14 = v8 ,


v'15 = v20 v'16 = v1 , v'17 = v10 , v'18 = v13 , v'19 = v15 , v'20 = v16 .
ntr-adevar, n noua populaie exist 5 iruri : v'7 , v'11 , v'18 , v'19 i
v'20 , care se potrivesc cu schema S 0 .
Totusi, selecia singur nu introduce iruri noi n populaie,
determinnd doar copierea unor iruri pentru a forma populaia
intermediar. Sarcina introducerii de iruri noi revine recombinrii,
prin operatorii de ncruciare i mutaie. Pentru a analiza ncruciarea
considerm schemele
S 0 = ( 111 )
S1 = (111 10 )

Presupunnd c irul v'18 a fost ales pentru ncruciare cu poziia

pos = 20 , schema S 0 va supravieui ncrucirii deoarece unul din


descendeni va conine secvena 111 . irurile
v'18 = (11101111101000100011|0000001000110 )
v'13 = (00010100001001010100 |1010111111011)
vor produce descendenii
v"18 = (11101111101000100011| 1010111111011)

144
v"13 = (00010100001001010100 | 0000001000110) .
Pe de alt parte, schema S1 va fi distrus deoarece secvenele
fixate 111 i 10 vor fi plasate n descendeni diferii. Rolul
principal n distrugerea sau supravieuirea unei scheme l are lungimea
de definire; (S 0 ) = 2 iar (S1 ) = 32 . n general, punctul de
ncruciare este selectat uniform i aleator dintre cele m 1 poziii.
Rezult c probabilitatea de distrugere a schemei S este
pd (S ) =

(S )
m 1

iar probabilitatea de supravieuire este


p s (S ) = 1

(S )
m 1

Pe exemplul anterior avem


p d (S 0 ) =

32
2
30
, p s (S 0 ) =
, p d (S1 ) =
= 1 , p s (S1 ) = 0 ,
32
32
32

rezultate ce corespund cu predicia.


Deoarece numai unii indivizi vor fi supui ncrucirii, dac
pc este probabilitatea de ncruciare, rezult c probabilitatea ca
schema s supravieuiasc este de fapt
p s (S ) = 1 pc

(S )
m 1

145
Pentru schema S 0 i pc = 0.25 avem
p s (S 0 ) = 1 0.25

2 63
=
= 0.984375 .
32 64

Chiar dac punctul de ncruciare este selectat ntre poziiile


fixate ale schemei, este posibil ca schema s supravieuiasc. De
exemplu, dac ambele iruri v'18 i v'13 ncep cu 111 i se termin
cu 10, atunci schema S1 va supravieui ncrucirii. Rezult c
formula care d probabilitatea de supravieuire a unei scheme trebuie
modificat n
p s (S ) 1 pc

(S )
m 1

Combinnd efectele seleciei i ncrucirii rezult formula

(S , t + 1) (S , t )

(S )
eval (S , t )
1 p c

m 1
F (t )

Pentru schema S 0 avem


eval (S 0 , t )
(S )
1 p c
= 1.396751 0.984375 = 1.374927
m 1
F (t )

i deci
la generaia t + 1 ne ateptm s avem 3 1.374927 = 4.12 iruri
ce se vor potrivi cu S 0 ; se obine, deci, o valoare mai mic dect 4.19
cnd se consider numai selecia.

146
la generaia t + 2 avem 3 1.374927 2 = 5.67 iruri ce se vor potrivi
cu S 0 ; se obine o valoare mai mic dect 5.85 .
Urmtorul operator considerat este mutaia. Considerm
schema S 0 i irul
v'19 = (111011101101110000100011111011110) .
Se observ c orice mutaie care afecteaz biii 1 4 sau 8 33
permite supravieuirea schemei S 0 , n timp ce orice mutaie pe unul
din biii 5, 6 sau 7 va distruge schema. Biii care duc la distrugerea
schemei sunt cei importani iar numrul lor coincide cu ordinul
schemei. Probabilitatea de alterare a unui bit fiind pm , rezult c
probabilitatea de supravieuire a unui bit este 1 pm ; deci
probabilitatea de supravieuire a schemei este
p s (S ) = (1 pm ) (S ) .
Deoarece pm 1 , probabilitatea poate fi aproximat prin
p s (S ) 1 (S ) pm .
Referindu-ne la schema S 0 i lund pm = 0.01 obinem
p s (S 0 ) 1 3 0.01 = 0.97
Combinnd efectele seleciei, ncrucirii i mutaiei rezult

147

(S , t + 1) (S , t )

eval (S , t )
(S )

(S ) p m ,
1 p c
m 1
F (t )

relaie ce constituie teorema schemei.


Pentru schema S 0 avem
eval (S 0 , t )
(S )

(S 0 ) p m = 1.396751 0.954375 = 1.333024


1 p c
m 1
F (t )

i deci
la generaia t + 1 ne ateptm ca 3 1.333024 4 iruri s se
potriveasc cu S 0 , adic nu mai mult de 4.19 ct au rezultat
considernd numai selecia i nu mai mult de 4.12 ct au rezultat prin
folosirea seleciei i a ncrucirii
la generaia t + 2 vom avea 3 1.333024 2 5.33 astfel de iruri,
deci nu mai mult de 5.85 respectiv 5.67
Observaie. Formula stabilit funcioneaz n cazul cnd

funcia de optimizat f ia numai valori positive.


Relaiile de mai sus ne permit s formulm
Teorema schemei. Schemele de ordin mic, lungime de

definiie mic i fitness peste media populaiei sunt reprezentate n


generaiile successive de un numr crescnd de cromozomi; creterea

148
este exponeniat dac fitnessul schemei este constant peste media
populaiei.
Teorema schemei pune un mare accent pe rolul ncrucirii n
selecia hiperplanelor. Pentru a maximiza pstrarea hiperplanelor dup
selecie este necesar s se micoreze efectul distructiv al ncrucirii i
mutaiei. Pentru aceasta trebuie ca mutaia s fie folosit puin sau de
loc. Dup cteva generaii este posibil ca selecia s conduc la fixarea
unei singure valori pentru o anumit poziie: fie 0 fie 1 ; aceasta duce
la convergena prematur, situaie ntlnit frecvent cnd se lucreaz
cu populaii de dimensiune mic.
Fr mutaie este imposibil s se reintroduc valoarea pierdut
a bitului; mutaia acioneaz ca un operator de reamintire, permind
recuperarea unor valori pierdute.

O alt problem legat de

convergena prematur este necesitatea scalrii fitnessului populaiei.


Cnd evaluarea medie a irurilor crete, dispersia n fitness scade.
ntre cel mai bun i cel mai slab individ din populaie poate fi o
diferen mic dup cteva generaii iar presiunea seleciei bazat pe
fitness va fi corespunztor redus. n acest caz se calculeaz valoarea
medie a irurilor i fitnessul, folosind evaluarea ajustat, crescnd
presiunea seleciei. Alternativ, se poate folosi selecia dup rang.

6.3. Blocuri
O categorie special de scheme sunt blocurile. Acestea sunt
scheme cu valori mari ale evalurii, ordin mic i lungime de definire

149
redus. Ipoteza blocurilor afirm c ncruciarea orienteaz cutarea
ctre gsirea blocurilor (soluii pariale) pe care le combin n soluii
globale mai bune. Totui, ipoteza blocurilor poate fi violat. S
considerm schemele
S1 = (111 )
S 2 = ( 11)

situate deasupra mediei i s presupunem c schema


S 3 = (111 11)
rezultat prin ncruciare este mai puin potrivit dect
S 4 = (000 00) .

Dac irul optim este


v0 = (11111111111) ,
care se potrivete cu S 3 , un algoritm genetic va avea dificulti n a
converge ctre v0 deoarece va tinde s gseasc irul

(00011111100) .
Acest fenomen poart numele de decepie i este strns legat
de cel numit epistasis care, n termenii algoritmilor genetici, nseamn
o interaciune puternic ntre genele unui cromozom. O posibilitate de
a nltura decepia const n folosirea altui operator genetic:
inversiunea, care va inversa biii dintre dou poziii selectate aleator.

150
De exemplu, schema
S 3 = (111 11)
poate fi regrupat prin inversiune n
S'3 = (11111 ) ,
care reprezint un bloc important.

7
VARIANTE DE ALGORITMI
GENETICI
7.1. Probleme de convergen
Studiul convergenei algoritmilor genetici este una din cele
mai dificile probleme. De aceea s-au ncercat diferite metode de
soluionare a ei. Pentru a evalua a priori viteza de convergen i
precizia unui algoritm genetic s-au introdus mrimi care s msoare
omogenitatea spaiului de cutare i corelaia fitness-distan.
n ambele cazuri se consider c funcia fitness coincide cu cea de
evaluare.
a) Omogenitatea spaiului de cutare
Dificultatea funciei de optimizat este reflectat de deviaia
standard s care arat modul n care este acoperit spaiul soluiilor
admisibile

s=

2
1 n
f ( xi ) f ( x )

n i =1

f (x )

152
unde
n

f(x)=

f ( xi )

i =1

iar n este dimensiunea populaiei.


Studiile empirice asupra mrimii lui s au artat c o funcie
pentru care s are o valoare apropiat de s 0 = 0.1 este uor de
optimizat prin algoritmi genetici.
Valoarea s se calculeaz o singur dat, de obicei naintea
rulrii programului, pe o populaie generat aleator. Pentru valori ale
lui s mult mai mari sau mai mici dect s 0 sunt necesare tehnici de
scdere sau de mrire a presiunii de selecie.
b) Corelaia fitness-distan
Jones i Forrest [50] au propus o alt mrime pentru predicia
comportrii unui algoritm genetic: corelaia dintre valoarea funciei
fitness i distana dintre cromozom i soluia optimal.
Dezavantajul metodei const n faptul c nu se cunoate soluia
optimal. Pentru a depi acest impas, Schoenauer a propus s se
utilizeze ca optim cromozomul cel mai bun din generaia respectiv.
Fie F = { f 1 , f 2 , L , f n } mulimea valorilor fitness pentru populaia
curent i D = {d1 , d 2 , L , d n } mulimea distanelor de la fiecare
cromozom la cel mai bun din generaia respectiv. Pentru iruri de bii

153
este uor de lucrat cu distana Hamming care numr biii pe care
difer cele dou iruri. Corelaia fitness-distan se definete prin
r=

c FD
sF sD

unde

c FD =

)(

1 n
fi f di d
n i =1

este covariana F D , s F i s D sunt deviaiile standard iar f i d


sunt mediile lui F i respectiv D . Mrimea r msoar dificultatea
rezolvrii unei probleme de maximizare: o valoare a lui r apropiat
de 1 (valoarea minim) indic o problem uor de rezolvat folosind
algoritmi genetici iar o valoare apropiat de + 1 indic o problem
foarte dificil. Semnificaiile lui r sunt inversate pentru probleme de
minimizare. Toate studiile experimentale au confirmat aceste ipoteze.
Diveri autori au studiat problema convergenei algoritmilor
genetici din diverse perspective. Majoritatea au utilizat lanuri Markov
finite, alii au definit probabilitatea de convergen.
O alt abordare posibil const n folosirea tehnicilor de punct
fix. Primul pas n aceast direcie a fost fcut de Szalas i
Michalewicz [90] care au demonstrat matematic o idee intuitiv a
convergenei: singura cerin este o mbuntire a populaiei, fr s
fie necesar o mbuntire a celui mai bun individ.
Dei teoria algoritmilor genetici ofer explicaii cu privire la
atingerea optimului cutat, aplicaiile practice nu urmeaz ntotdeauna
teoria datorit urmtoarelor motive:

154
codificarea problemei determin algoritmul s lucreze ntr-un

spaiu diferit de cel al problemei;


exist limite cu privire la numrul iteraiilor i dimensiunea

populaiei.
Una din implicaiile observaiilor de mai sus este incapacitatea
algoritmilor genetici de a gsi, n anumite condiii, soluia optim,
ducnd la convergen prematur. Exist unele metode de a combate
convergena prematur: utilizarea ncrucirii uniforme, detectarea
indivizilor duplicai din populaie.
Un rol important n determinarea vitezei de convergen l are
diversitatea populaiei, care depinde de metoda de selecie. Este
recomandat selecia dup rang n detrimentul celei dup fitness care
promoveaz superelitele.

7.2. Algoritmul genetic modificat


Rudolph [72] a demonstrat c algoritmul clasic nu converge
niciodat la soluia optim, dar versiunea modificat, care menine cea
mai bun soluie n populaie, face acest lucru.
Algoritmul genetic modificat (modGA) se obine din cel
clasic, prin modificarea pasului de selecie.
algoritmul modGA
begin
t := 0

iniializeaz P (t )

155
evalueaz P (t )
while not (condiie-terminare) do
begin
t := t + 1

selecteaz prinii din P (t 1)


selecteaz indivizii ce vor fi eliminai din P (t 1)
formeaz P(t ) prin reproducerea prinilor
evalueaz P(t )
end
end

n cei doi pai de selecie se selecteaz r cromozomi (nu


neaprat distinci) pentru a fi reprodui i r cromozomi distinci care
vor fi eliminai. Metoda de selecie este cea a fitnessului relativ. Noua
populaie P (t + 1) va consta din adugarea la P (t ) , n locul indivizilor
eliminai, a r descendeni rezultai din cei r prini.
Se procedeaz astfel:
Pasul 1. Se selecteaz r prini din P (t ) . Fiecare individ selectat

este marcat ca aplicabil la exact o operaie genetic.


Pasul 2. Se selecteaz N r indivizi distinci din P (t ) i se copiaz

n P (t + 1) , unde N este dimensiunea populaiei.

156
Pasul 3. Cei r prini selectai dau natere la r descendeni care vor

fi inclui n P (t + 1) .
Selectarea din paii 1 i 2 se face dup fitness; astfel, un
individ deasupra mediei are anse mari de a fi selectat ca printe i n
acelai timp de a face parte din noua populaie. Pentru a aplica un
tratament uniform tuturor operatorilor genetici, nu vom aplica doi
operatori asupra aceluiai cromozom.

7.3. Algoritmul hillclimbing


Spaiul de cutare este format din cromozomi de lungime L .
Exist mai multe versiuni ale algoritmului hillclimbing, care difer
ntre ele prin modul de selectare a unui nou individ. O versiune a
acestui algoritm (pentru o problem de maximizare), folosind iteraia
MAX, este urmtoarea [60]:
algoritmul hillclimbing
begin
t := 0

iniializeaz P (t )
repeat

local:= FALSE
selecteaz aleator un individ curent ic
evalueaz ic

157
repeat

genereaz L descendeni ai lui ic prin mutaia unui bit n ic


selecteaz dintre descendeni individul in care are cea mai
mare valoare a funciei obiectiv
if f (ic ) < f (in )
then ic := in
else local:= TRUE
until local
t := t + 1

until t = MAX
end

Iniial toi cei L descendeni sunt luai n consideraie, dar


numai in este selectat pentru a concura cu ic . Dac f (ic ) < f (in )
atunci noul individ ia locul celui curent. Altfel nu este posibil o
mbuntire local: algoritmul i atinge optimul (local sau global),
adic local := TRUE . n acest caz se trece la iteraia urmtoare pentru
a selecta aleator un nou individ.
Succesul sau eecul algoritmului depinde de cromozomul de
start. Justificm aceast afirmaie pe exemplul urmtor. Spaiul de
cutare este format din cromozomi de lungime 30 iar funcia ce
urmeaz a fi maximizat este
f (v ) = 11 unu (v ) 150 ,

unde funcia unu( v ) ntoarce numrul de cifre 1 ce apar n vectorul


v ataat unui cromozom. De exemplu, urmtoarele 3 iruri

158
v1 = (110110101110101111111011011011)
v 2 = (111000100100110111001010100011)

v3 = (000010000011001000000010001000)
vor avea evalurile
f (v1 ) = 11 22 150 = 92

(unu (v1 ) = 22)

f (v 2 ) = 11 15 150 = 15

(unu (v2 ) = 15)

f (v3 ) = 11 6 150 = 84

(unu (v3 ) = 6)

Funcia are un maxim global pentru


v g = (111111111111111111111111111111)

egal cu

( )

f v g = 11 30 150 = 180

i un maxim local pentru


vl = (000000000000000000000000000000)

egal cu
f (vl ) = 11 0 150 = 150 .

Dac cromozomul iniial are cel mult 13 de 1 atunci


algoritmul se termin prin gsirea unui maxim local, deoarece:

dac sunt 13 de 1, valoarea funciei obiectiv este 7

dac se crete numrul de 1-uri la 14 atunci valoarea funciei

obiectiv descrete la 4

un cromozom cu 12 de 1 d valoarea 18 iar unul cu 11 d

valoarea 29, etc.


Deci, trecnd de la o iteraie la alta cu pai mici se merge ntr-o
direcie greit, ctre un maxim local.

159

7.4. Algoritmul clire simulat


Structura acestui algoritm este urmtoarea [60]:
algoritmul clire simulat
begin
t := 0

iniializeaz P (t )
iniializeaz temperatura T
selecteaz aleator un individ curent ic
evalueaz ic
repeat
repeat

selecteaz un nou individ in prin mutaia unui bit n ic


if f (ic ) < f (in )
then ic := in

f (i ) f (ic )
else if random[0, 1) < exp n

then ic := in
until (condiie-terminare)
T := g (T , t )
t := t + 1

until (criteriu de oprire)


end

160
Funcia random[0, 1) ntoarce un numr aleator din [0, 1) .
Condiia de terminare verific dac a fost atins echilibrul termic, adic
distribuia de probabilitate a noului individ aproximeaz distribuia
Boltzmann. Totui, n multe aplicaii, acest pas este executat de k ori,
k fiind un parametru al metodei.

Temperatura este micorat n pasul


T := g (T , t ) unde g (T , t ) < T

t .

Algoritmul se termin pentru valori mici ale lui T : criteriul de


oprire verific dac sistemul nghea. Algoritmul de clire simulat
poate evita optimul local. Considerm aceeai funcie ca la algoritmul
hillclimbing. Fie individul i4 definit de irul
v 4 = (111000000100110111001010100000 )

cu 12 de 1, avnd evaluarea
f (v 4 ) = 11 12 150 = 18 .

Aa cum am artat anterior, algoritmul hillclimbing gsete


maximul local
vl = (000000000000000000000000000000) .

Pe de alt parte, algoritmul de clire simulat va accepta un ir cu 13


de 1 ca un ir curent, cu probabilitatea
f (i ) f (ic )
7 18
p = exp n
= exp

T
T

161
care, pentru temperatura T = 20 d
11
p = exp = 0.57695
20
adic schimbarea este acceptat cu mai mult de 50%.
Dou iruri relativ srace
v5 = (111110000000110111001110100000)
i
v6 = (000000000001101110010101111111) ,
fiecare avnd evaluarea 16, pot produce descendeni mult mai buni
dac ncruciarea are loc ntre a 5-a i a 12-a gen:
v7 = (111110000001101110010101111111) .
Noul descendent v7 are evaluarea
f (v7 ) = 11 19 150 = 59 .

7.5. Algoritmi de tip contracie


O posibilitate de studiere a proprietilor de convergen a
algoritmilor genetici const n folosirea teoremei de punct fix a lui
Banach, care lucreaz cu aplicaii de tip contracie pe spaii metrice.
Definiia 7.1.

Dac R este mulimea numerelor reale, o mulime X cu o aplicaie


d : X X R este spaiu metric, notat

(X , d ) ,

dac urmtoarele

162
condiii sunt verificate pentru orice x, y X :
i) d (x, y ) 0 i d (x, y ) = 0

x=y

ii) d (x, y ) = d ( y, x )
iii) d (x, y ) + d ( y, z ) d ( x, z ) .
Definiia 7.2.

Fie ( X , d ) un spaiu metric. O aplicaie f : X X este contracie


dac i numai dac exist o constant c (0, 1) astfel nct pentru
orice

x, y X : d ( f ( x ) , f ( y )) c d ( x , y ) .
Definiia 7.3.

irul x0 , x1 ,L de elemente din spaiul metric ( X , d ) este ir Cauchy


dac i numai dac pentru orice > 0 exist k astfel nct pentru
orice m, n > k , d (x m , x n ) < . Un spaiu metric este complet dac
orice ir Cauchy x0 , x1 , L, x n ,L are o limit x = lim x n .
n

Teorema 7.1.

Fie

( X , d ) un

spaiu metric complet i f : X X o contracie de

constant c . Atunci:

( )

i) f are un punct fix unic x * : f x * = x *


ii) dac

x0

este un element oarecare din

aproximaiilor succesive

atunci irul

x0 , x1 = f (x0 ), L, x n = f ( x n1 ), L este

convergent i are ca limit pe x * .

163
iii) are loc estimarea

d xn , x *

cn
d ( x0 , x1 )
1 c

Algoritmii genetici pot fi definii ca transformri ntre


populaii. Dac construim un spaiu metric ( X , d ) , avnd populaii ca
elemente, i o aplicaie f care satisface condiiile unei teoreme de
punct fix atunci putem demonstra convergena unui algoritm genetic
la un punct fix, indiferent de alegerea populaiei iniiale [90].
Fr a restrnge cu nimic generalitatea, presupunem c lucrm
cu probleme de maxim, adic probleme pentru care o soluie xi este

( )

mai bun dect soluia x j dac i numai dac eval ( xi ) > eval x j ,
unde funcia eval d fitnessul unui individ din populaie.
Pentru o

populaie P considerm funcia de evaluare Eval ; de

exemplu, pentru P = {p1 , p 2 , L, p n } putem defini


Eval (P ) =

1 n
eval ( pi ) .
n i =1

Teorema 7.2.

Fie X mulimea tuturor populaiilor P i aplicaia d : X X R


definit prin
0,
d (P1 , P2 ) =
1 + M Eval (P1 ) + 1 + M Eval (P2 ) ,

pentru

P1 = P2

pentru

P1 P2

164
unde M este limita superioar a funciei eval n domeniul de interes.
Atunci ( X , d ) este spaiu metric complet.
Demonstraie.

Din eval ( x) M pentru orice individ x , rezult Eval ( P) M pentru


orice populaie P . Proprietile de spaiu metric se verific imediat:
d (P1 , P2 ) 0 pentru orice populaii P1 i P2 ; n plus,

d (P1 , P2 ) = 0 dac i numai dac P1 = P2


d (P1 , P2 ) = d (P2 , P1 )
d (P1 , P2 ) + d (P2 , P3 ) = 1 + M Eval (P1 ) + 1 + M Eval (P2 ) +

1 + M Eval (P2 ) + 1 + M Eval (P3 )


1 + M Eval (P1 ) + 1 + M Eval (P3 ) = d (P1 , P3 )

n plus, spaiul metric ( X , d ) este i complet, deoarece: pentru orice


ir Cauchy P1 , P2 , L de populaii exist k astfel nct pentru orice
n > k , Pn = Pk ; ultima egalitate rezult din faptul c algoritmii

genetici lucreaz cu spaii finite, deci exist un numr finit i mrginit


de populaii. nseamn c orice ir Cauchy este convergent.
n continuare vom defini pe mulimea tuturor populaiilor o
aplicaie f care s fie contracie. Pentru aceasta, plecnd de la o
populaie P (t ) vom rula selecia i ncruciarea pn cnd se obine o
populaie P' ce satisface o anumit relaie n raport cu P (t ) i vom
lua P(t + 1) = P' .

165
Teorema 7.3.

Fie ( X , d ) spaiul metric complet definit n teorema precedent


i aplicaia f : X X definit prin f (P (t )) = P(t + 1) dac i numai
dac Eval (P(t )) < Eval (P(t + 1)) .
Atunci f are un punct fix unic i acesta poate fi obinut prin metoda
aproximaiilor succesive plecnd de la orice populaie iniial

P ( 0) X .
Demonstraie. Considerm dou iteraii consecutive n care funcia

f realizeaz o mbuntire a populaiei n raport cu funcia Eval :


Eval (P1 (t )) < Eval ( f (P1 (t ))) = Eval (P1 (t + 1))
Eval (P2 (t )) < Eval ( f (P2 (t ))) = Eval (P2 (t + 1)) ;

atunci
d ( f (P1 (t )), f (P2 (t ))) = 1 + M Eval ( f (P1 (t ))) + 1 + M Eval ( f (P2 (t ))) <
1 + M Eval (P1 (t )) + 1 + M Eval (P2 (t )) = d (P1 (t ), P2 (t )) .

nseamn c funcia
f
P(t )
P(t + 1)

este contracie i, conform Teoremei 7.1, avem


P * = lim f i (P(0)) ,
i

unde cu f i am notat aplicarea funciei f de i ori. Rezult c


algoritmul genetic care funcioneaz pe principiul contraciei converge
la populaia P* , care este unicul punct fix din mulimea populaiilor.

166
Observaie. Din definiia funciei Eval rezult c punctul fix
P* este obinut cnd toi indivizii acestei populaii dau aceeai valoare,

care coincide cu maximul global.


Structura

algoritmului

de

tip

urmtoarea
algoritmul C-GA
begin
t := 0

iniializeaz P (t )
evalueaz P (t )
while not (condiie-terminare) do
begin { se construiete contracia}
t := t + 1

selecteaz P (t ) din P (t 1)
recombin P(t )
evalueaz P(t )
if Eval (P(t 1)) Eval (P(t ))
then t := t 1
end
end

Alte abordri pot fi gsite n [46, 47].

contracie

(C-GA)

este

167

7.6. Algoritmi cu dimensiunea variabil a


populaiei
Performanele metodelor bazate pe evoluie depind de
diversitatea populaiei i de presiunea seleciei, care la rndul lor sunt
influenate de mrimea populaiei. Diverse studii efectuate asupra
dimensiunii populaiei au artat c algoritmii cu dimensiunea variabil
a populaiei dau rezultate destul de bune. Grefenstette [39] a aplicat un
meta-algoritm genetic pentru a controla parametrii altui algoritm,
inclusiv dimensiunea populaiei. Goldberg [32] a efectuat un studiu
teoretic al dimensiunii optime a populaiei. Studii experimentale au
fost efectuate n [49] .
Vom discuta acest tip de algoritmi genetici urmnd rezultatele
din [1]. Numrul indivizilor de la generaia t , notat PopSize(t ) , va fi
influenat de cel de la generaia anterioar
PopSize(t + 1) = PopSize(t ) + AuxPopSize(t ) D(t ) ,

unde AuxPopSize reprezint populaia intermediar care apare n


pasul de recombinare iar D(t ) reprezint numrul de indivizi ce nu
vor supravieui n generaia urmtoare.
Dimensiunea populaiei intermediare se calculeaz cu formula
AuxPopSize(t ) = PopSize(t ) ,

168
unde este un parametru al algoritmului, numit rat de reproducere.
Toi indivizii unei generaii au aceeai probabilitate de a fi selectai
pentru reproducere.
Deoarece fitnessul nu influeneaz selecia, vor fi folosii ali
parametri: VRSTA i VIA A . VRSTA reprezint numrul de
generaii n care un individ a supravieuit iar VIA A se atribuie o
singur dat unui individ, dup iniializare sau dup recombinare, i
pstreaz o valoare constant. Un individ este meninut n populaie
atta timp ct VRSTA nu depete VIA A .
Structura algoritmului AG-DVP (Algoritm Genetic cu
Dimensiunea Variabila a Populaiei) este urmtoarea.
algoritmul AG-DVP
begin
t := 0

iniializeaz P (t )
evalueaz P (t )
while not (condiie-terminare) do
begin
t := t + 1

VRSTA := VRSTA + 1 pentru fiecare individ din populaie


recombin P(t )
elimin din P (t ) toi indivizii pentru care
VRSTA > VIA A

169
evalueaz P(t )
end
end

Parametrul VIA A depinde de starea curent a cutrii genetice;


pentru aceasta se utilizeaz urmtorii parametri:
AvgFit = media fitnessului populaiei curente
MaxFit = valoarea maxim a fitnessului n generaia curent
MinFit = valoarea minim a fitnessului n generaia curent
AbsFitMax i AbsFitMin = valoarea maxim i respectiv minim
a fitnessului, obinut pn n momentul curent.
Pentru un individ i , viaa lui VIA A(i ) poate fi definit n mai
multe feluri:
alocare proporional:

fitness (i )
VIA A(i ) = min MinLT +
, MaxLT
AvgFit

alocare liniar

VIA A(i ) = MinLT + 2


alocare biliniar

fitness (i ) AbsFitMin
AbsFitMax AbsFitMin

170
fitness (i ) MinFit

MinLT + AvgFit MinFit

dac AvgFit fitness (i )

1
fitness (i ) AvgFit

VIA A(i ) = (MinLT + MaxLT ) +


MaxFit AvgFit
2

dac AvgFit < fitness (i )

unde MaxLT i MinLT reprezint v aloarea maxim i respectiv


minim a parametrului VIA A iar

1
(MaxLT MinLT ) .
2

Alocarea proporional este inspirat din selecia dup metoda


ruletei: valoarea parametrului VIA A este proporional cu fitnessul,
n limitele MinLT i MaxLT . n cazul alocrii liniare, VIA A este
calculat prin raportare la fitnessul cel mai bun pn n momentul
prezent. n cazul cnd n populaie exist indivizi al cror fitness este
egal sau apropiat de fitnessul maxim absolut, VIA A va lua valori
mari, ceea ce duce la mrirea dimensiunii populaiei. Alocarea
biliniar face un compromis ntre celelalte dou, lund n considerare
valorile extreme din generaia curent.
Funcii recomandate pentru a testa algoritmul AG-DVP sunt:

f1 ( x ) = x sin (10x ) + 1, 2 x 1

care este o funcie cu multe maxime locale

171

f 2 (x ) = integer (8 x ) / 8, 0 x 1 , care nu poate fi optimizat prin

metode de tip gradient

f 3 ( x) = x sign( x), 1 x 2 ,

care reprezint o problem

deceptiv.
Se pot alege urmtoarele valori pentru parametri:
dimensiunea populaiei =20
= 0.4
probabilitatea de mutaie: pm = 0.015
probabilitatea de ncruciare: pc = 0.65
lungimea unui cromozom = 20
MaxLT = 7 , MinLT = 1
Algoritmul se poate opri cnd nu se mai obin ameliorri ale
celei mai bune valori ntr-un numr precizat de iteraii.

7.7. Algoritmi cu constrngeri


Exist mai multe modaliti de a mnui constrngerile:
1) rezolvarea problemei fcnd abstracie de constrngeri i
eliminarea, apoi, a soluiilor care nu verific constrngerile. Aceste
soluii vor determina o penalizare a funciei de evaluare; cea mai
simpl

form

de

penalizare

const

eliminarea

soluiilor

nerealizabile
2) utilizarea unor metode de reparare a soluiei nerealizabile

172
dar, uneori, aceste metode sunt la fel de dificile ca i rezolvarea
problemei
3) utilizarea unor metode de decodificare care s garanteze sau
s mreasc foarte mult ansele de obinere a unor soluii realizabile.
Exemplificm rezolvarea unor astfel de probleme considernd
problema rucsacului [56]: fiind date ponderile W [i ] , profiturile P[i ]
i capacitatea C , s se gseasc vectorul binar x = ( x[1], L, x[n]) astfel
nct
n

x[i]W [i] C
i =1

i
n

P ( x ) = x[i ] P[i ]
i =1

are valoarea maxim.


Trei tipuri de algoritmi sunt frecvent utilizai: algoritmi bazai pe
funcii de penalizare ( Ap [i] ), algoritmi bazai pe metode de reparare
( Ar [i] ) i algoritmi bazai pe decodificare ( Ad [i ] ), unde i este
indicele unui algoritm particular din clasa respectiv.
Algoritmii Ap [i ]

n cadrul acestor algoritmi soluia este reprezentat printr-un ir


binar de lungime n . Funcia de evaluare a unui ir x este
n

eval( x) = x[i ] P[i ] Pen( x )


i =1

173
unde functia de penalizare Pen(x) are valoarea zero pentru soluiile
realizabile x , adic pentru soluiile care satisfac relaia
n

x[i]W [i] C ,
i =1

i este mai mare ca zero n caz contrar.


Sunt mai multe posibiliti de definire a funciei de penalizare;
vom prezenta trei metode:

metoda logaritmic Ap [1] :

Pen(x ) = log 2 1 + x[i ]W [i ] C

i =1

metoda liniar Ap [2] :

n
Pen(x ) = x[i ]W [i ] C

i =1

metoda ptratic Ap [3] :


n

Pen(x ) = x[i ] W [i ] C
i =1

n toate cazurile,
P[i ]
.
i =1, n W [i ]

= max

174
Algoritmii Ar [i]

La fel ca n cazul anterior, soluia este reprezentat printr-un


ir binar de lungime n . Fitnessul unui ir x se definete ca fiind
n

eval( x) = x' [i ] P[i ]


i =1

unde vectorul x' este versiunea reparat a vectorului original x .


Apar dou probleme:
exist mai multe metode de reparare

numai o parte din cromozomii reparai i vor nlocui pe cei

originali n populaie. Orvosh i Davis [68] au aratat c cea mai bun


rat de nlocuire este 5% .
Procedura general de reparare este
Algoritm repar ( x )
begin

rucsac-plin:= false
x':= x

if

x'[i]W [i] > C


i =1

then rucsac-plin:=true
while (rucsac-plin) do
begin
i = un obiect selectat din rucsac

schimb valoarea obiectului selectat: x' [i ] := 0

175
if

x'[i]W [i] C
i =1

then rucsac-plin:=false
end
end

Exist dou variante ale acestui algoritm, n funcie de modul


de efectuare a seleciei:
repararea aleatoare ( Ar [1]) : se alege, n mod aleator, un obiect din
rucsac

repararea greedy

( Ar [2]) :

obiectele se ordoneaz descresctor

dup raportul profit pondere i se selecteaz ultimul element.

Algoritmii Ad [i]

Acetia folosesc o reprezentare de tip ntreg, componenta a i a, x[i ] , a unui cromozom fiind un ntreg din intervalul [1, n i + 1] . De
fapt, reprezentarea este de tip ordinal, n sensul c pe lng vectorul x
se folosete i o list de obiecte; vectorul este decodificat prin
selectarea obiectului corespunztor din lista curent. De exemplu,
pentru lista L = (1, 2, 3, 4, 5, 6) vectorul (4, 3, 4, 1, 1, 1) este decodificat
n urmtoarea secven: 4, 3, 6 (deoarece 6 este al 4-lea element din
lista curent dup ce au fost eliminate elementele de pe poziiile 4 i
3), 1, 2 i 5. Operatorii genetici acioneaz ca n cazul general, cu mici

176
adaptri. De exemplu, mutaia elementului de pe poziia i va
determina nlocuirea acestuia cu un numr din intervalul [1, n i + 1] .
Algoritmul de decodificare este urmtorul:
Algoritm decod (x )
begin
construct lista de obiecte L
i := 1

SumProfit := 0
SumPonderi := 0

while i n do
begin
j := x[i ]

elimin elementul aflat pe poziia j n lista L


if SumPonderi + W [ j ] C then
begin
SumPonderi := SumPonderi + W [ j ]
SumProfit := SumProfit + P[ j ]

end
i := i + 1

end
end

n funcie de modul de definire a procedurii construct exist


dou tipuri de algoritmi:

177
Ad [1] , n care lista L este construit n mod aleator
Ad [2], n care lista L se construiete ordonnd descresctor
elementele dup raportul profit pondere ; de exemplu, x[i ] = 23 este
interpretat ca al 23-lea element (n ordinea descresctoare a raportului
profit pondere ) din lista curent.

7.8. Algoritmi genetici dezordonai


Algoritmii de acest tip au fost introdui pentru a crete
performanele algoritmilor genetici prin pstrarea blocurilor n urma
aplicrii operatorilor de evoluie. Aa cum am vzut, blocul este o
succesiune de gene (bii) cu semnificaie special n cadrul
cromozomului.

Pentru a evita distrugerea, legturile dintre gene

trebuie s fie suficient de puternice n interiorul blocului.


Goldberg, Korb i Deb [34] au propus o generalizare a
algoritmilor genetici, cunoscut sub numele de algoritmi genetici
dezordonai (messy genetic algorithms), care folosesc cromozomi de
dimensiune variabil cu gene care pot fi aranjate n orice ordine; de
aici denumirea de dezordonai. Fiecare gen este reprezentat printr-o
pereche de forma (poziia genei, valoarea genei). De exemplu,
cromozomul codificat binar
c = (1 0 0 1 0 )

se transform n noua reprezentare n

178
c' = ((1, 1) (2, 0) (3, 0) (4, 1) (5, 0)) .

Aceast reprezentare are urmtoarele avantaje:

ordinea perechilor poate fi schimbat fr ca semnificaia

cromozomului s aib de suferit


se poate lucra cu informaie incomplet, dat de absena unor
gene fenomen numit subspecificare. n acest caz apare urmtoarea
ntrebare: cum se evalueaz un cromozom incomplet? Un posibil
rspuns este urmtorul: se asimileaz acest cromozom cu cel complet
aflat cel mai aproape
permite prezena multipl a unei gene n cromozom, fenomen
numit supraspecificare; de exemplu, n cromozomul
c = ((1, 1) (2, 0) (3, 0 ) (4, 1) (3, 1))

gena de pe poziia 3 apare de dou ori cu valorile contradictorii 0 i 1.


Acest conflict poate fi rezolvat n mai multe feluri; de exemplu, se ia
n consideraie apariia cea mai din stnga a genei.
Operatorii evolutivi utilizai de algoritmii genetici dezordonai
deriv din cel clasici.

Incruciarea se desfoar astfel [15]:

n fiecare din cei doi prini se stabilete cte un punct de

ncruciare care taie cromozomul n dou subiruri; cele dou


puncte de ncruciare se aleg independent

subirurile obinute anterior se alipesc n orice ordine sau

combinaie pentru a obine un nou individ

179
Fie cromozomii

x : a1a2 | b1b2 b3b4

i y : c1c2 c3 | d1

unde simbolul | reprezint punctul de ncruciare (taietur).


Prin ncruciare rezult urmtorii descendeni
a d : a1a 2 | d1

a c : a1a2 | c1c2 c3
c a : c1c2 c3 | a1a2
c b : c1c2 c3 | b1b2b3b4
d a : d1 | a1a 2

d b : d1 | b1b2 b3b4
d c : d1 | c1c2 c3
b a : b1b2 b3b4 | a1a2
b c : b1b2 b3b4 | c1c2 c3
b d : b1b2 b3b4 | d1
unde prin a, b, c i d am notat subirurile definite de punctele de
tietur din cei doi cromozomi. ncruciarea de acest tip implic i un
anumit tip de inversiune: cromozomii b a i d c se obin inversnd
subirurile determinate de punctele de tietur.

Mutaia acioneaz ca n cazul clasic, folosind oricare din


variantele utilizate n acest caz.
Diverse experimente [35] au scos n eviden faptul c
algoritmii dezordonai gsesc ntotdeauna soluia optim chiar dac

180
timpul de cutare crete polinomial n raport cu numrul de variabile.

7.9. Algoritmi virali


Cunoscui i sub numele de metoda VEGA (Virus

Evolutionary Genetic Algorithm) , algoritmii virali au fost introdui


[85] pentru a preveni convergena prematur generat de absena
diversitii populaiei. Algoritmii virali lucreaz simultan cu dou
populaii:

populaia gazd, care, la fel ca n cazul algoritmilor clasici,

reprezint mulimea soluiilor posibile


populaia viral, care este o mulime de subiruri ale indivizilor
din populaia gazd; rolul su este de a realiza infecia viral.
Un virus este un subir ce conine trei caractere {0, 1, } i are
aceeai lungime cu individul gazd. Caracterele diferite de *
reprezint informaia transportat de virus.
Exist doi operatori de infecie viral [53]:

transcrierea invers: virusul scrie informaia sa peste cea a

individului gazd pentru a genera un nou individ.


De exemplu,
individul gazd

1 0 011

virusul

1 0 0

181
dau
un nou individ gazd

11 01 0

ncorporarea, care are rolul de a genera noi virui i se realizeaz


n dou moduri:
-

prin copierea ntr-un virus a unor gene dintr-un individ gazd

infectat, folosind o probabilitate de copiere.


De exemplu,

1 0 0

virusul
i
individul gazd

1 0 011

genereaz, prin copiere,


un nou virus
-

11 0 0

prin nlocuirea unor gene din virus cu caracterul *, folosind o

probabilitate de nlocuire.
De exemplu,
virusul

1 0 0

genereaz, prin ncorporarea de tip nlocuire,


un nou virus

0 0

Fiecare virus i este caracterizat de puterea de infectare fitvi .


Notm cu fithinit j i fithfin j valorile fitness ale individului j
nainte i respectiv dup infectare. mbuntirea obinut prin
infectarea individului j cu virusul i este

fitvi , j = fithfin j fithinit j .


Acum puterea de infectare a virusului i se calculeaz ca fiind

182

fitvi =

fitvi, j

j S

unde S este mulimea indivizilor gazd infectai cu virusul i . Un alt


parametru important este rata de infecie infri , care se definete prin
una din formulele

(1 + ) infri ,t
infri ,t +1 =
( 1 ) infri ,t
infri ,t +1

1 infri ,t
=
infri ,t

dac

fitvi > 0

n caz contrar
dac

fitvi > 0

n caz contrar

unde este un coeficient pozitiv iar t este numrul generaiei. n


plus,
dac infri , t +1 > Max _ rat
atunci infri , t +1 Max _ rat .
Fiecare virus are o putere de supravieuire n generaia urmtoare dat
de

lifei , t +1 = r lifei , t + fitvi


unde r este rata de reducere a vieii. Dup infectarea indivizilor
gazd, viruii evolueaz prin ncorporare:

dac

fitvi > 0 , virusul evolueaz prin operaia de copiere

(extinderea ncorporrii) aplicat unui individ infectat


dac fitvi 0 , se execut operaia de nlocuire (micorarea
ncorporrii).

183
Lungimea unui virus se modific n concordan cu

probabilitatea de ncorporare Pinc . Dup calcularea puterii de via,


dac lifei , t +1 < 0 , virusul elimin un nou subir dintr-un individ gazd
infectat, selectat aleator (generarea ncorporrii). Infecia viral se
desfoar conform schemei din figura de mai jos.
Algoritmul metodei VEGA este urmtorul:
Algoritmul VEGA
begin

iniializare
repeat

selecie
ncruciare
mutaie
infecie viral
nlocuire
until (condiie terminare)
end.

184

SELECTIE
INDIVIZI GAZDA

INFECTIE

EVALUARE INDIVIZI GAZDA

CALCULEAZA fitvi

DA

IF fitv

> 0

CRESTE RATA DE
INFECTIE

DESCRESTE RATA DE
INFECTIE

CALCULEAZA lifei

CALCULEAZA lifei

DA

EXTIDE
INCORPORAREA

NU

IF life i

MICSOREAZA
INCORPORAREA

Figura 7.1. Schema infeciei virale

NU

GENEREAZA
INCORPORAREA

185
Prin iniializare se genereaz aleator populaia gazd iar
indivizii de tip virus se obin ca subiruri ale indivizilor gazd.
Arhitectura de baz a metodei se bazeaz pe modelul SSGA ( SteadyState Genetic Algorithm) care nlocuiete indivizii cei mai slabi cu o
pereche de descendeni obinui prin ncruciare i mutaie. Dup
infecie, printele va fi nlocuit cu individul virusat dac fitnessul su
este mai bun dect al printelui.

7.10. Algoritmul delta


Algoritmul delta are rolul de a mbuntii performanele
referitoare la timp i precizie. Fiecare soluie posibil, reprezentat
printr-un vector x R n , are asociat un vector R n al perturbaiilor
care pot mbunti soluia curent. Se lucreaz cu dou tipuri de
populaii: cea a soluiilor posibile i cea a perturbaiilor, ceea ce
impune cte un nivel de cutare pentru fiecare populaie. Un
mecanism similar se ntlnete i la strategiile evolutive, dar n acest
caz cele dou nivele sunt mai puin separate.
Modul de lucru este dat de urmtorul algoritm [16].
Algoritmul delta
begin

se iniializeaz o populaie de soluii poteniale


while (not condiie terminare) do

186
begin

se folosete un algoritm genetic (notat AGS) pentru a obine o


soluie x*
se iniializeaz o populaie de perturbaii aleatoare
se folosete un algoritm genetic (notat AGP) pentru a obine
perturbaia optim *
se actualizeaz soluia x* :

x1* = x * + *

se compar x * cu x1* i se reine soluia mai performant


end
end

n majoritatea implementrilor algoritmii genetici AGS i AGP


sunt identici, din motive de simplitate. n anumite situaii este mai
convenabil ca ei s fie diferii sau chiar s fie nlocuii (ambii sau doar
unu) cu strategii evolutive.

7.11. Studiul calitativ al algoritmilor


genetici
Algoritmii genetici, fiind algoritmi nedeterminiti, nu pot fi
studiai cu instrumentele specifice algoritmilor clasici. n general,
studiul agoritmilor evolutivi se face cu metode statistice [55], care
evalueaz acurateea i robusteea algoritmului studiat

187
compar performanele a doi algoritmi genetici folosii pentru a
rezolva aceeasi problem.
Prima direcie implic studiul unor statistici ale uneia sau mai
multor variabile aleatoare, care dau informaii cu privire la valoarea
medie a soluiei optimale i la robusteea sa (constana aproximrii n
rulri diferite). Generaia n a unui algoritm genetic poate fi
interpretat ca fiind un eantion al unei variabile aleatoare X n , pentru
care se pot lua n calcul diferite statistici t ( X n ) : fitnessul celui mai
bun cromozom, fitnessul mediu al populaiei, etc. Dup k rulri ale
algoritmului (n condiii identice) se obin k valori (Y1 , L, Yk ) ale
variabilei Y = t ( X n ) . Pentru aceste valori se pot calcula:
k

media: M =

i =1

=Y

dispersia: D 2 =

(Y M )
i =1

k 1

deviaia standard: s = D 2
intervalul de ncredere pentru medie
intervalul de ncredere pentru dispersie.
Intervalul de ncredere pentru medie se calculeaz cu statistica
Student cu k 1 grade de libertate: intervalul de ncredere pentru
media cu nivelul de ncredere este

as
as
,Y +
Y

k
k

188
unde a se obine din tabelele distribuiei Student astfel nct s fie
ndeplinit condiia

Y
P a <
< a = .
s k

Intervalul de ncredere pentru dispersie se calculeaz cu


statistica k21 : pentru nivelul de ncredere i valorile a i b extrase
din tabelele distribuiei k21 astfel nct

P k21 > a =

1
1
i P k21 < b =
2
2

intervalul de ncredere pentru dispersie este


(k 1)D 2 (k 1)D 2
,

.
b
a

Pentru a rezolva o problem dat se pot folosi diveri algoritmi


genetici, diversitatea fiind determinat de: structura general a
algoritmului, modul de codificare, populaia iniial, funcia fitness,
condiia de oprire, metoda de selecie, operatorii genetici, valorile
parametrilor. n mod firesc, apare ntrebarea: care este cel mai bun
algoritm genetic pentru rezolvarea unei probleme date?

Se pot

comparea doi algoritmi genetici verificnd ipoteze statistice cu privire


la medie i dispersie.
Fie X i Y variabilele aleatoare ce descriu evoluia a doi
algoritmi genetici, ambele obinute prin calcularea aceleeai statistici

n generaia n : X = t ( X n ) , Y = t (Yn ) . Pentru k1 valori X 1 , L, X k1

ale variabilei X i k 2 valori Y 1 , L, Y k2 ale variabilei Y calculm

189
k1

X=

k1

S X Y =

, Y=

i =1

1 k1
SX =
Xi X

k1 1 i 1

(k

k2

Xi

Y
i =1

k2

1 k2 i
, SY =
Y Y
k 2 1 i 1

1 S X2 + (k 2 1)SY2
k1 + k 2 2

1 1
.
+
k1 k 2

Asupra mediei, se verific ipotezele:


H 0 : X = Y , care spune c cei doi algoritmi dau, n medie, aceleai

valori ale soluiei optimale; deci nu exist, din punct de vedere


statistic, o diferen de comportament ntre cei doi algoritmi.
H 1 : X Y , adic cei doi algoritmi dau, n medie, soluii optimale

diferite pentru problema n discuie.


Pentru verificarea acestor ipoteze se folosete statistica

(X Y ) (

Y )

S X Y

a crei distribuie este t k

+ k2 2

. Pentru a verifica cele dou ipoteze se

folosete algoritmul urmtor


Algoritmul: ipoteze asupra mediei
P1. Se stabilete nivelul de ncredere , cu urmtoarea semnificaie:

dac ipoteza este adevrat atunci din 100 de teste, n 100(1 )


cazuri ipoteza poate fi respins

190
P2. Pentru nivelul de ncredere i k1 + k 2 2 grade de libertate se

gsete, din tabelele corespunztoare statisticii t , valoarea a


P3. Se calculeaz valoarea t =

(X Y ) 0 ,
S X Y

deoarece se verific

ipoteza H 0 .
P4. Dac a < t < a atunci se accept ipoteza H 0 ; n caz contrar se

accept ipoteza H 1 .
Asupra dispersiilor se verific ipoteze similare mediilor
H 0 : X2 = Y2 ,
H 1 : X2 Y2 ,

unde X2 i Y2 sunt dispersiile corespunztoare variabilei X i


respectiv Y ; se folosete statistica

(k1 1, k 2 1)

S X2
S Y2

care are distribuia F cu

grade de libertate. Se urmeaz paii algoritmului

urmtor.
Algoritmul: ipoteze asupra dispersiei
P1. Se stabilete nivelul de ncredere
P2. Pentru nivelul de ncredere i gradele de libertate (k1 1, k 2 1)

se determin, din tabelele corespunztoare distribuiei F , valorile


a i b astfel nct

P (F < a ) =

1
1
i P(F > b ) =
2
2

191
P3. Se calculeaz valoarea f =

S X2
S Y2

, prin raportarea dispersiei mai

mari la cea mai mic


P4. Dac a < f < b atunci se accept ipoteza H 0 ; n caz contrar se

accept ipoteza H 1 .
Acceptarea ipotezei H 0 spune c cei doi algoritmi au dispersii
statistic egale, deci sunt la fel de robuti. Acceptarea ipotezei H 1
spune c dispersiile celor doi algoritmi sunt statistic diferite, deci cel
cu dispersia mai mic este mai robust.
Evident aceleai metode pot fi folosite pentru a compara orice
algoritmi evolutivi.

8
STRATEGII EVOLUTIVE
8.1 Generaliti
Strategiile evolutive (SE) au aprut din necesitatea de a
rezolva probleme de optimizare de tipul: se cere x* D R n cu

( )

f x * f ( x ) x D , unde f : D R n R i D este o regiune

mrginit determinat de restriciile impuse asupra lui x . Pentru o


astfel de problem strategiile evolutive sunt mai potrivite dect
algoritmii genetici deoarece nu necesit codificarea binar a datelor,
care are dezavantajul c limiteaz precizia. Strategiile evolutive
reprezint indivizii sub forma unor vectori cu componente reale i
folosesc mutaia ca principal operator de evoluie.
n strategiile evolutive avansate reprezentarea indivizilor
ncorporeaz n ea i parametrii de control ai strategiei. Un individ se
reprezint ca o pereche v = ( x, ) , unde vectorul x este un element
din spaiul de cutare iar 2 este vectorul dispersie; i2 reprezint
dispersia perturbaiei pe care o sufer componenta xi a vectorului x

194
n procesul de mutaie. Vectorul reprezint parametrul de control al
strategiei.
Primul algoritm de tip strategie evolutiv a fost propus n
1964, la Universitatea Tehnic din Berlin, de ctre Rechenberg i
Schwefel n scopul rezolvrii unei probleme care cerea amplasarea
unei conducte flexibile ntr-o zon de o anumit form astfel nct
costul s fie ct mai mic. Ideea rezolvrii era: pornind de la o
aproximaie curent se genera alta printr-o perturbaie aleatoare bazat
pe o repartiie normal i se alegea cea mai bun dintre cele dou.
Aceast strategie, numit (1 + 1) , nu opera cu populaii ci urmrea
adaptarea unui singur individ sub aciunea mutaiei. Limitele acestui
model au dus la cutarea unor mecanisme care s implice n evoluie
mai muli indivizi [5, 6, 7, 8, 9, 15, 16, 81, 82]. Dintre acestea
amintim:
Strategia

( , ) : pornind de la cei

indivizi ai populaiei curente,

se genereaz prin ncruciare i mutaie > indivizi noi, iar dintre


acetia se aleg , care vor forma noua populaie; dac = 1 , se alege

individul cel mai bun ( cel pentru care funcia obiectiv este cea mai
mic).
Strategia

( + ) :

pornind de la cei indivizi ai populaiei

curente, se genereaz prin ncruciare i mutaie un numr de


indivizi noi care se adaug la populaia curent; din populaiile reunite
se selecteaz indivizi care vor forma noua populaie. Dac = 1 ,

195
se folosete doar mutaia pentru a genera indivizi noi, fiind evident c
ncruciarea nu poate fi utilizat. Dac = 1 , selecia urmrete
eliminarea celui mai slab individ (cel care d cea mai mare valoare a
funciei obiectiv) din populaiile reunite. Este evident c dac
individul nou generat este mai slab dect toate elementele populaiei
curente atunci aceasta rmne nemodificat.
Strategia

( , k , , p ) :

este o extindere a strategiei ( , ) i se

caracterizeaz prin:
a) k 1 reprezint durata de via a indivizilor, msurat n
generaii. Valoarea lui k se micoreaz cu 1 la fiecare nou generaie
iar un individ va fi selectat doar dac k > 0 .
b) operaiile de mutaie

i ncruciare sunt controlate de

probabilitile pm i respectiv pc , la fel ca n cazul algoritmilor


genetici.
c) numrul prinilor folosii n operaia de ncruciare este p
d) se pot folosi i operatori de ncruciare specifici algoritmilor
genetici, ca de exemplu ncruciarea multipl.
Strategia evolutiv rapid: este o variant, ncadrat de autorii ei
la programarea evolutiv, caracterizat prin:
a) folosete

o mutaie

specific

bazat pe perturbarea

elementelor cu valori generate n conformitate cu distribuia Cauchy a


crei funcie de densitate este:

( x ) =

1
,
x + 2

>0

196
Acest tip de perturbaie prezint avantajul c poate genera descendeni
ndeprtai de prini cu o probabilitate mai mare dect perturbaia
normal (asigurnd o probabilitate mai mare de evadare din minime
locale i o accelerare a procesului de gsire a optimului). Diferena
dintre cele dou funcii de densitate (normal i Cauchy) este ilustrat
n figura 8.1.
b) perturbaiile sunt independente iar parametrii i sunt
determinai prin autoadaptare (cu perturbare log-normal) la fel ca n
cazul strategiilor evolutive clasice.
c) nu se folosete ncruciare nici asupra componentelor
propriu-zise nici asupra parametrilor de control.
d) selecia este de tip turneu.

Figura 8.1: Funciile de distribuie ale repartiiilor normal (linie


ntrerupt) i Cauchy (linie continu)

197

8.2 Operatori de evoluie


8.2.1 ncruciarea
Operatorul de ncruciare selecteaz, cu o probabilitate
uniform, cei p prini. Cel mai des se utilizeaz cazurile p = 2 i

p = . Datorit similaritii dintre reprezentarea indivizilor n


strategii evolutive i n algoritmi genetici, exist similaritate i ntre
tipurile de ncruciare.

8.2.1.1 ncruciarea discret

n cazul p = 2 fie x1 i x 2 prinii selectai aleator; pentru


fiecare component i {1, 2, L , n} se genereaz un numr aleator

qi [0, 1] ,

urmnd

distribuia

uniform.

Componenta

yi

descendentului va fi
x1i dac qi 0.5
yi =
xi2 dac qi > 0.5

n cazul cnd se ncrucieaz p prini

yi

descendentului

x x1 , L, L x p

este

{ x , L,L x }, componenta
1

componenta

} ales aleator. n cazul

xi

printelui

p = , printele care d

componenta yi a descendentului y este ales din ntreaga populaie;


de aceea ncruciarea se numete global.

198
8.2.1.2 ncruciarea intermediar

n acest caz componenta yi a descendentului y este o


combinaie convex a componentelor corespunztoare din cei p
prini x1 , L , x p , alei aleator:
yi =

j xij
j =1

i = 1, 2, L , n

i
p

j = 1,
j =1

j 0.

n general se lucreaz cu doi prini x1 , x 2 :

yi = x1i + (1 )xi2 , i {1, 2, L , n}


cu [0, 1] ales ca fiind valoarea unei variabile aleatoare cu
distribuie uniform i pstrnd aceeai valoare pentru toate
componentele.
ncruciarea intermediar poate fi extins schimbnd prinii i
parametrul pentru fiecare component a descendentului. Toate
tipurile de ncruciare se aplic similar i pentru dispersie sau ali
parametri de control.

199
Experimental, s-a observat c se obin rezultate bune dac pentru
vectorii de poziie se utilizeaz ncruciarea discret iar pentru
parametrii strategiei se folosete ncruciarea intermediar.

8.2.2. Mutaia
Mutaia este cel mai important operator al strategiilor evolutive.
Am vzut c un individ este o pereche ( x, ) , unde vectorul indic
modul n care vectorul de poziie x se transform prin mutaie.
Parametrul de control este supus i el operaiei de mutaie.
Individul ( x, ) se transform prin mutaie n (x' , ') :

(x' , ') = mut (x, ) .


Vectorul x' se obine dup legea
x' = x + N (0, 1)

sau, pe componente,

x'i = xi + 'i N i (0, 1) , i {1, 2, L , n}


unde N (0,1) i N i (0, 1) sunt variabile aleatoare de medie 0 i
dispersie 1.
Mutaia asupra lui acioneaz diferit, dup cum = 1 sau

> 1 , n modelele ( , ) i + .

200

8.3. Funcionarea strategiilor evolutive


Structura general a unei strategii evolutive este cea a unui
algoritm evolutiv, aprnd, n funcie de strategie, unele diferene la
nivelul operatorilor.

8.3.1 Strategia (1 + 1)
Modelul iniial al lui Rechenberg consider populaia format
dintr-un singur individ supus operatorului de mutaie. Dup obinerea
descendentului, cei doi membri ai populaiei sunt comparai ntre ei
prin intermediul funciei de adecvare i este reinut individul cel mai
bun. Folosim urmtoarele notaii:
k = un numr de generaii consecutive; de obicei se ia k = 10n ,

unde n este dimensiunea spaiului de cutare


s (k ) = numrul mutaiilor de succes din ultimele k generaii

consecutive
p (k ) =

s(k )
= frecvena mutaiilor de succes din ultimele k
k

generaii
C= constant, aleas (la sugestia lui Schwefel [79]) ca fiind 0.817,

aceast valoare fiind obinut pentru modelul sferei.

201
Algoritmul SE(1+1)
begin
t := 1 , P(t ) = {x(t ), (t )}

evalueaz f (x)
while not cond ( P(t )) do
begin

calculeaz p(k )
calculeaz
(t )
nc

(t + 1) = mut ( (t )) = (t )

n
(t ) c

dac
dac
dac

1
5
1
p(k ) =
5
1
p (k ) <
5
p(k ) >

calculeaz
x(t + 1) = mut ( x(t )) = x(t ) + (t + 1) N (0, 1)

evalueaz f ( x(t + 1))


if f ( x(t + 1)) f ( x(t )) {selecia}
then P (t + 1) = {x(t + 1), (t + 1)}
else P(t + 1) := P(t )
t := t + 1

end
end

202
Observaii.

1) cond ( P(t )) reprezint condiia de oprire, dat de obicei prin


numrul de generaii
2) Schwefel a propus [79] o alt versiune a mutaiei pentru
parametrul
(t )
c

(t + n ) = (t )

c (t )

dac
dac
dac

1
5
1
p (k ) =
5
1
p(k ) <
5
p(k ) >

3) Strategia (1+1) lucreaz cu populaii formate dintr-un singur


individ i nu folosete ncruciarea.
Regulile, folosite anterior, pentru modificarea parametrului
sunt versiuni ale regulii de succes 1 5 propus de Rechenberg, care
afirm c:
raportul dintre numrul mutaiilor de succes i numrul mutaiilor

totale trebuie s fie 1 5


dac acest raport este mai mare dect 1 5 atunci valoarea lui

trebuie s creasc
dac raportul este mai mic dect 1 5 atunci valoarea lui

trebuie s descreasc.

203

8.3.2 Strategia ( + 1)
Strategia (1+1) poate fi generalizat prin mrirea numrului
prinilor fiecrui descendent i/sau a numrului descendenilor unui
printe. n strategia

( + 1) ,

> 1 prini vor genera un singur

descendent folosind ncruciarea i mutaia. ncruciarea se aplic att


vectorului de poziie ct i dispersiei i se poate folosi oricare din
operatorii prezentai anterior. Mutaia se aplic urmnd principiul
strategiei (1 + 1) , dar nu exist o metod de control a dispersiei, regula
1 5 nemaifiind aplicabil n acest caz. Acest dezavantaj face ca

strategia ( + 1) s fie puin folosit.

8.3.3 Strategii multidescendent


Aceste strategii au aprut din dorina de a folosi metode mai
robuste i mai generale pentru a controla parametrii mutaiei. Din
aceast categorie fac parte strategiile ( + ) i ( , ) care lucreaz
cu populaii formate din > 1 prini i > descendeni, ceea ce
determin o cretere a vitezei de convergen. Cei indivizi ai noii
generaii se selecteaz din :
populaia intermediar obinut reunind

cei

indivizi ai

generaiei curente cu cei descendeni ai ei, n cazul strategiei

( + )

204
din cei

descendeni ai populaiei curente, n cazul strategiei

( , ) .
Deoarece strategia ( , ) i schimb complet populaia la
fiecare nou generaie, ea nu este elitist. Aceast calitate permite
ieirea din zona unui optim local i evoluia ctre optimul global. n
schimb, strategia

( + )

permite supravieuirea unor indivizi

neperformani din vechea generaie. n felul acesta procesul de cutare


tinde s favorizeze minimele locale n defavoarea celor globale. De
aceea se recomand folosirea strategiei ( , ) .
ncruciarea. Iniial strategiile

( + )

( , )

au fost

aplicate folosind doar operatorul de mutaie. Ulterior s-a constatat c


se obin rezultate mai bune dac se folosete i ncruciarea, aplicat
naintea mutaiei. n mod empiric, s-a ajuns la concluzia c folosirea
ncrucirii discrete pentru vectorii de poziie i a celei convexe pentru
parametrii strategiei conduce la cele mai bune rezultate. Operatorul de
ncruciare se aplic de ori populaiei de prini, obinndu-se o
populaie intermediar de indivizi. Un descendent se obine
prin ncruciarea a p prini, 1 p ; de obicei se ia p = 2 sau
p = .
Mutaia. Considerm indivizii reprezentai prin perechi de

forma

( x, ) ,

unde x R n este vectorul de poziie iar 2 este

vectorul dispersie. Notm cu N (0, 1) un numr aleator ce urmeaz

205
distribuia normal de medie 0 i dispersie 1. Mutaia standard
nlocuiete individul ( x, ) cu (x' , ') obinut dup regulile:

'i = i e p1 N (0, 1) + p 2 N i (0, 1)


x'i = xi + 'i N i (0, 1)
cu i {1, 2, L , n}. Parametrii p1 i p2 controleaz mrimea pasului
mutaiei i respectiv schimbrile individuale. Schwefel [77] a propus
pentru aceti parametri urmtoarele valori
p1 =

c1
i p2 =
2n

c2
2 n

unde c1 i c2 iau de obicei valoarea 1.


Mutaia, aa cum rezult din formulele anterioare, acioneaz
nti asupra dispersiei i apoi asupra vectorului de poziie. Se poate
lucra cu vectorul dispersie avnd toate componentele egale; fie
valoarea lor comun. n acest caz mutaia funcioneaz dup regulile

' = e pN ( 0 ,1 )
x'i = xi + ' N i (0,1)
adic toate componentele vectorului de poziie se modific folosind
aceeai dispersie; parametrul p ia valoarea p =

c
.
n

Strategiile multidimensionale funcioneaz dup urmtorul algoritm

206
begin
t := 0

iniializeaz populaia P(t )


evalueaz indivizii din P(t )
while not cond ( P(t )) do
begin
P' (t ) : = ncruciare ( P(t ))
P" (t ) : = mutaie ( P' (t ))

evalueaz P" ( t )
P(t + 1) := selecie (P" (t ) M )
t := t + 1

end
end

Populaia iniial se construiete alegnd aleator , cu o


probabilitate uniform, puncte x i R n , i {1, 2, L , }. Dac se
cunoate un punct x aflat n vecintatea celui de optim atunci x va fi
unul dintre indivizi iar ceilali 1 se obin prin mutaii asupra lui. O
adaptare eficient a parametrilor strategiei necesit o diversitate
suficient de mare a populaiei de prini. Deci, numrul trebuie s
fie mai mare ca 1 iar raportul dintre numrul descendenilor i cel al
prinilor trebuie s fie n favoarea descendenilor. Se recomand un
raport

= 7 i, n mod frecvent, se folosete strategia (15, 100 ) .

207
Kursawe [54] a artat c asigurarea convergenei este
influenat de operatorul de ncruciare folosit; acesta depinde de
forma funciei obiectiv, de dimensiunea spaiului de cutare i de
numrul de parametri ai strategiei.
Condiia de oprire cond se refer, de obicei, la numrul maxim
de generaii dar pot fi luate n consideraie i alte criterii, printre care
cele de mai jos:
1) diversitatea populaiei a sczut sub o anumit limit, semn c
ne aflm n vecintatea unui optim global; diversitatea poate fi
msurat prin diferena calitilor asociate celui mai bun individ i
celui mai neperformant.
2) nu se mai obin mbuntiri semnificative ale funciei obiectiv
Mulimea M poate lua una din valorile:
M = P(t ) pentru strategia ( + )
M = pentru strategia ( , ) .

8.3.4 Utilizarea mutaiilor corelate


Fiecare individ din populaie este caracterizat nu numai de
vectorul x al variabilelor ci i de parametrul al strategiei.
Reprezentarea poate fi extins [72] introducnd valorile de varian
cii = i2

1 i n)

valorile

de

covarian

cij

208
( 1 i n 1, i + 1 j n ) ale distribuiei normale n dimensionale
avnd densitatea de probabilitate

p( z ) =

det( A)

(2 )n

1
z T Az
e 2

Pentru a asigura pozitiv-definirea matricei de covarian

A1 = (cij ) se utilizeaz unghiurile de rotaie j n locul coeficienilor

cij . Acum un individ se va reprezenta sub forma a = ( x, , ) unde


xR

este vectorul variabilelor obiectiv

R+n este vectorul deviaiilor standard ale distribuiei

normale; 1 n n

[ , ]n este vectorul unghiurilor ce definesc mutaiile

corelate ale lui x ; n = n (n 1) .


2

Vectorul permite cutarea n orice direcie; altfel erau


favorizate direciile paralele cu axele sistemului de coordonate.
Parametrii i ai strategiei se modific prin mutaie iar tipul
acestei operaii depinde de valorile lui n i n . Astfel, pentru

n = 1 i n = 0 se obine mutaia standard, cnd o singur

valoare a deviaiei standard controleaz mutaia tuturor componentelor


lui x .

209
n

= n i n = 0 se obine mutaia standard, cnd valorile

1 , L , n controleaz mutaia componentelor corespunzatoare ale


vectorului x
n(n 1)
se obin mutaiile corelate
2

n = n i n =

n = 2 i n = n 1 : valoarea 12 este folosit pentru a efectua

cutarea ntr-o direcie arbitrar iar 22 este utilizat pentru toate


direciile perpendiculare pe aceasta.
Mutaia asupra unui individ
a = ( x1 , L , xn , 1 , L , n , 1 , L , n )
acioneaz astfel:

'i = i e ' N (0, 1) + N i (0, 1) , 1 i n

' j = j + N j (0, 1) , 1 j n
x' = x + cov( , )

unde vectorul cov este calculat astfel:


cov = Tz , z = ( z1 , L , z n ) ,

zi = N 0, ( 'i )2 ,
T=

n 1 n

T pq ( ' j ),
p =1 q = p +1

210
j=

1
(2n p )( p + 1) 2n + q .
2

( )
t pp = t qq = cos( j ) i t pq = t qp = sin ( j ) .

Matricea de rotaie T pq ' j este matricea unitate exceptnd

Pentru factorii , ' i , Schwefel a sugerat urmtoarele valori:

c1
2 n

, '=

c2
, 0.0873 (= 5o )
2n

8.4. Analiza convergenei


Folosindu-se instrumente din teoria lanurilor Markov s-au
obinut condiii suficiente de convergen n sens probabilist pentru
strategiile evolutive. Condiii suficiente (nu i necesare) simplu de
verificat sunt:
i)

repartiia utilizat pentru mutaie are suport infinit ( este

satisfcut att de repartiia normal ct i de repartiia Cauchy);


ii)

selecia este elitist (strategiile de tip ( + ) satisfac aceast

proprietate);
iii)

recombinarea se aplic cu o anumit probabilitate pr.


Din punct de vedere practic convergena n timp infinit nu este de

mare folos ci mai degrab testeaz abilitatea algoritmului de a gsi


elemente din ce n ce mai bune prin trecerea de la o generaie la alta

211
(algoritmul progreseaz n procesul de cutare). O situaie nedorit
este aceea n care acest progres este stopat. Exist dou manifestri ale
acestui fapt:
Convergena prematur. Algoritmul se blocheaz ntr-un optim
local datorit faptului c populaia nu mai este suficient de divers
pentru a susine procesul de explorare.
Stagnare. Algoritmul s-a blocat n condiiile n care populaia este
nc divers, ns mecanismele evolutive nu sunt suficient de
puternice pentru a susine explorarea.
Soluionarea acestor probleme se bazeaz pe alegerea adecvat a
operatorilor i a parametrilor de control; nc nu exist rezultate
teoretice care s furnizeze soluii de evitare a situaiilor de
convergen prematur sau stagnare.
Studiul teoretic al vitezei de convergen se bazeaz pe estimarea
unor rate de progres n cazul unor funcii test simple (funcia sfer i
perturbaii ale acesteia). Prin estimarea ratei de progres s-au obinut
informaii referitoare la alegerea parametrilor de control astfel nct
rata s poat fi maximizat. Exist diverse abordri i diferite msuri
ale progresului strategiilor evolutive. Din punct de vedere practic este
util faptul c strategiile evolutive au cel mult vitez liniar de
convergen.
n absena unei teorii complete a domeniului, multe dintre
proprietile i regulile de proiectare sunt deduse pornind de la studii

212
experimentale. Acestea se efectueaz pe probleme de optimizare
construite n aa fel nct s ridice dificulti metodelor de rezolvare
(de exemplu cu multe minime locale sau cu un minim global greu de
atins din cauza prezenei unor "platouri"). Multe dintre funciile de test
utilizate n analiza strategiilor evolutive au fost construite pentru a
testa metode tradiionale de optimizare i au ridicat dificulti pentru
acestea.
Cum strategiile evolutive implic prezena unor elemente
aleatoare, la rulri diferite ale algoritmului se vor obine rezultate
diferite. Din acest motiv studiul experimental nu poate fi dect unul
statistic caracterizat prin faptul c se vor efectua mai multe rulri
independente i se va determina frecvena situaiilor n care strategia
a avut succes. Se consider c strategia a avut succes atunci cnd cel
mai bun element ntlnit de-a lungul generaiilor (sau cel mai bun
element din ultima generaie) este suficient de apropiat de optim.
Studiile statistice sunt folosite pentru a analiza influena
operatorilor i a parametrilor de control asupra eficacitii strategiei
evolutive. Valoarea lor este limitat datorit faptului c rezultatele
obinute pe funcii test nu pot fi extrapolate pentru orice problem de
optimizare. Coroborate ns cu rezultatele teoretice (obinute pentru
funcii test simple, cum este modelul sferei) au condus la criterii
euristice care au un oarecare succes n practic.
Din punct de vedere statistic prezint interes valoarea medie i
dispersia valorii optime descoperite la fiecare rulare.

213

8.5. Domenii de aplicabilitate


Cteva dintre aplicaiile strategiilor evolutive sunt:
Biologie i biotehnologie: simularea evoluiei proteinelor,
proiectarea lentilelor optice, optimizarea parametrilor unui model al
transmiterii semnalelor genetice bazat pe transcriere a ADN-ului,
optimizarea proceselor de fermentare.
Chimie i inginerie chimic: determinarea compoziiei optimale de
electrolii n procesele de galvanizare, minimizarea energiei clusterilor
n moleculele gazelor rare, estimarea parametrilor modelelor de
analiz cinetic a spectrelor de absorbie, identificarea benzilor n
spectrele obinute prin rezonan magnetic nuclear.
Proiectare asistat de calculator: determinarea parametrilor unui
amortizor pneumatic de ocuri, optimizarea volumului unor construcii
n vederea minimizrii instabilitii, determinarea formei optimale a
unor dispozitive, adaptarea parametrilor unor modele de tip element
finit pentru proiectarea optimal a structurilor, optimizarea eficienei,
senzitivitii i lrgimii de band a convertoarelor cu ultrasunete,
proiectarea optimal a arcelor utilizate n dispozitivele de suspensie de
la vehicule.
Fizic i analiza datelor: determinarea configuraiei optime a
defectelor n materialele cristaline, estimarea parametrilor n probleme

214
de dinamica fluidelor, determinarea strilor stabile n sistemele
disipative.
Procese dinamice, modelare i simulare: optimizarea unui sistem
socio-economic complex, identificarea parametrilor unui model de
rspndire a unei infecii virale.
Medicin i inginerie medical: controlul optimal al protezelor,
identificarea parametrilor modelelor folosite n farmacologie.

Inteligen artificial: controlul inteligent al vehiculelor

autonome, determinarea ponderilor reelelor neuronale.

9
PROGRAMARE EVOLUTIV I
PROGRAMARE GENETIC

Programarea evolutiv i Programarea genetic lucreaz cu


populaii care nu mai sunt reprezentate prin iruri binare sau reale, ca
n cazul algoritmilor genetici i al strategiilor evolutive, ci prin
structuri mai complicate: programe, automate finite, etc. Din punct de
vedere al operatorilor folosii, programarea evolutiv este mai
apropiat de strategiile evolutive (folosete mutaia ca operator
principal, ncruciarea fiind foarte rar sau deloc folosit) n timp ce
programarea genetic este mai apropiat de algoritmii genetici
(operatorul principal este cel de mutaie).

9.1. Programare evolutiv


9.1.1. Generaliti
Programarea evolutiv a fost iniiat de Fogel [26, 28] cu
scopul de a genera un comportament inteligent pentru un sistem
artificial. Comportamentul inteligent se refer la abilitatea sistemului

216
de a realiza predicii asupra mediului informaional n care se afl.
Sistemele

sunt

modelate

prin

automate

Turing

iar

mediul

informaional este reprezentat printr-o succesiune de simboluri de


intrare.
Un automat Turing este un automat finit nzestrat cu o band
de ieire cu urmtoarea funcionare: aflndu-se n starea p i citind
simbolul de intrare x , va trece ntr-o alt stare q i va nscrie pe
banda de ieire un simbol y . Prin acest mecanism, automatul Turing
transform o secven de simboluri de intrare ntr-o secven de
simboluri de ieire.
Comportamentul automatului este considerat inteligent dac
poate prezice simbolul urmtor. Populaia este dat de diagramele de
tranziie ale automatului iar gradul de adecvare al unui individ este cu
att mai mare cu ct irul de simboluri produs de automat este mai
aproape de un ir int. Diagrama de tranziie a unui automat finit
determinist este reprezentat printr-un multigraf orientat i etichetat,
n care nodurile sunt etichetate cu strile automatului iar arcele
reprezint tranziiile i sunt etichetate cu simbolul de intrare i cel de
ieire corespunztor.
Ca exemplu, s considerm automatul din Figura 9.1, care
verific dac un ir de bii conine un numr par sau impar de poziii
egale cu 1. Alfabetul de intrare este {0, 1} iar ieirea unei tranziii va fi
0 sau 1, dup cum irul conine un numr par respectiv impar de cifre

217
egale cu 1. Mulimea strilor este mulimea {par, impar} iar starea
iniial este par .

Figura 9.1

9.1.2. Funcionarea automatului Turing


Populaia este format din > 1 indivizi, fiecare fiind un

automat Turing. S considerm exemplul din figura urmtoare [9].

Figura 9.2

218
Automatul are strile S = {A, B, C} , alfabetul de intrare I = {0, 1} ,
alfabetul de ieire O = {a, b, c}. Tranziia ntre dou stri este data de
funcia

: S I S O
definit printr-o etichet de forma i / o care apare pe o latur ntre
dou stri s k i sl , nsemnnd c

((sk , i )) = (sl , o ) ;
adic dac maina este n starea s k i primete la intrare simbolul
i I atunci ea trece n starea sl i produce la ieire simbolul o O .

Prin acest mecanism, automatul transform un ir format din


simboluri de intrare ( interpretat ca mediul mainii) ntr-un ir format
din simboluri de ieire. Performana automatului n raport cu mediul
poate fi msurat pe baza capacitii predictive a ei: se compar
fiecare simbol de ieire cu urmtorul simbol de intrare i se msoar
valoarea prediciei cu ajutorul unei funcii de ctig.
Paradigma programrii evolutive a fost implementat de Fogel
lucrnd cu o populaie de > 1 prini care genereaz descendeni
prin mutaii asupra fiecrui printe. Mutaia a fost implementat ca o
schimbare aleatoare a componentelor automatului; o schimbare se
poate realiza n cinci moduri: schimbarea unui simbol de ieire,
modificarea

unei

tranziii,

adugarea/eliminarea

unei

stri,

modificarea strii iniiale.


Pentru fiecare individ al populaiei se alege uniform i aleator
unul din cei cinci operatori de mutaie. Este, ns, posibil ca asupra

219
aceluiai individ s se aplice mai muli operatori de mutaie, numrul
mutaiilor putnd s fie fix sau ales conform unei distribuii de
probabilitate. Dup evaluarea descendenilor se selecteaz cei mai
buni indivizi dintre prini i descendeni; deci se efectueaz o
selecie de tip ( + ) .
Fogel nu a folosit ncruciarea, de aceea muli cercettori din
domeniul algoritmilor genetici au criticat metoda lui, considernd c
nu e suficient de puternic. Totui, rezultatele teoretice i empirice din
ultimii 30 de ani au artat c rolul mutaiei n algoritmi genetici a fost
subestimat iar cel al ncrucirii a fost supraestimat [3, 19, 21, 52].

9.1.3. Optimizare folosind programarea evolutiv


Variantele curente de programare evolutiv folosite n
probleme de optimizare cu parametri continui au multe lucruri n
comun cu strategiile evolutive, n special n privina reprezentrii
indivizilor, al modului de efectuare a mutaiei i al autoadaptrii
parametrilor [97].
Iniial programarea evolutiv a lucrat cu spaii mrginite
n

[ui , vi ] R n , cu ui < vi .
i =1

Mai trziu domeniul de cutare a fost extins la I = R n , un individ


fiind un vector a = x I . n [22] se introduce conceptul de

220
metaprogramare evolutiv, care presupune un mecanism de autoadaptare similar celui de la strategii evolutive. Pentru a ncorpora
v R+n , spaiul indivizilor este extins la

vectorul varianelor

I = R n R+n . Funcia de evaluare (a ) se obine din funcia obiectiv

f (x) prin scalare la valori pozitive i, eventual, prin impunerea unor


modificri aleatoare k ale parametrilor; deci (a ) = ( f ( x ), k ) , unde

este functia de scalare. n cazul programrii evolutive standard


mutaia transform pe x n x' , x' = mut 1 ,L, n ,1 ,L, n ( x) , dup regula
x'i = xi + i N i (0, 1)

i = i (x ) + i
unde constantele de proporionalitate i i i sunt alese n funcie de
problema de rezolvat; totui, de obicei se consider i = 1 i i = 0 ,
astfel c mutaia devine
x'i = xi + ( x) N i (0, 1) .

n cazul meta-programrii evolutive individul a = (x, v) se


transform prin mutaie n a ' = mut (a) = ( x' , v' ) astfel:
x'i = xi + vi N i (0, 1)
v'i = vi + vi N i (0, 1)

221
unde are rolul de a asigura c v'i primete o valoare pozitiv.
Totui, dac variana devine negativ sau zero atunci i se atribuie o
valoare mic > 0 .
Se consider c n programarea evolutiv se codific mai
degrab specii dect indivizi; i cum ncruciarea nu acioneaz la
nivelul speciilor, programarea evolutiv nu folosete acest tip de
operator. Dup crearea a descendeni din prini, prin aplicarea
mutaiei o singur dat asupra fiecrui printe, se selecteaz
indivizi din mulimea prinilor P (t ) reunit cu cea a descendenilor

P ' (t ) . Se utilizeaz o variant stochastic a seleciei turneu cu


parametrul

q >1

care

const

n:

pentru

fiecare

individ

ak P(t ) P' (t ) se selecteaz aleator q indivizi din P (t ) P' (t ) i


se compar evaluarea lor cu cea a lui ak . Numrul wk {0, 1, L, q} al
indivizilor mai puin performani dect ak constituie scorul lui ak .
Formal, acesta se poate scrie

( )

1 dac (ai ) a i
wi =
j =10 altfel
q

unde indicii

j {1, 2, L, 2 } sunt valori aleatoare uniforme,

calculate pentru fiecare comparare. Dup ce se efectueaz aceast


operaie pentru toi cei 2 indivizi, ei se ordoneaz descresctor dup
scorul wi , 1 i 2 , i se aleg cei mai buni indivizi care vor
forma generaia urmtoare P (t + 1) . Rezult urmtorul algoritm

222
begin
t := 0

iniializeaz P (0) := a1 (0), L, a (0) I ,


unde I = R n R+n , ai = ( xi , vi ) i {1, L, n}

{(a1 (0)), L, (a (0))}


unde (a j (0 )) = ( f (x j (0 )), k j )

evalueaz P (0) :

while ( T (P (t )) true ) do
begin

aplic mutaia: a'i (t ) := mut (ai (t )) i {1, L, }

{
}
{(a'1 (t ), L, (a' (t )))} cu (a' (t )) = ( f (x' (t )), k )

evalueaz P ' (t ) := a'1 (t ), L, a' (t ) calculnd


i

selecteaz P (t + 1) := turnq (P(t ) P ' (t ) )


t := t + 1

end
end

Am evideniat anterior similaritatea dintre strategiile evolutive i


programarea evolutiv. Exist, totui, i diferene, cele mai evidente
fiind la nivelul:

codificrii: strategiile evolutive codific indivizi iar programarea

evolutiv codific specii

223

seleciei: strategiile evolutive aleg cei mai buni indivizi dintre

prini i descendeni, pe cnd programarea evolutiv face aceast


alegere dintr-un numr de indivizi selectai anterior din populaia
curent reunit cu cea a descendenilor.
Programarea evolutiv are numeroase aplicaii, dintre care
amintim: optimizarea numeric continu, dezvoltarea sistemelor de
clasificare, antrenarea reelelor neuronale, proiectarea sistemelor de
control ce pot fi modelate prin automate finite, controlul deplasrii
roboilor.

9.2. Programare genetic


Programarea genetic

reprezint o nou direcie n cadrul

calculului evolutiv, dezvoltat de ctre J. Koza [52] n jurul anilor


1990. Programarea genetic este, de fapt, o variant a algoritmilor
genetici care opereaz cu populaii constituite din structuri de
calcul, din acest punct de vedere fiind similar programrii evolutive.
Structurile care constituie populaia sunt programe care atunci cnd
sunt executate sunt soluii candidat ale problemei. Programarea
genetic a fost dezvoltat iniial cu scopul de a genera automat
programe care s rezolve (aproximativ) anumite probleme.
Ulterior aria de aplicaii s-a extins ctre proiectarea evolutiv,
un domeniu aflat la intersecia dintre calculul evolutiv, proiectarea

224
asistat de calculator i biomimetism (subdomeniu al biologiei care
studiaz procese imitative din natur). Programarea genetic urmeaz
structura general a unui algoritm genetic, folosind ncruciarea ca
operator principal i mutaia ca operator secundar. Particularitile
programrii genetice sunt legate de modul de reprezentare a
indivizilor, fapt ce necesit i alegerea adecvat a operatorilor.

9.2.1 Reprezentarea indivizilor


n programarea genetic indivizii sunt vzui nu ca o
succesiune de linii de cod ci ca arbori de derivare asociai
cuvntului pe care l reprezint n limbajul formal asociat limbajului
de programare utilizat. n practic se lucreaz cu limbaje restrnse,
bazate pe o mulime mic de simboluri asociate variabilelor i o
mulime de operatori; n aceste condiii, orice program este de fapt o
expresie n sens general. Alegerea simbolurilor i a operatorilor este
strns legat de problema de rezolvat. Aceast alegere determin
esenial rezultatele ce se vor obine; nu exist, ns, reguli generale
care s stabileasc legtura dintre o problem de rezolvat i mulimile
de simboluri i operatori folosite, rolul important revenindu-i
programatorului.
Koza a propus ca modalitate de reprezentare scrierea prefixat
a expresiilor, care corespunde parcurgerii n preordine a arborelui de
structur al expresiei. Pentru a simplifica descrierea, considerm c se
opereaz cu programe care sunt expresii ce conin operatori

225
aritmetici, relaionali i logici precum i apeluri ale unor funcii
matematice. n acest caz, limbajul formal asociat este independent de
context i fiecrui cuvnt (expresie) i se poate asocia un arbore de
descriere. Nodurile interioare ale arborelui sunt etichetate cu operatori
sau nume de funcii iar cele terminale sunt etichetate cu nume de
variabile sau constante. De exemplu, expresia max( x y, x + 5 y )
va fi reprezentat prin

Figura 9.3
Mulimea nodurilor interioare se numete mulimea funciilor
F = { f1 , f 2 ,L, f n f } ; n exemplul nostru F = {max, + , }. Fiecare

funcie f i F are aritatea (numrul argumentelor) cel puin 1.


Funciile din F pot fi de diferite tipuri:

226

aritmetic: +, , , /

matematic: sin, cos, exp, log

boolean: AND, OR, NOT

condiional: if then else

repetitiv: for , while, repeat


Mulimea nodurilor terminale din arborele de derivare se numete

muimea

terminalelor

T = t1 , t 2 , L, t nt ;

exemplul

nostru

T = {x, y, 5}. Mulimile F i T pot fi reunite ntr-un grup uniform

C = F T , dac se consider c terminalele sunt funcii de aritate


zero. Pentru ca programarea genetic s funcioneze eficient,
mulimile F i T trebuie s respecte dou condiii [102]:

cea de nchidere, adic fiecare funcie din F este apt s accepte ca

argument orice valoare sau tip de dat ce poate fi returnat de orice


funcie din C ; aceast proprietate previne erorile din timpul rulrii

cea de suficien, care cere ca funciile din C s poat exprima

soluiile problemei, adic cel puin o soluie aparine mulimii tuturor


compunerilor posibile ale funciilor din C .
Cteva exemple de mulimi C nchise sunt:

C = {AND, OR, NOT , x, y, true}, unde x i y sunt variabile

booleene
C = {+, , , x, y , 1, 0}, cu x

i y variabile ntregi

C = {+, , sin, cos, exp, x, y} , cu x

i y variabile reale.

227
Exist mulimi pentru care proprietatea de nchidere nu este
verificat; de exemplu:
C = {+, , , /, x, y, 1, 0},

cu x i y variabile reale, nu este nchis

deoarece se pot genera mpriri prin zero, cum sunt

x x+ y
, etc
,
0 xx

C = {+, , sin, cos, log, x, y}, cu x i y variabile ntregi, nu este

nchis deoarece se pot genera valori negative pentru logaritm; de


exemplu, log( x) .

Mulimea C = +, ,

, x poate fi nchis sau nu, n funcie de

domeniul valorilor lui x . nchiderea poate fi forat prin folosirea


funciilor protejate. Astfel de funcii sunt:

dac y = 0
x 1
=
, operaie ce va fi notat n continuare cu
y x y dac y 0

div

log( x) =

dac x = 0

log( x ) altfel

x=

x .

Dac nu vrem s folosim funcii de protecie atunci trebuie


redus foarte mult adecvarea (fitness-ul) expresiilor nevalide;
problema este similar funciilor de penalizare din cazul problemelor
de optimizare.
Suficiena este garantat numai pentru unele probleme, cnd
teoria sau alte metode ne spun c o soluie poate fi obinut

228
combinnd elementele lui C . De exemplu, logica ne spune c
C = {AND, OR, NOT , x, y} permite implementarea oricrei funcii

booleene, deoarece conine o multime complet de conectori. Dac C


nu este suficient, programarea genetic poate doar s dezvolte
programe care s realizeze o aproximare ct mai bun. De exemplu,
mulimea C = {+, , , /, x, 0, 1, 2} nu poate s dea dect o aproximare
pentru exp(x) , tiind c aceasta este o funcie transcedental (nu poate
fi aproximat exact cu ajutorul unor expresii algebrice finite). n acest
caz programarea genetic nu poate dect s realizeze aproximri
algebrice finite de tipul

exp( x) = 1
exp( x) = 1 + x

exp( x) = 1 + x +

x
2

exp( x) = 1 + x +

x2
1
+
x3
2 +1 1+ 2 + 2

9.2.2 Populaia iniial


Arborii iniiali sunt generai alegnd aleator funcii din C . De
exemplu, pentru C = {+, , , /, x, y, 0, 1, 2, 3} putem avea

229
*

x
-

Figura 9.4
Dimensiunea i forma programelor iniiale sunt controlate
selectnd noduri din F i T , n funcie de adncimea lor n arbore.
Arborii pot fi reprezentai i ca liste de liste. De exemplu, pentru
primii doi arbori anteriori avem

2 x ] , [* [+ x 3] 2] .

Din acest motiv, iniializarea populaiei n programarea genetic este


bazat, de obicei, pe proceduri recursive care returneaza liste.
Metoda full selecteaz noduri din F dac adncimea lor nu
depete o valoare maxim i noduri din T n caz contrar. Aceast
tehnic duce la obinerea unei populaii iniiale cu frunzele la acelai
nivel (Figura 9.5).

230

Figura 9.5
Metoda grow selecteaz noduri din C dac adncimea lor
este mai mic dact o valoare minim i din T n caz contrar. Cum C
conine i elemente terminale, aceast metod produce arbori iniiali
de diferite forme i adncimi, ca n Figura 9.6

Figura 9.6
Metoda ramped half and half combin cele dou metode
anterioare, pentru a da o mai mare diversitate populaiei iniiale. Ea
lucreaz dup urmtorul algoritm

231
for i = 1 to max _ adncime do
begin

50

genereaz
max _ adncime 1

din populaie folosind metoda

full cu adncimea maxim i

50

genereaz
max _ adncime 1

din populaie folosind metoda

grow cu adncimea maxim i


end

Metodele full i grow pot fi implementate cu urmtoarea


procedur recursiv [102]
Genereaz_expresie( F , T , max_adncime, metod)
begin
if max _ adncime = 0
then
begin

selecteaz t T
insereaz t n arbore
end
else
begin

232
if metoda = full
then selecteaz f F

else selecteaz f F T
insereaz f n arbore
if f F
then
begin
n := aritatea lui f

for i = 1 to n do

genereaz_expresie( F , T , max_adncime-1, metod)


end
end
end

La apelul
genereaz _ expresie ([+ / ], [x y 0 1 2 3], 3, full )

se poate genera expresia

[ [+ [

x 1][ 2 0] ][/ [+ y 3][ 2 x ] ] ]

care corespunde arborelui urmtor

233

Figura 9.7
La apelul
genereaz - expresie ([+ 1], [x y 0 1 2 3], 3, grow)

se genereaz expresia

[+ [

3 x ][ 2 [/ 1 y ] ]]

care corespunde arborelui

Figura 9.8

234

9.2.3 Operatori de evoluie


ncruciarea const n selectarea aleatoare a punctului de
ncruciare (nod sau arc n arbore) n fiecare printe i schimbarea
subarborilor care ncep de la punctul de ncruciare. Este indicat ca
punctele de ncruciare s nu fie selectate uniform aleator ci s fie
favorizate nodurile interioare; de exemplu, n 90% din cazuri se aleg
noduri neterminale. Este posibil ca numrul ncrucirilor s fie
controlat de probabilitatea de ncruciare. Un exemplu de ncruciare
este dat n figura urmtoare.

prini

descendeni
Figura 9.9

235
Dei este un operator secundar, mutaia permite modificarea
structurilor arborescente n moduri n care ncruciarea nu o poate
face. n funcie de efectul pe care l are asupra structurii, exist trei
variante de mutaie:
mutaia simpl: modific eticheta unui nod selectat aleator

Figura 9.10
mutaia de expandare: const n nlocuirea unui nod terminal cu

un subarbore, construit dup aceleai reguli dar care nu face parte


neaprat din populaia curent, aa cum se ntmpl n cazul
ncrucirii

Figura 9.11

236
mutaia de reducere: const n nlocuirea unui subarbore cu un nod

terminal

Figura 9.12
n general se poate alege un nod al arborelui i subarborele
dominat de acel nod este nlocuit cu altul generat aleator. Astfel,
mutaia poate fi vzut ca ncruciarea cu un arbore generat aleator.

9.2.4 Rularea programelor n Programarea


genetic
n programarea genetic programele sunt reprezentate prin
arbori sau liste; ntotdeauna este posibil s transformm o astfel de
structur ntr-un cod C, C++, Java, Lisp, etc. Dar, n majoritatea
cazurilor o asemenea operaie este ineficient deoarece
iniial, majoritatea programelor au un fitness foarte mic i vor

supravieui puine generaii

237
multe programe (bune sau mai puin bune) vor fi schimbate prin

ncruciare sau mutaie i vor trebui recompilate.


O abordare mai bun este de a interpreta programele, n loc de
a le compila. Unele limbaje de programare, cum este Lisp, au deja un
interpretor n mediul de dezvoltare a programelor. Pentru a-l utiliza
trebuie s ne asigurm c sintaxa este corect; de exemplu, s utilizm
paranteze rotunde n locul celor ptrate. Pentru toate celelalte limbaje
de programare este necesar construcia unui astfel de interpretor. A
interpreta un program nseamn a-l parcurge n adncime i a evalua
toate nodurile ncepnd cu frunzele. Parcurgerea n adncime permite
evaluarea nodurilor numai dup ce valorile argumentelor lor sunt
cunoscute. De exemplu,
5

x = 1

-1
4

-1

Figura 9.13
n urma interpretrii, valoarea nodului rdcin este valoarea
programului. Aplicaiile posibile ale programrii genetice sunt multe
i variate, singura problem fiind definirea unei funcii fitness

238
corespunztoare. Tehnicile de scalare i penalizare folosite n
algoritmi genetici sunt aceleai, cu diferena c pentru a decide dac
un program este bun sau nu, trebuie executat odat sau de mai multe
ori cu date de intrare diferite sau n diferite contexte.
O clas de probleme n care programarea genetic s-a dovedit
foarte util este regresia simbolic. Aceasta este o tehnic folosit
foarte des n interpretarea datelor i const n gsirea coeficienilor
unei funcii, obinute ca o combinaie de funcii elementare astfel nct
aceasta s aproximeze ct mai bine o funcie cunoscut prin valorile ei
n puncte date. Termenul simbolic semnific faptul c nu suntem
interesai n gsirea parametrilor optimi (numere) ci a funciilor
optime (expresii, reprezentri simbolice).
Pentru a folosi programarea genetic n rezolvarea problemelor
de regresie simbolic este necesar:
s avem o mulime de puncte date, unde fiecare punct reprezint

valorile luate de anumite variabile la un anumit moment


s selectm variabilele pe care le considerm dependente de altele
s definim o funcie fitness care s msoare capacitatea fiecrui

program de a determina valorile variabilelor independente cnd sunt


date valorile celor dependente
s selectm mulimile adecvate de funcii i terminale; terminalele

trebuie s includ toate variabilele dependente i poate i altele iar


funciile trebuie selectate pe baza cunotintelor despre domeniu.
Ca exemplu [102] s gsim expresia simbolic ce aproximeaz
cel mai bine mulimea de date

239

{(xi , yi )} = {( 1.0, 0.0), ( 0.9, 0.1629), ( 0.8, 0.2624), L, (1.0, 4.0)}


care a fost generat folosind funcia
y = f ( x ) = x + x 2 + x 3 + x 4 , x [ 1, 1] .

Parametrii programului genetic sunt


dimensiunea populaiei = 1000
mulimea funciilor = {+, , *, log, exp, sin, cos, div}
mulimea terminalelor = {x}
adncimea maxim = 4
metoda de generare a populaiei iniiale = full
numr de generaii = 50
probabilitatea de ncruciare = 0.7
pobabilitatea de mutaie = 0
funcia fitness =

yi eval ( prog , xi )
i

Cteva din programele optime obinute la diverse generaii sunt [102]:


la generatia 1

[+ [- [log [exp x] ] [+ [sin x] [- x x] ] ] [+ [exp [log x] ] [sin [log x]


]]]
cu fitnessul 8.20908
la generaia 2

[* [+ [+ [+ x x] [div x x] ] x ] [log [exp [* x x] ] ] ]


cu fitnessul 7.0476
la generaia 3

[* [log [- [sin x] [exp x] ] ] [+ [cos [* x x] ] [+ [+ x x] [cos x] ] ] ]


cu fitnessul 4.74338

240
la generaia 6

[* [+ [+ [+ x [exp [log x] ] ] [div x x] ] x ] [log [exp x] ] ]


cu fitnessul 2.6334
Se observ c fitnessul descrete, ceea ce nseamn c programul
tinde spre gsirea combinaiei optime de funcii; de exemplu, la
iteraia 26 se obine fitnessul 0.841868.

10
SOFTWARE DE ALGORITMI
EVOLUTIVI

Vom descrie cteva din cele mai cunoscute pachete de


programe folosite pentru a rezolva probleme cu ajutorul algoritmilor
evolutivi.
GENESIS:GENEtic Search Implementation System (autor,
John Grefenstette) este scris n limbajul C i poate fi utilizat sub Linux
sau MsDos. Uurina sa n utilizare a fcut ca, mult timp, s fie cel
mai utilizat pachet de programe n probleme de optimizare a
funciilor. Totui, are i limitri importante: nu admite dect
reprezentri binare sau vectori de numere reale, implementeaz doar
ncruciarea dubl i este dificil de extins.
Pachetul este nsoit de un ghid de utilizare foarte clar i
concis, care prezint principalele opiuni de utilizare i modul cum se
seteaz diveri parametri. GENESIS a fost, i nc mai este, important
ca material didactic.

242
GENEsYs (autor, Thomas Bck)

este o extensie a

programului GENESIS, modul de utilizare fiind aproape identic. El


elimin o parte din limitrile programului de baz; de exemplu,
permite ncruciarea multipl, introduce diverse metode de selecie,
permite autoadaptarea ratei de mutaie. Totui, nici aceast versiune
nu aduce nouti n privina reprezentrii datelor. Sunt utilizate o
mulime de funcii obiectiv: funcii

De Jong, funcii continue

complicate, funcii binare, funcii fractale.


DGENESIS: Distributed GA (autor, Erick Cantu-Paz) este
bazat pe GENESIS 5.0 i are scopul de a implementa un algoritm
genetic distribuit pentru o reea de staii de lucru. Fiecare subpopulaie
este prelucrat printr-un process UNIX iar utilizatorul poate fixa rata
de migrare,

intervalul de migrare i topologia comunicrii dintre

subpopulaii.
Simple GA (autor, Stephen J. Hartley) este scris n Java i
este mai complex dect programele anterioare. Principala slbiciune
const n absena unor clase care s implementeze structuri de date
complexe (de exemplu, arbori) dar structura ierarhiei de clase permite
utilizatorului s-i creeze cu uurin astfel de reprezentri.

243
GAL: Simple GA in Lisp (autor, Bill Spears) este un program
n Common Lisp bazat pe pachetul GENESIS. Folosete ncruciarea
multipl aplicat la 60% din indivizi dar este posibil s se utilizeze i
ncruciarea uniform; mutaia este bazat pe fitnessul proporionat.
GALIB (autor, Matthew Wall) este scris n C++ i poate fi
rulat sub diverse sisteme de operare (Win 9.x, Win NT, Linux, MAC,
etc). Este un pachet deosebit de complex: conine clase predefinite
pentru reprezentarea cromozomilor ca iruri binare, matrice binare,
vectori reali, matrice reale, arbori, etc. i definete un mare numr de
operatori de evoluie pentru fiecare din aceste reprezentri.
Documentaia este foarte detaliat, coninnd peste 190 de pagini n
format html.
SUGAL (autor, Andrew Hunter) este scris n C i poate fi
utilizat sub Linux i Windows. Pentru cei care nu cunosc foarte bine
limbajul C++, SUGAL este o alternativ la pachetul GALIB. La fel
ca i acesta dispune de o gam larg de reprezentri i de operatori
evolutivi. Documentaia este foarte bogat, ghidul de utilizare avnd
n jur de 145 de pagini html. De asemenea, conine un mare numr de
exemple, ceea ce permite ca de fiecare dat s se gseasc printre ele
unul destul de apropiat de problema de rezolvat.
GAGA: A Genetic Algorithm for General Application este
un algoritm general folosit pentru a minimiza funcii obiectiv

244
dificile.Versiunea original, scris de Hilary Adams, a fost modificat
de Ian Poole i rescris n C de Jon Crowcroft .
GENOCOP, Genetic-2, Genetic-2N:

(autor, Zbigniew

Michalewicz) sunt pachete de algoritmi genetici folosii pentru


optimizri numerice.
GENOCOP: GEnetic algorithm for Numerical Optimization
for COnstrained Problems, optimizeaz funcii cu orice numr de
restricii liniare de tip egalitate sau inegalitate.
Genetic-2 : rezolv problema de transport liniar, minimiznd costul
transportului.
Genetic-2N : rezolv problema de transport neliniar, minimiznd
costul transportului.
GenET: (autor, Cezary Z. Janikow) este un pachet de
programe , scrise n C++, care permite dezvoltarea rapid de aplicaii,
idependent de domeniu. GenET a fost scris cu intenia de a deveni o
bibliotec de reprezentri i operatori ce pot fi utilizai ca un
mecanism de a compara diferite modele i strategii. Conine multe
exemple de implementri pentru probleme cu structuri omogene sau
heterogene i furnizeaz diverse modele ale populaiei, caracteristice
algoritmilor genetici i programrii evolutive. Permite adaptarea
automat a probabilitilor operatorilor i un mecanism de selecie
dinamic.

245
SES: Simple Evolution Strategy (autor, Joachim Sprave) este
un

program (n limbajul C) de optimizare parametric bazat pe

strategii evolutive. SES este o implementare tradiional a strategiilor


evolutive, dar are i unele deficiene:
- mutaiile corelate i ncruciarea global nu sunt implementate
- ncruciarea discret opereaz simultan asupra ambilor parametri:

i i xi sunt luai din acelai printe pentru fiecare poziie i .


EM: Evolution Machine (autori: Hans-Michael Voigt,
Joachim Born, Jens Treptow) reprezint o colecie de algoritmi
genetici i strategii evolutive, aplicabili problemelor de optimizare cu
codificare real. EM trateaz n principal algoritmi genetici dar are i
abordri ale cutrii evolutive. O caracteristic este reprezentarea
grafic (n una, dou i trei dimensiuni) a rezultatelor, ceea ce permite
analiza funciei fitness i a evoluiei procesului de optimizare.
LICE (autor, Joachim Sprave) este un program de optimizare
parametric bazat pe strategii evolutive; folosete o schem de selecie
local pentru a preveni stagnarea prematur.
WinGA: Simple Genetic Algorithm for Windows (autor,
Jason H. Moore) este o demonstraie interactiv de utilizare a
algoritmilor genetici. Programul permite utilizatorului s varieze
parametrii algoritmului genetic i s analizeze performanele.

246
TOLKIEN: TOoLKIt gENetics-based applications (autor,
Anthony Yiu-Cheung Tang) este o bibliotec de clase C++ pentru
utilizarea algoritmilor genetici i a sistemelor de clasificare. Pachetul
include textul surs, un manual de utilizare, un tutorial i cteva
programe demonstrative.
GAucsd: Genetic Algorithm Software Package (autor, Nici
Schraudolph) este bazat pe GENESIS, dar se deosebete prin
numeroase mbuntiri; cele mai importante se refer la simplificarea
scrierii evalurii funciilor i la codificarea parametrilor. Aceste
modificri duc la creterea performanei cutrii n spaii continue.
GAC: Simple GA in C

(autor, Bill Spears) folosete

ncruciarea cu n puncte aplicat la 60% din populaie ( n fiind mai


mic dect lungimea unui cromozom), dar este posibil s se foloseasc
i ncruciarea uniform. Mutaia este foarte puin folosit iar selecia
este de tip fitness proporionat.
GAGS: Genetic algorithm application generator and C++
class library (autor, J.J. Merelo Guervos) . GAGS 0.92 (Genetic
Algorithms from Granada, Spain) este un generator, scris n C++, de
aplicaii de tip algoritm genetic. GAGS ofer urmtoarele posibiliti:
lucrul cu indivizi de dimensiune variabil
selecia de tip turneu, rulet
ncruciarea cu dou puncte
mutaia la nivel de bit

247
GAMusic: Genetic Algorithm to Evolve Musical Melodies
(autor, Jason H. Moore) genereaz melodii scurte iar utilizatorul le
asociaz fitnessul corespunztor. Operaiile de mutaie i ncruciare
la nivelul frecvenelor sunt controlate de utilizator. Fiecare serie de
note muzicale este reprezentat n binar ntr-un tablou de dimensiune
128, ceea ce permite 30 note pe melodie i furnizeaz un spaiu al
soluiilor de aproximativ 3.4 10 38 melodii.
GENALG: Genetic Algorithm package written in Pascal

(autor, Wesley R. Elsberry) este un program care demonstreaz lucrul


cu algoritmi genetici. Pornind de la o populaie de numere reale
generate aleator, ncearc s gseasc un numr suficient de aproape
de un numr dat.
GenET:

Domain-independent

generic

GA

software

package (autor, Cezary Z. Janikow) permite dezvoltarea rapid de

aplicaii, fiind o bibliotec de reprezentri i operatori. Permite lucrul


cu diverse modele: algoritmi genetici, steady-state, modele (n, m ) i

(n, n + m ) de programare evolutiv.


Genie: GA-based modeling/forecasting system (autor, Lance

Chambers) este utilizat n planificarea pe termen lung: construiete un


model al unui mediu i prognozeaz cum va evolua mediul n viitor.

248
GENlib: Genetic Algorithms and Neural Networks (autor,

Jochen Ruhland) este o bibliotec ce conine funcii pentru algoritmi


genetici i dou aplicaii pentru antrenarea reelelor neuronale. Prima
aplicaie utilizeaz algoritmi genetici pentru a antrena o reea feedforward cu trei nivele ca s poat lucra ca funcia cosinus. Un astfel de
antrenament este foarte dificil de efectuat cu un algoritm de tip
propagare napoi, n timp ce algoritmii genetici dau rezultate foarte
bune. A doua aplicaie dezvolt o reea neuronal care imit funcia
XOR. Pentru aceasta sunt folosii doi algoritmi genetici: primul
stabilete topologia reelei iar al doilea ajusteaz ponderile.
mGA: C and Common Lisp implementations of a messy
GA (autori: Kalyanmoy Deb, David E. Goldberg, T. Kerzic) este o

implementare n C a algoritmilor genetici dezordonai. De asemenea,


este disponibil i o versiune n Common Lisp. Testele prezentate
scot n eviden faptul c aceti algoritmi gsesc ntotdeauna optimul
global, ntr-un timp polinomial.
ParaTSP: Parallel GA with Simulated Annealing to solve
TSP's (autor, Holger Totzke) este un pachet software (bazat pe

GENEsYs) folosit pentru a rezolva problema comis voiajorului, cu


ajutorul algoritmilor genetici i a clirii simulate.

BIBLIOGRAFIE
[1] Arabas J., Michalewicz Z., Mulawka J. GAVaPS A Genetic
Algorithm with Varying Population Size, in [62], pp. 73-78
[2] Bck T.- The interaction of mutation rate, selection and self
adaptation within a genetic algorithm, in [57], pp. 85-94
[3] Bck T.- Optima mutation rates in genetic search, in [28] , pp.
2-8
[4] Bck T., Hoffmeister F., Schwefel H.-P. - A survey of evolution
Strategies, in [11], pp. 2-9
[5] Bck T., Rudolpf G., Schwefel H.-P. Evolutionary Programming
And Evolution Strategies: Similarities and Differences, in [23],
pp. 11-22
[6] Bck T., Schwefel H .-P. An Overview of
Algorithms

for

Parameter

Evolutionary

Optimization, Evolutionary

Computation, 1(1)(1993), pp. 1-23


[7] Bck T., Schwefel H.-P. Evolution Strategies I: Variants and
their computational implementation, in [96], pp. 111-126
[8] Bck T., Schwefel H.-P. Evolution Strategies II: Theoretical
Aspects , in [96], 1995, pp. 127-140

250
[9] Bck T., Schwefel H. -P. Evolutionary

computation.

An

Overview, in [31], pp. 20-29


[10] Bck T., Schtz M. Intelligent Mutation rate control in
canonical genetic algorithms, in [69], pp. 158-167
[11] Belew R. K., Booker L. B. (Eds.) Proc. 4th Int. Conf. on
Genetic Algorithms, Morgan Kaufmann Publishers, San Mateo,
CA, 1991
[12] Davis L. Applying Adaptive Algorithms to Epistatic Domains,
Proc. of the Int. Joint Conf. on Artificial Intelligence, 1985, pp.
162-164
[13] Davis, L.(Ed) - Handbook of Genetic Algorithms , Van Nostrand
Reinhold, New York, 1991
[14] De Jong K. A. - An Analysis of the Behavior of a Class of
Genetic Adaptive Systems. PhD thesis, University of Michigan,
Ann Arbor, MI, 1975.
[15] Dumitrescu D. - Algoritmi genetici i strategii evolutive Aplicaii n inteligena artificial i n domenii conexe, Editura
Albastr, Cluj-Napoca, 2000
[16] Dumitrescu D., Lazzerini B., Jain L. C., Dumitrescu A.
Evolutionary Computation, CRC Press, Boca Raton, Florida,
2000
[17] Eshelman L. J. The CHC Adaptive Search Algorithm: How to
Have Safe Search when Engaging in Nontraditional Genetic

251
Recombination, in [70], pp. 265-283
[18] Eshelman L. J. (Ed.) Proc. of the Sixt Int. Conf. on Genetic
Algorithms, Morgan Kaufmann, San Mateo, CA, 1995
[19] Eshelman L. J., Schaffer J. D. Crossovers niche, in [29], pp.
9-14
[20] Fitzpatrick J. M., Grefenstette J. J. Genetic algorithms in noisy
environments, Machine Leraning 3 (1988), pp 101-120
[21] Fogarty T. C. Varying the probability of mutation in the genetic
algorithm, in [74], pp. 104-109
[22] Fogel D. B. - Evolving Artifcial Intelligence. PhD thesis,
University of California, San Diego, 1992.
[23] Fogel D. B. Evolutionary computation : Toward a New
Philosophy of Machine Intelligence, IEEE Press, Piscataway, NJ,
1995
[24] Fogel D. B., Atmar W. (Eds.) Proc. Second Annual Conf.
Evolutionary Programming (EP93), San Diego, CA, 1993
[25] Fogel L. J. Autonomous automata, Industrial Research 4
(1962), pp. 14-19
[26] Fogel L. J. Toward inductive inference automata, Proc. Int.
Federation for Information Processing Congress, Munich, 1962,
pp. 395-399
[27] Fogel L. J., Angeline P. J., Bck T. (Eds.) Proc. 5th Conf. on
Evolutionary Programming, MIT Press, Cambridge, MA, 1996

252
[28] Fogel L. J., Owens A. J., Walsh M. J. Artificial Intelligence
through Simulated Evolution, John Wiley, New York, 1966
[29] Forrest S. ( Ed.) Proceedings of the Fifth International
Conference on Genetic Algorithms, Morgan Kaufmann, San
Mateo, CA, 1993
[30] Fox B. R., McMahon M. B. Genetic operators for Sequencing
Problems, in [70], pp. 284-300
[31] Fukuda T., Furuhashi T., Fogel D. B. (Eds.) Proc. 1996 IEEE
Int. Conf. Evolutionary Computation (ICEC96), Nagoya, IEEE
Press, Piscataway, NJ, 1996
[32] Goldberg D. E. Optimal Initial Population Size for BinaryCoded Genetic Algoritms, TCGA Report No. 85001, Tuscaloosa,
Univ. of Alabama, 1985
[33] Goldberg D. E. Genetic Algorithms in Search, Optimization
and Machine Learning, Addison-Wesley, Reading, MA, 1989
[34] Goldberg D. E., Korb B., Deb K. Messy genetic algorithms:
Motivation, analysis

and

first results, Complex

Systems,

3(1989), pp. 493-530


[35] Goldberg D. E., Deb K., Korb B. Messy genetic algorithms
revisited : nonuniform size and scale, Complex Systems,
4(1990), 415-444
[36] Goldberg D. E., Deb K., Korb B. Dont worry, be messy, in
[11], 24-30

253
[37] Goldberg D. E., Lingle R. Alleles, Loci and the TSP, in [38],
pp. 154-159
[38] Grefenstette J. J. (Ed.) Proc. of the First Int. Conf. on Genetic
Algorithms, Lawrence Erlbaum Associates, Hillsdale, NJ, 1985
[39] Grefenstette J. J. Optimization of Control Parameters for
Genetic Algorithms, IEEE Transactions of Systems, Man and
Cybernetics, Vol. 16, No. 1, pp. 122-128, 1986
[40] Grefenstette J. J. (Ed.) Proc. of the Second Int. Conf. on
Genetic Algorithms, Lawrence Erlbaum Associates, Hillsdale, NJ,
1987
[41] Grefenstette J. J., Gopal L., Rosmata B., Van Gucht D. Genetic
Algoritm for The TSP, in [38], pp. 160-168
[42] Groan C., Oltean M., Algoritmi evolutivi,

Gazeta

de

informatic, Vol 11/8, 2001, pag.30-36


[43] Herrera F., Verdegay J. L. (Eds.) Genetic Algorithm and Soft
Computing, Physica-Verlang, Heidelberg, 1996
[44] Holland J. H. Adaptation in Natural and Artificial Systems,
Univ. of Michigan Press, Ann Arbor, 1975
[45] Homaifar A., Guan S. A new Approach on the Traveling
Salesman Problem by Genetic Algorithm, Technical Report,
North Carolina A&T State University, 1991
[46] Iancu I. A Contractive Genetic Algorithm, Proc. of 4-th Int.
Conf. on Artificial Intelligence and Digital Communication,

254
Craiova, June 2004, pp. 38-43
[47] Iancu I. A Ciric's Fix Point Theorem in Genetic Algorithms.
Proc. of 5-th Int. Conf. on Artificial Intelligence and Digital
Communications, Craiova, september 2005, pp. 53-60
[48] Iancu I.

Algoritmi genetici, Editura SITECH, Craiova, 2008

[49] Jog P., Suh J. Y., Gucht D. V. The Effects of Population Size,
Heuristic Crossover and Local Improvement on a Genetic
Algorithm for

the Traveling

Salesman Problem, in [74],

pp. 110-115
[50] Jones T., Forrest S. Fitness Distance Correlation as a Measure
Problem Difficulty for Genetic Algorithms, in [18], pp. 81-87
[51] Joza J. R. Hierarchical genetic algorithms operating on
Populations of computer programs, in [86], pp. 768-774
[52] Koza J. R. Genetic Programming, MIT Press, Cambridge, MA,
1992
[53] Kubota N., Kojima F., Hashimoto S., Fukuda T. Information
Transformation by virus-evolutionary genetic programming,
Artificial Life Robotics, 4(2000), 171-174
[54] Kursave F. A variant of Evolution Strategies for vector
optimization, in [80], pp. 193-197
[55] Luchian H., Luchian S. Clasificare evolutiv, Editura Integral,
Iai, 1999
[56] Martello S. , Toth S., Knapsack Problems, John

Wiley,

255
Chichester, UK, 1990
[57] Mnner R., Manderick B. (Eds.) Proc. 2nd Conf. on Parallel
Problem Solving from Nature, North-Holland, Amsterdam, 1992
[58] Matthews J. Diophantine Equation Solver,
http://www.generation5.org/content/2000/diophantine_ga.asp
[59] McDonnell J.R., Reynolds R. G., Fogel D. B. (Dds.)- Proc. of
the Fourth Annual Conference on Evolutionary Programming,
the MIT Press, 1985
[60] Michalewicz, Z. -

Genetic Algorithms + Data Structures

=Evolution Programs Springer-Verlag, Berlin, 1994


[61] Michalewicz Z. - Genetic Algorithms, Numerical Optimization
and Constraints, Proc. of the 6th Int. Conf. on Genetic
Algorithms, Pittsburgh, July 15-19, 1995, pp. 151-158
[62] Michalewicz Z., Attia N. Evolutionary

Optimization

of

Constrained Problems, in [83], pp. 98-108


[63] Michalewicz Z., Schaffer D., Schwefel H.-P., Fogel D., Kitano H.
(Eds.) - Proceedings of the First IEEE International Conf. on
Evolutionary Computation, Service Center, Piscataway, NJ, Vol.
1, Orlando, 1994
[64] Michalewicz Z., Schoenauer M. Evolutionary Algorithms
for Constrainted

Parameter

Optimization

Problems,

Evolutionary Computation, Vol.4, No.1, 1996, pp. 1-32


[65] Mitchell M. An introduction to Genetic Algorithms, MIT

256
Press, Cambridge, MA, 1996
[66] Morn, F., Moreno A., Morelo J. J., Chacn P. (Eds.) Advances
in Artificial Life, Proc. Third European Conf. Artificial Life
(ECAL95), Springer, Berlin, 1995
[67] Oliver I. M., Smith D. J. , Holland J.R.C.

study

of

Permutation Crossover Operators on the Traveling Salesman


Problem, in [38], pp. 159-166
[68] Orvosh D., Davis L. Shall We Repair ? Genetic Algorithms,
Combinatorial Optimization and Feasibility Constraint, in [29],
p. 650
[69] Ras Z. W., Michalewicz M. (Eds.) Foundations of Intelligent
systems, Lectures Notes in Artificial Intelligence, 1079, Springer,
Berlin, 1996
[70] Rawlins G. (Ed.) - Foundations of Genetic Algorithms,

First

Workshop on the Foundations of Genetic Algorithms and


Classifier Systems, Morgan Kaufmann Publishers, San Mateo,
CA, 1991
[71] Rechenberg I. Evolutionsstrategie: Optimierung technischer
Systeme nach Prinzipien der biolobischen Evolution, FrommannHolzboog Verlang, 1973
[72] Rudolpf G. On correlated mutations in evolution strategies
in [57], pp. 105-114
[73] Rudolpf G. Convergence Analysis of

Canonical Genetic

Algorithms, IEEE Transactions on Neural Networks, special issue

257
on evolutionary computation, vol. 5, no. 1, 1994
[74] Schaffer J. (Ed.) Proc. of the Third Int. Conf. on Genetic
Algorithms, Morgan Kaufmann Publishers, San Mateo, CA, 1989
[75] Schaffer J., Caruana R., Eshelman L., Das R. A study of
Control Parameters Affecting Online Performance of Genetic
Algorithms for Function Optimization, in [74], pp. 51-60
[76] Schwefel H. P.

Evolutionsstrategie

und

Numerische

Optimierung, Ph. D. Thesis, Technische Universitt Berlin, 1975


[77] Schwefel H. P. Numerische Optimierung von ComputerModellen Mittels der Evolutionsstrategie, Birchuser, Basel,
1977
[78] Schwefel H. P. Numerical Optimization of Computer Models,
John Wiley, Chichester, UK, 1981
[79] Schwefel H. P. - Evolution and Optimum Seeking, John Wiley,
New York, 1995
[80] Schwefel H. P , Mnner R. (Eds.) Parallel Problem Solving
from Nature, Lecture Notes in Computer Science, vol. 496,
Springer, Berlin, 1991
[81] Schwefel H.-P., Rudolpf G. Contemporary evolution strategies,
in [66], pp. 893-907
[82] Schwefel H.-P., Rudolpf G., Bck T. - Contemporary evolution
strategies, Technical Report of the Systems Analysis Research
Group SYS-6/95 University of Dortmund, Dept. of Computer

258
Science, December, 1995
[83] Sebald A. V., Fogel L. J. (Eds.) - Proceedings of the 3rd Annual
Conference on Evolutionary Programming, World Scientific
Publishing, River Edge, NJ, 1994
[84] Seniw D. A Genetic Algorithm for the Traveling Salesman
Problem, MSc Thesis, Univ. Of North Carolina at Charlotte, 1991
[85] Shimojima K., Kubota N., Fukuda T. Virus-evolutionary
genetic algorithm for fuzzy controller optimization, in [40],
369-388
[86] Shridharan K. E. (Ed.) - Proc. 11th Int. Joint Conf. on Artificial
Intelligence, Morgan Kaufmann, San Francisco, CA, Vol. 1, 1989
[87] Spears W. M., De Jong K. A. On the virtutes of parametrized
uniform crossover, in [11], pp. 230-236
[88] Suh J. Y., Gucht Van D. Incorporating Heuristic Information
into Genetic Search, in [40], pp. 100-107
[89] Syswerda G. Schedule Optimization Using Genetic Algorithms,
in [12], pp. 332-349
[90] Szalas A., Michalewicz Z. Contractive Maping Genetic
Algorithms and Their Convergence, Department of Computer
Science, Univ. of North Carolina al Charlotte, Technical Report
006-1993
[91] Viinescu R. Un model genetic pentru problema orarului,
Gazeta de informatic, Vol. 11/6, 2001, pag. 34-37

259
[92] Whitley D. (ED.) - Foundations of Genetic Algorithms, Morgan
Kaufmann Publishers, Saint Louis, Missouri, U.S.A, 1993
[93] Whitley D. Genetic Algorithm Tutorial, Statistics

and

Computing (4): 65-85, 1994.


[94] Whitley D., Rowe J. - Foundations of Genetic Algorithms
(FOGA): Eighth International Workshop, LNCS 3469, pp. 21-36.
[95] Whitley D., Starkweather T., Fuquay D. A.
Problems

and

Traveling

Scheduling

Salesman; The Genetic Edge

Recombination Operator, in [74], pp. 133-140


[96] Winter G., Priaux J., Galn M., Cuesta P. (Eds.) Genetic
Algorithms in Engineering and Computer Science, Wiley, NY,
1995
[97] Yao X., Liu Y. Fast evolutionary programming, in [27],
pp. 451- 460
[98] *** GEATbx - The Genetic and Evolutionary Algorithm
Toolbox for Matlab, http://www.geatbx.com/download.html
[99] *** http://cs.felk.cvut.cz/~xobitko/ga/
[100] *** http://labo.algo.free.fr/pvc/algorithme_genetique.html
[101] *** http://lancet.mit.edu/~mbwall/presentations/IntroToGAs/

S-ar putea să vă placă și