Sunteți pe pagina 1din 15

Algoritmii genetici

Algoritmii genetici sunt algoritmi de cautare performanta care fac parte din categoria algoritmilor evolutionisti. Acestia din urma sunt una dintre componentele de baza ale computatiei bazate pe evolutie. Mare parte din procesele tehnice din industrie, economie sau statistica pot gasi o rezolvare in metode de computatie bazate pe tehnici evolutioniste. In electronica, principiul de baza se refera la posibilitatea de a optimiza sau de a proiecta circuite electrice in mod automat, fara a folosi cunostintele, interventia si aportul uman. Principiul aplicarii metodelor evolutioniste in electronica se bazeaza pe posibilitatea de a gasi solutia perfecta a unei probleme tehnice date, prin cautari performante a spatiului pus la dispozitie. Acest spatiu poate fi finit sau infinit. Metodele de calcul evolutioniste au la baza principii evolutive luate din natura. Imbinarea teoriilor darwiniste cu tehnica actuala prezinta un interes deosebit si un mare pas in dezvoltarea stiintifica. Darwin foloseste ipoteza cum ca speciile actuale sunt rezultatul unei constante si accelerate evolutii pe parcursul timpului, care porneste de la un stramos comun. Evolutia s-a datorat unei constante adaptari la mediu, aparand ca o concluzie ca cei mai puternici si mai bine pregatiti indivizi din specii diferite au reusit pe parcurs sa supravietuiasca si sa se perpetueze. Acest fapt a fost remarcat in mod constant, devenind un principiu numit selectie naturala. Trecand de la aplicarea principiilor de mai sus in metodele de calcul evolutioniste, se observa o atenta respectare a tiparului. Pentru a le sintetiza, acestea au fost grupate sub numele de algoritmi evolutionisti. Algoritmii evolutionisti au ca si scop gasirea unei solutii optime a unei problem date. De cele mai multe ori, problema data e caracterizata de o functie, numita functia obiectiv. Procesul de optimizare se evalueaza in capacitatea functiei obiectiv de a respecta anumite criterii de optimizare impuse. In caz contrar, algoritmul va fi apelat printr-un numar sufiecient de iteratii pana la respectarea conditiilor. Pentru a intelege si a relationa cu fondul lor evolutionist, e necesar definirea unor anumiti parametrii de baza pentru algoritmii evolutionisti. In primul rand, unitatile de baza care sufera transformari si evolutii sunt numite indivizi. Acesti indivizi sunt grupati in generatii. La fiecare apelare a algoritmului, se creeaza o noua generatie care e imbunatatita in raport cu conditiile de optimizare impuse. Algoritmul actioneaza cu diferiti operatori asupra indivizilor, pentru a imbunatati caracteristica fiecaruia in raport cu procesul de optimizare.

Structura unui algoritm evolutionist a unei singure populatii:

La inceputul evaluarii un numar de indivizi (populatia) sunt initializati in mod aleator. Apoi functia obiectiv este evaluate pentru acesti indivizi si este produsa prima generatie. Daca criteriile de optimizare nu sunt indeplinite, incepe crearea unei noi generatii. Indivizii sunt selectati pentru a produce urmasi in functie de aptitudinile lor. Parintii sunt recombinati pentru a produce urmasi. Toti urmasii for suferi mutatii cu o anumita probabilitate. Aptitudinile urmasilor sunt apoi evaluate. Urmasii sunt introdusi in populatie, inlocuind parintii, ei producand o noua generatie. Ciclul este efectuat pana in momentul in care criteriile de optimizare sunt indeplinite. Un astfel de algoritm evolutionist cu o singura populatie este puternic si functioneaza bine pe o mare varietate de probleme. Totusi, pot fi obtinute rezultate mai bune prin introducerea subpopulatiilor multiple. Fiecare subpopulatie evolueaza izolat de-a lungul a catorva generatii (ca si in cazul algoritmilor evolutionisti cu o singura populatie), inainte ca unul sau mai multi indivizi sa fie schimbati intre subpopulatii. Structura unui algoritm evolutionist a unei multipopulatii:

Se poate observa ca algoritmii evolutionisti difera substantial de metodele traditionale de cautare si optimizare. Cele mai semnificative diferente sunt: algoritmii evolutionisti cauta o populatie de puncte in paralel, nu doar un singur punct algoritmii evolutionisti nu necesita informatie derivativa sau alte cunostinte auxiliare; numai functia obiectiv si nivelurile de aptitudini corespunzatoare influentiaza directia cautarii algoritmii evolutionisti utilizeaza reguli de trecere probabilistice, nu deterministe algoritmii evolutionisti sunt in general mai simplu de implementat, deoarece nu exista restrictii in definirea functiei obiectiv algoritmii evolutionisti pot oferi un numar de potentiale solutii la o problema data; decizia finala este lasata la latitudinea utilizatorului

Toolbox ul se acceseaza din linia de comanda cu gatool.

Optiunile algoritmilor genetici:


1. Population a) Population type: specifica tipul datelor de intrare ale functiei obiectiv. Poate fi: Double vector Bit string Custom

Daca este aleasa optiunea Custom, trebuie scrise functii pentru creare (creation), mutatie (mutation) si crossover care functioneaza cu tipul populatiei alese. Aceste functii trebuie apoi specificate in campurile Creation function, Mutation function si Crossover function. b) Population size: specifica cati indivizi sunt in fiecare generatie. Daca aceasta optiune este setata ca fiind un vector cu o lungime mai mare decat 1, atunci algoritmul creeaza subpopulatii multiple. Fiecare intrare a vectorului specifica dimensiunea unei subpopulatii. c) Creation function: specifica functia care creeaza populatia initiala. Avem optiunile: Use constraint dependent default: aceasta alege din optiunile:

o Uniform, daca nu exista contrangeri o Feasible population, in caz contrar Uniform: creeaza o populatie initiala aleatoare cu o distributie uniforma Feasible population: creeaza o populatie initiala aleatoare care satisface campurile:

Bounds si Linear constraints.

Custom: permite scrierea propriei Creation function care trebuie sa genereze date de

tipul celor specificate in optiunea Population type. d) Initial population: permite specificarea unei populatii initiale pentru algoritmul genetic. Daca nu se specifica o populatie initiala, algoritmul creeaza una folosind Creation function. Se poate specifica un numar de indivizi mai mic decat Population size; in acest caz Creation function va crea restul de indivizi. e) Initial scores: permite specificarea scorurilor pentru populatia initiala. Daca nu se specifica valoarea acestui parametru, algoritmul va evalua scorurile prin intermediul functiei obiectiv. f) Initial range: specifica limitele inferioare si superioare pentru intrarile vectorilor din populatia initiala. Se poate specifica Initial Range ca o matrice cu 2 randuri si Initial Length ca si coloane. Primul rand contine limitele inferioare pentru intrarile vectorilor din populatia initiala , in timp ce al doilea rand contine limitele superioare. Daca se specifica Initial Range ca o matrice de 2 pe 1, cei doi scalari se extind la vectori constanti ai lungimii Initial Length. 2. Fitness scaling Functia de scalare converteste scorurile neprelucrate ale aptitudinilor returnate de functia obiectiv in valori dintr-o gama care este potrivita pentru functia de selectie. Scaling function: specifica functia care realizeaza scalarea. Se poate alege dintre urmatoarele functii: Rank: scaleaza scorurile neprelucrate bazandu-se mai mult pe rangul fiecarui individ

decat pe scorurile sale. Rangul unui individ reprezinta pozitia sa in scorurile sortate. Rangul individului cu cele mai bune aptitudini (fitness) va fi 1, urmatorul va fi 2 si asa mai departe. Proportional: face sansa proportionala cu scorurile neprelucrate ale aptitudinilor.

Aceasta strategie are un punct slab atunci cand scorurile neprelucrate nu sunt intr-o gama buna. Top: scaleaza indivizii cu valorile aptitudinilor cele mai mari in mod egal. Daca se

selecteaza aceasta optiune se poate specifica Quantity - numarul indivizilor cu cele mai mari aptitudini care produc urmasi. Quantity trebuie sa fie un intreg cuprins intre 1 si Population Size sau o fractie intre 0 si 1, specificand o fractie din dimensiunea populatiei. Fiecare din acesti

indivizi au o probabilitate egala de reproducere. Restul au o probabilitatea egala cu 0 de a se reproduce. Sansa (expectation) este de forma: [ 0 1/n 1/n 0 0 1/n 0 0 1/n ..]. Shift linear: scaleaza scorurile neprelucrate astfel incat sansa individului cu cele mai

mari aptitudini este egala cu o constanta, care poate fi specificata ca Maximum Survival Rate, multiplicata cu scorul mediu. Custom: permite scrierea propriei functii de scalare.

3. Selection Functia de selectie alege parinti pentru urmatoarea generatie in functie de valorile scalate provenite de la Fitness scaling function. Se poate specifica functia care realizeaza selectia in campul Selection function. Se poate alege din urmatoarele functii: Stochastic uniform: asterne o linie in care fiecare parinte corespunde unei sectiuni a

liniei, cu o lungime proportionala cu sansa acestuia. Algoritmul se misca de-a lungul liniei cu pasi egali, cate un pas pentru fiecare parinte. La fiecare pas, algoritmul aloca un parinte din sectiunea in care se afla. Primul pas este un numar aleator uniform mai mic decat lungimea pasului. Remainder: aloca parinti in mod determinist din partea intreaga a valorii scalate a

fiecarui individ si apoi utilizeaza Roulette selection pe partea fractionara. Uniform: selecteaza parinti in mod aleator dintr-o distributie uniforma utilizand sansele

si numarul de parinti. Aceasta rezulta intr-o cautare nedirectionata. Acest mod de selectie nu este un mod util. Shift linear: scaleaza scorurile neprelucrate astfel incat sansa individului cu cele mai

bune aptitudini este egala cu o constanta, care poate fi specificata ca fiind Maximum survival rate, multiplicata cu scorul mediu. Roulette: simuleaza o ruleta cu aria fiecarui segment proportionala cu sansa acestuia.

Algoritmul utilizeaza apoi unu numar aleator pentru a selecta una din sectiuni, cu o probabilitate egala cu aria sa. Tournament: selecteaza fiecare parinte prin alegerea indivizilor in mod aleator si apoi

alege cel mai bun individ din acel set pentru a fi parinte. Numarul indivizilor poate fi specificat in Tournament size. Custom: permite scrierea propriei functii de selectie.

4. Reproduction Aceasta optiune determina modul in care algoritmul genetic creeaza copii la fiecare generatie. a) Elite count: specifica numarul de indivizi care sunt garantati sa supravietuiasca in generatia urmatoare. Acest parametru trebuie setat ca fiind un numar intreg pozitiv mai mic sau egal cu Population size. b) Crossover fraction: specifica partea generatiei urmatoare pe care o produce incrucisarea. Restul indivizilor din generatia umatoare sunt produsi de mutatie. Acest parametru trebuie setat ca fiind o fractie cuprinsa intre 0 si 1. 5. Mutation Functiile de mutatie produc schimbari aleatoare minore in indivizii populatiei, lucru care ofera o diversitate genetica si permite algoritmului genetic sa caute intr-un spatiu mai larg. Avem la dispozitie urmatoarele optiuni in campul Mutation function: Use constraint dependent default: aceasta alege una din urmatoarele optiuni

o Gaussian: daca nu exista constrangeri o Adaptive feasible, in caz contrar Gaussian: adauga un numar aleator la fiecare intrare a vectorului a unui individ. Acest

numar aleator este luat dintr-o distributie Gaussiana centrata in zero. Deviatia standard a acestei distributii poate fi controlata prin doi parametrii. Parametrul Scale setermina deviatia standard a primei generatii. Parametrul Shrink controleaza modul in care deviatia standard se micsoreaza cu fiecare generatie. Daca parametrul Shrink este 0, deviatia standard este constanta. Daca parametrul Shrink este 1, deviatia standard tinde la 0 in mod liniar pe masura ce se ajunge la ultima generatie. Uniform: este un process cu doua etape. In prima etapa, algoritmul selecteaza o parte a

intrarilor vectorului unui individ pentru mutatie, fiecare intrare avand aceeasi probabilitate ca si rata mutatiei. In a doua etapa, algoritmul inlocuieste fiecare intrare selectata cu un numar aleator selectat in mod uniform din sfera acelei intrari.

Adaptive feasible: genereaza in mod aleator directii care sunt adaptive cu privire la

ultima generatie care a fost de success sau nu. O lungime de pas este aleasa de-a lungul fiecarei directii astfel incat constrangerile liniare si limitele sunt satisfacute. Custom: permite crearea propriei functii de mutatie care sa satisfaca orice constrangeri

specificate. 6. Crossver Incrucisarea combina doi indivizi sau parinti pentru a forma un nou individ sau un copil pentru noua generatie. Avem la dispozitie urmatoarele optiuni in campul Crossover function: Scattered: creeaza un vector binar aleator (random crossover vector). Apoi selecteaza

genele unde vectorul este 1 pentru primul parinte si genele unde vectorul este 0 pentru al doilea parinte, combinand cele doua gene pentru a forma un copil. De exemplu: p1=[a b c d e f g h] p2=[1 2 3 4 5 6 7 8] random crossover vector=[1 1 0 0 1 0 0 0] copil=[a b 3 4 e 6 7 8] Single point: alege in mod aleator un numar intreg n cuprins intre 1 si Number of

Variables si selecteaza intrarile vectorului de pe pozitiile mai mici sau egale cu n de la primul parinte, si cele mai mari ca n de la al doilea parinte. Apoi concateneaza aceste intrari formand un copil. De exemplu: p1=[a b c d e f g h] p1=[1 2 3 4 5 6 7 8] n=3 copil=[a b c 4 5 6 7 8] Two point: selecteaza in mod aleator doua numere intregi m si n cuprinse intre 1 si

Number of variables. Algoritmul selecteaza gene de pe pozitiile mai mici sau egale cu m de la primul parinte, selecteaza gene de pe pozitiile aflate intre m+1 si n de la al doilea parinte, si

selecteaza gene de pe pozitiile mai mari ca n de la primul parinte. Algoritmul concateneaza apoi aceste gene pentru a forma una singura. De exemplu: p1=[a b c d e f g h] p2=[1 2 3 4 5 6 7 8] m=3, n=6 copil=[a b c 4 5 6 g h] Intermediate: creeaza copii printr-o medie ponderata aleatoare a copiilor. Incrucisarea

de acest tip este controlata printr-un singur parametru, si anume Ratio. Child1= parent1+..rand*Ratio*(parent2-parent1) Heuristic: creeaza copii care se gasesc aleator pe linia care ii contine pe cei doi parinti, la

o distant mai mica fata de parintele cu cele mai bune aptitudini si la o distant mai mare fata de cel cu aptitudinile cele mai putin bune. Arithmetic: creeaza copii care sunt o medie aritmetica aleatoare a doi parinti, situati

uniform pe linia dintre cei doi parinti. date. 7. Migration Migratia reprezinta miscarea indivizilor intre subpopulatii, pe care algoritmul le creeaza daca setam Population size ca fiind un vector mai mare decat 1. Din timp in timp, cei mai buni indivizi dintr-o subpopulatie ii inlocuiesc pe cei mai rai dintr-o alta subpopulatie. Modul in care are loc migratia poate fi controlat prin 3 parametrii: a) Direction: specifica directia migratiei Daca se seteaza pe Forward, migratia are loc catre ultima subpopulatie, adica Custom: permite crearea propriei functii de incrucisare care satisface orice limite

subpopulatia n migreaza inspre subpopulatia n+1 Daca se seteaza pe Both, subpopulatia n migreaza inspre subpopulatiile n-1 si n+1

In final, ultima subpopulatie va migra inspre prima, iar prima subpopulatie va migra inspre ultima. Pentru a preveni acest fenomen, trebuie specificata o subpopulatie ca fiind 0.

b) Fraction: controleaza numarul de indivizi care se deplaseaza intre subpopulatii. Acest parametru reprezinta fractiunea cele mai mici populatii dintre cele 2 care se deplaseaza. Daca dintr-o subpopulatie de 50 de indivizi, migreaza indivizi inspre o subpopulatie de 100 si Fraction este 0.1, atunci 5 indivizi migreaza (0.1 *50). Indivizii care migreaza dintr-o subpopulatie in alta sunt copiati, nu mutati din populatia sursa. c) Interval: controleaza numarul de generatii care trec intre migratii. De exemplu, daca se seteaza ca fiind 20, atunci migratia intre subpopulatii are loc la fiecare 20 de generatii. 8. Algorithm settings a) Initial penalty: specifica o valoare initiala care va fi utilizata de algoritm. Acest parametru trebuie sa fie mai mare sau egal cu 1. b) Penalty factor: creste parametrul penalty cand problema nu este rezolvata cu acurateatea ceruta si limitele nu sunt satisfacute. Acest parametru trebuie sa fie mai mare decat 1. 9. Hybrid function Aceasta optiune permite specificarea unei alte functii de minimizare care se executa dup ace algoritmul genetic se opreste. Avem optiunile: None fminsearch (doar fara constrangeri) patternsearch (cu sau fara constrangeri) fminunc ( doar fara constrangeri) fmincon (doar cu constrangeri)

Se pot specifica optiuni non-default pentru functia hybrid utilizand optimset (psoptimset pentru patternsearch). 10. Stopping criteria Aceasta optiune determina care sunt criteriile care opresc algoritmul a) Generations: specifica numarul maxim de iteratii pe care algoritmul genetic le executa. b) Time limit: specifica timpul maxim in secunde pe durata caruia algoritmul genetic functioneaza, inainte de a se opri.

c) Fitness limit: daca cea mai buna valoare a fitness-ului este mai mica sau egala cu valoarea Fitness limit, atunci algoritmul se opreste. d) Stall generations: daca schimbarea produsa de media ponderata in valoarea functiei obiectiv pe durata parametrului Stall generations este mai mica decat Function tolerance, atunci algoritmul se opreste. e) Stall time limit: daca nu are loc nici o imbunatatire in valoarea best fitness pentru un interval de timp in secunde, specificat in Stall time limit, atunci algortimul se opreste. f) Function tolerance: daca schimbarile cumulative in valoarea functiei obiectiv de-a lungul unui numar de generatii specificat de Stall generations sunt mai mici decat valoarea Function tolerance, atunci algoritmul se opreste. g) Nonlinear constraint tolerance: specifica tolerant limita pentru numarul maxim de violari ale constrangerilor neliniare. 11. Plot functions Aceasta optiune ne permite sa reprezentam grafic diferite aspect ale algoritmului genetic in timpul executiei sale. a) Plot interval: specifica numarul de generatii intre update urile successive ale graficului. b) Best fitness: reprezinta grafic cea mai buna valoare a functiei obiectiv din fiecare generatie versus numarul iteratiei. c) Best individual: reprezinta grafic intrarile vectorului individului cu cea mai buna valoare a functiei obiectiv din fiecare generatie. d) Distance: reprezinta grafic la fiecare generatie valoare medie a distantei dintre indivizi. e) Expectation: reprezinta grafic numarul presupus al copiilor versus scorurile neprelucrate, la fiecare generatie. f) Genealogy: reprezinta grafic genealogia indivizilor. Liniile de la o generatie la alta au culorile dupa cum urmeaza: Liniile rosii indica copii care au suferit mutatii

Liniiile albastre indica copii care au rezultat in urma incrucisarii Liniile negre indica indivizi elitist

g) Range: reprezinta grafic valoarea minima, maxima si medie a functiei obiectiv la fiecare Generatie. h) Score diversity: afiseaza o histograma a scorurilor pentru fiecare generatie. i) Scores: reprezinta grafic scorurile indivizilor pentru fiecare generatie. j) Selection: afiseaza o histograma a parintilor. Aceasta arata care parinti contribuie la care generatie. k) Stopping: afiseaza grafic criteriile de oprire. l) Max constraint: afiseaza grafic violarea maxima a constrangerilor neliniare.

Audiograma:

Audiograma este o ilustrare grafica a rezultatelor testului auditiv. Componentele principale illustrate sunt: frecventa (tonalitatea) intensitatea

Audiologul va determina care este intensitatea minima la care pacientul poate auzi sunetel de diverse frecvente. Exista doua tipuri de audiograme: audiograma tonala: reprezinta o analiza cantitativa a auditiei audiograma vocala: reprezinta o analiza calitativa a auzului (masoara nivelul de inteligibilitatea a vorbirii)

Audiograma se efectueaza cu pacientul in pozitie sezanda, caruia se fixeaza casti speciale, in care examinatorul prezinta toate sunetele pe care le aude urechea umana, la diferite intensitati, incercand sa se determine intensitatile minime pe care persoana examinata le poate percepe.

Sunetele sunt directionate cand la o ureche, cand la cealalta. In momentul in care pacientul aude un sunet, trebuie sa apese pe un buton si in acest fel se inregistreaza pragurile la care sunt percepute diferite sunete. Pe baza reactiilor pacientului, se traseaza o harta a capacitatii de auz. Ulterior, audiograma se foloseste pentru realiarea protezei auditive.

Exemplu de audiograma: Audiograma unui auz normal

Audiograma unei pierderi auditive usoare

Audiograma unei pierderi auditive severe

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