Genetikus algoritmusok Mesterséges Intelligencia Genetikus algoritmusok Példa
Genetikus algoritmusok A genetikus algoritmusok olyan keresőalgoritmusok melyek primitív módon reflektálják a természetes evolúció bizonyos folyamatait. A mérnökök és tudósok általában nem sokat törődnek a genetikus algoritmusok biológiai alapjaira, inkább a problémamegoldó képességeikre összpontosítanak.
Genetikus algoritmusok A genetikus algoritmusok az evolúciós számításokhoz taroznak (Evolutionary Computing) – EC, és mint olyanok, a keresési térben a pontok populációjával működnek, nem pedig csak egy potenciális megoldással. A “pontok” mindegyike egy vektor a hipertérben, és egy kandidátust képvisel, vagyis egy potenciális megoldást az adott optimalizációs problémára. A populáció nem más mint vektorok halmaza a hipertérben.
Genetikus algoritmusok Minden vektort a populációban egyednek vagy individuának nevezünk. Az analógia miatt az élő szervezetek genetikai evolúciójával, az egyedet kromoszómának is nevezzük. Minden vektorban (egyedben) az elemek száma egyenlő az adott valós optimalizálási probléma paramétereinek számával.
Genetikus algoritmusok Egy egyszerű (kanonikus) genetikus algoritmus megvaló-sításához a következő műveleteket kell végrehajtani: A populáció inicializációja Minden populációbeli egyed fitneszének a meghatározása A kiválasztott egyedek reprodukciója az új populáció kialakításához Rekombináció (keresztezés) és mutáció genetikus műveletek végrehajtása a populáción Lépések ismétlése a 2. ponttól amíg nem teljesül egy előre meghatározott megállási, illetve kilépési feltétel
Genetikus algoritmusok A genetikus algoritmusokat legkönnyebben egy példán keresztül ismerhetjük meg. Az egyszerű genetikus algoritmus megvaló-sítása nem más mint bitsorozatok másolása, bitsorozatok megváltoztatása, és a bitsorozaton belül az egyes bitek változtatása.
Genetikus algoritmusok A mi példánkban azt az x értéket kell megtalálni amely a következő függvényt fogja makszimizálni a intervallumon Az x csak egész számú értékekre van korlátozva. Az adott függvény egy színuszfüggvény 0-tól π radiánig. A függvény makszimális értéke 1, és ezt az értéket a π/2 pontban éri el, vagyis ekkor x=128.
Genetikus algoritmusok Ebben a példában csak egy változó létezik: x. Feltételezzük, hogy bináris szimbólumkészletet használunk. Először azt kell eldöntenünk, hogy hogyan reprezentáljuk a változót. Mivel az x változó csak a 0-255 intervallumból vehet fel értékeket, logikus hogy minden egyedet egy 8-bites bináris értékkel fogunk reprezentálni.
Genetikus algoritmusok A 00000000 bináris szám a nullát fogja képviselni, míg az 11111111 bináris szám a 255-nek felel meg. Ezután el kell dönteni, hogy hány egyed fogja képezni a populációt. Ez a szám általában néhány tíz és néhány száz között mozog. A mi illusztratív példánkban a populáció 8 egyedből fog állni. A következő lépés a populáció inicializálása. Ez véletlenszerűen történik.
Genetikus algoritmusok Az f(x) az egyed fitnesz-ét (jóságát) jelöli
Reprodukció A fitnesz kiszámítása után, a következő lépés a reprodukció. A reprodukció az új populáció kialakítását jelenti amelyben ugyanannyi egyed lesz mint az előző poulációban. A reprodukció az egyedek kiválasztásával történik a pillanatnyi populációból, méghozzá sztochasztikus kiválasztás módszerével. Minden egyed kiválasztásának a valószínűsége a fitneszétől függ. Minél nagyobb az adott egyed fitnesze, annál nagyobb az egyed esélye a reprodukcióra. A mi példánkban, a kezdeti populációban az összes egyedfitneszének összege 5.083. Ha minden egyes fitneszt elosztunk 5.083-mal, az egyes egyedek normalizált fitneszét kapjuk. A normalizált fitneszek összege 1.
Reprodukció A normalizált fitnesz értékeket a “rulettkerék” eljárásnál használjuk, ahol a rulettkerék minden része (cikke) egy egyednek felel meg. Az egyes cikkek nagysága az egyedek fitnesszétől függ. A rulletkerék forgatásával 8 véletlen számot generálunk 0 és 1 között. Ha a véletlen szám 0 és 0.144 közé esik, az első egyedet választjuk reprodukcióra a pillanatnyi populációból. Ha a véletlen szám 0.144 és (0.144+0.093)=0.237 közé esik, a második egyedet választjuk, és így tovább. Ha a véletlen szám (1-0.128)=0.872 és 1.0 közé esik, akkor az utolsó egyedet választjuk. Minden egyed kiválasztásának valószínűsége a fitneszével arányos.
Reprodukció Megtörténhet (habár annak a valószínűsége nagyon kicsi), hogy a legkisebb fitnesszel rendelkező egyed lesz egymás után mind a 8-szor kiválasztva. Sokkal nagyobb a valószínűsége annak, hogy a nagyobb fitnesszel rendelkező egyedek többször lesznek kiválasztva az új populációba. A nyolc véletlen szám: 0.293, 0.971, 0.160, 0.469, 0.664, 0.568, 0.371, 0.109. Ez rendre a 3, 8, 2, 5, 6, 5, 3, 1 egyedeknek felel meg.
Reprodukció A következő generáció a következő egyedekből áll: 3: 0 1 1 0 0 0 1 1 8: 0 0 1 1 0 1 0 1 2: 1 1 0 1 1 0 0 0 5: 1 0 1 0 1 1 1 0 6: 0 1 0 0 1 0 1 0 1: 1 0 1 1 1 1 0 1
Rekombináció (keresztezés) A populációt először véletlenül kiválasztott páronként rendezzük. Mivel a kiválaszott egyedek sorrendje az előző képről véletlen, a szülőket éppen ilyen sorrendben fogjuk összepárosítani. Minden párra generálunk egy véletlen számot amely azt határozza meg, hogy a keresztezés meg fog-e egyáltalán történni. A példában véletlenszerűen határoztuk meg hogy a 4 párból 3-nál fog a keresztezés megtörténni. A keresztezendő pároknál a keresztezési pontokat véletlenül kell meghatározni.
Rekombináció (keresztezés) A populáció keresztezés előtt, és a keresztezési pontok (a), keresztezés után (b), az x értékei (c) és az f(x) értékei (d) keresztezés után
Mutáció Minden keresztezendő párnál véletlenszerűen választunk két pontot. A kiválasztott két pont között a bitsorozatok részeit kicseréljük. Az utolsó művelet ebben az egyszerű genetikus algoritmusban a mutáció. A mutáció a véletlenül kiválasztott bitek változtatását jelenti. A mutáció valószínűsége állandó a populáció minden bitjére. A mutáció valószínűsége változhat az alkalmazástól és a problémától függően. A mutáció valószínűségének megszokott értékei 0.001 és 0.01 között mozognak.
Mutáció Mivel a mi populációnkban csupán 64 bit van (8 darab 8 bites egyed), nagy a valószínűsége annak, hogy egy bit sem fog változni. Ezért úgy fogjuk tekinteni, hogy a (b) ábrán látható populáció egyben a végső populáció a GA procedúra első iterációja után. A teljes genetikai procedúra végrehajtásával nyrjük az új generációt. A (b) ábrán látható populáció az első generáció a véletlen kezdeti populáció után.
Megjegyzések A fitneszek új összege most 6.313, míg a kezdeti populációban az egyedek összfitnesze 5.083 volt. Az új populációban két olyan egyed is van melyeknek a fitnesze 0.99 felett van. Az új generációban az átlagos és a makszimális fitnesz is növekedett. A populáció a (b) ábráról, és a fitnesz értékek a (d) ábráról most készen állnak egy új reprodukciós, keresztezési és mutálási eljárásra, amely megint egy új populációt fog létrehozni.
Megjegyzések Így újabb és újabb generációk születnek amíg nem teljesül valamilyen kilépési (megállási) feltétel. A kilépési feltétel lehet: előre meghatározott makszimális számú generáció elérése. egy előre meghatározott feltétel teljesülése. meghatározott számú egymást követő generációk száma miközben a fitnesz nem javul.
Változók reprezentálása Az x változó reprezentálására 8-bites bináris értéket használtunk. Viszont, a standard bináris kódolás csak egy lehetőség. Gyakran más kódolási módszerek sokkal alkalmasabbak. Az előző példában a színusz függvény természete az x optimális értékét 128-ra állítja, és akkor a függvény értéke 1.
Változók reprezentálása A 128 bináris reprezentációja 10000000, míg a 127 bináris reprezentációja 01111111. Ez azt jelenti, hogy a fitnesz érték legkisebb változása az összes bit változását idézheti elő a reprezentáción belül. Ez a kódolási mód következménye, és rosszul hat ki a keresés minőségére. Gyakran alkalmasabb a problémát úgy kódolni, hogy az egymást követő értékek Hamming távolsága 1 legyen. Más szóval, az egymást követő értékek csak egy biten különböznek. Egy ilyen kódolási mód a Grey kódolás.
Vége