Documente Academic
Documente Profesional
Documente Cultură
Algoritmi EVOLUTIVI
focus
focus
þãtor individ este 0.15, a individului urmãtor este 0.14, losesc principii din genetica naturalã. Câteva principii fun-
etc.; cel mai promiþãtor individ are cea mai mare proba- damentale ale geneticii sunt împrumutate ºi folosite artifi-
bilitate ºi suma totalã a probabilitãþilor indivizilor este cial pentru a construi algoritmi de cãutare care sunt ro-
1); buºti ºi cer informaþii minime despre problemã.
• selecþia prin turnir (prin concurs) unde un anumit numãr Algoritmii genetici au fost inventaþi folosind modelul
de indivizi (de obicei doi) luptã pentru a fi selectaþi în procesului de adaptare. Ei opereazã, în principal, cu ºiruri
noua generaþie. Aceastã competiþie (turnir) este repetatã binare ºi folosesc un operator de recombinare ºi unul de
pânã sunt selectaþi un numãr de indivizi egal cu dimen- mutaþie.
siunea populaþiei. Prin mutaþie se schimbã un element (genã) dintr-un
Pentru fiecare dintre aceste categorii de selecþie existã cromozom, iar prin încruciºare se schimbã material gene-
ºi alte detalii importante. Câteva exemple sunt: tic între doi pãrinþi; dacã pãrinþii sunt reprezentaþi prin ºi-
• selecþia proporþionalã poate necesita folosirea unor me- ruri de cinci biþi, de exemplu (0, 0, 0, 0, 0) ºi (1, 1, 1, 1, 1),
tode de trunchiere; încruciºarea celor doi vectori poate duce la obþinerea des-
• existã diferite moduri pentru stabilirea probabilitãþii în cendenþilor (0, 0, 1, 1, 1) ºi (1, 1, 0, 0, 0) (acesta este un
metoda rangului; exemplu al aºa-numitei încruciºãri cu un punct de tãietu-
• dimensiunea mulþimii alese pentru concurs poate juca un rã).
rol semnificativ în metoda selecþiei prin turnir. Fitness-ul unui individ este atribuit proporþional cu va-
Trecerea de la o generaþie la alta poate fi efectuatã în loarea funcþiei criteriu corespunzãtoare individului; indi-
douã variante: vizii sunt selectaþi pentru generaþia urmãtoare pe baza fit-
• algoritm generaþional (noua populaþie este formatã doar ness-ului lor.
din descendenþi ai vechii generaþii); Vom ilustra modul de lucru al algoritmilor genetici cu
• algoritm non-generaþional (în noua populaþie sunt intro- ajutorul unei probleme simple: proiectarea unei cutii de
duºi, de obicei, cei mai promiþãtori indivizi din cele douã conserve. Considerãm o cutie de conserve cilindricã, cu nu-
populaþii, cea a pãrinþilor ºi cea a descendenþilor). Este mai doi parametri: diametrul d ºi înãlþimea h (evident, pot
posibil, de asemenea, sã creãm puþini (în particular, unul fi consideraþi ºi alþi parametri, cum ar fi grosimea, proprie-
singur) descendenþi, care înlocuiesc câþiva (cei mai puþin tãþi ale materialului, forma, dar sunt suficienþi doar cei doi
promiþãtori) indivizi. parametri pentru a ilustra lucrul cu algoritmii genetici).
Ca o regulã generalã trebuie reþinut faptul cã, în majo- Sã considerãm cã aceastã conservã trebuie sã aibã un
ritatea cazurilor, este de preferat sã se utilizeze un model volum de cel puþin 300 ml ºi obiectivul proiectului este de
elitist, care pãstreazã cei mai promiþãtori indivizi dintr-o a minimiza costul materialului folosit la fabricarea conser-
generaþie ºi îi adaugã automat generaþiei urmãtoare (aceas- vei. Putem formula problema noastrã astfel: sã se minimi-
ta înseamnã cã, dacã cel mai promiþãtor individ din gene- πd 2
Ginfo nr. 8 - decembrie 2001
codificare naturalã ar fi codificarea realã, care utilizeazã Pasul 3: Se evalueazã cromozomii populaþiei P(t). În acest
numere reale pentru reprezentare. scop se utilizeazã o funcþie de performanþã ce
Pentru a folosi algoritmii genetici la gãsirea unor valori depinde de problemã.
optime pentru parametri d ºi h, care sã satisfacã condiþia Pasul 4: Cât timp nu este îndeplinitã condiþia de termina-
prezentatã sub forma funcþiei g ºi care sã minimizeze re se executã paºii urmãtori:
funcþia f, vom avea în primul rând nevoie de reprezentarea Pasul 4.1: Se selecteazã cromozomii din P(t) care vor
valorilor parametrilor în ºiruri binare (vom folosi, aºadar, contribui la formarea noii generaþii. Fie P1 mulþimea
o codificare binarã a problemei). Sã presupunem cã folo- cromozomilor selectaþi (P1 reprezintã o populaþie in-
sim cinci biþi pentru a codifica fiecare dintre cei doi para- termediarã).
metri d ºi h. De exemplu, urmãtorul ºir reprezintã o con- Pasul 4.2: Se aplicã cromozomilor din P1 operatorii ge-
servã cu diametrul de 8 cm ºi înãlþimea de 10 cm: netici. Cei mai utilizaþi sunt operatorii de mutaþie ºi
01000
123 01010
123 . încruciºare. În funcþie de problemã se pot alege ºi alþi
d h operatori (inversiune, reordonare, operatori speciali).
Pentru aceste valori ale lui d ºi h, costul conservei este Fie P2 populaþia astfel obþinutã (descendenþii popula-
de 23 de unitãþi. þiei P(t)). Se ºterg din P1 pãrinþii descendenþilor obþi-
nuþi. Cromozomii rãmaºi în P1 sunt incluºi în popu-
laþia P2. Se construieºte noua generaþie, astfel: P(t + 1)
← P2; se ºterg toþi cromozomii din P(t); se executã
atribuirea t ← t + 1; se evalueazã P(t).
Marginea inferioarã a celor doi parametri este 0, iar Condiþia de terminare se referã, de regulã, la atingerea
marginea superioarã este 31. numãrului de generaþii specificate.
Folosind aceastã reprezentare a parametrilor pe cinci Dacã numãrul maxim admis de generaþii este N, atunci
biþi, existã exact 210 = 1024 soluþii posibile. Folosind mar- condiþia de oprire este t > N.
ginile considerate mai sus, algoritmii genetici ne permit sã Se admite cã rezultatul algoritmului este dat de cel mai
alegem numai valori din intervalul [0, 31]. promiþãtor individ din ultima generaþie. În realitate, nimic
Algoritmii genetici nu ne impun numai valori întregi nu ne garanteazã cã un individ mai performant nu a fost
din acest interval; în general, putem folosi orice altã valoa- obþinut într-o generaþie anterioarã. De aceea, este normal
re întreagã sau realã, prin schimbarea lungimii ºirului bi- ca la fiecare pas (la fiecare generaþie t) sã reþinem cel mai
nar ºi a celor douã margini: inferioarã ºi superioarã. promiþãtor individ care a fost generat pânã atunci. Acest
proces se numeºte elitism. Revenind la exemplul nostru, sã
Atribuirea fitness-ului considerãm o populaþie aleatoare de ºase indivizi, fiecare
Am afirmat anterior cã algoritmii genetici lucreazã cu ºi- având marcat fitness-ul corespunzãtor.
Ginfo nr. 8 - decembrie 2001
Selecþia proporþionalã
În cazul selecþiei proporþionale, probabilitatea de selecþie a
unui individ depinde de valoarea performanþei acestuia. Sã
focus
presupunem cã avem o mulþime de cromozomi x1, x2,
,
xn. Pentru fiecare cromozom xi vom calcula performanþa
sa f(xi). Se impune condiþia ca f(xi) ≥ 0. Suma perfor-
manþelor tuturor cromozomilor din populaþie va constitui
performanþa totalã ºi o vom nota cu F. Probabilitatea de
selecþie pi a cromozomului xi este datã de relaþia:
f ( xi )
pi = .
F
Selecþia bazatã pe ordonare
Aceastã modalitate de selecþie constã în a calcula (pentru
fiecare generaþie) valorile funcþiei de fitness ºi de a aranja Dupã cum se poate observa ºi în figurã, avem ºase pe-
indivizii în ordinea descrescãtoare a acestor valori. Se va rechi a câte douã cutii; dintre perechea de cutii cu fitness-ul
atribui fiecãrui individ i o probabilitate de selecþie pi care 23 respectiv 30, o vom alege pe cea cu fitness-ul 23 ºi o
depinde de rangul sãu în ºirul stabilit. Probabilitãþile de- vom include în populaþia intermediarã; dintre cutia cu fit-
pind acum doar de poziþia cromozomului. Cel mai promi- ness-ul 24 ºi cea cu fitness-ul 11 ºi penalizarea 28, o vom
þãtor individ are probabilitatea 1. alege pe cea cu fitness-ul 24 ºi o vom include în populaþia
intermediarã º.a.m.d. Astfel, am format o populaþie inter-
Selecþia prin concurs mediarã care are tot ºase elemente. Este uºor de observat
Selecþia prin concurs sau selecþia turnir se bazeazã pe com- cã soluþiile promiþãtoare au mai mult de o copie în popu-
pararea directã a câte doi cromozomi ºi selectarea celui mai laþia intermediarã (de exemplu, cutia cu fitness-ul 23 ºi cea
performant. Operaþiile implicate sunt urmãtoarele: cu fitness-ul 24 au câte douã copii).
• se aleg în mod aleator doi cromozomi;
• se calculeazã performanþele cromozomilor selectaþi; Operatorul de încruciºare
• cromozomul mai performant este selectat (copiat în po- Operatorul de încruciºare este aplicat asupra indivizilor
pulaþia intermediarã asupra cãreia se aplicã operatorii ge- din populaþia intermediarã. În exemplul nostru, va fi apli-
netici). cat asupra reprezentãrii binare a celor ºase elemente pe ca-
re le avem în populaþia intermediarã. Operatorul de încru-
Alte mecanisme de selecþie ciºare acþioneazã în felul urmãtor: sunt aleºi aleator doi
Un alt tip de selecþie este selecþia elitistã. În acest caz, la fi- indivizi din populaþia intermediarã (care se mai numeºte ºi
ecare generaþie se pãstreazã cel mai promiþãtor sau cei mai piscinã de încruciºare) ºi anumite porþiuni din cei doi indi-
promiþãtori indivizi. O altã idee ar fi ca, la fiecare genera- vizi sunt interschimbate. Operatorul imitã încruciºarea in-
þie, sã fie înlocuitã doar o parte restrânsã a populaþiei. tercromozomialã naturalã. De regulã, se utilizeazã opera-
Ginfo nr. 8 - decembrie 2001
tori de încruciºare de tipul (2, 2), adicã doi pãrinþi dau naº-
Operatorii genetici tere la doi descendenþi. Încruciºarea realizeazã un schimb
Descriem în continuare operatorii genetici folosiþi, de obi- de informaþie între cei doi pãrinþi. Descendenþii obþinuþi
cei, într-un algoritm genetic. prin încruciºare vor avea caracteristici ale ambilor pãrinþi.
Datã fiind importanþa majorã a încruciºãrii, au fost propu-
Operatorul de reproducere se mai multe modele de încruciºare. Vom enumera aici câ-
Rolul operatorului de reproducere este de a menþine solu- teva dintre cele utilizate atunci când se foloseºte codifica-
þiile promiþãtoare din populaþie ºi de a le elimina pe cele rea binarã.
mai puþin promiþãtoare, pãstrând constantã dimensiunea
populaþiei. Aceasta se realizeazã astfel: Încruciºarea cu un punct de tãieturã
• se identificã soluþiile promiþãtoare din populaþie; Fie r lungimea cromozomilor. Un punct de tãieturã este
• se creeazã mai multe copii ale soluþiilor promiþãtoare; un numãr întreg k ∈ {1, 2,
, r - 1}. Numãrul k indicã po-
• se eliminã soluþiile mai puþin promiþãtoare din populaþie ziþia din interiorul cromozomului unde secvenþa cromo-
astfel încât multiplele copii ale soluþiilor promiþãtoare sã zomialã se rupe pentru ca segmentele obþinute sã se re-
poatã fi plasate în populaþie. combine cu alte segmente provenite de la alþi cromozomi.
33
Considerãm doi cromozomi: Trebuie reþinut faptul cã încruciºarea nu genereazã
x = x1x2
xkxk+1
xr ºi descendenþi aleatori. Deºi este improbabil ca fiecare încru-
y = y1y2
ykyk+1
yr. ciºare între douã soluþii din populaþie sã genereze soluþii fii
În urma recombinãrii se schimbã între cei doi cromo- mai promiþãtoare decât soluþiile pãrinte, totuºi în scurt
zomi secvenþele aflate în dreapta punctului de tãieturã k. timp devine clar cã ºansa de a crea soluþii mai promiþãtoare
Cromozomii fii vor fi: este mai mare decât în cazul cãutãrii aleatoare. Din încru-
x' = x1x2
xkyk+1
yr ºi ciºarea cu un singur punct de tãieturã a unei perechi de ºi-
y' = y1y2
ykxk+1
xr. ruri binare, se pot crea doar douã ºiruri pereche diferite
De exemplu, dacã avem o reprezentare mai sugestivã a care vor avea în componenþã biþi combinaþi din ambii pã-
focus
celor doi cromozomi: rinþi; soluþiile fiu create sunt, probabil, ºiruri cel puþin la
fel de promiþãtoare. Prin urmare, nu fiecare încruciºare poa-
te crea soluþii la fel de promiþãtoare, dar nu vor fi mai pu-
þin promiþãtoare decât pãrinþii. Dacã a fost obþinutã o so-
luþie mai puþin promiþãtoare, atunci aceasta nu va mai apã-
descendenþii vor fi: rea când se va aplica urmãtorul operator de reproducere ºi
astfel va avea o viaþã scurtã. Dacã este creatã o soluþie mai
promiþãtoare, atunci este probabil ca ea sã aibã mai multe
copii la urmãtoarea aplicare a operatorului de reproducere.
Pentru a pãstra o astfel de selecþie a ºirurilor promiþãtoare
în timpul aplicãrii operatorului de reproducere, nu toate
Încruciºarea cu mai multe puncte de tãieturã ºirurile din populaþie sunt folosite pentru încruciºare.
În cazul utilizãrii mai multor puncte de tãieturã, segmen-
tele obþinute se combinã dupã o regulã datã. Considerãm Operatorul de mutaþie
încruciºarea cu douã puncte de tãieturã. Acest tip de în- Operatorul de încruciºare este, în principal, responsabil cu
cruciºare se realizeazã conform schemei de mai jos. aspectul de cãutare al algoritmilor genetici, în timp ce ope-
Din cromozomii: ratorul de mutaþie este folosit pentru alte scopuri. Mutaþia
este cel de-al doilea operator genetic în ordinea importan-
þei ºi folosirii sale. Efectul acestui operator este schimbarea
valorii unei singure poziþii dintr-un cromozom. Prin mu-
taþie se introduc în populaþie indivizi care nu ar fi putut fi
vor rezulta doi descendenþi de tipul: obþinuþi prin alte mecanisme.
Operatorul de mutaþie acþioneazã asupra biþilor indi-
ferent de poziþia lor în cromozom. Fiecare bit al cromozo-
mului poate suferi o mutaþie. Într-un cromozom pot exis-
ta, aºadar, mai multe poziþii care suferã o mutaþie.
Mutaþia este un operator probabilist (adicã nu se aplicã
În cazul a trei puncte de tãieturã, descendenþii vor fi de cu siguranþã). Considerãm o populaþie de n indivizi (cro-
forma: mozomi), fiecare având lungimea r. Fiecare bit are aceeaºi
probabilitate pm de a suferi mutaþia.
Existã mai multe variante ale operatorului de mutaþie.
Una dintre ele ar fi mutaþia în forma tare. În aceastã situa-
Ginfo nr. 8 - decembrie 2001
focus
singur operator în procesul de evoluþie: mutaþia. Aceasta loc de a construi un program evolutiv care sã rezolve pro-
este în concordanþã cu conceptul biologic potrivit cãruia blema, vom încerca sã gãsim un cod sursã care sã o rezol-
modificãri mici au loc mai frecvent decât o modificare ma- ve. Koza a dezvoltat o nouã metodologie care furnizeazã
re. De obicei aceastã strategie conform cãreia un pãrinte dã un mod de a efectua aceastã cãutare.
naºtere prin mutaþie unui singur descendent este cunoscu- De exemplu, se doreºte obþinerea unui program Pascal
tã sub numele de strategie evolutivã 1 + 1. Felul în care se sau C++ care sã rezolve problema drumului hamiltonian
aplicã practic acest algoritm este simplu: se genereazã o so- sau problema ieºirii dintr-un labirint. Deci, nu ne intere-
luþie aleatoare pe domeniul de cãutare ºi se efectueazã mu- seazã sã obþinem o soluþie pentru un set oarecare de date,
taþii asupra ei. Este acceptat cel mai bun dintre pãrinte ºi ci, mai degrabã, ne intereseazã sã obþinem un program sur-
descendent. Operatorul de mutaþie se aplicã repetat pânã sã care sã genereze o soluþie corectã pentru orice intrare
când se ajunge la soluþie. datã. Cu alte cuvinte, ne intereseazã sã obþinem ca rezultat
Un alt tip de strategie este strategia (µ + λ): µ pãrinþi un program asemãnãtor cu cel pe care l-am fi putut scrie
produc λ descendenþi. Noua populaþie (temporarã) de (µ noi dacã am fi ºtiut sã rezolvãm problema.
+ λ) indivizi este redusã din nou - printr-un proces de se- Din punct de vedere evolutiv abordarea unor astfel de
lecþie - la µ indivizi. Pe de altã parte, în strategia (µ, λ), µ in- probleme se face generând o mulþime (populaþie) aleatoare
divizi produc λ descendenþi (λ > µ) ºi prin procesul de se- de coduri sursã care apoi sunt selectate pe baza funcþiei de
lecþie se alege o nouã populaþie de µ indivizi numai din fitness ºi evoluate cu ajutorul unor operatori genetici spe-
mulþimea celor λ descendenþi. Astfel, viaþa fiecãrui individ cifici.
este limitatã la o generaþie. În primul rând trebuie sã atribuim o funcþie de calitate
(funcþia fitness) fiecãrui program generat. Aceastã funcþie
Programare evolutivã de fitness trebuie sã reflecte performanþele programului
Tehnicile programãrii evolutive originale au fost dezvolta- cãruia îi este ataºatã.
te de Lawrence Fogel. El urmãrea o dezvoltare a inteligen- De obicei ataºarea unei funcþii de fitness se face rulând
þei artificiale în sensul dezvoltãrii abilitãþii de a prezice programul respectiv ºi mãsurând calitatea soluþiei în ra-
schimbãrile într-un mediu înconjurãtor. port cu o soluþie care se cunoaºte a fi optimã. Un program
Mediul înconjurãtor a fost descris ca o secvenþã de sim- va avea o calitate mai mare dacã soluþia generatã va fi mai
boluri, iar evoluarea algoritmului presupunea obþinerea unui asemãnãtoare cu cea a soluþiei corecte. Nu este grav dacã o
nou produs, ºi anume a unui nou simbol. Simbolul obþinut soluþie optimã nu se cunoaºte anterior, deoarece noi dorim
va maximiza funcþia finalã care mãsoarã acurateþea predicþi- sã obþinem soluþii cu un fitness cât mai mare (sau cât mai
ei. De exemplu, putem considera o serie de evenimente no- mic).
tate a1, a2,
, an; un algoritm va determina urmãtorul sim- Evoluarea programelor sursã se realizeazã prin opera-
bol (an+1), bazându-se pe simbolurile cunoscute a1, a2,
, an. tori genetici specifici. De exemplu, un operator de recom-
Ginfo nr. 8 - decembrie 2001
Ideea care stã la baza programãrii evolutive este de a binare poate însemna alipirea secvenþelor dintr-un cod
evolua un algoritm. Ca ºi în strategiile evolutive, ºi în tehni- sursã cu secvenþe din alt cod sursã. Un operator de mutaþie
ca programãrii evolutive se creeazã mai întâi descendenþii ar putea însemna inserarea de noi instrucþiuni în codul
ºi apoi se vor selecta indivizii pentru generaþia urmãtoare. sursã, ºtergerea de instrucþiuni, transformarea de instruc-
Fiecare pãrinte produce un singur descendent; deci dimen- þiuni. Evident, în urma aplicãrii acestor operatori genetici
siunea populaþiei intermediare se dubleazã (ca în strategia se genereazã cod sursã care conþine greºeli de sintaxã. De
evolutivã (n, n), unde n este dimensiunea populaþiei). asemenea, sunt generate secvenþe de cod sursã nefolositoa-
Descendentul este creat printr-o mutaþie aleatoare a pãrin- re. Exemple în acest sens sunt secvenþa de instrucþiuni:
telui (este posibil sã se aplice mai mult de o mutaþie unui i := i + 1;
individ). Un numãr de indivizi (cei mai promiþãtori) egal i := i - 1;
cu dimensiunea populaþiei sunt reþinuþi pentru noua gene- sau secvenþa:
raþie. În versiunea originalã acest proces este repetat pânã a := 0;
se obþine un nou simbol care este disponibil. Dupã ce s-a b := c / a;
obþinut un nou simbol, acesta este adãugat listei simbolu- De obicei, se evolueazã reprezentãri mai simple ale
rilor cunoscute ºi întregul proces se repetã. programelor de calculator ºi anume reprezentãrile arbo-
35
rescente. Existã limbaje de programare (de exemplu LISP) Structura algoritmului genetic propus pentru rezolva-
în care programele sunt scrise sub forma unor liste uºor rea acestei probleme a fost prezentatã mai sus. Vom folosi
transformabile în arbori. selecþia turnir pentru obþinerea populaþiei intermediare.
Operatorii genetici folosiþi sunt specifici codificãrii binare
Aplicaþie (încruciºare cu un singur punct de tãieturã, mutaþie cu
În cele ce urmeazã vom prezenta rezolvarea unei proble- probabilitate pm= 0.1).
me folosind algoritmii genetici Codul sursã al implementãrii este disponibil pentru
download la www.ginfo.ro/revista/11_8/.
Enunþ (Submulþime de sumã datã)
focus
M cu n elemente. Deci, o soluþie a problemei este o sub- Genetic Algorithms, Part 1, Foundations, University
mulþime. Vom codifica o submulþime printr-un ºir de lun- Computing, Vol.15, No.4, pp. 170-181, 1993;
gime n care conþine doar valorile 0 ºi 1. Dacã o poziþie k 2. Dumitrescu D., Algoritmi genetici ºi strategii evolutive
va avea valoarea 1, atunci submulþimea respectivã va con- - Aplicaþii în inteligenþa artificialã ºi în domenii conexe,
þine elementul Mk (al k-lea element din mulþimea M), iar Editura Albastrã, Cluj-Napoca, 2000;
dacã pe poziþia k este valoarea 0, atunci elementul respec- 3. Goldberg D.E., Genetic Algorithms in Search, Optimi-
tiv nu aparþine submulþimii. Aceastã reprezentare a unei zation and Machine Learning, Addison - Wesley, Read-
submulþimi este specificã tipului set din Turbo Pascal. ing, MA,1989;
Modul de calcul al fitness-ului (calitãþii) unei soluþii 4. Garey M.R., Johnson D.S., Computers and Intractabi-
(submulþimi) este simplu. Calculãm suma elementelor sub- lity: A Guide to NP-completeness, W.H. Freeman and
mulþimii, iar fitness-ul va fi diferenþa (în valoare absolutã) Company, New York, 1978.
dintre suma obþinutã ºi numãrul dat S. În aceste condiþii 5. Koza J.R., Genetic Programming, MIT Press, Cam-
fitness-ul va trebui minimizat, deoarece noi dorim sã de- bridge, MA, 1992;
terminãm o submulþime pentru care suma elementelor es- 6. Oltean M., Proiectarea ºi implementarea algoritmilor,
36 te cât mai apropiatã de valoarea datã S. Computer Libris Agora, Cluj-Napoca, 2000.