Mivel az utóbbi időben úgy tapasztaltam, hogy rengeteg embernek téves, vagy adott esetben semmilyen fogalma nincs arról, hogy mit is jelent egy evolúciós folyamat, hogyan működik és korunk tudománya miért alkalmazza egyre több helyen. Ebben a postban szeretném az egyik talán legtöbbet használt evolúciós módszert, a genetikus algoritmust bemutatni.
A legfontosabb, amit az elején érdemes kiemelni, hogy ez egy heurisztikus keresési eljárás, ami azt jelenti, hogy általában nagyon nagy adathalmazon keres és nincs semmilyen garancia arra, hogy a végén a legjobb eredményt adja ki. Ezt fontos észben tartani, főleg azoknak, akik abban hisznek, hogy az evolúció által létrejött ember a legtökéletesebb lény. :)
Ahogy a nevében is benne van, a genetikus algoritmusokhoz szükségünk van arra, hogy legyenek gének, melyik leírják (kódolják) az adott egyed tulajdonságait. Ezt a kódot csúnya szóval genotípusnak hívjuk. Mikor az adott egyed kifejlődik, ez a génekben tárolt információ mint tulajdonság jelenik meg, ilyen lehet a szemszín, viselkedés stb.
A szemléletesség kedvéért készítettem egy nagyon egyszerű példát, amiben különböző egyedek közül szeretnénk a legjobbat kiválasztani. Minden egyed rendelkezik egy színnel, egyfajta alakkal és egy alaptermészettel. A környezetet úgy definiálhatjuk, hogy azoknak kedvez, akik sokat mosolyognak, eléggé kerekek és minél pirosabbak. Mondjuk azt, hogy kezdetben a következő véletlenül készül egyedeink vannak:
Miután megvan a kezdeti populáció, alkalmazzunk úgy nevezett genetikus operátort, jelen esetben mutációt, ahol a génállomány egyik tagja véletlenszerűen picit módosul. Tehát készítsünk minden egyedből egy másolatot, de úgy hogy a három tulajdonságból egyet mindig változtassunk meg! Így következő 6 darab egyedet kapjuk:
Miután megcsodáltuk az új egyedeket, válasszuk ki ezek közül azt a hármat, akik a következő generációt fogják alkotni, tehát akik a legjobban ki tudják használni a környezet kedvező erejét: minél kerekebbek, pirosabbak és mosolygósabbak. Némi válogatás után a következő hármat választottuk, mert bennük volt meg a legtöbb "jó" tulajdonság.
Az új egyedeket újra alávetjük a korábban megismert mutációnak, így újabb három taggal bővül a populációnk, amivel meg is kapjuk a második generációt:
Az előző játékot megismételve kapjuk a következő populációt (harmadik generáció), ami már tartalmazza azt az egyedet, ami a legjobban tud alkalmazkodni a környezetéhez, ez pedig a piros, mosolygós kör.
Láthatjuk, hogy egy ilyen végtelenül egyszerű példánál csupán pár lépésben eljutottunk a legjobb megoldáshoz. A valóságban azonban ezt a módszert olyan helyeken alkalmazzák, ahol a paraméterek száma igen magas (tehát sokkal több szín, forma, viselkedés) így a kombinációk száma annyira magas, hogy nem lehet egyszerűen minden variációt megvizsgálni.
És mindez hogy kapcsolódik a robotokhoz? A válasz egyszerű: egy program, ami vezérli a robotot ma már annyira bonyolult, hogy szinte képtelenség leülni és kitalálni, hogy mi a legmegfelelőbb algoritmus, mikor hová forduljon a robot kereke, mire hogyan reagáljon. Ilyenkor jönnek a képbe olyan megoldások, amiket alá lehet vetni evolúciós módszernek hogy egy olyan megoldást kapjunk, ami a lehető legjobban teljesíti a követelményeinket. Ezekről a módszerekről és alkalmazásukról egy későbbi post fog szólni.
kommentek