uvod u genetsko programiranje - zemris.fer.hryeti/studenti/radovi/mario pavlovic - uvod u... · kod...

22
SVEUILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAUNARSTVA SEMINAR UVOD U GENETSKO PROGRAMIRANJE Mario Pavlovi Voditelj: Domagoj Jakobovi Zagreb, Svibanj 2007

Upload: others

Post on 18-Sep-2019

4 views

Category:

Documents


0 download

TRANSCRIPT

SVEU�ILIŠTE U ZAGREBU

FAKULTET ELEKTROTEHNIKE I RA�UNARSTVA

SEMINAR

UVOD U GENETSKO PROGRAMIRANJE

Mario Pavlovi�

Voditelj: Domagoj Jakobovi�

Zagreb, Svibanj 2007

1. UVOD .................................................................................................................................... 3

2. GENETSKO PROGRAMIRANJE ........................................................................................ 4

2.1 Stvaranje po�etne populacije........................................................................................... 5

2.1 Stvaranje po�etne populacije............................................................................................ 6

2.1.1 Grow metoda ............................................................................................................. 6

2.1.2 Full ............................................................................................................................ 7

2.1.3 Ramped half-and-half................................................................................................ 7

2.2 Ocjenjivanje dobrote jedinke............................................................................................ 7

2.3 Selekcija ........................................................................................................................... 8

2.3.1 Selekcija prema na�inu prenošenja genetskog materijala ......................................... 8

2.3.2 Selekcija prema na�inu odabira pojedinih jedinki .................................................... 9

2.4 Reprodukcija .................................................................................................................. 10

2.5 Križanje .......................................................................................................................... 10

2.6 Mutacija.......................................................................................................................... 11

3. PRIMJER RADA GP-a........................................................................................................ 13

3.1 Osnovni prikaz programa ............................................................................................... 13

3.2 Detaljni prikaz programa................................................................................................ 15

3.3 Ostale primjene genetskog programiranja...................................................................... 18

4. ZAKLJU�AK ...................................................................................................................... 20

5. LITERATURA..................................................................................................................... 21

6. SADRŽAJ ............................................................................................................................ 22

1. UVOD

Svi smo svjesni zajedništva i povezanosti �ovjeka i prirode. No jesmo li svjesni povezanosti prirode i ra�unala? Koliko god neobi�no zvu�alo, postoji vrlo jaka veza izme�u oduvijek prisutne prirode i modernih ra�unala. Ta se veza zove genetsko programiranje. �ovjek zaslužan za ovu nevjerojatnu simbiozu je John R. Koza U prirodi životinje koje su snažnije i dominantnije nadvladavaju slabije, te na taj na�in preživljavaju i šire svoju obitelj, prenose�i dobra svojstva svoga DNA na potomke. Koriste�i mehanizme evolucije (prirodna selekcija, križanje, te mutacija) priroda stvara ja�e i prilagodljivije jedinke koje �e daljnjim križanjem proizvesti nove sa svojstvima bližim „savršenstvu“. Kao i u prirodi, tako i pri genetskom programiranju samo najsnažniji preživljavaju. Zbog gotovo identi�nog oponašanja prirode, genetsko programiranje spada u takozvane evolucijske algoritme. Ve� spomenute selekcije, križanja te mutacije detaljnije se obra�uju u drugom poglavlju. Tako�er, u drugom poglavlju detaljnije se opisuje na�ine stvaranja po�etne populacije.

2. GENETSKO PROGRAMIRANJE

Kao što je spomenuto u uvodu, ovo je dio gdje �emo se detaljnije pozabaviti sa samom strukturom i glavnim zna�ajkama genetskih programiranja. Kako bi lakše shvatili rad GP-a uvodimo jedan jednostavan blok dijagram (slika 1.1) koji predstavlja tijek programa kako je predloženo u [Koza98]. Dijagram uvodimo radi lakše vizualizacije, a njegovim postupnim seciranjem objasnit �emo sve klju�ne zna�ajke GP-a. Prije uvo�enja dijagrama važno je napomenuti dvije stvari, a prva je prikazivanje jedinki. Odabir pravog na�ina prikazivanja pojedine jedinke najvažniji je preduvjet da bi neki GP mogao prona�i optimalno rješenje zadanog problema. Prikaz jedinke mora s minimalnim brojem gena predo�iti sva njezina važna svojstva. Genetski zapis jedinke mora biti takav da prilikom križanja i mutacije ne dolazi do nemogu�ih rješenja. Drugim rije�ima, unutar, nazovimo to definicije jedinke tj. njezinog prikaza, moraju biti samo najvažnija svojstva. Kasnije �e to biti pokazano na primjeru gdje �e se jako lijepo i jednostavno vidjeti njezina struktura. Druga je stvar da moramo shvatiti kako genetskim programiranjem ne dobivamo brojku kao rezultat. Rezultat izvo�enja genetskog programiranja moramo gledati kao neku vrstu najbolje „uzgojenog“ programa. Najto�niji (najispravniji) program koji daje najbolje rješenje zadanog problema u najkra�em roku je naše rješenje. Vratimo se još malo na dijagram. Na donjoj slici indeks I ozna�ava jedinku iz populacije veli�ine M, a varijabla GEN je broj trenutne generacije. Slika je prilago�ena prema [Koza03].

2.1 Stvaranje po�etne populacije

Kao što vidimo iz slike 1.1 algoritam po�inje sa 0-tom generacijom te u prvom koraku kreira inicijalnu generaciju. Inicijalna (nulta) generacija se stvara na bazi slu�ajnog odabira. Dakle, nultu generaciju možemo gledati kao neku vrstu izvi�a�a, odnosno malu skupinu bitova koja �e jednostavno osjetiti teren, tj. podru�je problema. Jednostavnije �e biti ukoliko predo�imo stvaranje jedinke slikom.

Slika (a) prikazuje stvaranje po�etnog �vora. �vor je nezavršni, dakle proces se nastavlja. U drugom koraku, na slici (b), stvaraju se dva nova �vora. Proces se nastavlja za desni �vor. U zadnjem koraku, prikazanom na slici (c), proces završava stvaranjem dvaju završnih �vorova. Kona�an izraz je f = a + b*c . Gore navedena slika prikazana je kao stablo. U genetskom programiranju u ve�ini slu�ajeva primjenjuje se prikaz stabla jer se putem njega mogu najlakše izvesti operatori križanja i mutacije. Vratimo se natrag na naše kreiranje po�etne generacije. Postoje tri na�ina za izgradnju po�etne populacije. To su:

• grow metoda, • full metoda , • ramped half-and-half metoda.

2.1.1 Grow metoda

Jedinke se generiraju prema slijede�em pravilu:

• Po�evši od korijenskog elementa, slu�ajno se odabire vrsta �vora koji �e se dodati u stablo. Pritom je mogu�e birati operatore ili završne znakove (varijable)

• Ako je izabran završni znak, sustav odabire jedan iz skupa završnih znakova • Ako je odabran operator, odabire se jedan operator iz skupa operatora

Postupak se dalje rekurzivno ponavlja sve dok svi novododani znakovi nisu završni ili dok se ne dostigne maksimalna dozvoljena dubina stabla m. Jedinke kreirane ovom metodom ne�e imati stabla jednake dubine, a mogu�e je da �e se izraz

sastojati od samo jednoga nezavršenog znaka. Op�enito, ovakvi izrazi nemaju neku ve�u vrijednost jer u najve�em broju slu�ajeva ne�e dati dobro rješenje.

2.1.2 Full

Metoda je vrlo sli�na prethodnoj, s jedinom razlikom da je unaprijed definirano na kojoj se minimalnoj dubini stabla mogu po�eti pojavljivati završni znakovi.

2.1.3 Ramped half-and-half

U ovoj se metodi prilikom generiranja jedinki unaprijed definira samo maksimalna dubina md. Prednost je ove metode što generira populacije s dobrom raspodjelom jedinki po veli�ini i strukturi. Kreiranje jedinki se obavlja na slijede�i na�in:

• Populacija se podijeli na md-1 dijelova • Polovica svakoga dijela generira se metodom grow, a druga metodom full. Za prvi dio

parametar m za metodu grow i d za metodu full je 2. za drugi dio je 3. niz se nastavlja sve do md-1og dijela na kojem se koristi md kao vrijednost za m i d

Ukoliko se vratimo na naš blok dijagram vidjet �emo da nakon stvaranja nulte generacije program provjerava je li vrijeme da prekine sa radom. Prekid rada se doga�a ukoliko generacija dosegne unaprijed zadanu vrijednost. U nekim slu�ajevima, kada znamo npr. broj koraka programa ili neku drugu informaciju, a ne znamo na�in na koji se to radi (problem kineskog poštara) onda u uvjetu za prekidanje programa možemo staviti dodatni uvjet (broj koraka, koli�ina, itd). U našem slu�aju imamo tek inicijalnu generaciju, tako da nastavljamo kroz blok dijagram te dolazimo do slijede�e važne to�e GP-a, a to je ocjenjivanje dobrote jedinki.

2.2 Ocjenjivanje dobrote jedinke

U prirodi ne možemo re�i je li neka jedinka bolja od druge jer to�no mjerilo ne postoji. Možemo re�i da je zec brzi od kornja�e (iako i to nekad nije to�no), ali jako je teško utvrditi da je nešto apsolutno bolje od ne�ega drugog. No, možemo re�i (gledano sa aspekta genetskog programiranja) da je dobrota neke jedinke mjera kvalitete toga rješenja u zadanome prostoru rješenja. Kod jednostavnih problema, kao što je pronalaženje maksimuma neke funkcije, dobrotu možemo prikazati kao vrijednost koju ta funkcija ima za zadani kromosom. U tom �e slu�aju ve�a vrijednost funkcije ozna�avati ve�u dobrotu rješenja. Kod složenijih problema dobrota se može izraziti kao primjerice vrijeme trajanja projekta, vrijeme koje je potrebno da se obavi simulacija sustava koji optimiramo i sl. Dakle, ocjenjivanje dobrote jedinke možemo zamisliti kao postotak to�nosti obavljenoga posla. Jedinke sa boljim, bržim i to�nijim rješenjima biti �e i bolje ocjenjene. Ocjenjivanje je klju�no za sam tijek evolucije, jer zadani je cilj da svaka slijede�a generacija bude uspješnija od prošle. Samim time, u naredne generacije i�i �e samo najkvalitetnije

(najbolje ocjenjene) jedinke. Prelazak u slijede�e generacije se odvija putem reprodukcije, križanja te mutacije.

2.3 Selekcija

Prije pojašnjavanja reprodukcije, križanja i mutacije, bit �e opisan postupak selekcije. Važnost selekcije je jednaka kao i važnost reprodukcije jer selekcija vrši utjecaj na reprodukciju. Kako? Selekcija je proces kojim se osigurava prenošenje boljeg genetskog materijala iz generacije u generaciju. Postupci selekcije me�usobno se razlikuju po na�inu odabira jedinki koje �e se prenijeti u sljede�u generaciju. Postoje razni na�ini selekcija, a ovdje �e biti opisane samo neke najpoznatije. Selekcije se dijele u dvije osnovne kategorije po kojima se i razlikuju.

2.3.1 Selekcija prema na�inu prenošenja genetskog materijala

Selekcija prema na�inu prenošenja genetskog materijala dijeli se na:

• Generacijske selekcije: proces odabire najbolje jedinke i od njih kreira novu generaciju

• Eliminacijske selekcije: proces selekcije eliminira najgore jedinke iz populacije

Kao što se vidi iz slike, generacijske selekcije djeluju tako da iz populacije odabiru odre�en broj najboljih jedinki i od njih se stvara me�upopulacija. Broj jedinki koje prežive selekciju manji je od veli�ine populacije. Te se jedinke stoga nadomještaju kopiranjem ve� selektiranih. Nedostatak ovoga na�ina selekcije je višestrukost kopiranja istih jedinki, što rezultira nekvalitetnim (vrlo sli�nim) genetskim materijalom. Kod eliminacijskih selekcija nema stroge granice izme�u prethodne i slijede�e generacije. Tijekom procesa eliminacije odstranjuju se slu�ajno odabrane jedinke (one lošije imaju ve�u vjerojatnost eliminacije). Eliminirane jedinke nadomještaju se križanjem postoje�ih.

2.3.2 Selekcija prema na�inu odabira pojedinih jedinki

Selekcija prema na�inu odabira pojedinih jedinki dijeli se na:

• Jednostavna proporcionalna selekcija • K-turnirska selekcija

Jednostavnu proporcionalnu selekciju najslikovitije možemo prikazati kao kota� ruleta sa razli�itim veli�inama. Za svaku jedinku naše populacije definira se dobrota, a obrnuto proporcionalna vrijednost unosi se na kota� za tu jedinku. Tako �e najbolja jedinka imati najmanji isje�ak kota�a (postoji najmanja vjerojatnost da �e upravo ona biti eliminirana), a dok �e najlošija imati najve�i isje�ak kota�a.

U k-turnirskim selekcijama odabire se k �lanova populacije koji sudjeluju u turniru. Tijekom turnira uspore�uju se dobrote svih k jedinki. Primjer 3-turnirske selekcije prikazan je na slici 2.4. Slu�ajnim odabirom izdvojene su jedinke 1, 3 i 6 za sudjelovanje u turniru. Jedinka 1 ima najmanju dobrotu i ona se eliminira, a jedinke 3 i 6 se križaju i na taj na�in produciraju novu „3*6“ koja se dodaje u populaciju.

2.4 Reprodukcija

Reprodukcija je aseksualan proces u kojem se selektira jedna jedinka iz trenutne populacije i prenosi u drugu. Najbitniji faktor kod odabira jedinke za reprodukciju je na�in selekcije. Na�ini selekcije opisani su u prethodnom poglavlju, a po principu rada se ne razlikuju.

2.5 Križanje

Križanje jedinki je proces u kojem se rekombinira genetski materijal dvaju roditelja. Rezultat križanja su dvije jedinke djece, koje od svakog od roditelja naslje�uju dio genetskog materijala. Roditelji se odabiru na na�in kako je opisano u prethodnom poglavlju. Tijek križanja je definiran sa:

• Slu�ajno odaberi to�ku prekida za oba roditelja • Za to�ku prekida se uzima jedan �vor stabla • Izdvoji podstabla ispod to�ke prekida • Izdvajaju se podstabla oba roditelja • Zamijeni izdvojena podstabla

Gornja slika prikazuje tijek križanja dviju jedinki. Na slikama 2.5 (1a) i 2.5 (1b) prikazane su dvije jedinke koje su odabrane za križanje (roditelji). U sljede�em koraku, na slikama 2.5 (2a) i 2.5 (2b), roditeljima su slu�ajnim odabirom izabrana podstabla. Na roditelju a podstablo je ozna�eno crvenom bojom, a na roditelju b ljubi�astom. Nove jedinke (djeca) prikazane su na slikama 2.5 (3a) i 2.5 (3b). Jedinka (3a) je naslijedila osnovno stablo roditelja (1a), a ruži�asto ozna�eno podstablo roditelja (1b). Jedinka (3b) je naslijedila osnovno stablo roditelja (1b) i crveno ozna�eno podstablo roditelja (1a)

2.6 Mutacija

Mutacija služi kako bi se u nove jedinke uveli neki geni koji �e rezultirati novim jedinkama s boljim rješenjem. Op�enito gledaju�i, mutacijama se može dobiti poboljšanje ali i pogoršanje

prosje�ne dobrote jedinki u populaciji. Jedinke sa „smrtonosnim“ mutacijama biti �e vrlo brzo eliminirane u selekcijskom procesu, tako da iste ne bi smjele dugotrajno narušiti prosje�nu dobrotu jedinki u populaciji. Mutacija se za jedinke GP-a naj�eš�e radi na slijede�i na�in: (proces se ponavlja više puta, ovisno o postavkama programa):

• Iz populacije se odabere mutiraju�a jedinka • U stablu jedinke nasumce se odabere jedan �vor. Slu�ajno je mogu�e odabrati i �vor i

list istog stabla • Odabrani �vor (list) i sva njegova podstabla se brišu iz stabla • Na odabranome mjestu se zatim slu�ajnim odabirom stvara novo podstablo. Veli�ina i

na�in stvaranja novog podstabla obi�no se definiraju prilikom pokretanja algoritma

3. PRIMJER RADA GP-a

Kako dosadašnja objašnjena ne bi bila �isto suhoparno nabrajanje pravila, u seminaru je uklju�en jedan primjer primjene genetskog programiranja. Naime, programer Brian Connoly izradio je zanimljiv program iz kojega se jasno mogu vidjeti osnovna svojstva genetskog programiranja. Program je poznat pod nazivom „Artificial ant“. Problem se može definirati kao jedan dan u mravljem životu. Mrav „še�e“ po mreži (dimenzija 32x32) i pokušava skupiti što ve�e koli�ine hrane. Ukoliko prije�e rub mreže automatski se vra�a na suprotnu stranu. Unutar mreže se osim hrane i praznih prostora, mogu na�i i rupe. Rupe spajaju dvije nasuprotne „hrpe“ hrane.

3.1 Osnovni prikaz programa

Jedinka mrava je u potpunosti opisana s dva stanja. Prvo stanje je trenutna pozicija na mreži dok se drugo definira njegovom orijentacijom (trenutnim smjerom kretanja). Ono može biti usmjereno prema gore, dolje, lijevo ili desno. Uo�avamo kako smo ovdje ustvari definirali prikaz jedinke. Tako�er, mrav ima samo jedan „senzor“ za prepoznavanje svoje okoline, a to je funkcija nazvana FacingFood koja mu omogu�ava spoznaju je li ispred njega hrana ili ne. Dolaskom na polje koje sadržava hranu, mrav uklanja hranu sa mreže te pove�ava ukupnu koli�inu skupljene hrane. Tako�er svakim korakom (uklju�uju�i i promjenu orijentacije) pove�ava ukupan broj koraka. Radi lakšeg objašnjavanja predo�en je izgled programa:

Na desnoj strani dominira mreža po kojoj se kre�e mrav. Tako�er uz to vidimo zacrnjene ku�ice koje predstavljaju hranu, i sive kvadrati�e koji predstavljaju rupe. Trenutno je u�itana inicijalna mapa, no putem tipki Empty Grid (koja �isti sve postavke sa mreže) te Get Grid

(koja dohva�a ve� od prije stvorene mape) možemo mijenjati trenutne postavke mreže. U gornjem lijevom kutu nalaze se prozor�i�i putem kojih se kontrolira samo genetsko programiranje, tj. prozor�i�i u kojima se mogu mijenjati postavke GP-a. To su: Generations – Program prestaje sa radom nakon što proizvede zadani broj generacija. No ukoliko se stvori savršeni mrav (onaj mrav koji u minimalnom broju koraka pokupi maksimalan broj hrane) program automatski staje sa izvršavanjem. Population – Broj mrava koji �e biti sadržan u svakoj generaciji. Max Tree Depth – Odre�uje najve�u dozvoljenu dubinu stabla pojedine jedinke Food Goal te Step Goal - Odre�uju karakteristike koje bi trebao posjedovati savršeni mrav, a predstavljaju minimalan broj koraka za maksimalnu koli�inu hrane. U ovome primjeru postoje 33 kvadrati�a popunjena hranom te 2 popunjena rupama. Elementarnom matematikom dolazimo do zaklju�ka da je potrebno minimalno 35 koraka. Iznad dva prazna prozor�i�a (u kojima se o�ekuje rezultat) vidimo tipku Generate. Nakon pritiska po�inje proces genetskog programiranja. Nakon izvršavanja programa dobivamo naših zadanih 10 generacija sa po 100 mrava u svakoj od njih te u prozor�i�u ispod tipke Generate dobivamo izlistane naše generacije.

Kao što vidimo dobivamo podatke o svakom mravu iz svake generacije. U prozor�i�u ispod generacija su izlistani mravi iz cijele generacije i to od najboljega do najlošijega. Ovdje je pokazan najbolji mrav iz pete generacije. Zamijetimo kako postoje još dvije tipke koje nismo obradili. To su Replay Step te Replay All. Putem njih dobivamo puteve kojima se mrav „šetao“ po mreži. U ovom slu�aju izabrali smo najboljega mrava pete generacije koji je ve� dovoljno evoluirao te pronašao pravi put sa skoro najmanje u�injenih koraka. Samo kako bi ste si predo�ili napredak, najbolji mrav prve generacije skupio je samo 18 „komadi�a“ hrane te mu je za taj posao bio potreban maksimalan broj od 400 koraka (zadanih od prije u samome programu). Najbolji mrav desete (završne) generacije skupio je 33 „komadi�a“ hrane u 47 koraka. Vrijeme je da krenemo u malo dublje analize našeg „posu�enog“ programa.

3.2 Detaljni prikaz programa

Prou�imo sada možda i najjednostavniju funkciju našega programa, a to je: public void Move()

{

if(NotFinished())

{

GetFacingCellCoord(outxLocation, outyLocation);

mTrail.Add(newTrailSpace(xLocation, yLocation));

mTotalSteps++;

if(mGrid[xLocation,yLocation].HasFood())

{

//gather the food and remove it from the grid

mTotalFood++;

mGrid[xLocation,yLocation].SetEmpty();

}

}

Slika 3.3 Pomicanje mrava po mreži Dakle uvi�amo da se pomicanje po našoj mreži doga�a poprili�no jednostavno. Svakim pomakom pove�avamo broj koraka i time pove�avamo broj hrane ukoliko je to mogu�e (ako stojimo na polju gdje se nalazi hrana). No važno je napomenuti kako mrav duplicira zadanu

mapu te pamti put prolaženja u internom spremniku. Razlog toga je brojanje pokupljene hrane. Ukoliko naš mrav ne bi pamtio koju je hranu pokupio, a koju nije, postojala bi vrlo vjerojatna mogu�nost da mrav pokupi istu hranu 2 puta, što u op�enitom slu�aju ne bi bilo poželjno. Tako�er dupliciranje mreže može biti loše svojstvo, jer mrav pamti put koji je prošao a ne na�in na koji je prolazi zadani put. Ukoliko promijenimo mapu sa hranom mrav �e se i dalje kretati rutom prošle mape, jer je „nau�io“ di se nalazi hrana. Ovaj problem se može izbje�i dodatnim funkcijama koje omogu�avaju u�enje mrava, no za sada ne�emo doticati tu temu. Kako bi smo omogu�ili daljnji napredak „inteligencije“ mrava moramo definirat stvaranje nove generacije. Stvaranje generacije se dijeli na dva bitna djela. Stvaranje nulte (inicijalne) generacije te stvaranje bilo koje idu�e (ne inicijalne) generacije. for(int i = 0; i<= NumberOfPrograms-1;i++)

{

ExpressionTree newTree = new ExpressionTree(

MaxTreeDepth,this, GetRandomFunction(), null);

string temp = NewAntName ( GenerationNumber, i);

ThisGenerationResults.Add(

new TypeExecutionResult(NewAntName(GenerationNumber, i),

"","",newTree));

}

Slika 3.4 Stvaranje nulte genracije Kao što vidimo stvaraju se nova, nasumi�na stabla te se imenuje svakoga mrava (svako dobiva svoj id po kojem se razlikuje od ostalih). Tako�er se stvara novi ThisGenerationResults gdje �e biti pohranjeni rezultati koji �e se u daljnjem procesu koristiti za usporedbu te odre�ivanje „snage“ mrava. Za razliku od nulte generacije gdje se skoro sve odvija nasumi�no, ostale generacije se stvaraju na malo kompleksniji na�in. Rezultati prošlih generacija direktno utje�u na nastajanje nove generacije. Prvo je potrebno izabrati najboljeg mrava iz prošle i kopirati ga u novu generaciju. Zatim se radi me�usobna usporedba mrava po snazi te najboljih 10 posto prelazi u novu generaciju. int numToKeep = NumberOfPrograms/10;

int numKept = 0;

LastGenerationResults.Sort();

LastGenerationResults.Reverse();

IEnumerator enumLastGenerationResults =

LastGenerationResults.GetEnumerator();

while(enumLastGenerationResults.MoveNext() && numKept++ < numToKeep)

{

ThisGenerationResults.Add((TypeExecutionResult)

enumLastGenerationResults.Current);

}

Slika 3.5 Stvaranje generacije Preostaje nam još jedino popuniti ostatak populacije s novim rješenjima. Stvaraju se parovi roditelja, a djeca nastaju metodom križanja (objašnjenom u prethodnom poglavlju). Roditelji se biraju po principu ja�ine, tj. roditelj s boljim rezultatima ima ve�e šanse da bude izabran. Sljede�i tekst programa pokazuje na�in na koji se dobivaju djeca.

for(int i = ThisGenerationResults.Count;

i<= NumberOfPrograms-2; i=i+2)

{

ExpressionTree child1, child2;

ExpressionTree Parent1, Parent2;

int Parent1Index, Parent2Index;

SelectParentsAndCloneThem (ThisGenerationResults,numKept - 1,

out Parent1Index, out Parent1,

out Parent2Index, out Parent2);

Crossover (Parent1, Parent2, out child1, out child2);

TypeExecutionResult childResult1, childResult2;

childResult1 = new TypeExecutionResult (

NewAntName(GenerationNumber, i),

((TypeExecutionResult) ThisGenerationResults[Parent1Index])

.mTypeClassName,

((TypeExecutionResult) ThisGenerationResults[Parent2Index])

.mTypeClassName,

child1

);

childResult2 = new TypeExecutionResult (

NewAntName(GenerationNumber, i+1),

((TypeExecutionResult) ThisGenerationResults[Parent1Index])

.mTypeClassName,

((TypeExecutionResult) ThisGenerationResults[Parent2Index])

.mTypeClassName,

child2

);

ThisGenerationResults.Add(childResult1);

ThisGenerationResults.Add(childResult2);

} Slika 3.6 Nastanak nove djece

Za svaki par roditelja nastat �e novi par djece. Proces se ponavlja sve dok se svi slotovi naše nove generacije ne popune. Funkcija križanja radi na opisanom principu no ponovit �emo još jednom. Nova djeca se formiraju na na�in da se iz stabla oba roditelja na nasumi�an na�in odaberu dva �vora te se jednostavno zamijene. Ono što se prije nalazilo ispod �vora Roditelja

sada se nalazi kod Roditelja2, i obratno. Naime, struktura roditelja ostaje netaknuta, a djeca nastaju križanjem. private void Crossover

(ExpressionTree Parent1, ExpressionTree Parent2,

out ExpressionTree Child1, out ExpressionTree Child2 )

{

ArrayList parent1Nodes = TreeList(Parent1);

ArrayList parent2Nodes = TreeList(Parent2);

// select a random subree from each

int crossoverpoint1 = mRandom.Next(0,parent1Nodes.Count-1);

int crossoverpoint2 = mRandom.Next(0,parent2Nodes.Count-1);

Child1 = TreeCombine

(Parent1,

(ExpressionTree)parent1Nodes[crossoverpoint1],

(ExpressionTree)parent2Nodes[crossoverpoint2]);

Child2 = TreeCombine

(Parent2,

(ExpressionTree)parent2Nodes[crossoverpoint2],

(ExpressionTree)parent1Nodes[crossoverpoint1]);

} Slika 3.7 Križanje

U kona�nici, struktura mrava je definirana na slijede�i na�in. public class Ant_Gen1_Ant33 : Ant {

public override void Execute() {

for (

; NotFinished();

) {

if (FacingFood()) {

Move();

}

else {

TurnRight();

if (FacingFood()) {

Move();

TurnLeft();

}

else {

Move();

TurnLeft();

}

}

}

}

}

Slika 3.8 Struktura nasumi�nog mrava

3.3 Ostale primjene genetskog programiranja

Osim simboli�ke regresije GP je mogu�e koristiti u cijelom nizu drugih problema. Prema [Koz06], u rješavanju �ak 36 problema korištenjem genetskog programiranja ostvareni su rezultati koji se mogu usporediti s rezultatima što su ih dobili ljudi. Zbirni podaci prikazani su u tablici 3.3.

Ve�ina ovih otkri�a su razni algoritmi i protokoli za rješavanje matemati�kih i ra�unalnih problema. Od zanimljivijih primjena treba navesti:

• Programiranje robota koji igraju nogomet [Koz03] • Programiranje robota sa šest nogu [Jak05] • Otkri�e NAND spoja tranzistora [Koz03] • Otkri�e spoja s povratnom vezom [Koz03] • Raspore�ivanje poslova na strojevima [Jak05] • Predvi�anje i raspoznavanje [Jak05] • Potpora ra�unalnim sustavima (otkrivanje nepravilnosti u radu) [Jak05]

4. ZAKLJU�AK

Genetsko programiranje napredna je grana ra�unalne znanosti, koja svakim danom doživljava zna�ajan razvoj. Od trenutka otkri�a, koje zahvaljujemo Johnu R. Kozi, ono plijeni pozornost. Njegova nevjerojatna primjenjivost na raznim podru�jima svakim danom pridonosi sve više poklonika diljem svijeta. Kao i mnogi, ja sam tako�er ostao zapanjen nevjerojatnim mogu�nostima koje pruža. Osobno sam odlu�io primijeniti ga na vrlo poznatom problemu umjetne inteligencije mrava. Rezultati istraživanja su zapanjuju�i. �injenica da u svakodnevnome životu možemo na�i tako živopisne primjere na kojima se temelji genetsko programiranje je o�aravaju�a. Cijela priroda, ako ne, i cijeli planet Zemlja od svojih po�etaka funkcionira kao jedan savršeni genetski program. Nastanak živoga svijeta možemo poistovjetiti sa generiranjem nulte generacije. Nastanak prvih jednostani�nih organizama i njihova evolucija, preko koje se križanjem i mutiranje gena došlo do složenijih organizama savršeno odgovara križanju i mutaciji unutar genetskoga programa. Još jedan dokaz sli�nosti je temeljna nit vodilja genetskog programa. Preživljavanje najboljih rješenja. Identi�an zakon prirode nalazimo unutar istraživanja Charlesa Darwina. Zbog gore navedenih razloga moja fascinacija genetskim programiranje se nastavlja. Jedino što mi preostaje jest nadati se kako �e ovaj seminar potaknuti iskru znatiželje u svima koji su spremni ostati fascinirani genetskim programiranjem.

5. LITERATURA

[Jak05] Jakobovi� D. Raspore�ivanje zasnovano na prilagodljivim pravilima –

doktorska disertacija, 2005. Fakultet elektrotehnike i ra�unarstva. Zavod za elektroniku, mikroelektroniku, ra�unalne i inteligentne sustave.

[Koza98] Koza J.R. Genetic Programming - On the Programming of Computers by

Means of Natural Selection, 1998. The MIT Press. U tekstu ozna�eno sa Koza J.R. Lecture notes: Comparison of Search and learning methods.

Stanford University, 2003. Dostupno na internet adresi: http://www.genetic-programming.com/coursemainpage.html.

Frankola T. Rješavanje problema raspore�ivanja aktivnosti projekta evolucijskim

algoritmima – diplomski rad, 2006. Fakultet elektrotehnike i ra�unarstva. Connlloy B. Survival of the Fittest: Natural Selection with Windows Forms,

http://msdn.microsoft.com/msdnmag/issues/04/08/GeneticAlgorithms , 1. Svibnja . 2007 Veir S. Artificial life – prezentacije, mentor Prof. dr. sc. Leo Budin

6. SADRŽAJ

U drugom poglavlju seminara opisana su osnovna na�ela rada genetskoga programa. Unutar poglavlja stvaranja po�etne populacije opisani su neki od najpoznatijih na�ina generiranja po�etne populacije. Tako�er, istaknute su njihove mane i prednosti. Nadalje, opisan je na�in ocjenjivanja pojedinih jedinki kojim je pokazano kako ocjenjivanje utje�e na njihovu daljnju selekciju. U potpoglavlju šest opisana je reprodukcija unutar genetskoga programa. Ona je klju�na za program jer omogu�ava daljnje razvijanje generacije. Na samu reprodukciju se veže križanje i mutacije. Putem križanja i mutacije osiguravamo raznolikost vrste, tj. u našem slu�aju raznolikost dobivenih programa. Križanje i mutacija može proizvest negativne u�inke, no tada ve� spomenuta selekcija osigurava nenapredovanje takvih programa. U tre�em poglavlju je opisan rad genetskoga programa kroz stvaran program. Primjer programa je „Artificial ant“ od Brian Connoly-a. Kroz program smo demonstrirali sve navedene stavke iz drugog poglavlja. Pokazano je jednostavno kretanje mrava kroz zadanu mrežu. Tako�er smo demonstrirali generiranje po�etne, te nepo�etne generacije. Pokazana je razlika izme�u navedenih generacija, tj. izgled križanja roditelja i nastanak nove djece koja kasnije popunjavaju nove generacije. Kraj ovog poglavlja daje osvrt na primjene i uspjeh genetskoga programiranja. Genetskim programiranjem dolazi se do novih spoznaja i novih patenata, kao što se može vidjet iz tablice 3.3.