Sunteți pe pagina 1din 8

Inteligen artificial

Laboratorul 9

Algoritmi evolutivi

Obiectivele acestui laborator sunt urmtoarele:

prezentarea structurii generale a unui algoritm evolutiv, mpreun cu operatorii specifici;


rezolvarea a dou probleme de optimizare bazate pe valori reale, folosind acelai algoritm.

2. Structura unui algoritm evolutiv


Un algoritm evolutiv este o metod de cutare prin analogie cu evoluia biologic. Pentru
gsirea soluiei, se utilizeaz o populaie de soluii poteniale, care evolueaz prin aplicarea iterativ
a unor operatori stohastici. Elementele populaiei reprezint soluii poteniale ale problemei.

Iniializarea populaiei

Selecie prini pentru reproducere

Aplicare operator de ncruciare

Aplicare operator de mutaie

Reinserare

Condiie
de stop

Rezultat

Figura 1. Structura general a unui algoritm evolutiv

1
Inteligenta artificiala - Laborator, http://florinleon.byethost24.com/lab_ia.htm

Inteligenta artificiala - Laborator, http://florinleon.byethost24.com/lab_ia.htm

1. Obiective

Selecia. Determin prinii care se vor reproduce pentru a forma urmtoarea generaie.
Indivizii mai adaptai din populaie (care se apropie mai mult de soluia problemei) sunt
favorizai, n sensul ca au mai multe anse de reproducere;
ncruciarea. Pornind de la doi prini, se genereaz copii;
Mutaia. Pentru a asigura diversitatea populaiei, se aplic transformri cu caracter aleatoriu
asupra copiilor nou generai, permind apariia unor trsturi care nu ar fi aprut n cadrul
populaiei doar prin selecie i ncruciare.

Structura general a unui astfel de algoritm este cea din figura 1.


Codificarea difer de la problem la problem, cele mai des folosite metode fiind
codificrile binar i real. Condiia de stop se poate referi la evoluia pentru un anumit numr de
generaii sau la proprietile populaiei curente, de exemplu convergena populaiei ctre o anumit
valoare, pierderea diversitii indivizilor din populaie etc.
Dimensiunea populaiei poate fi n jur de 50. Pentru probleme simple poate fi mai mic (30),
iar pentru probleme dificile poate fi mai mare (100). Dac sunt prea puini cromozomi, algoritmul
nu are diversitatea necesar gsirii soluiei. Dac sunt prea muli, algoritmul va fi mai lent, fr a se
mbunti ns calitatea soluiei.
Numrul maxim de generaii variaz de obicei ntre 100-1000.

3. Tipuri de codificare
Modul n care o posibil soluie este codificat ntr-un cromozom depinde de problema
concret care trebuie rezolvat.
Codificarea binar
Este varianta clasic a algoritmilor genetici. n acest caz, cromozomii sunt iruri de n bii, n
fiind numrul de gene. Este adecvat pentru problemele de optimizare combinatorial n care
configuraiile pot fi specificate ca vectori binari.
Exemplul 3.1. Problema rucsacului
Se consider o mulime de n obiecte caracterizate prin greutile (w1, ... , wn) i prin valorile
(v1, ... , 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: si = 1 dac obiectul i este
selectat, respectiv si = 0 dac obiectul nu este selectat.
Pentru 5 obiecte posibile de introdus n sac, o gen reprezint un bit (xi), n timp ce
cromozomul este o soluie potenial (de exemplu 01101 nseamn c articolele 2, 3 i 5 vor fi
incluse n sac).
Funcia de adaptare (engl. fitness) arat ct de bun este o soluie, ct este de adaptat un
cromozom.

2
Inteligenta artificiala - Laborator, http://florinleon.byethost24.com/lab_ia.htm

Inteligenta artificiala - Laborator, http://florinleon.byethost24.com/lab_ia.htm

Pentru a ghida cutarea ctre soluia problemei, asupra populaiei se aplic transformri
specifice evoluiei naturale:

De exemplu, presupunem c la un moment dat avem combinaia:


i
wi
vi

1
70
40

2
55
15

3
40
5

4
15
30

5
5
10

Exemplul 3.2. Problema mpachetrii


Se consider un set de n obiecte caracterizate prin dimensiunile (d1, d2, ..., dn) i o mulime
de m cutii avnd capacitile (c1, c2, ..., cm). 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
reprezentarea binar pentru aceast problem este urmtoarea: se utilizeaz o matrice cu n linii i m
coloane iar elementul Sij are valoarea 1 dac obiectul i este plasat n cutia j i 0 n caz contrar. Prin
liniarizarea matricii se ajunge ca fiecare soluie potenial s fie reprezentat printr-un cromozom cu
m n gene.
Codificarea real
Este adecvat pentru problemele de optimizare pe domenii continue. n acest caz,
cromozomii sunt vectori cu elemente reale din domeniul de definiie al funciei. Avantajul acestei
reprezentri este faptul c este natural i nu necesit proceduri speciale de codificare/decodificare.
Exemplul 3.3. Funcia Rastrigin generalizat
Presupune minimizarea funciei urmtoare:
n

f (x) n A xi2 A cos( xi )


i 1

Pentru A = 10 i = 2, funcia are minimul f(0) = 0.


Domeniul variabilelor este: 5.12 < xi < 5.12.
n acest caz, cromozomii vor fi vectori cu n elemente din acest interval.

4. Construirea funciei de adaptare


Funcia de adaptare definete problema de optimizare. n formularea standard, scopul
algoritmilor evolutivi este maximizarea acestei funcii.
Orice problem de minimizare poate fi transformat ntr-una de maximizare prin schimbarea
semnului funciei obiectiv. Pentru o problem de minimizare n care dorim minimizarea unei funcii
g(x), funcia de adaptare va fi f(x) = g(x).

3
Inteligenta artificiala - Laborator, http://florinleon.byethost24.com/lab_ia.htm

Inteligenta artificiala - Laborator, http://florinleon.byethost24.com/lab_ia.htm

Atunci, pentru cromozomul 01101, constrngerea este satisfcut: w = 55 + 40 + 5 = 100


C = 100, iar funcia de adaptare este: v = 15 + 5 + 10 = 30.

5. Selecia
Selecia are ca scop determinarea prinilor care vor genera elementele populaiei din
urmtoarea generaie. Criteriul de selecie se bazeaz pe valoarea funciei de adaptare. Procesul de
selecie nu depinde de modul de codificare a elementelor populaiei (binar, real etc.).

Figura 2. Selecia de tip rulet

Selecia bazat pe ranguri


Se ordoneaz cresctor valorile funciei de adaptare pentru toate elementele populaiei. Se
rein valorile distincte i li se asociaz cte un rang: cea mai mic valoare are rangul 0 sau 1, iar cea
mai mare are rangul maxim, n sau n 1, unde n este dimensiunea populaiei. Probabilitatea de
selecie este n acest caz proporional cu rangul individului.
Selecia de tip competiie
Se aleg aleatoriu k membri din populaie i se determin cel mai adaptat dintre acetia. De
obicei, k = 2. Procedura se repet pentru a selecta mai muli prini. Aceast metod este mai rapid
dect seleciile prin rulet sau ranguri.
Elitismul
Cel mai adaptat individ este copiat direct n noua populaie. Asigur faptul c niciodat nu
se pierde soluia cea mai bun.

6. ncruciarea
ncruciarea (engl. crossover) permite combinarea informaiilor provenite de la doi prini
pentru generarea unuia sau a doi urmai. Vom considera doar cazul a doi prini (notai cu x i y)
care genereaz doi urmai (notai cu x' i y'). ncruciarea (numit uneori i recombinare) depinde
de modul de codificare al datelor, aplicndu-se direct asupra cromozomilor.
ncruciarea binar
Cea mai des folosit este ncruciarea cu un punct. Reamintim c aici cromozomul este un
ir de n bii. Se alege n mod aleatoriu un k { l, ..., n 1 }, numit punct de tietur, i se
construiesc urmaii n modul urmtor:
4
Inteligenta artificiala - Laborator, http://florinleon.byethost24.com/lab_ia.htm

Inteligenta artificiala - Laborator, http://florinleon.byethost24.com/lab_ia.htm

Selecia de tip rulet


Ideea de baz a acestui tip de selecie este c probabilitatea unui individ de a fi selectat este
proporional cu funcia sa de adaptare. Ruleta se nvrte de n ori pentru a se alege n indivizi.

x' = ( x1, ..., xk, yk+1, ..., yn )


y' = ( y1 ... , yk, xk+1, ..., xn )

ncruciarea real
ncruciarea aritmetic intermediar combin materialul genetic al prinilor x i y (vectori
de numere reale) aplicnd urmtoarele reguli pentru a obine copiii x' i y':
xi' = ai xi + (1 ai) yi
yi' = (1 ai) xi + ai yi
Vectorul a are aceeai lungime ca i cromozomii, iar elementele sale sunt cuprinse n
intervalul (0, 1) sau (0.25, 1.25). n ultimul caz, urmaii se vor gsi n interiorul unui hipercub
puin mai mare dect hipercubul delimitat de valorile genelor prinilor.
ncruciarea aritmetic liniar combin materialul genetic al prinilor x i y, aplicnd
regulile:
xi' = a xi + (1 a) yi
yi' = (1 a) xi + a yi
n acest caz, a este un scalar ales aleatoriu din intervalul (0, 1) sau (0.25, 1.25). Astfel,
copiii vor fi plasai pe un segment de dreapt determinat de genele prinilor.

Figura 4. ncruciarea real aritmetic liniar

ncruciarea se are loc cu o anumit probabilitate, numit probabilitate de ncruciare i


notat cu pc. Aceasta trebuie s fie n general mare, de exemplu 0.9.
Din punct de vedere al implementrii, se genereaz un numr aleatoriu r ntre 0 i 1. Dac r
< pc, se aplic ncruciarea. Dac nu, se genereaz copii egali cu prinii.

5
Inteligenta artificiala - Laborator, http://florinleon.byethost24.com/lab_ia.htm

Inteligenta artificiala - Laborator, http://florinleon.byethost24.com/lab_ia.htm

Figura 3. ncruciarea binar cu un punct

7. Mutaia

Mutaia binar
Cel mai simplu i des utilizat tip de mutaie binar este cel n care se selecteaz o gen iar
valoarea acesteia este negat (0 devine 1 iar 1 devine 0) cu o anumit probabilitate, numit
probabilitate de mutaie i notat cu pm. Aceasta trebuie s fie n general mic, de exemplu 0.02.
Mutaia real
Pentru codificarea real, se folosete de obicei resetarea valorii unei gene la un numr
aleatoriu din domeniul ei de definiie. Rata de mutaie real poate fi mai mare dect la mutaia
binar, deoarece numrul valorilor reale este mai mic dect numrul de bii, de exemplu 0.1.

8. Domenii de aplicabilitate
Algoritmii evolutivi sunt utilizai pentru probleme de optimizare, atunci cnd nu exist alt
strategie de rezolvare a problemei i este acceptat un rspuns aproximativ.
Cteva dintre domeniile de aplicabilitate sunt:

Cutare i planificare. Majoritatea problemelor de cutare i planificare, precum alegerea


traseelor optime ale unor vehicule, rutarea mesajelor ntr-o reea, planificarea unor activiti,
problema orarului etc., pot fi formulate ca probleme de optimizare. Multe dintre acestea sunt
probleme din clasa NP-hard, 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;
Proiectare. Algoritmii evolutivi sunt aplicai cu succes n proiectarea circuitelor digitale, a
filtrelor dar i a unor structuri de calcul precum reelele neuronale. Ca metode de estimare a
parametrilor unor sisteme care optimizeaz anumite criterii, 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 identificrii
structurii sistemului pornind de la modul de comportare. Algoritmii evolutivi sunt utilizai
att n simularea unor sisteme din inginerie dar i din economie, de exemplu pentru
modelarea proceselor de competiie n marketing. Identificarea unui model este util n
special n efectuarea de 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.
6

Inteligenta artificiala - Laborator, http://florinleon.byethost24.com/lab_ia.htm

Inteligenta artificiala - Laborator, http://florinleon.byethost24.com/lab_ia.htm

Mutaia asigur modificarea valorilor unor gene pentru a evita situaiile n care o anumit
alel (valoare posibil a unei gene) nu apare n populaie deoarece nu a fost generat de la nceput.
n felul acesta poate fi crescut diversitatea populaiei i se poate evita convergena ntr-un optim
local.
Mutaia se efectueaz asupra copiilor generai dup aplicarea operatorului de ncruciare.

Pentru explicaii suplimentare, consultai cursul 4.

9. Aplicaii

9.2. Un fermier are 100 m de gard cu care vrea s mprejmuiasc un teren dreptunghiular
care se nvecineaz cu un ru. Latura vecin cu rul nu are nevoie de gard. Care sunt dimensiunile
terenului cu arie maxim care poate fi mprejmuit n acest fel?

Problema de optimizare formalizat este maximizarea ariei A = x y, respectnd constrngerea


2 x + y = 100. (Soluia este: x = 25 i y = 50, deci A = 1250).
Indicaii. Se d un prototip de aplicaie, n care sunt implementate toate clasele necesare
pentru rezolvare. Diagrama UML de clase a aplicaiei complete este urmtoarea:

Trebuie implementate doar urmtoarele metode:


Selection.Tournament(Chromosome[] population) : Chromosome
Alege n mod aleatoriu doi indivizi/cromozomi (diferii) din populaie, le compar fitness-ul
i l returneaz pe cel mai adaptat.
Selection. GetBest(Chromosome[] population) : Chromosome
Returneaz individul din populaie cu fitness maxim.
7
Inteligenta artificiala - Laborator, http://florinleon.byethost24.com/lab_ia.htm

Inteligenta artificiala - Laborator, http://florinleon.byethost24.com/lab_ia.htm

9.1. Determinai soluia real a ecuaiei: x5 5x + 5 = 0. (Soluia este: x = 1.680494.)

Crossover.Arithmetic(Chromosome mother, Chromosome father, double rate) : Chromosome


Aplic ncruciarea artimetic ntre cei doi prini, cu probabilitatea rate.
Mutation.Reset(Chromosome child, double rate)
Aplic asupra copilului child mutaia prin resetare, cu probabilitatea rate.

Equation.ComputeFitness(Chromosome c)
Funcia de adaptare pentru prima problem.
Fence.ComputeFitness(Chromosome c)
Funcia de adaptare pentru a doua problem.
n plus, aici trebuie satisfcut constrngerea. O modalitate elegant de a asigura
fezabilitatea soluiilor este de a repara cromozomii, scalndu-le valorile genelor astfel nct suma
lor s fie ntotdeauna 100. Abia apoi se calculeaz aria.
Program.Main()
Pentru ambele probleme, trebuie s gsii, prin ncercri repetate, valorile parametrilor
algoritmului (dimensiunea populaiei, numrul maxim de generaii, ratele de ncruciare i mutaie)
care dau cele mai bune rezultate.

8
Inteligenta artificiala - Laborator, http://florinleon.byethost24.com/lab_ia.htm

Inteligenta artificiala - Laborator, http://florinleon.byethost24.com/lab_ia.htm

EvolutionaryAlgorithm.Solve(...) : Chromosome
Trebuie completat bucla principal, cu apelul operatorilor genetici.

S-ar putea să vă placă și