Upload
letruc
View
264
Download
2
Embed Size (px)
Citation preview
Zagreb, lipanj 2009.
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA
ZAVRŠNI RAD br. 956
AUTOMATSKO UPRAVLJANJE U SIMULIRANOJ OKOLINI
Lovro Paić-Antunović
ii
Automatsko upravljanje u simuliranoj okolini. Opisati problematiku automatskog
inteligentnog upravljanja u simuliranoj okolini. Proučiti metodologije strojnog učenja
primijenjene na dotični problem. Ostvariti programski sustav za rješavanje problema
automatskog upravljanja uz pomoć genetskog programiranja. U sustav ugraditi mogućnost
definiranja proizvoljne simulacijske okoline i prikaza puta. Eksperimentalno utvrditi
učinkovitost dobivenih rješenja. Radu priložiti izvorne tekstove programa i rezultate
istraživanja uz potrebna pojašnjenja i dokumentaciju. Citirati korištenu literaturu.
iii
iv
Sadržaj
1. Sažetak ............................................................................................................................... 1 2. Uvod ................................................................................................................................... 2 3. Genetsko programiranje ..................................................................................................... 3
3.1. Temelj genetskog programiranja – evolucija ............................................................. 3 3.2. Križanje, reprodukcija i mutacija u genetskom programiranju .................................. 3
3.2.1. Križanje .............................................................................................................. 4
3.2.2. Reprodukcija ...................................................................................................... 5
3.2.3. Mutacija .............................................................................................................. 5
3.3. Funkcija dobrote (fitness) ........................................................................................... 6 3.4. Tok izvođenja genetskog programa ........................................................................... 7
4. Programska izvedba ........................................................................................................... 8
4.1. Cilj .............................................................................................................................. 8 4.2. Korišteni alati ............................................................................................................. 9 4.3. Detalji implementacije ............................................................................................... 9
4.3.1. Struktura genotipa .............................................................................................. 9
4.3.2. Funkcije robota ................................................................................................. 10
4.3.3. Ostvarenje genetske paradigme ........................................................................ 11
4.3.4. Pregled podesivih parametara izvođenja .......................................................... 14
4.3.5. Primjer pokretanja i analiza rješenja ................................................................ 16
4.3.6. Utjecaj pojedinih funkcija na rješenje .............................................................. 22
4.3.7. Utjecaj odabranih parametara na izvođenje rješenja ........................................ 23
4.3.8. Vrijeme izvođenja ............................................................................................ 25
4.3.9. Nedostatci i prijedlozi za daljnji razvoj ............................................................ 26
5. Zaključak .......................................................................................................................... 28 Literatura .................................................................................................................................. 29
1
1. Sažetak
U radu je objašnjena primjena genetskog programiranja na problem pronalaženja puta u
simuliranoj okolini. Rad se bazira na programskom ostvarenju simulacije kretanja robota za
proizvoljno nacrtanu sobu, odnosno niz prepreka. Programsko ostvarenje bazira se na
„roulette wheel“ selekciji uz podesive parametre izvođenja algoritma. Korišteni genetski
operatori su križanje odnosno „crossover“, te mutacija i reprodukcija. Prvo će biti objašnjena
teorijska pozadina genetskog programiranja općenito, a zatim detaljna analiza izvedbe i
rezultata implementiranog rješenja koja će sadržavati analizu utjecaja parametara algoritma na
pronalaženje rješenja, poznate probleme pri izvođenju, te par primjera izvođenja programa za
zanimljive slučajeve.
2
2. Uvod
Automatsko snalaženje u prostoru veliki je problem današnjice. Kroz povijest su ljudi
imali ideju stvaranja autonomnih vozila sposobnih za vrlo široku paletu problema, krenuvši
od autonomnih robota sposobnih za otkrivanje mina, pilotskih sustava sposobnih za potpunu
kontrolu leta i povećanu sigurnost, pa sve do samostalnih istraživača i ujedno, malih
pokretnih laboratorija sposobnih za istraživanje površine raznih planeta ili cestovnih vozila
sposobnih za izbjegavanje prepreka i poštivanja prometnih znakova. Istraživanja na ovom
području uvelike su doprinijela povećanju sigurnosti u raznim aspektima svakodnevnog
života. Potpuno autonomni robot u stvarnom svijetu ima mogućnosti primanja informacija iz
okoline, operiranja na duže periode bez ljudske pomoći, samostalnog putovanja od točke A do
točke B, izbjegavanja situacija koje su štetne za ljude, okolinu, ili njega samoga te
detektiranje važnih objekata poput ljudi ili vozila. Autonomni robota također mogu sadržavati
mogućnost samostalnog učenja poput npr. učenja novih sposobnosti (bez vanjskog utjecaja
čovjeka), prilagođavanja strategija ovisno o okolini te daljnjeg adaptiranja na istu [1].
Genetsko programiranje jedno je od oruđa pomoću kojih je moguće napasti ovaj problem.
Ono se bazira na procesu evolucije iz prirode, odnosno razvoju koji garantira razmnožavanje
sposobnijih jedinki u populaciji, i samim tim daljnje očuvanje uspješnog genetskog
materijala. Rekombinacijom genetskog materijala dvaju uspješnih roditelja postoji
vjerojatnost da će dijete biti još uspješnije i sposobnije, što daljnjim nastavkom procesa,
garantira razvoj prema sve boljim i boljim rješenjima. Prema tome, rezultat genetskog
programiranja je program koji najuspješnije rješava dani problem.
U ovom radu je objašnjena primjena genetskog programiranja na problem snalaženja u
prostoru. Prvo su detaljnije objašnjeni koncepti genetskog programiranja koji omogućavaju
ovakav pristup, a zatim je naglasak stavljen na programsko ostvarenje koje omogućava
simulaciju za proizvoljno definiran oblik i broj prepreka te podešavanje važnih parametara
koji oblikuju tok pronalaženja najboljeg rješenja.
3
3. Genetsko programiranje
U ovom poglavlju objašnjeni su osnovni principi genetskog programiranja. U prvom
potpoglavlju objašnjen je temelj ideje genetskog programiranja koji je princip evolucije u
prirodi. U drugom potpoglavlju su objašnjeni osnovni operatori genetskog programiranja:
reprodukcija, križanje („crossover“), te mutacija. U trećem potpoglavlju je objašnjena
funkcija dobrote („fitness“). U konačnom četvrtom potpoglavlju, povezani su svi prethodni
dijelovi u smislenu cjelinu te je prikazan osnovni algoritam izvođenja genetskog programa.
3.1. Temelj genetskog programiranja – evolucija
Genetsko programiranje temelji se na principu evolucije iz prirode. Evolucija je proces
promjene genetskog materijala populacije organizama iz generacije u generaciju[2]. Proces
evolucije se temelji na prenošenju genetskog materijala najsposobnijih jedinki iz populacije.
Ovaj proces se zapravo obavlja automatski, jer sposobnije jedinke imaju veću šansu preživjeti
i naći partnera za reprodukciju. Spolnom reprodukcijom dvaju uspješnih roditelja nastaje
dijete čiji genetski kod odgovara kombinaciji genetskih kodova njegovih roditelja. Taj proces
se zove križanje. Genetski kod tako dobivenog djeteta uglavnom također predstavlja vrlo
sposobnu jedinku, makar to ne mora nužno biti slučaj. Drugi proces koji se primjećuje u
evoluciji je mutacija. Mutacijom nazivamo pojavu kojom unutar jedne jedinke dođe do
promjene genetskog materijala uzrokovane radijacijom, virusima, brojnim drugim vanjskim
faktorima, te nekim replikacijama gena. Mutacije su zaslužne za genetsku varijaciju, međutim
istraživanja pokazuju (konkretno, istraživanje muhe „Drosophila melanogaster“[2]) da je oko
70% mutacija zapravo štetno i rezultira lošijim genetskim materijalom, dok ostali slučajevi ili
uopće ne utječu, ili blago poboljšavaju kvalitetu genetskog materijala.
3.2. Križanje, reprodukcija i mutacija u genetskom programiranju
Kao što je već rečeno u poglavlju 1.1., glavni nositelji evolucije su procesi spolne
reprodukcije te mutacija. U ovom poglavlju je objašnjeno kako se ti procesi simuliraju
pomoću računala, te je objašnjena razlika između reprodukcije u prirodi i reprodukcije u
4
genetskom programiranju. Postoje različiti načini reprezentacije genotipa u računalu od kojih
je najučestaliji binarni zapis u kojem svaki bit predstavlja jedan kromosom. Taj je način
korišten za objašnjavanje procesa evolucije u ovom poglavlju, međutim treba naglasiti da se u
ostvarenoj programskoj implementaciji koristi drugačiji zapis.
3.2.1. Križanje
Kao što je već rečeno u poglavlju 1.1., križanje je proces kombiniranja dvaju
roditeljskih genotipa s ciljem stvaranja novog genotipa djeteta. Križanjem u biti simuliramo
spolnu reprodukciju iz biologije. U genetskom programiranju postoji više vrsta križanja, od
kojih su najpoznatije križanje u jednoj i križanje u više točaka.
Križanje u jednoj točki funkcionira na način da se prvo odabere proizvoljan broj
između 1 i broja kromosoma onog roditelja koji ima kraći genetski zapis. U primjeru na slici
3.1 to je drugi roditelj. Zatim se u prvo dijete prepisuju kromosomi prvog roditelja do točke
križanja, te drugog roditelja od točke križanja do kraja njegovog genetskog zapisa. Za drugo
dijete radi se obrnuti postupak, prvo se do točke križanja prepisuju kromosomi drugog
roditelja, a zatim od te točke do kraja genetskog zapisa, kromosomi prvog roditelja.
Slika 3.1 Križanje u jednoj točki
5
Križanje u više točaka slično je križanju u jednoj točki i funkcionira na način da se prvo
odabere više proizvoljnih točaka, a zatim se križanje obavlja na način da se do prve točke
križanja prepisuju kromosomi prvog roditelja, potom od prve točke do druge točke
kromosomi drugog roditelja, te od druge točke do treće točke opet kromosomi prvog roditelja
itd.
Na slici 3.2 pokazan je primjer križanja u 2 točke.
Slika 3.2 Križanje u dvije točke
3.2.2. Reprodukcija
Za razliku od reprodukcije u prirodi, reprodukcija u genetskom programiranju obilježena je
izborom samo jednog roditelja ovisno o njegovoj funkciji dobrote. Tako izabrana jedinka
prepisuje se u novu generaciju. U literaturi se često nalazi naziv „aseksualna reprodukcija“.
Ovaj proces osigurava prelazak najboljih jedinki u sljedeću generaciju te time poboljšava
postupak nalaženja rješenja.
3.2.3. Mutacija
Mutacija u genetskom programiranju se obavlja na način da se u malom broju slučajeva
dogodi da nasumično određeni kromosom mutira, i postane neki drugi. Slika 3.3 pokazuje
primjer mutacije.
6
Slika 3.3 Mutacija jednog kromosoma
3.3. Funkcija dobrote (fitness)
U stvarnom životu teško je odrediti funkciju po kojoj bismo mjerili koliko je stvarno netko
uspješan, zato što različiti ljudi imaju različite ciljeve u životu. Nije moguće reći da postoji
univerzalno pravilo po kojem se rangiraju ljudi, ali kod genetskog programiranja situacija je
drugačija, zato što je poznato točno što se želi postići. Točno i precizno definirana funkcija
dobrote najbitniji je parametar svakog genetskog algoritma. Tako primjerice, ako je cilj
napraviti robota koji posjećuje svaki dio određene sobe, podijelit ćemo sobu na određeni broj
polja i funkciju fitnesa definirati kao broj posječenih polja. Ako je cilj pak napraviti robota
koji skače u vis, funkcija dobrote biti će visina skoka. Dodjeljivanje točnog iznosa funkcije
dobrote za svaku jedinku ključan je proces u genetskom programiranju jer se za daljnju
reprodukciju, mutaciju i križanja odabiru jedinke na način da bolje jedinke imaju veću šansu
biti odabrane, što je temelj evolucije. Bez funkcije dobrote, jedinke bi bile nasumično
izabrane za reprodukciju, mutaciju i križanja čime ne bi bio postignut cilj približavanja
boljem rješenju.
7
3.4. Tok izvođenja genetskog programa
Prvo je potrebno generirati inicijalnu generaciju. To se radi na način da se nasumično
generiraju genotipovi svih jedinki u generaciji. Za neke jednostavnije primjere ili dovoljno
velike populacije moguće je da će već nulta generacija imati dobro rješenje, pa je potrebno
ispitati je li zadovoljen uvjet prekidanja programa. Uvjet prekidanja programa je obično
unaprijed definiran broj generacija izvođenja ili zadovoljeno određeno ponašanje jedinki,
odnosno uspješnost pronađenog rješenja. Često se implementiraju oba mehanizma. Zatim je
potrebno za svaku jedinku u inicijalnoj generaciji odrediti koliko je ona dobra i pridijeliti joj
tu vrijednost. To se radi uz pomoć funkcije dobrote opisane u poglavlju 1.3. Nakon toga se
ulazi u petlju u kojoj se ostaje sve dok se ne generira broj organizama jednak inicijalnoj
populaciji. U petlji se obavlja sljedeći niz naredbi: prvo se generira nasumični broj, zatim se
u ovisnosti o tom broju izabire operator koji će se koristiti. Ako se izabere reprodukcija, bira
se jedna jedinka i prenosi u novu generaciju. Operator križanja funkcionira na način objašnjen
u poglavlju 1.2.1. Bitno je napomenuti da izbor jedinki ovisi o njihovoj uspješnosti te da bolje
jedinke imaju veću šansu biti odabrane. Ovaj proces se ponavlja sve dok se ne postigne uvjet
izlaza iz programa, kada se ispisuje najbolje dobiveno rješenje iz svih generacija.
Indeks generacije:=0;
Kreiraj nasumičnu inicijalnu populaciju;
Ponavljaj dok nije zadovoljen uvjet za prekidanje:
Evaluiraj kvalitetu svake jedinke u populaciji;
i:=0;
Ponavljaj dok god je broj i manji od inicijalne populacije:
Izaberi genetski operator u ovisnosti o vjerojatnostima pojavljivanja;
Izaberi jednog ili dva roditelja ovisno o izabranom genetskom operatoru;
Stvori novu jedinku ili jedinke ovisno o izabranom genetskom operatoru;
Dodaj kreiranu djecu u novu populaciju;
Indeks generacije++;
Prikaži najbolju pronađenu jedinku;
Kraj;
8
4. Programska izvedba
U ovom poglavlju detaljno je objašnjena programska izvedba završnog rada te provedena
analiza dobivenog rješenja. Prvo potpoglavlje opisuje zadani cilj programske izvedbe. Drugo
potpoglavlje ukratko govori koje su tehnologije i alati korišteni pri izradi programske izvedbe.
Treće potpoglavlje opisuje kako je implementirano rješenje, koje su funkcije korištene za
kretanje robota i implementaciju genetskog algoritma, poznate informacije robotu, skeniranje
itd.... Četvrto potpoglavlje daje pregled podesivih parametara pri pokretanju programa. Peto
potpoglavlje prikazuje i analizira primjer pokretanja programa.
4.1. Cilj
Cilj programske izvedbe je pružiti okolinu za testiranje rješenja genetskog
programiranja na problem snalaženja u prostoru. Naglasak je na mogućnosti korisnika da sam
podesi sve relevantne parametre pokretanja postupka pronalaska rješenja, kao i na mogućnost
zadavanja testnog primjera, odnosno, konkretno, crtanja prepreka, koridora itd. za koji
program mora naći rješenje. Cilj simuliranog robota je naći najudaljeniju točku od polazne u
što manje koraka bez zabijanja u okolne prepreke. Udaljenost točaka definirana je kao zračna
udaljenost između istih. Odnos važnosti udaljenosti i broja koraka moguće je zadati pomoću
parametra „Air distance coefficient“ (detaljno objašnjeno u potpoglavlju 2.3). Na slici 4.1
moguće je vidjeti jedan primjer izvođenja programa kako bi se lakše razumio njegov
9
cilj.
Slika 4.1 Primjer izvođenja programa za ilustraciju cilja
4.2. Korišteni alati
Za izradu programske izvedbe korišten je Microsoftov C# programski jezik te „Visual
Studio Team System 2008 Team Suite edition“ razvojna okolina. Za izradu korisničkog
sučelja korištena je WPF (Windows Presentation Foundation) tehnologija. Za pokretanje
programa potrebno je imati instaliran Microsoftov .net framework verziju 3.5.
4.3. Detalji implementacije
4.3.1. Struktura genotipa
Korišteni način zapisa genotipa u programskoj izvedbi jest linearni promjenjive
duljine. To znači da su funkcije slijedno zapisane jedna iza druge te da različite jedinke mogu
sadržavati različit broj funkcija. Važno je napomenuti da slijed zapisa funkcija nije nužno i
10
slijed izvođenja istih zbog funkcija koje mijenjaju tok izvođenja danog programa (za više
detalja pogledati poglavlje 4.3.2).
4.3.2. Funkcije robota
Robot prema uzoru na robota iz knjige Johna R. Koze [3] ima 6 osnovnih funkcija
pomoću kojih ostvaruje svoje kretanje. To su:
• MF („Move Forward“) – ova funkcija pomiče robota za jedan korak u smjeru prema
kojem je robot trenutno pozicioniran. Veličina koraka određena je parametrom
„Forward step“ koji se može podesiti u korisničkom sučelju. Funkcija je programski
ostvarena na način da se traži presjecište između linije smjera gledanja robota i
kružnice radijusa „Forward step“. „Forward step“ je zapravo broj piksela koje robot
pređe pri jednom koraku.
• MB („Move Backward“) – funkcija koja pomiče robota za jedan korak unazad,
odnosno u direktno suprotnom smjeru od smjera trenutne orijentacije robota. Veličina
koraka određena je parametrom („Backward step“). „Move Backward“ je ostvaren
istom funkcijom kao i „Move Forward“ s jedinom razlikom da umjesto točke
presjecišta koja je ispred njega, uzima točku presjecišta iza njega.
• TL („Turn Left“) – funkcija koja rotira robota oko njegove osi za „Turn degrees“
stupnjeva u smjeru obrnutom od kazaljke na satu.
• TR („Turn Right“) – funkcija koja rotira robota oko njegove osi za „Turn degrees“
stupnjeva u smjeru kazaljke na satu.
• AlignAlongLongestDistance – funkcija koja prvo skenira okolinu uz pomoć svih
senzora na robotu, čiji se broj može podesiti modificiranjem parametra „Number of
sensors“, te zatim rotira robota tako da mu je nova orijentacija u smjeru te najdalje
udaljenosti.
• IfObstacleInFront – funkcija koja skenira prostor neposredno ispred robota te, ovisno
o tome da li postoji prepreka ili ne, obavlja sljedeće funkcije. Izraz se evaluira na
način da ako je izmjerena udaljenost prednjeg senzora manja od veličine koraka
unaprijed, onda funkcija evaluira „true“ a u suprotnom evaluira „false“. Kada se izraz
evaluira kao „true“, onda se obavlja neposredno sljedeća funkcija u genotipu i
11
preskače funkcija koja slijedi neposredno iza nje, dok ako se izraz evaluira „false“,
preskače se neposredno sljedeća funkcija i obavlja sljedeća iza nje.
4.3.3. Ostvarenje genetske paradigme
4.3.3.1 Stvaranje početne populacije
Nakon zadavanja parametara pokretanja programa, te crtanja sobe unutar koje se robot
kreće, program kreće sa kreiranjem inicijalne generacije od „Population size“ broja programa.
Generiranje funkcija ovisi o parametrima vjerojatnosti njihova generiranja. Tako npr. ako se
podesi da je vjerojatnost generiranja „Probability of MF“ 1, a vjerojatnost generiranja svih
drugih funkcija 0, program će generirati „Population size“ programa sa proizvoljno
generiranim brojem, između brojeva „Minimum functions“ i „Maximum functions“, MF
funkcija. Takvo pokretanje naravno ne bi imalo smisla. Valja napomenuti da se za
vjerojatnost pojavljivanja određene funkcije može unesti bilo koji cijeli broj, te da zbroj
vjerojatnosti pojavljivanja svih funkcija ne mora iznositi 100. Izbor funkcije temelji se na
udjelu respektivne funkcije u odnosu na sumu vjerojatnosti svih pojavljivanja.
4.3.3.2 Funkcija dobrote
Nakon generiranja pojedine jedinke, određuje joj se funkcija dobrote na način da se
pokrene simulacija određene jedinke, te se nakon izvršavanja programa definiranog njenim
genotipom, ukoliko nije došlo do sudara, računa zračna udaljenost početne i konačne točke
pomnožena sa koeficijentom „air distance coefficient“ od čega se oduzima broj funkcija
potrebnih kako bi se došlo do rješenja. Oduzimanje broja funkcija rješenja nužno je za
pronalaženje rješenja koje simulira kretanje robota u što manjem broju koraka. Pomoću „air
distance coefficient“ parametra u biti je moguće regulirati važnost pronalaska što dalje točke
u odnosu na broj koraka. Što je on veći, bit će važnije pronaći put do dalje točke, dok što je on
manji, bit će važnije pronaći rješenje u malom broju koraka.
4.3.3.3 Izvođenje daljnjih generacija
Tim postupkom završava generiranje inicijalne generacije. Ono se stavlja u generičku
listu svih generacija, posebno se bilježi najbolje rješenje iz generacije (radi ispisa statistike),
te se kreće sa kreiranjem prve generacije potomaka. Proizvoljno odabrani broj određuje prema
parametrima „Reproduction probability“, „Crossover probability“ i „Mutation probability“,
operatore reprodukcije, križanja ili mutacije respektivno. Za izbor jedinki koje ulaze u ove
12
procese, koristi se „roulette wheel“ selekcija. To je selekcija jednostavnog proporcionalnog
odabira, gdje je vjerojatnost izbora svake jedinke točno jednaka njenoj dobroti podijeljenoj sa
zbrojem svih fitnesa u generaciji kao što je prikazano na slici 4.2.
Slika 4.2 Vjerojatnosti izbora za 5 različitih jedinki kojima funkcije dobrote redom iznose 1-15,2-45,
3-25, 4-10 te 5-80
Glavni nedostatak ovakve selekcije jest tendencija prenošenja puno najboljih jedinki u
sljedeću generaciju, čime se narušava raznolikost rješenja, što često uzrokuje zaglavljivanje u
lokalnom maksimumu. Ovaj se problem, u skladu sa očekivanjima, pojavljuje u rezultatima
izvođenja programa kao što je prikazano slikom 4.3.
13
Slika 4.3 Program koji je zaglavio u lokalnom maksimumu
Na slici 4.4 dan je primjer križanja dvaju roditelja u programu. Implementirano je križanje u
jednoj točki prijeloma.
Slika 4.4 Primjer križanja u implementiranom rješenju
Primjer mutacije u programu pokazan je na slici 4.5.
Slika 4.5 primjer mutacije u implementiranom rješenju
Tim postupcima dobivenim jedinkama dodjeljuje se iznos uspješnosti te se one umeću u novu
generaciju. Ovaj postupak se ponavlja sve dok se ne kreira broj novih jedinki jednak broju
14
jedinki u inicijalnoj generaciji, odnosno jednak parametru „population size“. Nakon što je
završen proces kreiranja prve generacije potomaka, ovaj proces se ponavlja sve dok se ne
kreira „Number of generations“ generacija.
4.3.3.4 Skeniranje
Robot sadrži „Num of sensors“ senzora pomoću kojih skenira okolinu. Svaki senzor
funkcionira na način da pošalje pravocrtnu zraku koja mjeri udaljenost do prvog objekta kojeg
pogodi. U programu je to implementirano na način da se za svaki zid sječe li se sa tom
zrakom, te se mjeri udaljenost točke presjecišta tih dviju linija od robota. Na kraju se vraća
samo najkraća udaljenost, kako bismo simulirali senzor koji nema mogućnost skeniranja kroz
zidove. Skeniranje je ključan proces u funkcijama „IfObstacleInFront“ i
„AlignAlongLongestDistance“, jer se u odnosu na informaciju primljenu od senzora odlučuje
o idućem koraku.
4.3.4. Pregled podesivih parametara izvođenja
Tok programa ovisi o 20 podesivih parametara. Na slici 4.7 prikazan je izgled sučelja za
podešavanje parametara. Parametri i njihova značenja su redom:
• Population size – broj jedinki u jednoj generaciji.
• Number of generations – broj generaciji koje će se kreirati prije no što se završi
izvođenje programa.
• Air distance coefficient – koeficijent koji određuje omjer važnosti pronalaska što dalje
točke u odnosu na važnost pronalaska rješenja u što manjem broju funkcija. Što je
koeficijent veći, važnija je zračna udaljenost početne i konačne točke.
• Reproduction probability – vjerojatnost da će se kod izbora operatora pri generiranju
nove generacije izabrati reprodukcija.
• Crossover probability – vjerojatnost da će se kod izbora operatora pri generiranju
nove generacije izabrati križanje.
• Mutation probability – vjerojatnost da će se kod izbora operatora pri generiranju nove
generacije izabrati mutacija.
• Probability of MF – vjerojatnost izbora funkcije MF (Move Forward) pri generiranju
jedinki inicijalne generacije
15
• Probability of MB – vjerojatnost izbora funkcije MB (Move Backward) pri
generiranju jedinki inicijalne generacije
• Probability of TL – vjerojatnost izbora funkcije TL (Turn Left) pri generiranju jedinki
inicijalne generacije
• Probability of TR – vjerojatnost izbora funkcije TR (Turn Right) pri generiranju
jedinki inicijalne generacije
• Probability of Align – vjerojatnost izbora funkcije AlignAlongLongestDistance pri
generiranju jedinki inicijalne generacije
• Prob. of obstacle scan – vjerojatnost izbora funkcije IfObstacleInFront pri generiranju
jedinki inicijalne generacije.
• Minimum functions – minimalan broj funkcija jednog genotipa
• Maximum functions – maksimalan broj funkcija jednog genotipa
• Number of sensors – broj senzora kojima robot percipira okolinu
• Forward step – veličina koraka unaprijed u pikselima
• Backward step –veličina koraka unazad u pikselima
• Turn degrees – kut zakretanja u stupnjevima kod funkcija TL i TR
• Current direction – smjer gledanja robota na početku, prije izvođenja programa. Radi
se zapravo o kutu u stupnjevima, gledano kao da je pogled desno kut od 0 stupnjeva,
prema vrhu prozora 90 stupnjeva, lijevo 180 stupnjeva, a prema dolje 270 stupnjeva.
Moguće je postaviti ovaj parametar na bilo koji broj između 0 i 360
• Radius of robot – veličina robota. Robot je definiran kao kružnica ovdje zadanog
radijusa mjerenog u pikselima.
16
4.3.5. Primjer pokretanja i analiza rješenja
Za detaljnu analizu rješenja, uzet je primjer zadan na slici 4.6 koja također pokazuje i
najbolje pronađeno rješenje u generaciji 25.
Slika 4.6 Testni primjer za analizu, te najbolje rješenje pronađeno u 25. generaciji
Slika 4.7 pokazuje parametre korištene u ovom primjeru.
Slika 4.7 Parametri korišteni u ovom primjeru
17
Najbolji program nulte generacije prikazan je na slici 4.8.
Slika 4.8 Najbolji program nulte generacije
Kretanje robota pokazuje da je došao dosta daleko, no onda se okrenuo i počeo kretati prema
nazad. Najbolji program nulte generacija postigao je fitnes 620,05. Uspio se udaljiti 339,03
piksela od inicijalne pozicije. Zanimljiva je statistika koja pokazuje da se od 1000 programa
nulte generacije, čak njih 983 zabilo u zid. To se dogodilo zato što je na početku robot bio
orijentiran prema zidu, a zadana je velika vjerojatnost generiranja funkcije MF u odnosu na
druge funkcije. Samo su 3 programa uspjela doći do 50% fitnesa programa iz 25. generacije,
dok je njih 8 došlo do 30%. Niti jedan program nije uspio zadovoljiti uvjet 70% fitnesa
najboljeg programa. Najbolji program u nultoj generaciji sastoji se od 58 funkcija. Suma
fitnesa u generaciji je 5610,10 što znači da je prosječan fitnes po jedinki jednak 5,61. Najbolji
program u nultoj generaciji definiran je sljedećim nizom funkcija:
AlignAlongLongestDistance MF IfObstacleInFront MF TR TL MF IfObstacleInFront TR TR
MF MF MF IfObstacleInFront AlignAlongLongestDistance MF MF IfObstacleInFront TL
MF IfObstacleInFront MF MB MF IfObstacleInFront MF MB IfObstacleInFront MF MF
IfObstacleInFront TL TL MF MF MF MF IfObstacleInFront MF MF MB IfObstacleInFront
18
MF TL AlignAlongLongestDistance AlignAlongLongestDistance
AlignAlongLongestDistance IfObstacleInFront IfObstacleInFront MB MF IfObstacleInFront
MF MF MF MF IfObstacleInFront TL.
Izvođenje programa prve generacije prikazano je slikom 4.9.
Slika 4.9 Najbolji program prve generacije
Na slici 4.9 se vidi da je najbolji program već iz prve generacije uspio pronaći rješenje koje je
bolje od najboljeg rješenja u nultoj generaciji. Očigledno je da je rješenje bolje zato što se nije
krenuo vraćati prema mjestu odakle je krenuo. Najbolji program prve generacije uspio je
postići zračnu udaljenost od 449,68 piksela. To je napravio koristeći 84 funkcije te je ostvario
uspješnost iznosa 815,36. Suma svih fitnesa u prvoj generaciji je 1888824, što čini prosjek
fitnesa u generaciji jednakim 188,82. Ovakav nagli skok prosječnog fitnesa dogodio se zbog
vrlo malenog broja robota u prvoj generaciji koji su uspjeli uopće preživjeti. Slika 4.9 također
pokazuje problem najboljeg programa prve generacije, a taj je bespotrebno okretanje na 2
mjesta u sobi. Iz druge generacije 2 programa zadovoljavaju uvjet 70% kvalitete rješenja
najboljeg pronađenog programa iz generacije 25. Čak 119 programa zadovoljava uvjet 50%
kvalitete, njih 305 zadovoljava uvjet 30% kvalitete, a 556 programa rezultiralo je sudarom.
19
Najbolji program prve generacije sastoji se od sljedećih funkcija: MF IfObstacleInFront MF
TR MB TL AlignAlongLongestDistance MF IfObstacleInFront MB MF MF TR MB MF
AlignAlongLongestDistance MF AlignAlongLongestDistance MF MF TL MB MF
IfObstacleInFront MF MB IfObstacleInFront AlignAlongLongestDistance MF MF MF
IfObstacleInFront MF TL IfObstacleInFront MF AlignAlongLongestDistance
IfObstacleInFront AlignAlongLongestDistance TL MB IfObstacleInFront MF MF
IfObstacleInFront MF MB IfObstacleInFront TL MB MB MF AlignAlongLongestDistance
TL IfObstacleInFront TR MB MF TL IfObstacleInFront MB TR IfObstacleInFront
AlignAlongLongestDistance MF MF MF AlignAlongLongestDistance MF TL TL MF TR
IfObstacleInFront MF AlignAlongLongestDistance TL TR TR AlignAlongLongestDistance
IfObstacleInFront MF MF MB.
Najbolji program četvrte generacije prikazan je slikom 4.10.
Slika 4.10 Najbolji program četvrte generacije
Statistika najboljeg rješenja četvrte generacije pokazuje da je program našao točku udaljenu
za 476,93 piksela, međutim, za razliku od prijašnjih rješenja, našao ju je u samo 58 funkcija
čime je postigao fitnes iznosa 895,86. Četvrta generacija već je dosta poboljšana u odnosu na
prijašnje generacije, što se najbolje vidi iz statistike koja pokazuje da je suma svih fitnesa u
populaciji jednaka 310192, što čini prosječan fitnes generacije jednakim 310,19. Također, za
razliku od prijašnjih generacija, u ovoj generaciji je čak 24 posto jedinki ostvarilo 70%
20
kvalitete najboljeg pronađenog programa. Njih 287 ostvarilo je 50% kvalitete, 499 30%, a 437
programa rezultiralo je sudarom. Najbolji program četvrte generacije izgleda ovako:
MF IfObstacleInFront MF TR MB TL AlignAlongLongestDistance MF IfObstacleInFront
MB MF MF TR MB MF AlignAlongLongestDistance MF AlignAlongLongestDistance MF
MF TL MB MF IfObstacleInFront MF MB IfObstacleInFront AlignAlongLongestDistance
MF MF MF IfObstacleInFront MF TL IfObstacleInFront MF AlignAlongLongestDistance
MB MF MB MF IfObstacleInFront MF MF MF IfObstacleInFront TR TL MF TR MF
IfObstacleInFront TL MF MF IfObstacleInFront IfObstacleInFront TR.
Slika 4.11 Najbolji program pete generacije
Slikom 4.11 prikazan je najbolji program pete generacije. Kao što se vidi sa slike, program
pete generacije uspio je pronaći dosta bolje rješenje od programa četvrte generacije. To je
napravio na način da je i bolje krenuo i bolje završio od prethodne generacije. Postigao je
zračnu udaljenost od 543,64 piksela u samo 63 funkcije. Time si je osigurao fitnes iznosa
1024,28. Suma svih fitnesa programa pete generacije iznosi 364101,42, što znači da je
prosječan fitnes generacije jednak 364, 10. U ovoj generaciji se prvi put pojavljuje rješenje
koje je zadovoljilo uvjet 90% kvalitete najboljeg pronađenog programa. 39 programa
zadovoljilo je uvjet od 70%, njih 360 uvjet 50%, 577 programa uvjet od 30%, što znači da je
preostali broj od 364 programa rezultirao sudarom. Najbolji program pete generacije definiran
je sljedećim genotipom: AlignAlongLongestDistance MF IfObstacleInFront MF TR TL MF
21
IfObstacleInFront TR TR MF MF MF IfObstacleInFront AlignAlongLongestDistance MF
MF IfObstacleInFront MF MF TL MB MF IfObstacleInFront MF MB IfObstacleInFront
AlignAlongLongestDistance MF MF MF MF IfObstacleInFront TR TR
AlignAlongLongestDistance MF MB MF MB AlignAlongLongestDistance MF MF MF
IfObstacleInFront MF MF IfObstacleInFront MF TL MF MF MB IfObstacleInFront MF TR
MF MF IfObstacleInFront MF AlignAlongLongestDistance TL AlignAlongLongestDistance.
U generaciji 6 još uvijek je najbolja jedinka ova nađena u prethodnoj generaciji koja se
uspjela reproducirati bez promjene genotipa, međutim već se u sedmoj generaciji to rješenje
izgubi što rezultira smanjenjem fitnesa najboljeg programa generacije kroz idućih par
generacija, ali se i dalje bilježi rast prosječnog fitnesa po jedinkama, te smanjuje broj
programa koji rezultiraju sudarom. Iduće zanimljivo rješenje pojavljuje se u 18. generaciji i
opisano je slikom 4.12.
Slika 4.12 Najbolji program 18. generacije
Program osamnaeste generacije postigao je zračnu udaljenost od 556,87 piksela, i to je
napravio u odličnih 58 funkcija čime je zaslužio fitnes iznosa 1055,75. Međutim važniji
rezultat analize razlika ove generacije i prije analiziranih generacija je u prosječnom fitnesu
generacije koja je dvostruko veća u odnosu na petu generaciju i iznosi 719,97. Također je
zanimljiv podatak da u 18. generaciji 8 jedinki zadovoljava uvjet 90% uspješnosti najboljeg
rješenja, 370 jedinki zadovoljava uvjet 70%, čak 903 jedinke zadovoljavaju uvjet 50%, dok ih
22
956 zadovoljava uvjet 30%. Broj programa koji rezultiraju sudarom u osamnaestoj generaciji
smanjen je na vrlo malenih 44.
Na slici 4.6 nalazi se najbolji pronađeni program u svim generacijama. Taj program
pronađen je u 25. generaciji. Postigao je zračnu udaljenost iznosa 596,64, te je to napravio
koristeći 67 funkcija. Time je pridobio fitnes iznosa 1126,28. Također je zanimljiva i
statistika drugih jedinki 25. generacije. Naime, 25. generacija kolektivno je zaradila fitnes od
719777, što čini prosječan fitnes u generaciji 719,77. 39 jedinki 25. generacije zadovoljilo je
uvjet 90% najboljeg rješenja, njih 435 zadovoljilo je uvjet 70% rješenja, 881 je zadovoljila
uvjet 50% rješenja dok je 913 jedinki zadovoljilo 30% rješenja. Ono što je zanimljivo je da je
u 25. generaciji čak 84 izvođenja programa rezultiralo sudarom. Genotip najboljeg
pronađenog programa u ovom primjeru prikazan je sljedećim funkcijama:
AlignAlongLongestDistance MF IfObstacleInFront MF TR TL MF IfObstacleInFront TR TR
MF MF MF IfObstacleInFront AlignAlongLongestDistance MF MF IfObstacleInFront TL
MF IfObstacleInFront MF MB MF IfObstacleInFront MF MB IfObstacleInFront MF MF
IfObstacleInFront TL TL MF MF MF TL AlignAlongLongestDistance MF
AlignAlongLongestDistance AlignAlongLongestDistance MF MF MF IfObstacleInFront MF
MF IfObstacleInFront AlignAlongLongestDistance MF IfObstacleInFront MF TR TL MF TR
AlignAlongLongestDistance AlignAlongLongestDistance TL IfObstacleInFront TR MF MF
TL MF TL IfObstacleInFront.
Najveći prosječni fitnes ima zadnja odnosno 35. generacija, i on iznosi 787,85.
4.3.6. Utjecaj pojedinih funkcija na rješenje
U slučaju podešavanja opcija na način da je nemoguće generirati funkciju
IfObstacleInFront dobiveni genetski program bi degradirao u genetski algoritam. To bi se
dogodilo zato što ne bi postojala opcija upravljanja tokom izvršavanja pojedinih kromosoma,
odnosno cijeli genotip određene jedinke bi se izvršio slijedno. Genetski algoritam i dalje
uspijeva pronaći dovoljno dobro rješenje, ali gubi se mogućnost ponovne iskoristivosti
programa za drugačije zadane prepreke. Odabir vjerojatnosti izbora funkcija uvelike utječe na
rješenje, ali samo u nekim ekstremnim slučajevima. Na primjer, ako u potpunosti maknemo
mogućnost generiranja funkcije MoveForward, robot će biti prisiljen gibati se unazad kao što
je prikazano na slici 4.13.
23
Slika 4.13 Robot bez mogućnosti kretanja unaprijed
4.3.7. Utjecaj odabranih parametara na izvođenje rješenja
4.3.7.1 Veličina populacije
Kao što je već objašnjeno u poglavlju 4.3.4, parametar Population size definira broj
jedinki unutar jedne generacije što direktno znači i veći diverzitet početne generacije. To je
parametar koji u danoj implementaciji najviše utječe na kvalitetu dobivenog rješenja. Dio
razloga zašto je to tako leži i u izboru selekcijskog algoritma. Budući da selekcija „kotačem
ruleta“ ima problema sa brzim uništavanjem diverziteta, početni veliki broj jedinki ipak
osigurava veći broj proučenih mogućih rješenja, te sporiju degradaciju diverziteta. Na slici
4.14 pokazana su rješenja za isti problem, sa razlikom parametra Population size. Na lijevoj
strani slike je prikazano pokretanje sa veličinom populacije 200, a na desnoj slici sa veličinom
populacije 2000.
24
Slika 4.14 Usporedni test za veličine populacija 200 i 2000
Iz primjera je očigledno da je najbolje rješenje pri pokretanju s populacijom od 2000 jedinki
rezultiralo pronalaskom bolje, odnosno udaljenije točke te da mu je za to bio potreban manji
broj funkcija.
4.3.7.2 „Air distance coefficient“
Air distance coefficient definira važnost odnosa pronalaska što udaljenije točke i
pronalaska rješenja u što manje koraka. Ovaj parametar uvelike utječe na izgled rješenja što je
najbolje vidjeti na slici 4.15 na kojoj se vidi paralelna usporedba pronalaska rješenja za faktor
10 na lijevoj strani slike i za faktor 0,2 na desnoj strani slike.
Slika 4.15 Paralelna usporedba utjecaja faktora Air distance coefficient na izgled rješenja
Program sa Air distance coefficient faktorom jednakim 10, došao je do točke udaljene
632,88 piksela u odnosu na početnu točku, međutim, pri pronalasku tog rješenja iskoristio je
ukupno 78 funkcija. Prosjek udaljenosti po funkciji prema tome iznosi 632,88/78=8,11
25
piksela po funkciji. Program s koeficijentom jednakim 0.2, došao je do točke udaljenje 372,18
piksela, no za to je iskoristio samo 32 funkcije, što čini prosjek udaljenosti po funkciji
jednakim 372,18/32=11,63 piksela po funkciji.
4.3.7.3 Broj generacija
Makar je moguće da se najbolje rješenje nađe već u nultoj generaciji, to najčešće nije
slučaj, i istraživanja pokazuju da pokretanje što većeg broja generacija rezultira pronalaskom
boljih rješenja. Jedan takav usporedni test prikazan je na slici 4.16. Ona pokazuje usporedbu
rješenja pronađenog u 25 generacija (na lijevoj strani slike) s rješenjem pronađenim u 2
generacije (na desnoj strani slike).
Slika 4.16 Usporedba utjecaja broja generacija na kvalitetu rješenja
Program pronađen u 2 generacije dostigao je točku udaljenu 495,47 piksela koristeći 53
funkcije. Čime je, uz Air distance coefficient faktor 3, postigao dobrotu jednaku 1433,41.
Program pronađen u 25 generacija, došao je do točke udaljene 628,21 piksela, koristeći samo
48 funkcija čime je postigao dobrotu jednaku 1836,65.
4.3.8. Vrijeme izvođenja
Vrijeme izvođenja programa uvelike ovisi o različitim faktorima koji oblikuju
izvođenje. Najvažniji faktori koji utječu na izvođenje su broj generacija (Number of
generations), veličina populacije (Population size), broj senzora (Number of sensors), te
prosječan broj funkcija po genotipu (Maximum functions – Minimum functions). Zbog
odabrane metode implementacije pri skeniranju okoline i detekcije sudara, broj nacrtanih
zidova također znatno utječe na vrijeme izvođenja. To se događa zato što se pri skeniranju
26
okoline traži presjek svake zrake sa svakim zidom te zato što se koristi slična metoda za
detekciju kolizije. Ova metoda je izabrana kako bi bilo moguće dinamički, odnosno preko
sučelja, definirati parametar veličine koraka unaprijed (Forward step). Implementacija bi bila
drastično brža da je odabrana metoda koja se inače koristi u detekciji kolizije u 2D sustavima,
odnosno podjela cijelog ekrana na mrežu, te ispitivanje uvjeta da li u određenom trenutku,
robot i zid nastanjuju isti prostor. Takva implementacija bi nužno za sobom povlačila
nemogućnost definiranja parametra veličine koraka naprijed, jer se u jednom koraku ne bi
smjelo proći više mogućih pozicija između početne i krajnje točke, ili interpolaciju svih
pozicija između, što bi bilo znatno kompliciranije za implementirati.
Vrijeme izvođenja naravno ovisi i o računalo na kojem se izvodi. Računalo korišteno
za mjerenje vremena izvođenja prikazanog testnog slučaja sadrži Intel Centrino Duo T7200
procesor takta 2.0GHz te 2GB memorije. Za testni slučaj korištena je veličina populacije
1000, broj generacija 25, raspon broja funkcija od 50 do 100 te 9 senzora u sobi zadanoj sa 4
zida. Provedeno je 5 mjerenja. Rezultati se mogu vidjeti u tablici 4.1.
1. 11,25
2. 11,14
3. 10,95
4. 10,94
5. 9,98
Tablica 4.1 Vrijeme izvođenja programa (u sekundama)
Prosjek duljine izvođenja programa za zadane parametre iznosi 10,85 sekundi.
4.3.9. Nedostatci i prijedlozi za daljnji razvoj
Glavni nedostatak implementiranog rješenja jest nepotpuna iskoristivost pri korištenju
u drugačije zadanom prostoru. Makar bi se program izvođenjem malenog broja novih
generacija vrlo brzo prilagodio promjenama u okolini, zadatak uspješnog pronalaska rješenja
koje bi odgovaralo svim mogućim okolinama nije uspješno ostvaren. Za ostvarenje jednog
takvog sustava bila bi potrebna puno kompliciranija implementacija. Kao proces koji bi
mogao rezultirati takvim ponašanjem predlaže se promjena zapisa genotipa u zapis stablom,
drugačije definiranje funkcija, te jasnija podjela između funkcija korištenih za odabir toka
27
programa i funkcija korištenih za kretanje robota. Također, za daljnji razvoj se predlaže
implementacija znatnog bržeg sistema detekcije kolizija i skeniranja senzorima, opisan u
poglavlju 4.3.8, te također uporaba naprednijih algoritama za definiranje selekcije roditelja i
za samu implementaciju te selekcije. Konkretno, predlaže se implementacija binarnog
pretraživana umjesto slijednog, te implementacija različitih algoritama izbora roditelja, a ne
samo izborom „kotača ruleta“. Ukoliko se stvarno uspije pronaći sistem koji ući pravila
primjenjiva na sve oblike prepreka predlaže se implementacija rješenja pogodna za pokretanje
preko Internet preglednika kako bi što veći broj ljudi sudjelovao u daljnjem razvoju njegove
inteligencije, prvenstveno zato što je provedenim kratkim istraživanjem na par sudionika
postavljena hipoteza da različiti ljudi definiraju dosta različitije prepreke od onih definiranih
samo jednom osobom u više pokretanja programa.
28
5. Zaključak
Genetskim programiranjem dobivene su jedinke koje uspješno obavljaju zadani zadatak
snalaženja u prostoru. Svakom novom generacijom poboljšava se prosječna kvaliteta jedinki.
Uspješno je napravljeno simulacijsko okruženje za provjeru izvođenja rezultata genetskog
programiranja. Zaključeno je da bi se rješenje brzo prilagodilo manjim promjenama u okolini,
međutim za postizanje univerzalnog programa koji bi funkcionirao u svim mogućim
situacijama, bila bi potrebna puno kompleksnija implementacija. Ovoj implementaciji
problem predstavljaju lokalni maksimumi, što je bilo i očekivano, zbog izbora selekcijskog
algoritma „roulette wheel“. Izvođenje genetskog programa ne preporuča se za stvarnu izvedbu
robota zbog kompleksnosti izvođenja, odnosno zbog potrebnog vremena i računalnih resursa
za njegovu izvedbu te također zbog količine loših programa koji bi rezultirali oštećivanjem
robota prije nego li se nađe zadovoljavajući program. Genetsko programiranje uistinu
uspješno oponaša proces evolucije iz biologije u kreiranju sve uspješnijih generacija
programa.
29
Literatura
[1] Wikipedia, the free encyclopedia, Unmanned ground vehicle – autonomus UGV, s Interneta, http://en.wikipedia.org/wiki/Unmanned_Ground_Vehicle, datum pristupa: 10. svibanj 2009.
[2] Wikipedia, the free encyclopedia, Evolution, s interneta, http://en.wikipedia.org/wiki/Evolution, datum pristupa: 13.svibanj 2009.
[3] Koza, J. R.: Genetic Programming – On the Programming of Computers by Means of Natural Selection, MIT Press, Massachusetts, 1992.
[4] Koza, J. R.: Genetic Programming II – Automatic Discovery of Reusable Programs, MIT Press, Massachusetts, 1994.
[5] Koza, J. R.: Genetic Programming III – Darwinian Invention and Problem Solving, MIT Press, Massachusetts, 1999.
[6] Koza, J. R , Genetic Programming flow chart, s interneta, http://www.genetic-programming.com/gpflowchart.html, datum pristupa: 25.svibanj 2009.