Referat EvA2
Transcript of 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
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.
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
î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
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
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
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 .
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.
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)
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
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.
Î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).
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
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:
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.
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.
Bibliografie
http://www.ra.cs.uni-tuebingen.de/software/EvA2
EvA2 Short Documentation - Marcel Kronfeld
http://inf.ucv.ro/~revista/images/genetici.pdf