Commit f17a157522a7304c5d3a54afd0d1ebbbf3772107

  • avatar
  • Oskari Leppaaho <oskari.leppaaho @gm…l.com> (Committer)
  • Mon Sep 08 09:57:43 EEST 2014
  • avatar
  • Oskari Leppaaho <oskari.leppaaho @gm…l.com> (Author)
  • Mon Sep 08 09:57:43 EEST 2014
Graduteksti: muokattu viittausta, oikeinkirjoitukskorjauksia

-Viittaus, jossa viitattiin artikkeleihin, joihin oltiin viitattu toisessa
  artikkelissa muokattu viittaamaan vain artikkeliin, joka itse luettu.
-Muitakin mahdollisuuksia olisi ollut, katso Purasen sähköposti
  28.8.
Latex/gradu.tex
(39 / 31)
  
163163
164164\chapter{Evoluutiolaskenta}
165165
166Tässä luvussa käsitellään evoluutiolaskentaan liittyvää teoriaa. Luku
167\ref{sec:evol_tausta} käsittelee evoluutiolaskennan taustaa. Luku
168\ref{sec:geneettinen_ohjelmointi} keskittyy tässä tutkielmassa
169käytettyyn evoluutiolaskennan osa-alueeseen, geneettiseen
170ohjelmointiin. Luku \ref{sec:ECJ-kirjasto} käsittelee tutkielman
171konstruktiivisessa osuudessa käytettyä ECJ-evoluutiokirjastoa
172Java-ohelmointikielelle.
173
174\section{Taustaa} \label{sec:evol_tausta}
175
166176Evoluutiolaskenta on tekoälyyn kuuluva tieteenala, joka käsittelee
167177evoluutiota matkivia optimointialgoritmeja.
168178\parencite{back1997evolutionary}. Evoluutiolaskenta voidaan jakaa
169179kolmeen itsenäisesti kehittyneeseen haaraan, jotka ovat geneettinen
170algoritmi \parencites {holland1962outline} {holland1975adaptation}
171{holland1977cognitive} \relax, evoluutio-ohjelmointi \parencites
172{fogel1962autonomous} {fogel1964organization} \relax ja
173evoluutiostrategiat \parencites {rechenberg1994evolutionsstrategie}
174{rechenberg1994evolutionsstrategieb} {schwefel1975evolutionsstrategie}
175{schwefel1993evolution} \relax \parencite{back1997evolutionary}.
176Evoluutiolaskenta on hyvin intuitiivinen ja yksinkertainen
177ongelmanratkaisutapa, mutta se on hyvin yleisen tason menetelmä ja
178sitä pitää muokata kulloiseenkin ongelmaan sopivaksi.
179\textcite{russell2010artificial}\comref{\ref{com:appeal_of_genetic_algorithms}}
180 huomauttavat olevan epäselvää, johtuuko evoluutiolaskennan suosio
181sen tehokkuudesta vai evoluution mallintamisen tuomasta estetiikasta.
180algoritmi, evoluutio-ohjelmointi ja evoluutiostrategiat.
181\textcite{back1997evolutionary} esittelevät runsaan määrän lähteitä,
182joissa kyseisiä evoluutiolaskennan haaroja on alun perin kehitetty.
183Evoluutiolaskennan tavoitteena on välttää jumiutumista ongelmien
184paikallisesti parhaisiin ratkaisukohtiin, jotta globaalisti paras
185ratkaisu löydettäisiin. Evoluutiolaskenta on hyvin intuitiivinen ja
186yksinkertainen ongelmanratkaisutapa, mutta se on hyvin yleisen tason
187menetelmä ja sitä pitää muokata kulloiseenkin ongelmaan sopivaksi.
188\textcite{russell2010artificial}
189\comref{\ref{com:appeal_of_genetic_algorithms}} huomauttavat olevan
190epäselvää, johtuuko evoluutiolaskennan suosio sen tehokkuudesta vai
191evoluution mallintamisen tuomasta estetiikasta.
182192
183193\comment{At present, it is not clear whether the appeal of genetic
184194 algorithms arises from their performance or from their
185195 æsthetically pleasing origins in the theory of evolution.
186196 \label{com:appeal_of_genetic_algorithms}}
187197
188\section{Taustaa}
189
190198Tässä tutkimuksessa käytettävä menetelmä, geneettinen ohjelmointi
191199pohjautuu lähtökohdiltaan John Hollandin geneettiseen algoritmiin
192200\parencite{holland1975adaptation}. Geneettisessä algoritmissa
203203Yhtä ratkaisuvaihtoehtoa kutsutaan kromosomiksi tai yksilöksi.
204204Yksittäisiä bittejä kutsutaan geeneiksi. \textcite{koza1992genetic}
205205käyttää esimerkkinä ongelmaa, jossa tavoitteena on optimoida
206hampurilaisravitolaketjun strategiaa. Strategia on koodattu kolmella
206hampurilaisravintolaketjun strategiaa. Strategia on koodattu kolmella
207207bitillä taulukon \ref{tab:gentic_example} mukaisesti.
208208
209209Geneettinen algoritmi aloitetaan muodostamalla joukko yksilöitä
210210satunnaisesti. Kulloinkin käsiteltävänä olevaa yksilöjoukkoa kutsutaan
211211populaatioksi. Evoluution aikana luodaan vanhan populaation pohjalta
212212aina uusi populaatio. Näitä peräkkäisiä populaatioita kutsutaan
213sukupolviksi Ravintolaketjun tapauksessa ensimmäinen sukupolvi voisi
213sukupolviksi. Ravintolaketjun tapauksessa ensimmäinen sukupolvi voisi
214214olla esimerkiksi 001, 100, 101 ja 110. Yksilö 001 tarkoittaisi siis
215215hampurilaisravintolaa, jossa on kalliit hinnat, juomana tarjotaan
216216viiniä ja palvelu on nopeaa. Seuraavaksi arvioidaan kukin yksilö
217217kelpoisuusfunktiolla (engl. \textit{fitness function}). Ravintoloiden
218218tapauksessa voidaan harjoittaa liiketoimintaa vaikkapa kuukauden
219verran ja laskea saatu voitto. Tässä esimerkikssä kelpoisuus on
219verran ja laskea saatu voitto. Tässä esimerkissä kelpoisuus on
220220yksinkertaisesti kunkin strategian koodauksen arvo binäärilukuna.
221221Kelpoisuudet on esitetty taulukossa
222222\ref{tab:genetic_example_firstgen}.
354354\label{alg:geneettinen_algoritmi}
355355\end{algorithm}
356356
357\section{Geneettinen ohjelmointi}
358\section{ECJ-kirjasto}
357\section{Geneettinen ohjelmointi} \label{sec:geneettinen_ohjelmointi}
358\section{ECJ-kirjasto} \label{sec:ECJ-kirjasto}
359359
360360\chapter{Keinotekoiset potentiaalikentät}
361361
362362Tässä luvussa tarkastellaan keinotekoisten potentiaalikenttien
363363teoreettista perustaa. Luku \ref{sec:potentiaalikentät_taustaa}
364kertoo potentiaalikenttien historiasta. Luku
364kertoo potentiaalikenttien taustasta. Luku
365365\ref{potentiaalikentät_rts-sovellukset} kertoo potentiaalikenttien
366366sovelluksista RTS-peleissä.
367367
369369
370370Keinotekoiset potentiaalikentät (engl. \textit{artificial potential
371371 field, APF}, tässä tutkielmassa myös pelkkä potentiaalikenttä) on
372kehitetty ratkaisemaan ongelma, jossa agentti valisee reittiä
372kehitetty ratkaisemaan ongelma, jossa agentti valitsee reittiä
373373tavoitteeseensa ympäristössä, jossa on esteitä. Menetelmän tavoitteena
374374on siirtää optimaalisen reitin valinta korkean tason
375375suunnitteluongelmasta matalan tason kontrollin vastuulle
378378ympäristön havainnoista johdetaan suoraan suoritettava toiminta
379379\parencite{balch1993avoiding}\comref{\ref{com:reactions}}. Näin ollen
380380muistia säästyy, kun järjestelmän ei tarvitse ylläpitää sisäistä
381mallia ympäristöstään \parencite{balch1993avoiding}
382\comref{\ref{com:reactive_minimize_memory}}. Potentiaalikenttien
383suorituskyky mahdollistaa reaaliaikaisen toiminnan muuttuvassa
384ympäristössä
385\parencite{balch1993avoiding}\comref{\ref{com:real-time}}. Sen
386vahvuuksia ovat myös yksinkertaisuus sekä intuitiivinen tapa laskea
387reittiä valittaessa huomioitavien kohteiden yhteisvaikutus.
381mallia ympäristöstään
382\parencite{balch1993avoiding}\comref{\ref{com:reactive_minimize_memory}}.
383 Potentiaalikenttien suorituskyky mahdollistaa reaaliaikaisen
384toiminnan muuttuvassa ympäristössä
385\parencite{balch1993avoiding}\comref{\ref{com:real-time}}. Sen
386vahvuuksia ovat myös yksinkertaisuus sekä intuitiivinen tapa laskea
387reittiä haettaessa huomioitavien kohteiden yhteisvaikutus.
388388
389389\comment{Robot collision avoidance has been a component of higher
390390levels of control [...]. It has been treated as a planning problem
402402operate in real-time and in changing environments
403403\label{com:real-time}}
404404
405Termiä keinotekoiset potentiaalikentät käytti ensimmäisenä
405Termiä keinotekoiset potentiaalikentät käytti ensimmäisenä
406406\textcite{khatib1986real}. Khatib käytti APF:iä robottikäsivarren
407407liikuttamiseen ympäristössä, jossa oli esteitä. Khatibin metodissa
408408esteet aiheuttavat robottikäsivarren osiin virtuaalisen voimakentän,
421421olevaa mallia ulkopuolisesta maailmasta. Arkin yhdisti % TODO:
422422% Lähdeviittaus skeemasta (mm. wikipedia)
423423eri kohteiden vaikutuksen summaamalla kohteiden aiheuttamat
424nopeusvektorit yhteen. Arkinin menetelmässä laskettaan vain suunta ja
424nopeusvektorit yhteen. Arkinin menetelmässä lasketaan vain suunta ja
425425nopeus, johon robotin tietyllä hetkellä tulisi liikkua. Koko
426426potentiaalikenttää ei lasketa, jotta laskentatehoa säästyisi. Kuviossa
427427\ref{fig:puoleensa_vetava_potentiaalikenttä} on esimerkki puoleensa
539539yksiköiden jääminen jumiin maaston esteisiin ja muihin esteisiin,
540540kuten omiin rakennuksiin. Tähän auttoi potentiaalikenttien resoluution
541541tarkentaminen 8x8 pikselin tarkkuudesta 1x1 pikselin tarkkuudelle.
542Aiemmassa versiossaan botista \textcite{hagelback2008using}
542Aiemmassa versiossaan botistaan \textcite{hagelback2008using}
543543ajattelivat, että resoluution kasvattaminen olisi ollut
544544suorituskyvylle liian suuri vaatimus. 1x1 pikselin resoluution
545545mahdollistaakseen he laskivat nyt koko potentiaalikentän sijaan