Referat EvA2

26
Universitatea de Vest Facultatea de Matematica si Informatica Master Inteligenta Artificiala si Calcul Distribuit EvA2 Pachet java pentru algoritmi evolutivi Coordonator : Conf. Dr. Daniela Zaharie Student:

Transcript of Referat EvA2

Page 1: Referat EvA2

Universitatea de VestFacultatea de Matematica si Informatica

Master Inteligenta Artificiala si Calcul Distribuit

EvA2

Pachet java pentru algoritmi evolutivi

Coordonator:

Conf. Dr. Daniela Zaharie

Student:

Andrusco Loredana Master IACD Anul II

Page 2: Referat EvA2

Rezumat:

Pachetul EvA2 etse folosit in multe domenii precum in constructia masinilor pentru optimizarea motoarelor cu combustie, in cercetare biologica pentru simularea proceselor intracelulare, sau in chimia computationala.

EvA2 este un pachet ce vine in ajutorul utilizatorilor , punand la dispozitie implementari ale mai multor algoritmi si parametric pentru o mai buna optimizare a solutiilor problemelor.

Am prezentat utilitatea acestui pachet pentru rezolvarea problemei rucsacului folosind algoritmi genetici. Rezultatulele problemei fiind vizibile si in mod graphic.

Page 3: Referat EvA2

I. Introducere. Definirea noţiunilor

Rezolvarea problemelor folosind algoritmi evolutivi este o practică pe scară

largă. În ultimii ani ,au fost dezvoltate un număr mare de softuri având la bază

calculul evolutiv precum: algoritmii genetici (GA-genetic algorithms- Chuang

2000; Jin et al. 2005), memetic algorithms(Krasnogor and Smith 2000),

programarea genetică(genetic programming –GP-Punch and Zongker 1998,2005),

algoritmi de calcul evolutiv distribuiţi (distributed EAs -Tan et al. 2003) şi alte

tool-uri generale care pot fi folosite atât pentru dezvoltarea de algoritmi de calcul

evolutiv cât şi pentru rezolvarea diferitelor probleme cum sunt: ECJ(Luke 2006),

Evolvica(Rummler 2006), Opel Beagle(Gagné and Parizeau 2006) şi EO(Keijzer et

al. 2001).

Calculul evolutiv este folosit in principal in rezolvarea problemelor bazate

pe cautarea solutiei intr-un spatiu mare de solutii potentiale. Sursa de inspiratie o

reprezinta principiile evolutionismului darwinist. Principiul fundamental este de a

dezvolta sisteme complexe pornind de la implementarea unor reguli simple.

Este folosit în principal pentru rezolvarea problemelor bazate pe căutarea

soluţiei într-un spaţiu mare de soluţii potenţiale.

Sursa de inspiraţie este reprezentată de teoria evoluţiei speciilor biologice,

populaţiile evoluează prin apariţia de noi caracteristici ale indivizilor în timpul

Page 4: Referat EvA2

încrucişării şi ca efect al mutaţiilor aleatoare. În procesul de evoluţie supravieţuiesc

indivizii care se adaptează cel mai bine mediului.

Noţiuni de bază în calculul evolutiv:

Cromozomul reprezintă mulţimea de gene asociate unui individ (soluţie potenţială

a problemei).

Populaţia este o mulţime de indivizi (soluţii candidat).

Genotipul este ansamblul tuturor genelor unui individ sau populaţii.

Fenotip este ansamblul tuturor trăsăturilor determinate de către un genotip.

Fitness reprezintă măsura a calităţii unui individ (în raport cu problema de

rezolvat.

Generaţia este etapa în evoluţia unei populaţii .

Reproducerea reprezintă generarea de urmaşi pornind de la populaţia curentă prin

incrucişare şi mutaţie.

Algoritmii genetici

Populatia este reprezentata de stari din spatiul problemei care reprezinta

solutii potentiale. De regula elementele populatiei sunt codificate in forma binara.

Operatorul de incrucisare este cel principal, cel de mutatie are un rol secundar.

Sunt folositi in special in rezolvarea problemelor de optimizare combinatoriala.

Algoritmi genetici standard au o codificare binara, lungimea cromozomului fixa,

iar marimea populatiei la fel fixa.

Algoritmi genetici hibrizi prezinta codificare reala, lungimea cromozomului

variabila, iar marimea populatiei variabila

Algoritmii genetici sunt tehnici adaptive de căutare euristică, bazate pe

principiile geneticii și ale selecției naturale, enunțate de Darwin ("supraviețuiește

Page 5: Referat EvA2

cel care e cel mai bine adaptat"). Mecanismul este similar procesului biologic al

evoluției. Acest proces posedă o trăsătură prin care numai speciile care se

adaptează mai bine la mediu sunt capabile să supraviețuiască și să evolueze peste

generații, în timp ce acelea mai puțin adaptate nu reușesc să supraviețuiască și cu

timpul dispar, ca urmare a selecției naturale. Probabilitatea ca specia să

supraviețuiască și să evolueze peste generații devine cu atât mai mare cu cât gradul

de adaptare crește, ceea ce în termeni de optimizare înseamnă că soluția se apropie

de optim.

Etapele care trebuie parcurse in realizarea unui algoritm genetic:

La inceput trebuie stabilit:

• Modul de configurare. Se specifica modul in care fiecarei configuratii din

spatiul de cautari se asociaza un cromozom.

• Functia de adecvare(se calculează o valoare fitness). Se construieste functia

care exprima gradul de adecvare la mediu. Indivizii care se adaptează cât mai bine

prolemei vor avea un fitness mai bun (calitate mai mare).

• Mecanismul de selectie a parintilor si supravietuitorilor.

• Mecanismul de incrucisare a parintilor pentru a genera urmasi.

• Mecanismul de mutatie care asigura perturbarea elementelor.

• Supravietuirea determina in ce masura cromozomii unei generatii supravietuesc

in urmatoarea.

• Criteriul de oprire. Cand nu se cunoaste un criteriu se opteaza pentru un numar

maxim de iteratii. Se pot folosi informatii despre populatie (ex: gradul de

diversitate).

Modul de configurare

Page 6: Referat EvA2

In algoritmii genetici cromozomii sunt reprezentati prin structuri liniare cu

numar fix(tablouri) sau cu numar variabil (liste inlantuite).

Reguli de codificare:

1. Codificare binara (cromozomiisuntvectoricu valori{0,1})

2. Codificare reala (vectoricu elementereale).

Decodificarea este necesara pentru (1), pregateste evaluarea configurarii.

Functia de adecvare

In procesul de evolutie naturala se urmareste maximizarea gradului de

adecvare a indivizilor la mediu. Pentru a ne folosi de analogia dintre procese de

cautare si cele de evolutie este util sa reformulam problemele de optimizare ca

probleme de maximizare.

Selectie

Are ca scop determinarea populatiei intermediare ce contine parintii care vor

fi supusi operatorilor genetici de incrucisare si mutatie si determina elementele ce

vor face parte din generatia urmatoare. Este legata de functia de adecvare. Nu este

obligatoriu ca atat parintiicat si supravietuitorii sa fie determinati prin selectie,

fiind posibil ca aceasta sa fie folosita doar intr-o singura etapa.

Incrucisarea

Permite combinarea informatiilor provenite de la doi sau mai multi parinti

pentru generarea unuia sau mai multor urmasi. Incrucisarea in cazul algoritmilor

standard parintele se inlocuieste cu copilul. Incrucisarea in cazul algoritmilor

hibrizi se lupta pentru supravietuire.

Mutatia

Page 7: Referat EvA2

Asigura alterarea valorii unor gene pentru a evita situatiile in care o a

anumita gena nu apare in populatie fiindca nu a fost generata de la inceput. In acest

fel se asigura diversitatea populatiei. In cazul codificarii binare cea mai simpla si

frecventa metoda este alegerea aleatoare a unui cromozom in cadrul caruia se

selecteaza o gena (daca este 0 devine 1, daca este 1 devine 0).

Supravietuirea

In general e formata din indivizi care nu au intrat in reproducere si populatia

intermediara rezulta in urma reproducerii. Se pot selecta un numar din cei mai

buni indivizi care sa apara in populatia urmatoare, apoi intra ei in reproducere iar

restul de completat e formata din populatia rezultata in urma reproduceri .

Page 8: Referat EvA2

II. Prezentare EvA2

EvA2 este un framework de optimizare euristica cu accentul pus pe

algoritmii evolutivi, dezvoltat în Java. Aceasta este o versiune revizuita a

pachetului de optimizare JavaEvA, bazat la randul sau pe fostul pachet EvA.

Integreaza mai multe metode derivate de optimizare, de preferinţă bazate pe o

populaţie de soluţii, cum ar fi strategii evolutive, algoritmi genetici, evoluţie

diferenţială, optimizare pe mulţimi de particule, precum şi tehnici clasice, cum ar fi

Hill Climbing sau Simulated Annealing.

EvA2 are tinta doua grupuri de utilizatori. In primul rand, utilizatorul

obişnuit, care nu are cunostinte avansate despre teoria algoritmilor evolutivi, dar

care vrea să utilizeze aceasta tehnologie pentru a rezolva o anumita problema. In al

doilea rând, utilizatorul experimentat care vrea să investigheze performanţa a

diferiţi algoritmi de optimizare sau vrea sa compare rezultatele a diferiţi operatori

evolutivi specializaţi. EvA2 este, de asemenea, folosit ca material educativ,

reprezentând o platformă de dezvoltare pentru proiectele de cercetare universitare,

dar şi ca aplicaţie la numeroase probleme de optimizare în curs de cercetare

folosite în industrie.

Page 9: Referat EvA2

EvA2 :

O interfaţă grafică uşor de utilizat cu acces la parametrii de optimizare

Metode derivate de optimizare selecteaza metoda principala de optimizare

pentru o optimizare rapida se pot folosi si valorile standard. Se pot alege

intre metodele clasice evolutive:

o Tehnici clasice precum Hill Climbing (HS) sau Simulated

Annealing (SA)

o Căutare Monte-Carlo (Monte-Carlo Search - MCS)

o Strategii Evolutive (Evolution Strategies - ES)

o Algoritmi Genetici (Genetic Algorithms - GA)

o Căutare Adaptiva CHC (Adaptive Search)

o Evoluţie Diferenţială (Differential Evolution - DE)

Page 10: Referat EvA2

o Optimizare pe Mulţimi de Particule (Particle Swarm Optimization -

PSO)

o Învăţare Incrementala bazată pe Populaţii (Population-based

Incremental Learning - PBIL)

o Strategii Evolutive Model-Assisted (MAES)

o Clusterizare

o Evoluţie bazată pe Gramatici (Grammatical Evolution - GE)

o ... şi altele

Post processing parameters. In unele cazuri procesarea post a operatiilor

este dezirabila. Spre exemplu daca vrem sa imbunatatim singura solutie

gasita prin pasi mici de hill climbing.

Problema. Se specifica instanta functiei de optimizat. Se poate selecta din

benchmark, probleme aduse cu pachete sau importate de utilizator.

Random seed. Este esential pentru rezultatele unei rulari. Pentru rezultate

replicate se seteaza valoarea >0. Pentru a primi rezultate relevante, se

testeaza de cateva ori cu val 0.

Termination criteria. Seteaza criteriul pentru a opri rularea optimizarii. Ex:

opreste dupa n evaluari fitness.

Parametrii de statistica.Rata de convergenta: conditia este ca valoarea tinta

este 0, se presupune o convergenta in cazul in care o valoare mai mica decat

acest prag este atinsa. Number of multi-runs: se seteaza pentru a rula

rezolvarea de mai multe ori.

Optimizare multi-obiect (MOEA) pentru probleme cu cerinţe multiple

Optimizare multi-modală pentru selectare de soluţii multiple

Interfeţe pentru optimizări externe în MATLAB sau alte programe create de

utilizator

Page 11: Referat EvA2

Arhitectura client-server bazata pe JAVA Remote Method Invocation

(RMI), cu optimizare distribuită

O interfaţă API care se poate dezvolta şi care permite integrarea de noi clase

în interfaţa grafica.

Exista câteva avantaje ale implementării în JAVA a pachetului de algoritmi

evolutivi EvA2. În primul rând, utilizarea pachetului Java duce la portabilitatea pe

orice sistem de operare care suporta Java Virtual Machine, precum Microsoft

Windows (2000, XP, Vista), Linux, AIX sau Solaris. În al doilea rând, Java

permite integrarea uşoară a serviciilor web, precum aplicaţia Java WebStart de pe

site-ul EvA2. De asemenea, utilizarea tehnologiilor remote din Java permite

distribuţia foarte uşoară a aplicaţiilor într-o reţea sau pe Internet. De exemplu,

EvA2 utilizează o arhitectura client-server care permite pornirea unui server care

rulează algoritmi de optimizare pe un calculator, iar de pe alt calculator se poate

avea acces la informaţiile obţinute de pe server. Aceasta tehnologie poate fi

utilizata şi pentru paralelizarea algoritmilor evolutivi, atât la nivel de populaţii

multiple, cat şi pentru evaluarea a multiple funcţii ţintă. Acest proces este facil,

datorita abordării bazată pe optimizare de populaţii din EvA2, cât şi a capacităţii

multi-threading din Java.

Pachetul EvA2 a fost dezvoltat prima dată în cadrul proiectului “Cristalizare

Automata” pentru optimizare a parametrilor de producţie pentru procesul de

cristalizare automata a catalizatorilor cristalini. Procesul de producţie a fost

optimizat în funcţie de nivelul de productivitate şi de proprietăţile catalitice ale

cristalelor produse. Din cauza faptului ca evaluarea funcţiei ţintă necesita

experimente reale, de lunga durată şi foarte scumpe, strategia Model-Assisted

MAES a fost dezvoltată în EvA2 pentru a elimina problema de optimizare

realizabila numai prin experimente reale.

Page 12: Referat EvA2

În prezent, EvA2 este folosita ca material educativ pentru prelegeri universitare

din domeniul algoritmilor genetici şi strategiilor evolutive pentru a ilustra

comportamentul general al acestor abordări şi efectul mutaţiilor şi încrucişărilor în

exemple concrete din lumea reala. De asemenea, pachetul EvA2 este folosit şi în

mod practic pentru a rezolva o problema de optimizare, aceasta fiind implementata

în EvA2 şi rezolvata cu ajutorul funcţiilor existente din cadrul pachetului.

III. Problema rucsacului

Un excursionist se pregăteşte pentru a face o excursie; pregăteşte tot ce are

nevoie şi constată că lucrurile nu încap toate în rucsac (ca volum sau cantitate).

Cum obiectele nu sunt toate de aceeaşi necesitate şi evident de volum diferit, alege,

pe rând, câte un obiect de necesitate maximă şi de volum minim şi îl pune în

rucsac. Procedeul se va relua până la umplerea rucsacului.

Se consideră un set de n obiecte caracterizate prin greutățile ( w1 ,... , wn) și prin

valorile ( v1 , ... , vn ) . Se pune problema determinării unui subset de obiecte pentru a fi

introduse într-un rucsac de capacitate C astfel încât valoarea obiectelor selectate să

fie maximă. O soluție a acestei probleme poate fi codificată ca un şir de n valori

binare în felul următor: si= 1 dacă obiectul i este selectat, respectiv si= 0 dacă

obiectul nu este selectat.

In setarea parametrilor intervin următoarele restricţii:

- greutatea maximă permisă este de 420 grame

- există 10 tipuri de obiecte disponibile

- există nu mai mult de 10 obiecte din fiecare tip.

Pentru 7 obiecte posibile de introdus în rucsac, o genă reprezintă un bit (x i),

în timp ce cromozomul este o soluție potențială (de exemplu 0110101 înseamnă că

articolele 2, 3, 5 si 7 vor fi incluse în sac).

Page 13: Referat EvA2

Funcția de adaptare/fitness indică cât de bună este o soluție (cât este de

adaptat un cromozom).

De exemplu, presupunem că la un moment dat avem combinația:

I 1 2 3 4 5 6 7

w i 170 35 40 15 5 45 10

v i 58 15 5 30 10 10 13

Atunci, pentru cromozomul: 0110101, constrângerea este: w = 35 + 40 + 5 + 10 =

90 ≤ C = 100(ok), iar funcția de adaptare: v = 15 + 5 + 10 +13= 43.

Exemplul urmarit in aplicatia EvA2 este un exemplu cu capacitatea C a

rucsacului este de 100 de obiecte, de aceea vectorul binar rezultat va contine 100

de valori (0 sau 1).

Pentru a rezolva problema rucsacului cu Eva2 trebuie setati anumiti

parametri. Interfata grafica este foarte usor de folosit, iar implementarea in Java

facuta de cei de la Universitatea din Tübingen, WSI ofera o gama larga de

probleme si algoritmi care pot fi selectati. Pentru rezolvarea problemei rucsacului

am ales ca si optimizer Algoritmul Genetic, cu posibilitatea de selectie a metodei

de alegere a parintilor-eu am ales metoda ruletei , in care sansa alegerii unui

individ depinde de Selectia Proportionala si posibilitatea de selectie a partenerului

– am ales metoda random, iar populatia am selectat-o sa fie 50.

Am luat in considerare cazul in care nu as dori o optimizare prin pasi de Hill

Climbing a singurei solutii rezultate si de aceea am selectat PostProcessing off.

EvA2 are implementat o serie de probleme cum ar fi probleme de aflare a

maximului sau minimului unor functii ca Weierstrass-Mandelbrot Fractal

Function, Griewank Function, Numerous optima in linear order which may be

Page 14: Referat EvA2

rotated, Schwefel's Function, si multe altele. Se alege problema Knapsack.

Parametrii ce pot fi alesi sunt :

- EAIndividual: GA binary individual cu operatorul de crossover in care se

poate alege numarul de puncte de crossover peste m indivizi, sau se poate

selecta un alt operator de crossover.

- Probabilitatea crossoverului: am selectat numarul 1.0.

- Operatorul de mutatie este GA n-Bit mutation cu posibilitatea de selectie a

altor operatori. Am ales 1 ca numar de mutatii, astfel se inverseaza un bit al

genotipului GA.

- Probabilitatea mutatiei : am ales numarul 0.1

- Generation Terminator. Numarul de generari este setat pe 100, astfel

cautarea se va termina dupa 100 de generari.

Dupa setarea tuturor parametrilor care ne intereseaza apasam pe START si

automat se genereaza o fereastra in interiorul careia se afla graficul cu pozibilitatea

de a-l salva in format JPEG. Se pot genera mai multe grafice pe aceeasi fereastra

pentru compararea lor. Revenind la Interfata EvA2 la butonul ShowSolution, se

poate vizualiza solutia ca in exemplul de mai jos:

Page 15: Referat EvA2

In acelasi timp cu generarea graficului apare o fereastra cu arhiva tuturor

celor 100 de generari si valorile care se schimba pe parcurs.

Cele 100 de valori implementate in cod sunt:

static final int[][] items = {{334,-328},{303,-291}, {228,-232}, {229,-226},

{346,-347}, {256,-257}, {243,-243}, {334,-328}, {382,-377}, {236,-234},

{301,-295}, {215,-209}, {298,-305}, {313,-313}, {219,-212}, {215,-214},

{250,-244}, {380,-373}, {319,-317}, {392,-396}, {304,-304}, {249,-252},

{337,-331},{368,-365}, {356,-354}, {267,-260}, {258,-251}, {248,-252},

{391,-391}, {277,-273}, {293,-297}, {213,-214}, {223,-218}, {353,-359},

{337,-338}, {389,-396}, {251,-256}, {344,-340}, {243,-236}, {368,-367},

{380,-378}, {274,-269}, {289,-291}, {346,-353},{271,-268}, { 286,-281},

{294,-292}, {279,-282}, {226,-221}, {344,-337}, {353,-352},

{266,-265}, {391,-393}, {202,-199}, {224,-223}, {333,-330},

{369,-368}, {301,-308}, {241,-237},{240,-233},{236,-238},{217,-212},

{308,-308}, {324,-320},{218,-220},{356,-358},{236,-234}, {310,-299},

{382,-382}, {350,-357}, {377,-382}, {359,-351}, {322,-321}, {351,-347},

{315,-309}, {389,-382}, {212,-213}, {212,-209}, {352,-352}, {217,-215},

{369,-366},{398,-399},{320,-323},{343,-353}, {329,-322}, {338,-332}, {289,-

294}, {341,-339},{201,-194}, {234,-235}, {392,-399}, {344,-347},

{371,-380}, {286,-288},{210,-219},{220,-218}, {253,-247}, {392,-390},

{319,-324},{392,-386}};

Cu cat scade fitness-ul, numarul de rulari ale functiei (calls function) creste, iar

solutia va fi gasita intr-o generatie intarziata.

Page 16: Referat EvA2

Concluzii:

Se pot observa cu uşurinţă principalele caracteristici ale EvA2, faptul că este uşor de extins, implementând astfel o mulţime de paradigme ale calcului evolutiv, venind in ajutorul proiectelor de cercetare din universitati, si in ajutorul studentilor, ca material educative.

Am descris un exemplu concret de folosire a pachetului cu ajutorul problemei rucsacului.Eva2 este actualizat şi îmbunătăţit încontinuu, o dovada a acestui lucru este faptul ca initial s-a plecat de la JAVAEvA.

Page 17: Referat EvA2

Bibliografie

http://www.ra.cs.uni-tuebingen.de/software/EvA2

EvA2 Short Documentation - Marcel Kronfeld

http://inf.ucv.ro/~revista/images/genetici.pdf