Sunteți pe pagina 1din 14

Universitate de Vest din Timioara, Facultatea de Matematic i Informatic Master : Informatic Aplicat n iinte, Tehnologie i Economie

GPE - Genetic Programming Engine

Masterand: Bdu Sorina, Anul II

Coordonator: Prof. Dr. Daniela Zaharie

Calcul neuronal i evolutiv

Bdu Sorina, IASTE, Anul II

Abstract

n lucrarea de fa am analizat unul dintre instrumentele folosite n programarea genetic, i anume Genetic Programming Engine (GPE). Dup introducerea n programarea genetic relizat prin enunarea unor definiii i a ctorva elemente definitorii, am continuat prin a detalia funcionarea motorului de programare genetic n substraturile sale, dar i prin a descrie utilizarea cu ajutorul intefeei grafice.

Calcul neuronal i evolutiv

Bdu Sorina, IASTE, Anul II

Introducere

I.

Programare genetic

Definiia 1. Programarea genetic este o metod automatizat pentru crearea unui program pornind de la declaraia problemei de nivel nalt. Programarea genetic reuete s fac acest lucru prin reproducerea genetic a unei populaii de programe folosind principiile de selecie natural i operaiunile inspirate din biologie ale lui Darwin. Definiia 2. Programarea genetic este tehnic algoritmic evolutiv care utilizeaz programe de pentru a rezolva problemele. Datorit acestei utilizri de programe, programarea genetic este foarte flexibil i poate fi aplicat la aproape orice problem. Cu toate acestea, ideile din spatele programare genetici sunt relativ simple. n programarea genetic sunt urmrii urmtorii pai: Un numr mare de soluii (care reprezint populaia) sunt testate pentru problem. Rezultatele acestui test sunt utilizate pentru a selecta soluii de nalt performan, care sunt apoi puin modificate pentru a crea populaia urmtoare. - Pe msur ce algoritmul avanseaz, noi modificri ce vor mbunti soluia vor ptrunde ncet n cadrul populaiei pn cnd se gsete o soluie complet pentru problema studiat.
-

Elementele principale ale programrii genetice sunt: Populaia: iniial se consider o populaie format din programe aleatoare; acestea sunt indivizii, adic potenialele soluii ale problemei considerate. - Testarea: se ia populaia i se trece fiecare individ printr-un test ntr-un mediu de lucru. Rezultatele acestui test reprezint valorile de potrivire (de fitness), care indic ct de bine s-a comportat fiecare individ. - Selecia: folosind aceste valori de potrivire, se vor selecta indivizii cu cea mai bun performan din populaia curent. Aceti indivizi vor deveni baza pentru urmtoarea populaie. - Reproducerea: din subsetul selectat din populaie, se alege un numr de indivizi prini. Poriuni ale acestor indivizi sunt apoi recombinate i posibil sufer mutaii. Copii rezultai sunt plasai n noua populaie i algoritmul continu. - Potrivirea: pentru a obine un algoritm de succes foarte important este funcia de potrivire. Algoritmul nu menine nici o informaie problem specific despre indivizi sau despre mediul de lucru, toate cunotinele sale despre populaie sunt coninute n valorile de potrivire ale indivizilor. Funcia de potrivire msoar ct de aproape de soluie este un individ. Pe baza acestor valori algoritmul poate diferenia indivizii n timpul seleciei. Acest lucru creeaz o nclinaie spre indivizi cu valori de potrivire mai bune, i anume se ia n considerare modul cum algoritmul mbuntete potrivirea total a fiecrei populaii succesive. Populaia unui ciclu al unui algoritm se numete generaie, iar procesare uneia sau a mai multor generaii se numete
3

Calcul neuronal i evolutiv

Bdu Sorina, IASTE, Anul II

circuit. Un circuit continu pn cnd se gsete o soluie sau pn cnd se ntlnete un criteriu de oprire, cum ar fi o limit pentru generaie. Elementele algoritmului i funcionarea lui sunt ilustrate n imaginea de mai jos.

Algoritmul de baz folosit de programarea genetic este urmtorul (pseudocod):


CurrentGeneration = 0; InitializeRandomPopulation(); EvaluatePopulation();

while( !SolutionFound() ) { ++CurrentGeneration; SelectBreeders(); BreedChildren(); MutateChildren(); EvaluatePopulation(); }

Exist numeroase aplicaii ale programrii genetice care se mpart n: Probleme black art (art neagr), cum ar fi sinteza automat a circuitelor electrice analogice, a controlerelor, antenelor, reelelor de reacii chimice precum i alte domenii de proiectare - Probleme programming the unprogrammable PTU - (programarea improgramabilului), implic crearea automat a programelor pentru dispozitive neconvenionale de calcul cum ar fi automate celulare, sisteme multi-agent, sisteme paralele, colonii de furnici, inteligenta roiului, sisteme distribuite
-

Calcul neuronal i evolutiv

Bdu Sorina, IASTE, Anul II

- Probleme commercially usable new inventions CUNI (noi invenii de uz comercial) implic utilizarea programrii genetice ca o main invenie automat pentru a crea noi invenii de uz comercial.

Bineneles c se caut n continuare noi domenii de activitate n care s se poat aplica tehnicile programrii genetice cu scopul de a obine inteligen artificial competitiv cu cea uman.
II.

Genetic Programming Engine (GPE)

Motoarele de programare genetic programeaz software n mod automat, urmnd o abordare evolutiv. Un motor de programare genetic (GPEngine) folosete un algoritm evolutiv pentru a optimiza o populaie de indivizi, programe informatice, potrivit specificaiilor de potrivire determinate capacitatea unui program de a efectua o sarcin dat. Iniial se creeaz o populaie de indivizi cu ajutorul clasei Base Class. Apoi se pornete motorul i indivizii sunt testai ntr-un mediu de lucru i se msoar potrivirea fiecrui individ. Se reine istoria fiecrui individ pentru a permite ca aciunile individului n cadrul unei populaii s poat fi reluate. Cele mai potrivite soluii sunt apoi recombinate unele cu altele sau sufer mutaii pentru a forma noi indivizi, i astfel o nou populaie. Nucleul motorului de programare genetic (Genetic Programming Engine) l reprezint clasa GPEngine. Aceast clas este clasa central pentru programarea i conduce algoritmul genetic ce ofer soluii pentru problemele definite de utilizator. Este de asemenea responsabil cu crearea, testarea populaiei, apoi opereaz mutaii asupra indivizilor pentru a forma o alta populatie. GPEngine interacioneaz cu probleme definite de utilizator prin intermediul a trei interfee, i anume IIndividual, IEnvironment i IHistory:
- IIndividual: aceast interfa reprezint un individ i include metodele standard folosite pentru a testa un individ, cea mai important fiind metoda Test. Aceasta este suprascris de ctre motor cu orice combinaie de operaii generate pentru un individ n timpul unui circuit. Motorul preia operaiile pentru a le folosi n metoda Test din clasa Base Class definit pentru problem. Aceast clas este creat de ctre utilizatorul care implementeaz interfaa IIndividual, mpreun cu alte operaii specifice problemei disponibile indivizilor n scopul rezolvrii problemei. Toi indivizii creai cu ajutorul motorului sunt derivai din clasa Base Class. - IEnvironment: este interfaa care repretint mediul de lucru i include metode standard folosite pentru iniializarea i curarea dup un test al unui individ. Dup ce metoda Test a fost definit pentru fiecare dintre indivizi n cadrul populaiei curente, acea populaie va fi compilat i apoi testat n unul sau mai multe medii de lucru. Fiecare mediu de lucru folosit de catre motor este o clas specific problemei care implementeaz interfaa IEnvironment. Aceast clas definete structura problemei n cauz. Motorul de asemenea paseaz un fiier de iniializare ctre mediul de lucru cnd este iniializat. Acest fiier conine datele pentru un test. - IHistory: interfaa ce reprezint o nregistrare a aciunilor executate de ctre un individ ntr-un mediu de lucru n timpul unui test i definete un atribut principal, proprietatea RawFitness, care se comport ca funcia de potrivire. Mai exist o a doua interfa, 5

Calcul neuronal i evolutiv

Bdu Sorina, IASTE, Anul II

IGraphicHistory, care adaug funcionalitate la afiare interfeei IHistory.aceast interfa este folosit de ctre GUI creat pentru motor, nu de ctre motor direct. Dup ce individul este testat n mediul de lucru, istoria este salvat i se seteaz urmtorul test. Odat ce toi indivizii dintr-o populaie au fost testai, instanele individ i mediu de lucru sunt eliminate, pastrndu-se doar istoriile. Valorile RawFitness din aceste istorii i indivizii asociai lor sunt apoi supui seleciei i reproducerii pentru a crea o nou populaie. Fiind date aceste clase ce implementeaz cele trei interfee, motorul poate asupra oricrei probleme. Metode ale clasei GPEngine Options primete i seteaz diferitele opiuni ale motorului de programare genetic utilizate pentru a controla motorul n timpul unui circuit, cum ar fi dimensiunea populaiei, dimensiunea generaiei, limitele pentru test, directorul de ieire pentru codul surs generat i pentru fiierele de asamblare. Verific dac opiunile nu sunt nule i apoi seteaz EngineOptions.
-

- ProblemSpaceClasses primete i seteaz clasele de spaiu a problemei specificate de utilizator pentru a fi folosite n GPE. Dac nici o astfel de clas nu este definit, va fi folosit prima gsit. Aceast metod de asemenea iniializeaz numrul de generaii cu 0. Clasele de spaiu ale problemei nu pot fi modificate n timp ce motorul de programare genetic ruleaz. - Running determin dac GPE ruleaz sau nu. Dac ruleaz, clasele de spaiu ale problemei nu poate fi schimbat. GPE ruleaz atunci cnd creaz sau testeaz populaii. Interfaa grafic afieaz informaii indiferent dac GPE ruleaz sau nu. - GenerationHistory primete GenerationHistory al ultimei generaii testate. - NewRun determin dac GPE ncepe o nou rulare. Altfel spus, dac generaia curent este 0, GPE a nceput testrile i nu a creat nc o nou generaie. - CurrentGeneration primete i seteaz numrul generaiei curente. - CurrentPopulation primete i seteaz populaia curent. Dac populaia este nul sau nu conine nici un membru, se creaz o eroare.

Calcul neuronal i evolutiv

Bdu Sorina, IASTE, Anul II

- RandomNumber primete i seteaz numrul aleator folosit n generarea unui arbore IPrecode aleator, care asigur faptul c numrul nu este nul. - References i EnvironmentReferenced primesc i seteaz referinele sau matricele de ci pentru ansambluri referite de clasa IIndividual. - BaseClassNamespace primete spaiul de nume n care a fost declarat clasa IIndividual - Run este elementul central al GPEngine i are dou funcii importante, ruleaz algoritmul de programare genetic sau, dac o rulare anterioar a fost intrerupt, reia rularea. Odat ce clasele de spaiu ale problemei sunt definite, GPE poate s execute algoritmul genetic asupra clasei de baz. Cnd ncepe rularea, i generaia curent este 0, GPE creeaz o nou populaie aleator din clasele de spaiu ale problemei. Odat ce populaia a fost creat GPE creeaz i testeaz generaiile urmtoare pn cnd GPE este ntrerupt sau se atinge limita de generaii. Cnd motorul a terminat de creat i de testat populaii, variabila m_Running este setat pe fals. - InitialiyeNewRun genereaz populaia iniial care va fi folosit la nceputul rulrii. Generaia este format din indivizi aleatorii egali cu dimensiunea populaiei setat n EngineOptions. Indivizii din aceast generaie nu au prini deoarece generaia este prima, aleatoare. Aceast metod primete de asemenea referinele necesare populaiei i seteaz IEnvironment. - CreateNextPopulation creeaz urmtoarea populaie cu regeneratorul selectat i opiunile selectorului dup cum sunt definite de ctre EngineOptions. - OnGenerationTested determin dac rularea a fost ntrerupt dup ce fiecare generaie este testat. Dac rularea a fost ntrerupt, ca de exemplu cnd este apsat butonul de pauz, m_RunInterrupted este setat pe adevrat i GPE se ntrerupe dup ce generaia curent s-a terminat de testat.

Rularea GPE cu ajutorul interfeei grafice

Interfaa grafic cu utilizatorul (GUI) este o alt cale de a interaciona cu GPE. Aceast interfa este format din patru panouri principale. Controalele motorului sunt poziionate n partea de sus a interfeei, iar statusul este n partea dreapt sus. Statisticile se afl n partea stng jos, iar IGraphicHistory i codul pentru cei mai buni indivizi sunt n partea dreapt jos.

Calcul neuronal i evolutiv

Bdu Sorina, IASTE, Anul II

Controalele motorului sunt formate din cteva butoane i setri, a cror funciune este: - Run/Continue: dac ne aflm la generaia 0, acest buton i spune motorului s porneasc execuia asupra clasei IIndividual selectat n mediului IEnvironment i folosind fiierul de iniializare a mediului. Cnd motorul ruleaz se va afia n panoul pentru status mesajul Engine is: running.

Calcul neuronal i evolutiv

Bdu Sorina, IASTE, Anul II

- Pause: suspend temporar execuia motorului. mesajul Engine is: interrupted va fi afiat n panoul pentru status i se poate relua apsnd Continue

Calcul neuronal i evolutiv

Bdu Sorina, IASTE, Anul II

- Reset: reiniializeaz motorul cu clasa IIndividual selectat, IEnvironment i fiierul de iniializare a mediului. Cnd se apas Run, GPE va ncepe o nou execuie pornind de la generaia 0. - Engine Options: permite utilizatorului s seteze variabil prin intermediul clasei EngineOptions pentru a controla performana GPE.

10

Calcul neuronal i evolutiv

Bdu Sorina, IASTE, Anul II

- Individual Class : permite selectarea diferitelor clase IIndividual pentru a defini indivizii pentru problema n cauz.. - Environment Class: permite selectarea claselor IEnvironment pentru a defini mediul de lucru pentru problem. - Environment Initialization File: fiierul ce permite selectarea diferitelor fiiere de iniializare a mediului de lucru.

- Fitness Goal: dac este bifat seteaz valoarea int de potrivire pentru mediul de lucru specificat. Odat atins aceast valoare, interfaa grafic va pune automat motorul n pauz. Panoul status afieaz statusul GPE, numrul de generaii curente, cei mai buni si cei mai proti indivizi ai generaiei curente, clasele IPrecodeTree, IIndividual i IEnvironment i opiunile motorului (EngineOptions) care au fost selectate. Panoul statistic ofer un grafic al potrivirii n timp. Deasupra se afl graficul potrivirilor celeo mai bune, celor mai proaste i celor medii. Axa Y reprezint potrivirea i axa X generaiile. Linia verde reprezint cei mai buni indivizi, cea roie, indivizii cu potrivire medie, iar cea neagr,cei mai proti indivizi. n partea de jos avem histograma de potrivire care arat cum sunt
11

Calcul neuronal i evolutiv

Bdu Sorina, IASTE, Anul II

distribuite valorile de potrivire pentru indivizii din generaia curent. Axa orizontal reprezint diferite intervale de potrivire, iar axa vertical numrul total de indivizi reprezentai, adic dimensiunea populaiei. Panoul din dreapta jos permite dou vederi diferite. Tabul History of Best Individual afieaz IGraphicHistory a celor mai buni indivizi din generaia curent. Acesta afieaz cadru cu cadru aciunile ntreprinse n timpul testrii. Tabul Code of Best Individual afieaz codul C# generat pentru cei mai buni indivizi n generaia curent.

12

Calcul neuronal i evolutiv

Bdu Sorina, IASTE, Anul II

Concluzii
n prezent, exist 36 cazuri n care programarea genetic a produs automat un rezultat care competitiv cu performana uman, inclusiv 15 cazuri n care programarea genetic a creat o entitate care, fie ncalc sau duplic funcionalitatea unei invenii a secolului 20 anterior patentate, 6 cazuri n care programarea genetic a fcut acelai lucru cu privire la o invenie a secolului 21, i 2 cazuri n care programarea genetic a creat o nou invenie brevetabil. Bineneles c cercetarea este n plin evoluie! Programarea genetic imit strategii bazate pe evoluie respectiv selecia naturala i mutaia. Programarea genetic poate fi folosit pentru a gsi soluii pentru o gam larg de probleme de la problema comis-voiajorului la problema furnicilor artificiale. Metoda central pentru rezolvarea problemelor rmne n esen aceleai pentru diferite tipuri de probleme. Programarea genetic se bazeaz pe i probabilitate,astfel nct nu exist garanii c o soluie va fi gsit n nici un termen dat. Cu fiecare termen succesiv, ns, probabilitatea de succes crete. Genetic Programming Engine este un instrument simplu de folosit, dar complex i foarte util.

13

Calcul neuronal i evolutiv

Bdu Sorina, IASTE, Anul II

Bibliografie

1) http://www.genetic-programming.org/ 2) http://gpe.sourceforge.net 3) http://www.doc.ic.ac.uk/~sgc/teaching/pre2012/v231/lecture17.html

14

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