Commit 1ec1c2bc969588f27fc09e013067326d56789731

  • avatar
  • Oskari Leppaaho <oskari.leppaaho @gm…l.com> (Committer)
  • Fri Aug 29 14:37:53 EEST 2014
  • avatar
  • Oskari Leppaaho <oskari.leppaaho @gm…l.com> (Author)
  • Fri Aug 29 14:37:53 EEST 2014
Kirjoiteltu hieman geneettisestä algoritmista
Latex/gradu.tex
(90 / 29)
  
198198hampurilaisravitolaketjun strategiaa. Strategia on koodattu kolmella
199199bitillä taulukon \ref{tab:gentic_example} mukaisesti.
200200
201Geneettinen algoritmi aloitetaan
201Geneettinen algoritmi aloitetaan muodostamalla joukko yksilöitä
202satunnaisesti. Kulloinkin käsiteltävänä olevaa yksilöjoukkoa kutsutaan
203populaatioksi. Evoluution aikana luodaan vanhan populaation pohjalta
204aina uusi populaatio. Näitä peräkkäisiä populaatioita kutsutaan
205sukupolviksi Ravintolaketjun tapauksessa ensimmäinen sukupolvi voisi
206olla esimerkiksi 001, 100, 101 ja 110. Yksilö 001 tarkoittaisi siis
207hampurilaisravintolaa, jossa on kalliit hinnat, juomana tarjotaan
208viiniä ja palvelu on nopeaa. Seuraavaksi arvioidaan kukin yksilö
209kelpoisuusfunktiolla (engl. \textit{fitness function}). Ravintoloiden
210tapauksessa voidaan harjoittaa liiketoimintaa vaikkapa kuukauden
211verran ja laskea saatu voitto. Tässä esimerkikssä kelpoisuus on
212yksinkertaisesti kunkin strategian koodauksen arvo binäärilukuna.
213Kelpoisuudet on esitetty taulukossa
214\ref{tab:genetic_example_firstgen}.
215
216Seuraavaksi muodostetaan uusi sukupolvi risteyttämällä ensimmäisen
217sukupolven yksilöitä. Risteytystä varten nykyisestä sukupolvesta
218valitaan kaksi yksilöä satunnaisesti rulettivalinnalla, jossa kunkin
219yksilön todennäköisyys tulla valituksi on suoraan verrannollinen
220yksikön kelpoisuuden osuudesta sukupolven yhteenlasketusta
221kelpoisuudesta. Valituksi voivat tulla esimerkiksi yksilöt 101 ja
222110. Seuraavaksi valitaan risteytyskohta satunnaisesti joko
223ensimmäisen ja toisen tai toisen ja kolmannen bitin välistä. Valitaan
224mielenkiinnon vuoksi toisen ja kolmannen bitin väli (ensimmäisessä
225tapauksessa jälkeläiset ovat samat kuin vanhemmat). Risteytys
226toteutetaan katkaisemalla bittijonot risteytyskohdasta ja
227yhdistämällä toisen vanhemman alkuosa toisen loppuosaan ja
228päinvastoin. Tällöin saadaan jälkeläisiksi yksilöt 111 ja 100.
229Risteytystä jatketaan, kunnes uudessa sukupolvessa on riittävästi
230yksilöitä. Toiset uudet yksilöt 100 ja 110 voidaan saada
231risteyttämällä yksilöt 100 ja 110 toisen ja kolmannen bitin kohdalta.
232Tässä risteytyksessä ei syntynyt uusia strategioita.
233
202234\begin{table}
203235 \centering
204\begin{tabular}{|l|c|c|c|}
205 \hline
206 & Hinta & Juoma & Palvelun nopeus\\ \hline
207 1 & Halpa & Coca-Cola & Nopea\\ \hline
208 0 & Kallis & Viini & Hidas\\ \hline%
209\end{tabular}
236 \begin{tabular}{|l|c|c|c|}
237 \hline
238 & Hinta & Juoma & Palvelun nopeus\\ \hline
239 1 & Halpa & Coca-Cola & Nopea\\ \hline
240 0 & Kallis & Viini & Hidas\\ \hline%
241 \end{tabular}
210242 \caption{Hampurilaisravintolaketjun strategia koodattuna
211 binäärijonoksi \parencite{koza1992genetic}}
243 binäärijonoksi \parencite{koza1992genetic}}
212244 \label{tab:gentic_example}
213245\end{table}
214246
247\begin{table}
248 \centering
249 \begin{tabular}{|l|c|c|}
250 \hline
251 & Kelpoisuus & Osuus kokonaisuudesta \\ \hline
252 001 & 1 & 0,06 \\ \hline
253 100 & 4 & 0,25 \\ \hline
254 101 & 5 & 0,31 \\ \hline
255 110 & 6 & 0,38 \\ \hline
256 \end{tabular}
257 \caption{Ensimmäinen sukupolvi hampurilaisravintoloiden
258 strategioita, yksilöiden kelpoisuudet ja niiden osuudet
259 kokonaiskelpoisuudesta }
260 \label{tab:genetic_example_firstgen}
261\end{table}
262
263Risteytyksen jälkeen populaatiolle suoritetaan vielä
264mutaatio-operaatio. Mutaatiossa jokaisella yksilöllä on pieni
265mahdollisuus tulla valituksi mutaatioon. Myös useampi yksilö voidaan
266valita. Mikäli yksilö valitaan mutaatioon, vaihdetaan yksi
267satunnainen bitti yksilöstä ja käännetään bitti päinvastoin ($0
268\rightarrow 1$ tai $1 \rightarrow 0$). Jos mutaatioon valitaan yksilö
269100 ja käännettäväksi bitiksi yksilön toinen bitti, saadaan uudeksi
270yksilöksi 110. Mutaatio-operaation tehtävänä on säilyttää yksilöiden
271erilaisuus, joka valinnan seurauksena vähenee. Toisen sukupolven
272populaatio on taulukossa \ref{genetic_example_secondgen}. Populaation
273keskimääräinen kelpoisuus nousi yhden sukupolven aikana 16:sta 23:een
274ja optimaalinen ratkaisu 111 löydettiin.
275
276\begin{table}
277 \centering
278 \begin{tabular}{|l|c|c|}
279 \hline
280 & Kelpoisuus \\ \hline
281 100 & 4 \\ \hline
282 110 & 6 \\ \hline
283 110 & 6 \\ \hline
284 111 & 7 \\ \hline
285 \end{tabular}
286 \caption{Toinen sukupolvi hampurilaisravintoloiden strategioita
287 kelpoisuuksineen}
288 \label{genetic_example_secondgen}
289\end{table}
290
291Geneettinen algoritmi on kuvattu pseudokoodina algoritmissa
292\ref{alg:geneettinen_algoritmi}. Algoritmia on hieman
293yksinkertaistettu siten, että risteytyksestä tulee vain yksi
294jälkeläinen.
295
215296\begin{algorithm}
216297\begin{algorithmic}
217298
343343 \EndFunction
344344\end{algorithmic}
345345\caption{Geneettinen algoritmi \parencite{russell2010artificial}}
346\label{alg:geneettinen_algoritmi}
346347\end{algorithm}
347
348Geneettinen algoritmi pyrkii
349ongelmanratkaisuun matkimalla luonnonvalinnan ohjaamaa evoluutiota.
350Geneettisessä algoritmissa ratkaisuvaihtoehtoja kutsutaan yksilöiksi,
351ja joukko yksilöitä muodostaa populaation. Ratkaisuvaihtoehdon
352ominaisuudet koodataan jollain tapaa, esimerkiksi käyttäen
353merkkijonoa. Koodatut ominaisuudet muodostavat yksilön kromosomit.
354
355Evoluutio aloitetaan muodostamalla halutun kokoinen populaatio
356satunnaisia yksilöitä. Ratkaisuvaihtoehtojen kelvollisuus arvioidaan
357syöttämällä ne arvostelufunktiolle. Tämän jälkeen muodostetaan uusi
358populaatio risteytys- ja mutaatio-operaatioita käyttäen. Osa vanhasta
359populaatiosta saatetaan kopioida uuteen myös sellaisinaan.
360Risteytyksessä valitaan kaksi vanhempiyksilöä siten, että paremmilla
361ratkaisuvaihtoehdoilla on suurempi todennäköisyys tulla valituiksi.
362Vanhempiyksilöiden ominaisuuksia yhdistelemällä muodostetaan kaksi
363lapsiyksilöä. Lapsiyksilöille suoritetaan vielä jollain
364todennäköisyydellä mutaatio-operaatio, jossa yhtä kromosomia
365muutetaan. Jos kromosomit on koodattu merkkijonona, voidaan
366esimerkiksi arpoa valitun merkin tilalle toinen merkki.
367
368348
369349\section{Geneettinen ohjelmointi}
370350\section{ECJ-kirjasto}