Sunteți pe pagina 1din 18

Anale. Seria InIormatic. Vol. I Iasc.

I
Annals. Computer Science Series. 1
st
Tome 1
st
Fasc.



72





Algoritmi genetici


Prep. Claudia Mihaela Mark
Universitatea "Tibiscus" din Timiyoara


ABSTRACT. In this thesis is presented the main directions
regarding evolutive algorithms, especially genetic algorithms. The
practical application oI these algorithms are many and they are
more and more used in a various domains, like plane wing design
or orbital space stations design. The power oI genetical algorithms
come Irom their implementation simplicity and Iorm the Iact that
they always give good results, even iI by using this algorithms we
can not always give a global result.


1 Introducere

Algoritmii genetici sunt o Iamilie de modele inspirate de teoria evolutiei,
sunt programe inteligente capabile s solutioneze probleme Iolosind un
concept al evolutiei speciilor. Acesti algoritmi codiIic solutiile posibile ale
unor probleme speciIice ntr-o structur de date de tip cromo:om si aplic
acestor structuri operatori de recombinare, pentru a pstra inIormatia util.
Un cromozom este un vector sau un sir de gene. Pozitia unei gene este
numit locusul ei. Valorile pe care le poate lua o gen sunt numite alele,
sunt multimi Iinite de numere ntregi, intervale de numere reale, sau chiar
structuri complexe de date. Alele (gen de un anumit tip de pe acelasi
cromozom) variaz de la un locus la altul.
Sarcina unui algoritm genetic e s descopere cromozomi din ce n ce
mai buni, pn la atingerea unei valori a raportului dintre evaluarea asociat
unui sir si evaluarea medie a tuturor sirurilor populatiei (fitness) despre care
se stie c este optimal, sau pn cnd algoritmul genetic nu mai poate
aduce mbunttiri.
Implementarea unui algoritm genetic ncepe cu o populatie de
cromozomi (aleas aleator). Se evalueaz, apoi, aceste structuri si se aloc




Anale. Seria InIormatic. Vol. I Iasc. I
Annals. Computer Science Series. 1
st
Tome 1
st
Fasc.



73
Iacilitti reproductive astIel nct acei cromozomi, care reprezint o solutie
mai bun pentru problema tint, s aib mai multe sanse de a se reproduce
dect acei cromozomi care sunt solutii mai putin bune. DeIinirea unei solutii
bune se Iace n raport cu populatia curent.
ntr-un sens mai larg, algoritm genetic este orice model bazat pe ideea
de populatie si care Ioloseste selectie si operatori de recombinare pentru a
genera noi puncte ntr-un spatiu de cutare. Multe modele au Iost introduse
de cercettori dintr-o perspectiv experimental. Cercettorii sunt orientati
spre aplicatii, Iiind interesati de algoritmii genetici doar ca mijloace de
optimizare.
Ei sunt recomandati pentru aIlarea solutiilor neliniare ale unor
probleme atunci cnd nu este posibil modelarea matematic si nici euristic
n domeniu.
Adevratii proIesionisti combin adesea cele mai variate tehnologii
inteligente n scopul exploatrii avantajelor Iiecreia, obtinnd asa-numitele
sisteme hibride. Sunt posibile combinri de genul:
1. Iolosirea retelelor neuronale la ajustarea parametrilor n sistemele
expert Iuzzy;
2. extragerea cunoasterii din retele neuronale pentru a Ii utilizat n
sistemele expert;
3. Iolosirea algoritmilor genetici la crearea unor retele neuronale mai
compacte si mai eIiciente;
4. Iolosirea unei retele neuronale pentru asistarea Iunctionrii unui
algoritm genetic;
5. Iolosirea algoritmilor genetici la reglarea parametrilor unui sistem
expert Iuzzy pentru controlul proceselor;
6. mbunttirea perIormantei unui sistem expert prin ncorporarea
rationamentului bazat pe cazuri, etc.
Asemenea cercetri sunt n prezent n mare vog n cele mai
specializate laboratoare ale lumii stiintiIice.
Mecanismul speciIic acestor sisteme este inspirat din Iunctionarea
sistemelor biologice, n sensul c ncurajeaz solutiile candidat capabile s
rezolve o problem si penalizeaz solutiile Ir succes. n Ielul acesta se
obtin, dup mai multe generatii, solutii Ioarte bune pentru probleme de
optimizare complexe, cu un mare numr de parametri.
Ideea de baz a unui algoritm genetic const n a ncepe cu o
populatie de solutii, Iiecare mai perIormant dect precedentele. Fazele
ciclului prin care opereaz un asemenea algoritm sunt:
1. creearea unei populatii de 'membri, (solutii candidat la rezolvarea
unei probleme),




Anale. Seria InIormatic. Vol. I Iasc. I
Annals. Computer Science Series. 1
st
Tome 1
st
Fasc.



74
2. selectia membrilor care s-au adaptat cel mai bine necesittilor
problemei de solutionat,
3. reproducerea (se Iolosesc operatorii genetici de ncrucisare si
mutatie, pentru a obtine noi membri),
4. evaluarea gradului n care noii membri corespund mai bine
solutionrii problemei,
5. abandonarea populatiei vechi prin nlocuirea ei cu populatia nou din
noua generatie.
Un asemenea ciclu se repet pn cnd este identiIicat cea mai bun
solutie la problema n cauz.

Abandonarea












Fazele ciclului algoritmilor genetici

Datorit structurii lor inerent paralele, sisteme inteligente bazate pe
algoritmi genetici s-au dovedit perIormante n problemele de cutare si
identiIicare a structurilor si relatiilor speciIice n cadrul bazelor de date si
bazelor de cunostinte voluminoase (data mining). Un succes particular s-a
obtinut cu ele n problemele de optimizare reIeritoare la selectrea
personalului si selectrea portoIoliilor.
Si aceste sisteme, deorece pot nvta relatii si structuri complexe n
cadrul seturilor de inIormatii si cunostinte incomplete, se pot adapta
schimbrilor survenite n mediile n care Iunctioneaz, si pot Ii utilizate ca
instrumente pentru descoperirea unor cunostinte noi. Ele pot oIeri explicatii
la deciziile luate ntr-un Iormat perceptibil de ctre om.
Aplicatiile acestor sisteme s-au diversiIicat rapid si s-au dovedit utile
domeniul aIacerilor Iinanciare, comertului cu titluri, evalurii creditelor,
detectiei Iraudelor si predictiei Ialimentului. De exemplu, unii cercettori au
Iolosit asemenea sisteme la inIerarea unor reguli pentru predictia
Popula(ia
Evaluarea
Reproducerea
Selec(ia




Anale. Seria InIormatic. Vol. I Iasc. I
Annals. Computer Science Series. 1
st
Tome 1
st
Fasc.



75
Ialimentului ntreprinderilor, pe baza indicatorilor Iinanciari obtinuti din
bilant (Iinancial ratios). Alti cercettori descriu
modul de utilizare a algoritmilor genetici n alocarea bugetar, n vederea
asistrii guvernelor si administratiilor locale la adoptarea celor mai bune
decizii.


2 Calcul evolutiv

n general, orice sarcin abstract care trebuie ndeplinit, poate Ii privit ca
Iiind rezolvarea unei probleme, care, la rndul ei, poate Ii perceput ca o
cutare n spatiul solutiilor potentiale.
Deoarece, de obicei, cutm cea mai bun solutie, putem privi acest
proces ca Iiind unul de optimizare.
Pentru spatii mici, metodele clasice exhaustive sunt suIiciente; pentru
spatii mari, pot Ii Iolosite tehnicile speciale ale inteligentei artiIiciale.
Metodele calculului evolutiv se numr printre aceste tehnici; ele
Iolosesc algoritmi ale cror metode de cutare au ca model cteva Ienomene
naturale: mostenirea genetic si lupta pentru supravietuire. Cele mai
cunoscute tehnici din clasa calculului evolutiv sunt algoritmii genetici,
strategiile evolutive, programarea genetic si programarea evolutiv. Exist
si alte sisteme hibride care ncorporeaz diIerite proprietti ale paradigmelor
de mai sus; mai mult, structura oricrui algoritm de calcul evolutiv este, n
mare msur, aceeasi.
n ultimii 30 de ani, s-a maniIestat un mare interes n rezolvarea
problemelor de sistem bazate pe principiile evolutiei si ereditatii. AstIel de
sisteme mentin o populatie de solutii potentiale, ele au unele procese de
selectie bazate pe Iitness individual, si cativa operatori genetici. Un astIel de
sistem este o clasa a evolutiei strategice i.e, algoritmi care imit principiile
evolutiei naturale pentru problemele de optimizare de parametru
(Rechemberg, SchweIel). Evolutia programrii lui Fogel este o tehnic de
cutare ntr-un spatiu Iinit, mic de masini. Tehnologiile de cutare a masinii
lui Glover Scatter mentin o populatie de puncte de reIerint, genernd o
stare special prin greutatea combinatiilor liniare.
Alte tipuri de sisteme evolutionare sunt Hollands Genetic
Algorithms. n 1990 Koza a propus un astIel de sistem evolutional, genetic
programming, pentru a cuta cel mai potrivit program de computer care s
rezolve o problema particular.






Anale. Seria InIormatic. Vol. I Iasc. I
Annals. Computer Science Series. 1
st
Tome 1
st
Fasc.



76
Structura evolutiei programului este aratat mai jos:
procedura algoritmevolutiv
t 0
creare P(t)
evaluare P(t)
ct timp nu conditia de terminare
t t 1
selectare P(t) din P(t-1)
modificare P(t)
evaluare P(t)
sfryit ct timp
sfryit procedura

n cele ce urmeaz vom explica algoritmul general propus mai sus.
Evolutia programului este un algoritm probabilistic ce contine
elemente distincte, P(t)x
1
t
, x
2
t
, ...x
n
t
}. Algoritmii evolutivi mentin o
populatie de indivizi la Iiecare iteratie t. O populatie poate Ii privit ca Iiind
un vector de valori. Fiecare element distinct reprezint o solutie potential a
problemei n cauz si n orice program, este interpretat ca S structura de
date.
Fiecare solutie x
1
t
, x
2
t
,.., x
n
t
este evaluat pentru a da o oarecare
msur a Iitness-ului su.
Fiecare individ (element al vectorului) reprezint o solutie potential a
problemei si este implementat sub Iorma unei structuri de date S. Un
individ este uneori numit si cromo:om. Fiecare solutie este evaluat ca Iiind
o msur a "Iitness-ului" su (speranta ei de viat). Acest Iitness reprezint
calitatea individului. De obicei, cu ct individul este mai promittor, cu att
Iitness-ul su este mai mare. Exist unele probleme n cazul crora Iitness-ul
trebuie s Iie minimizat.
O nou populatie (iteratia t1) se Iormeaz prin selectarea mai multor
potriviri individuale, alegnd cei mai promittori indivizi (pasul de selectie)
din populatia curent. O parte din membri populatiei nou Iormate suIer
transIormri (pasul de modiIicare) prin operarea 'genetic, a noilor solutii.
Vorbim despre o transIormare unic a evolutiei programului.


3 Operatori genetici - calculul evolutiv

Operatorii genetici sunt, de Iapt, proceduri care opereaz asupra elementelor
vectorului populatie. Exist doi operatori genetici principali:




Anale. Seria InIormatic. Vol. I Iasc. I
Annals. Computer Science Series. 1
st
Tome 1
st
Fasc.



77
un operator unar m
i
de transIormare numit mutatie, care creeaz un
nou individ printr-o mic modiIicare a unui individ ales (m
i
: S S);
un operator mai puternic c
j
numit incruciare, care creeaz noi
indivizi combinnd prti din doi sau mai multi indivizi
(c
j
: S x... xS S) (de cele mai multe ori se Iolosesc doi printi).

Dup un anumit numr de generatii algoritmul converge: se sper c
cel mai promittor individ ajunge la o valoare ct mai apropiat de solutia
optim. n ciuda similarittilor puternice ntre diIeritele tehnici de calcul
evolutiv, exist si multe diIerente. Acestea sunt date, n principal, de
structurile de date Iolosite pentru a reprezenta un individ si de ordinea n
care se aplic operatorii genetici. De exemplu, cele dou linii din algoritmul
de mai sus:
selectare P(t) din P(t-1)
modificare P(t)
pot aprea n ordine invers: (n strategiile evolutive, nti se modiIic
populatia si apoi este Iormat o nou populatie prin procesul de selectie, n
timp ce ntr-un algoritm genetic nti se aplic selectia, iar apoi intr n
actiune operatorii genetici de transIormare). Drie 2
Exist, de asemenea, si alte diIerente ntre metode. Una dintre acestea
ar Ii cea reIeritoare la metodele de selectie care includ:
selecjia proporjional, unde sansa (probabilitatea) ca un individ s
Iie selectat este proportional cu Iitness-ul lui;
metoda rangului, n care toti indivizii din populatie sunt sortati n
Iunctie de Iitness, iar probabilitatea (sansa) ca ei s Iie selectati este
Iixat de ntreg procesul de evolutie (de exemplu, probabilitatea de
selectie a celui mai promittor individ este 0.15, a individului
urmtor este 0.14, etc.; cel mai promittor individ are cea mai mare
probabilitate si suma total a probabilittilor indivizilor este1);
selecjia prin turnir (prin concurs) unde un anumit numr de indivizi
(de obicei doi) lupt pentru a Ii selectati n noua generatie.
Aceast competitie (turnir) este repetat pn sunt selectati un numr
de indivizi egal cu dimensiunea populatiei. Pentru Iiecare dintre aceste
categorii de selectie exist si alte detalii importante. Cteva exemple sunt:
selectia proportional poate necesita Iolosirea unor metode de
trunchiere;
exist diIerite moduri pentru stabilirea probabilittii n metoda
rangului;
dimensiunea multimii alese pentru concurs poate juca un rol
semniIicativ n metoda selectiei prin turnir.




Anale. Seria InIormatic. Vol. I Iasc. I
Annals. Computer Science Series. 1
st
Tome 1
st
Fasc.



78
Trecerea de la o generatie la alta poate Ii eIectuat n dou variante:
algoritm generational (noua populatie este Iormat doar din
descendenti ai vechii generatii);
algoritm non-generational (n noua populatie sunt introdusi, de
obicei, cei mai promittori indivizi din cele dou populatii, cea a
printilor si cea a descendentilor).
Este posibil, de asemenea, s crem putini (n particular, unul singur)
descendenti, care nlocuiesc ctiva (cei mai putin promittori) indivizi. Ca o
regul general trebuie retinut Iaptul c, n majoritatea cazurilor, este de
preIerat s se utilizeze un model elitist, care pstreaz cei mai promittori
indivizi dintr-o generatie si i adaug automat generatiei urmtoare (aceasta
nseamn c, dac cel mai promittor individ din generatia curent este
pierdut datorit selectiei sau operatorilor genetici, sistemul Iorteaz aparitia
lui ntr-o generatie urmtoare). Un astIel de model este Ioarte Iolositor
pentru rezolvarea multor probleme de optimizare. Totusi, structurile de date
Iolosite pentru probleme particulare, mpreun cu o multime de operatori
genetici, constituie componenta esential a oricrui algoritm evolutiv.
Acestea sunt elementele cheie care ne permit s distingem ntre variatele
paradigme ale metodelor evolutive.


4 Algoritmi genetici - paradigme ale calculului evolutiv

Exist o mare clas a problemelor interesante pentru care nc nu au Iost
dezvoltati algoritmi rapizi. Multe dintre acestea sunt probleme optimizate
care intervin Irecvent n aplicatii.
Dndu-se o problem prost optimizat este posibil mereu s gsim un
algoritm eIicient a crui solutie este aproximativ optimal. Pentru unele
probleme prost optimizate putem Iolosi algoritmi probabilistici (acesti
algoritmi nu garanteaz valoarea optim, dar prin alegeri aleatoare, suIicient
de multe 'slbiciuni ale erorilor pot Ii Icute astIel nct s putem trece
peste ele).
Exist multe probleme importante, practic optimizate, pentru care
asemenea algoritmi, de o nalt calitate, devin disponibili. n orice caz,
putem aplica simultan rularea pe mai multe Iire de executie si transIera
competenta amplasrii problemelor VLSI design pentru problemele gen
agent comercial. n plus, multe alte probleme apartinnd unei game largi de
probleme optimizate combinatorial pot Ii, n ziua de astzi, rezolvate
aproximativ, prin computer, n genul tehnicilor Monte Carlo.




Anale. Seria InIormatic. Vol. I Iasc. I
Annals. Computer Science Series. 1
st
Tome 1
st
Fasc.



79
n general, orice proces abstract, pentru a Ii ndeplinit, poate Ii gndit
ca o rezolvare a problemei care, n schimb, poate Ii perceput ca o cutare
prin spatiul solutiilor potentiale. Cum suntem n cutarea 'celei mai bune
solutii, putem privi aceast sarcin ca un proces optimizat. Pentru spatiile
mici, metodele clasice executive sunt suIiciente; pentru spatiile largi tehnica
special a inteligentei artiIiciale trebuie s Iie luat n vedere. Algoritmii
genetici sunt printre aceste tehnici; ei sunt algoritmi stohastici a cror
metode de cutare modeleaz unele Ienomene naturale.
Ideea n spatele algoritmilor genetici este de a Iace ceea ce natura Iace.
nceputurile algoritmilor genetici se situeaz undeva n jurul anului 1950,
cnd mai multi biologi au Iolosit calculatoarele pentru simularea sistemelor
biologice. Rezultatele muncii au nceput s apar dup 1960, cnd la
Universitatea din Michigan, sub directa ndrumare a lui John Holland,
algoritmii genetici au aprut n Iorma n care sunt cunoscuti astzi.
Dup cum sugereaz si numele, algoritmii genetici Iolosesc principii
din genetica natural. Cteva principii Iundamentale ale geneticii sunt
mprumutate si Iolosite artiIicial pentru a construi algoritmi de cutare care
sunt robusti si cer inIormatii minime despre problem.
Algoritmii genetici au Iost inventati Iolosind modelul procesului de
adaptare. Ei opereaz, n principal, cu siruri binare si Iolosesc un operator
de recombinare si unul de mutatie. Prin mutatie se schimb un element
(gen) dintr-un cromozom, iar prin ncrucisare se schimb material genetic
ntre doi printi; dac printii sunt reprezentati prin siruri de cinci biti, de
exemplu (0, 0, 0, 0, 0) si (1, 1, 1, 1,1), ncrucisarea celor doi vectori poate
duce la obtinerea descendentilor (0, 0, 1, 1, 1) si (1, 1, 0, 0, 0) (acesta este
un exemplu al asa-numitei ncrucisri cu un punct de tietur).
Fitness-ul unui individ este atribuit proportional cu valoarea Iunctiei
criteriu corespunztoare individului; indivizii sunt selectati pentru generatia
urmtoare pe baza Iitness-ului lor.
Vom ilustra modul de lucru al algoritmilor genetici cu ajutorul unei
probleme simple: proiectarea unei cutii de conserve. Considerm o cutie de
conserve cilindric, cu numai doi parametri: diametrul d si nltimea h
(evident, pot Ii considerati si alti parametri, cum ar Ii grosimea, proprietti
ale materialului, Iorm, dar sunt suIicienti doar cei doi parametri pentru a
ilustra lucrul cu algoritmii genetici).
S considerm c aceast conserv trebuie s aib un volum de cel
putin 300 ml si obiectivul proiectului este de a minimiza costul materialului
Iolosit la Iabricarea conservei.
Putem Iormula problema noastr astIel:
s se minimizeze valoarea Iunctiei




Anale. Seria InIormatic. Vol. I Iasc. I
Annals. Computer Science Series. 1
st
Tome 1
st
Fasc.



80
|
|
.
|

\
|
+

= h d
d
c h d f t
t
2
) , (
2

unde c reprezint costul materialului conservei per cm
2
, iar expresia din
parantez reprezint supraIata conservei. Functia I se mai numeste si functie
criteriu (sau functie obiectiv). Mai trebuie ndeplinit si conditia ca volumul
cutiei s Iie cel putin 300 ml si vom Iormula aceasta astIel:
300
4
) , (
2
>

=
h d
h d g
t
.
Parametrii d si h pot varia ntre anumite limite dminsdsdmax si
hminshshmax.

4.1 Reprezentarea solu(iei

Primul pas n utilizarea unui algoritm genetic este stabilirea unei codiIicri a
problemei.
CodiIicarea binar este cea mai obisnuit dintre tehnicile de
codiIicare; ea este simplu de manipulat si conIer robustete problemei.
Reprezentarea binar poate codiIica aproape orice situatie, iar
operatorii nu includ cunostinte despre domeniul problemei. Este motivul
pentru care un algoritm genetic se poate aplica unor probleme Ioarte
diIerite. n cazul codiIicrii binare, Iiecare valoare se reprezint printr-un sir
de lungime speciIicat care contine valorile 0 si 1. n anumite situatii este
necesar s utilizm codiIicarea "natural" a problemei, n locul reprezentrii
binare. Un exemplu de codiIicare natural ar Ii codiIicarea real, care
utilizeaz numere reale pentru reprezentare. Pentru a Iolosi algoritmii
genetici la gsirea unor valori optime pentru parametri d si h, care s
satisIac conditia prezentat sub Iorma Iunctiei g si care s minimizeze
Iunctia f, vom avea n primul rnd nevoie de reprezentarea valorilor
parametrilor n siruri binare (vom Iolosi, asadar, o codiIicare binar a
problemei).
Algoritmii genetici nu ne impun numai valori ntregi dintr-un anumit
inteval; n general, putem Iolosi orice alt valoare ntreag sau real, prin
schimbarea lungimii sirului binar.

4.2 Atribuirea fitness-ului

Am aIirmat anterior c algoritmii genetici lucreaz cu siruri de biti
reprezentnd valorile parametrilor si nu cu parametrii nsisi. Dup ce a Iost
creat un nou sir (o nou solutie) prin operatori genetici, trebuie s-l




Anale. Seria InIormatic. Vol. I Iasc. I
Annals. Computer Science Series. 1
st
Tome 1
st
Fasc.



81
evalum. n majoritatea cazurilor, Iitness-ul este chiar valoarea Iunctiei
criteriu pentru solutia respectiv. Dac obiectivul nostru este de a minimiza
Iunctia criteriu, atunci vom spune c o solutie este mai bun dect alta, dac
Iitness-ul celei de-a doua este mai mare.


5. Structura unui algoritm genetic

Vom descrie n continuare structura algoritmilor genetici. Pentru nceput
vom stabili urmtoarele:
cromozomii utilizati au lungime constant;
populatia (generatia) P(t 1) de la momentul t 1 se obtine retinnd
toti descendentii populatiei P(t) si stergnd ulterior cromozomii
generatiei precedente (P(t));
numrul cromozomilor este constant.

Putem prezenta acum structura algoritmului genetic Iundamental:
Pasul 1: t 0.
Pasul 2: Se initializeaz aleator populatia P(t).
Pasul 3: Se evalueaz cromozomii populatiei P(t). n acest scop se utilizeaz
o Iunctie de perIormant ce depinde de problem.
Pasul 4: Ct timp nu este ndeplinit conditia de terminare se execut pasii
urmtori:
Pasul 4.1: Se selecteaz cromozomii din P(t) care vor contribui la Iormarea
noii generatii. Fie P
1
multimea cromozomilor selectati (P
1
reprezint o
populatie intermediar).
Pasul 4.2: Se aplic cromozomilor din P
1
operatorii genetici. Cei mai
utilizati sunt operatorii de mutatie si ncrucisare. n Iunctie de problem se
pot alege si alti operatori (inversiune, reordonare, operatori speciali). Fie P
2

populatia astIel obtinut(descendentii populatiei P(t)). Se sterg din P
1

printii descendentilor obtinuti. Cromozomii rmasi n P
1
sunt inclusi n
populatia P
2
. Se construieste noua generatie, astIel: P(t1) P
2
; se sterg
toti cromozomii din P(t); se execut atribuirea t t1; se evalueaz P(t).
Conditia de terminare se reIer, de regul, la atingerea numrului de
generatii speciIicate. Dac numrul maxim admis de generatii este N, atunci
conditia de oprire este t ~ N. Se admite c rezultatul algoritmului este dat de
cel mai promittor individ din ultima generatie. n realitate, nimic nu ne
garanteaz c un individ mai perIormant nu a Iost obtinut ntr-o generatie
anterioar. De aceea, este normal ca la Iiecare pas (la Iiecare generatie t) s




Anale. Seria InIormatic. Vol. I Iasc. I
Annals. Computer Science Series. 1
st
Tome 1
st
Fasc.



82
retinem cel mai promittor individ care a Iost generat pn atunci. Acest
proces se numeste elitism.


6 Selec(ia

Un rol important n cadrul unui algoritm genetic l ocup operatorul de
selectie. Acest operator decide care dintre indivizii unei populatii vor putea
participa la Iormarea populatiei urmtoare. Scopul selectiei este de a asigura
mai multe sanse de reproducere celor mai perIormanti indivizi dintr-o
populatie dat. Prin selectie se urmreste maximizarea perIormantei
indivizilor. n continuare vom prezenta succint cele mai importante
mecanisme de selectie.

Selectia proportional
n cazul selectiei proportionale, probabilitatea de selectie a unui
individ depinde de valoarea perIormantei acestuia. S presupunem c avem
o multime de cromozomi x
1
, x
2
, , x
n
. Pentru Iiecare cromozom x
i
vom
calcula perIormanta sa f(x
i
). Se impune conditia ca f(x
i
) >0. Suma
perIormantelor tuturor cromozomilor din populatie va constitui perIormanta
total si o vom nota cu F.

Selectia ba:at pe ordonare
Aceast modalitate de selectie const n a calcula (pentru Iiecare
generatie) valorile Iunctiei de Iitness si de a aranja indivizii n ordinea
descresctoare a acestor valori. Se va atribui Iiecrui individ i o
probabilitate de selectie p
i
care depinde de rangul su n sirul stabilit.
Probabilittile depind acum doar de pozitia cromozomului. Cel mai
promittor individ are probabilitatea 1.

Selectia prin concurs
Selectia prin concurs sau selectia turnir se bazeaz pe compararea
direct a cte doi cromozomi si selectarea celui mai perIormant.
Operatiile implicate sunt urmtoarele:
se aleg n mod aleator doi cromozomi;
se calculeaz perIormantele cromozomilor selectati;
cromozomul mai perIormant este selectat (copiat n populatia
intermediar asupra creia se aplic operatorii genetici).





Anale. Seria InIormatic. Vol. I Iasc. I
Annals. Computer Science Series. 1
st
Tome 1
st
Fasc.



83
Alte mecanisme de selectie
Un alt tip de selectie este selectia elitist. n acest caz, la Iiecare
generatie se pstreaz cel mai promittor sau cei mai promittori indivizi. O
alt idee ar Ii ca, la Iiecare generatie, s Iie nlocuit doar o parte restrns a
populatiei.


7 Operatorii genetici

Descriem n continuare operatorii genetici Iolositi, de obicei, ntr-un
algoritm genetic.

Operatorul de reproducere
Rolul operatorului de reproducere este de a mentine solutiile
promittoare din populatie si de a le elimina pe cele mai putin promittoare,
pstrnd constant dimensiunea populatiei.
Aceasta se realizeaz astIel:
se identiIic solutiile promittoare din populatie;
se creeaz mai multe copii ale solutiilor promittoare;
se elimin solutiile mai putin promittoare din populatie astIel nct
multiplele copii ale solutiilor promittoare s poat Ii plasate n
populatie.
Exist mai multe moduri de a realiza acest lucru. Cele mai uzuale
metode sunt selectia proportional, selectia prin turnir si selectia prin
ordonare. Este usor de observat c solutile promittoare au mai mult de o
copie n populatia intermediar.

Operatorul de incruciare
Operatorul de ncrucisare este aplicat asupra indivizilor din populatia
intermediar. Operatorul de ncrucisare actioneaz n Ielul urmtor: sunt
alesi aleator doi indivizi din populatia intermediar (care se mai numeste si
piscin de ncrucisare) si anumite portiuni din cei doi indivizi sunt
interschimbate. Operatorul imit ncrucisarea intercromozomial natural.
De regul, se utilizeaz operatori de ncrucisare de tipul (2,2), adic
doi printi dau nastere la doi descendenti. ncrucisarea realizeaz un schimb
de inIormatie ntre cei doi printi. Descendentii obtinuti prin ncrucisare vor
avea caracteristici ale ambilor printi.
Trebuie retinut Iaptul c ncrucisarea nu genereaz descendenti
aleatori. Desi este improbabil ca Iiecare ncrucisare ntre dou solutii din
populatie s genereze solutii Iii mai promittoare dect solutiile printe,
totusi n scurt timp devine clar c sansa de a crea solutii mai promittoare




Anale. Seria InIormatic. Vol. I Iasc. I
Annals. Computer Science Series. 1
st
Tome 1
st
Fasc.



84
este mai mare dect n cazul cutrii aleatoare. Din ncrucisarea cu un singur
punct de tietur a unei perechi de siruri binare, se pot crea doar dou siruri
pereche diIerite care vor avea n componenta lor si combinati din ambii
printi; solutiile Iiu create sunt, probabil, siruri cel putin la Iel de
promittoare. Prin urmare, nu Iiecare ncrucisare poate crea solutii la Iel de
promittoare, dar nu vor Ii mai putin promittoare dect printii.

Operatorul de mutatie
Operatorul de ncrucisare este, n principal, responsabil cu aspectul de
cutare al algoritmilor genetici, n timp ce operatorul de mutatie este Iolosit
pentru alte scopuri. Mutatia este cel de-al doilea operator genetic n ordinea
importantei si Iolosirii sale. EIectul acestui operator este schimbarea valorii
unei singure pozitii dintr-un cromozom. Prin mutatie se introduc n
populatie indivizi care nu ar Ii putut Ii obtinuti prin alte mecanisme.
Operatorul de mutatie actioneaz asupra bitilor indiIerent de pozitia
lor n cromozom. Fiecare bit al cromozomului poate suIeri o mutatie. ntr-un
cromozom pot exista, asadar, mai multe pozitii care suIer o mutatie.
Mutatia este un operator probabilist (adic nu se aplic cu sigurant).
Considerm o populatie de n indivizi (cromozomi), Iiecare avnd lungimea
r. Fiecare bit are aceeasi probabilitate p
m
de a suIeri mutatia.
Exist mai multe variante ale operatorului de mutatie. Una dintre ele
ar Ii mutatia in formatare.
n aceast situatie se procedeaz n Ielul urmtor: se genereaz un
numr aleator q n intervalul |0, 1).
Dac qp
m
, atunci se execut mutatia pozitiei respective schimbnd 0
n 1 sau 1 n 0. n caz contrar, pozitia respectiv nu se schimb. Solutia
obtinut este mai promittoare dect solutia original. n consecint,
operatorul de reproducere selecteaz cele mai promittoare siruri, operatorul
de ncrucisare combin subsiruri din dou siruri promittoare pentru a Iorma
siruri mai promittoare, iar operatorul de mutatie schimb sirurile local, de
asemenea, pentru a mbuntti solutia.


8 Strategii evolutive

Strategiile evolutive au Iost dezvoltate ca metode de rezolvare pentru
problemele de optimizare a parametrilor. Prima strategie evolutiv a Iost
bazat pe o populatie constnd dintr-un singur individ.
De asemenea, este Iolosit un singur operator n procesul de evolutie:
mutatia. Aceasta este n concordant cu conceptul biologic potrivit cruia




Anale. Seria InIormatic. Vol. I Iasc. I
Annals. Computer Science Series. 1
st
Tome 1
st
Fasc.



85
modiIicri mici au loc mai Irecvent dect o modiIicare mare. De obicei
aceast strategie, conIorm creia un printe d nastere, prin mutatie, unui
singur descendent, este cunoscut sub numele de strategie evolutiv 11.
Felul n care se aplic, practic, acest algoritm este simplu: se genereaz o
solutie aleatoare pe domeniul de cutare si se eIectueaz mutatii asupra ei.
Este acceptat cel mai bun dintre printe si descendent. Operatorul de mutatie
se aplic repetat pn cnd se ajunge la solutie.
Un alt tip de strategie este strategia ): printi produc
descendenti. Noua populatie (temporar) de ) indivizi este redus din nou
- printr-un proces de selectie - la indivizi. Pe de alt parte, in strategia ),
indivizi produc descendenti ~) si prin procesul de selectie se alege o
nou populatie de indivizi numai din multimea celor descendenti.
AstIel, viata Iiecrui individ este limitat la o generatie.

8.1 Programarea evolutiv

Tehnicile programrii evolutive originale au Iost dezvoltate de Lawrence
Fogel. El urmrea o dezvoltare a inteligentei artiIiciale n sensul dezvoltrii
abilittii de a prezice schimbrile ntr-un mediu nconjurtor.
Mediul nconjurtor a Iost descris ca o secvent de simboluri, iar
evoluarea algoritmului presupunea obtinerea unui nou produs, si anume a
unui nou simbol. Simbolul obtinut va maximiza Iunctia Iinal care msoar
acuratetea predictiei. De exemplu, putem considera o serie de evenimente
notate a
1
, a
2
, ..., a
n
; un algoritm va determina urmtorul simbol (a
n1
),
bazndu-se pe simbolurile cunoscute a
1
, a
2
,..., a
n
.
Ideea care st la baza programrii evolutive este de a evolua un
algoritm. Ca si n strategiile evolutive, si n tehnica programrii evolutive se
creeaz mai nti descendentii si apoi se vor selecta indivizii pentru
generatia urmtoare.
Fiecare printe produce un singur descendent; deci dimensiunea
populatiei intermediare se dubleaz (ca n strategia evolutiv (n,n), unde n
este dimensiunea populatiei). Descendentul este creat printr-o mutatie
aleatoare a printelui (este posibil s se aplice mai mult de o mutatie unui
individ). Un numr de indivizi (cei mai promittori) egal cu dimensiunea
populatiei sunt retinuti pentru noua generatie.
n versiunea original acest proces este repetat pn se obtine un nou
simbol care este disponibil. Dup ce s-a obtinut un nou simbol, acesta este
adugat listei simbolurilor cunoscute si ntregul proces se repet. Recent,




Anale. Seria InIormatic. Vol. I Iasc. I
Annals. Computer Science Series. 1
st
Tome 1
st
Fasc.



86
tehnicile de programare evolutiv au Iost Iolosite pentru rezolvarea
problemelor de optimizare numeric precum si n numeroase alte scopuri.

8.2 Programarea genetic

O alt abordare interesant a Iost descoperit relativ recent de John Koza.
Koza sugereaz c programul dorit va evolua el nsusi pe parcursul unui
proces de evolutie. Cu alte cuvinte, n loc de a rezolva o problem si n loc
de a construi un program evolutiv care s rezolve problema, vom ncerca s
gsim un cod surs care s o rezolve.
Koza a dezvoltat o nou metodologie care Iurnizeaz un mod de a
eIectua aceast cutare. De exemplu, se doreste obtinerea unui program
Pascal sau C care s rezolve problema drumului hamiltonian sau
problema iesirii dintr-un labirint. Deci, nu ne intereseaz s obtinem o
solutie pentru un set oarecare de date, ci, mai degrab, ne intereseaz s
obtinem un program surs care s genereze o solutie corect pentru orice
intrare dat. Cu alte cuvinte, ne intereseaz s obtinem ca rezultat un
program asemntor cu cel pe care l-am Ii putut scrie noi dac am Ii stiut s
rezolvm problema.
Din punct de vedere evolutiv abordarea unor astIel de probleme se
Iace genernd o multime (populatie) aleatoare de coduri surs care apoi sunt
selectate pe baza Iunctiei de Iitness si evoluate cu ajutorul unor operatori
genetici speciIici. n primul rnd trebuie s atribuim o Iunctie de calitate
(Iunctia Iitness) Iiecrui program generat. Aceast Iunctie de Iitness trebuie
s reIlecte perIormantele programului cruia i este atasat.
De obicei atasarea unei Iunctii de Iitness se Iace rulnd programul
respectiv si msurnd calitatea solutiei n raport cu o solutie care se
cunoaste a Ii optim. Un program va avea o calitate mai mare dac solutia
generat va Ii mai asemntoare cu cea a solutiei corecte. Nu este grav dac
o solutie optim nu se cunoaste anterior, deoarece noi dorim s obtinem
solutii cu un Iitness ct mai mare (sau ct mai mic).
Evoluarea programelor surs se realizeaz prin operatori genetici
speciIici. De exemplu, un operator de recombinare poate nsemna alipirea
secventelor dintr-un cod surs cu secvente din alt cod surs. Un operator de
mutatie ar putea nsemna inserarea de noi instructiuni n codul surs,
stergerea de instructiuni, transIormarea de instructiuni. Evident, n urma
aplicrii acestor operatori genetici se genereaz cod surs care contine
greseli de sintax. De asemenea, sunt generate secvente de cod surs
neIolositoare.
Exemple n acest sens sunt secventa de instructiuni:




Anale. Seria InIormatic. Vol. I Iasc. I
Annals. Computer Science Series. 1
st
Tome 1
st
Fasc.



87
i : i 1;
i : i - 1;
sau secventa:
a : 0;
b : c / a;
De obicei, se evolueaz reprezentri mai simple ale programelor de
calculator si anume reprezentrile arborescente. Exist limbaje de
programare (de exemplu LISP) n care programele sunt scrise sub Iorma
unor liste usor transIormabile n arbori.
Aplicajie
n cele ce urmeaz vom prezenta rezolvarea unei probleme Iolosind
algoritmii genetici.
Enunj (Submultime de sum dat)
Se consider o multime M de n numere si un numr S. S se
determine o submultime a multimii M care are suma elementelor ct mai
apropiat de numrul S.
Rezolvare
Determinarea unei submultimi de sum dat este o problem NP-
complet. Aceasta nseamn c nu se stie dac exist sau nu un algoritm de
complexitate polinomial pentru rezolvarea acestei probleme. Pn n
prezent, algoritmii Iolositi au complexitate exponential, iar pentru anumite
cazuri particulare au complexitate pseudopolinomial. De exemplu, putem
rezolva rezonabil aceast problem, dac datele de intrare ndeplinesc
urmtoarele conditii:
sunt cel mult 100 de numere naturale;
suma numerelor nu depseste 500 (mai exact, produsul dintre numrul
numerelor si suma acestora nu trebuie s depseasc dimensiunea
maxim admis pentru alocarea unei matrice -presupunem c aceasta este
alocat static).
Dac aceste conditii ar Ii ndeplinite am putea rezolva usor aceast
problem prin metoda programrii dinamice, Iolosind un algoritm de
complexitate O(n S). ns , dac numerele nu ar Ii ntregi ci reale, sau
suma lor ar Ii mai mare dect 500 , sau diIerentele ntre ele ar Ii mari etc.,
atunci algoritmul prin programare dinamic nu mai poate Ii Iolosit. Am
enumerat aici doar cazurile importante, dar pot Ii imaginate si alte
diIicultti.
Din aceste motive vom rezolva aceast problem cu ajutorul unui
algoritm genetic. Va trebui s gsim o reprezentare a solutiei si, de
asemenea, o Iunctie de Iitness. Modul n care vom reprezenta solutia ne este




Anale. Seria InIormatic. Vol. I Iasc. I
Annals. Computer Science Series. 1
st
Tome 1
st
Fasc.



88
dat chiar n enuntul problemei: se cere o submultime a unei multimi M cu n
elemente.
Deci, o solutie a problemei este o submultime. Vom codiIica o
submultime printr-un sir de lungime n care contine doar valorile 0 si 1. Dac
o pozitie k va avea valoarea 1, atunci submultimea respectiv va contine
elementul M
k
(al k-lea element din multimea M), iar dac pe pozitia k este
valoarea 0, atunci elementul respectiv nu apartine submultimii. Aceast
reprezentare a unei submultimi este speciIic tipului set din Turbo Pascal.
Modul de calcul al Iitness-ului (calittii) unei solutii (submultimi) este
simplu. Calcul m suma elementelor submultimii, iar Iitness-ul va Ii diIerenta
(n valoare absolut) dintre suma obtinut si numrul dat S. n aceste
conditii Iitness-ul va trebui minimizat, deoarece noi dorim s determinm o
submultime pentru care suma elementelor este ct mai apropiat de valoarea
dat S.
Structura algoritmului genetic propus pentru rezolvarea acestei
probleme a Iost prezentat mai sus. Vom Iolosi selectia turnir pentru
obtinerea populatiei intermediare. Operatorii genetici Iolositi sunt speciIici
codiIicrii binare (ncrucisare cu un singur punct de tietur, mutatie cu
probabilitate p
m
0.1).


9 Concluzii

n acest articol au Iost prezentate principalele directii ale algoritmilor
evolutivi, n special ale algoritmilor genetici. Aplicatiile practice ale acestor
algoritmi sunt nenumrate. Ei sunt Iolosti n domenii tot mai neasteptate
cum ar Ii proiectarea aripilor de avion sau proiectarea Iormei statiilor
orbitale.
Dac se doreste rezolvarea unei probleme genetice, trebuie tinut cont
de urmtorii pasi:
Pentru a rezolva o problem cu algoritmi genetici trebuie s o
transIormm mai nti ntr-o problem de optimizare, adic s
minimizm sau s maximizm o valoare (cel mai scurt lant
hamiltonian, cea mai mare component intern stabil, etc.).
Algoritmii genetici sunt algoritmi euristici, adic solutia gsit de ei nu
este ntotdeauna cea mai bun, dar se aIl ntr-o vecintate a solutiei
optime. Deci, dac avem de ales ntre un algoritm polinomial, care
rezolv sigur problema, si un algoritm genetic, ar Ii de preIerat s
Iolosim algoritmul polinomial.




Anale. Seria InIormatic. Vol. I Iasc. I
Annals. Computer Science Series. 1
st
Tome 1
st
Fasc.



89
Algoritmii genetici, de obicei, au complexitate polinomial. De aceea
ei sunt Ioarte des utilizati pentru a rezolva problemele diIicile (NP-
complete). Rezultatele obtinute sunt Ioarte apropiate de cele obtinute
de algoritmii siguri, dar care au rulat mii de ore.
Dac problema este complex, Iolosim un algoritm genetic si nu o
strategie evolutiv. De obicei mutatia este un operator de cutare slab
si prin urmare, dac se Ioloseste doar acesta, exist sanse mari s se
obtin solutii locale si nu globale.
Putem concluziona c puterea algoritmilor genetici const n
usurinta cu care sunt implementati si n Iaptul c dau de multe ori rezultate
bune, chiar dac nu gsesc ntotdeauna optimul global.


Bibliografie:

|BBM93| Beasley D., Bull D.R. and Martin R.R., An Overview of
Genetic Algorithms, Part 1, Foundations, University Computing,
Vol.15, No.4, pp. 170-181, 1993.

|Dum00| Dumitrescu D., Algoritmi genetici i strategii evolutive -
Aplicatii in inteligenta artificial i in domenii conexe, Editura
Albastr, Cluj-Napoca, 2000.

|GJ78| Garey M.R. and 1ohnson D.S., Computers and Intractabilitv.A
Guide to NP-completeness, W.H. Freeman and Company, New
York, 1978.

|Gol89| Goldberg D.E., Genetic Algorithms in Search, Optimization
and Machine Learning, Addison -Wesley, Reading, MA,1989.

|Koz92| Koza 1.R., Genetic Programming, MIT Press, Cambridge, MA,
1992.

|Mic99| Michalewicsz Z., Genetic Algorithms Data Structures
Evolution Programs, Second Extended Edition, 1999.

|Olt00| Oltean M., Proiectarea i implementarea algoritmilor,
Computer Libris Agora, Cluj-Napoca, 2000.