Szakdolgozat. Miskolci Egyetem. A genetikus algoritmus alkalmazási lehetőségei. Készítette: Biró Szilárd 5. Programtervező informatikus



Hasonló dokumentumok
Mesterséges Intelligencia I. (I602, IB602)

2) = 0 ahol x 1 és x 2 az ax 2 + bx + c = 0 ( a,b, c R és a 0 )

Reiczigel Jenő,

Lineáris programozás. Modellalkotás Grafikus megoldás Feladattípusok Szimplex módszer

Komputer statisztika gyakorlatok

Mesterséges intelligencia, 7. előadás október 13. Készítette: Masa Tibor (KPM V.)

Leggyakrabban használt adatbányászási technikák. Vezetői információs rendszerek

ADATBÁZISKEZELÉS ADATBÁZIS

JANUS PANNONIUS TUDOMÁNYEGYETEM. Schipp Ferenc ANALÍZIS I. Sorozatok és sorok

Ittfoglalomösszea legfontosabbtudnivalókat, részleteka honlapon, illetvea gyakorlatvezetőtől is kaptok információkat.

Széchenyi István Egyetem, 2005

Miskolci Egyetem. Diszkrét matek I. Vizsga-jegyzet. Hegedűs Ádám Imre

Digitális technika VIMIAA01

Egyszerű programozási tételek

Aronic Road Útnyilvántartó program

Általános statisztika II. Kriszt, Éva Varga, Edit Kenyeres, Erika Korpás, Attiláné Csernyák, László

NYILVÁNOS KÖNYVTÁRI KATALÓGUSOK

TERMELÉSMENEDZSMENT. Gyakorlati segédlet a műszaki menedzser szak hallgatói számára. Összeállította: Dr. Vermes Pál főiskolai tanár 2006.

Számítástudomány matematikai alapjai segédlet táv és levelező

Karbantartás. Az ESZR Karbantartás menüjébentudjuk elvégezni az alábbiakat:

BEVEZETÉS AZ ÁBRÁZOLÓ GEOMETRIÁBA

BUDAPESTI KÖZGAZDASÁGTUDOMÁNYI EGYETEM. Puskás Csaba, Szabó Imre, Tallos Péter LINEÁRIS ALGEBRA JEGYZET

LINEÁRIS ALGEBRA PÉLDATÁR MÉRNÖK INFORMATIKUSOKNAK

6. modul Egyenesen előre!

FAUR KRISZTINA BEÁTA, SZAbÓ IMRE, GEOTECHNIkA

Számítógépes döntéstámogatás. Genetikus algoritmusok

A lineáris programozás 1 A geometriai megoldás

Csődvalószínűségek becslése a biztosításban

AutoN cr. Automatikus Kihajlási Hossz számítás AxisVM-ben. elméleti háttér és szemléltető példák február

9. Entitás modulok. Nagy Gusztáv: Drupal 7 alapismeretek Fejlesztői verzió: október 6.

HomeManager - leírás. advix software solutions.

2. Interpolációs görbetervezés

Gráfszínezés adaptív evolúciós algoritmusokkal

Természetes számok: a legegyszerűbb halmazok elemeinek. halmazokat alkothatunk, ezek elemszámai természetes 3+2=5

Fejezetek az abszolút geometriából 6. Merőleges és párhuzamos egyenesek

Analízisfeladat-gyűjtemény IV.

Szakdolgozat. Balázs Ádám Kuk József

BIZONYTALAN ADATOK KEZELÉSE: FUZZY SZAKÉRTŐI RENDSZEREK

8. Mohó algoritmusok Egy esemény-kiválasztási probléma. Az esemény-kiválasztási probléma optimális részproblémák szerkezete

MATEMATIKA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

Juhász Tibor. Lineáris algebra

MATEMATIKA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

SZAKDOLGOZAT. Nagy Gábor

Korszerű raktározási rendszerek. Szakdolgozat

Analízis előadás és gyakorlat vázlat

Kvantumkriptográfia III.

XIII. Bolyai Konferencia Bodnár József Eötvös József Collegium, ELTE TTK, III. matematikus. A véletlen nyomában

8. előadás EGYÉNI KERESLET

Készlet és Számla Kézikönyv

2. feladat Legyenek 1 k n rögzített egészek. Mennyi az. x 1 x 2...x k +x 2 x 3...x k x n k+1 x n k+2...x n

ÁBRÁZOLÓ GEOMETRIA. Csavarvonal, csavarfelületek. Összeállította: Dr. Geiger János. Gépészmérnöki és Informatikai Kar MISKOLCI EGYETEM

MATEMATIKA 9. osztály Segédanyag 4 óra/hét

SZAKDOLGOZAT. Takács László

Elméleti összefoglalók dr. Kovács Péter

Algoritmusok Tervezése. 9. Előadás Genetikus Algoritmusok Dr. Bécsi Tamás

Szeminárium-Rekurziók

MITISZK Miskolc-Térségi Integrált Szakképző Központ

Helyi tanterv. Batthyány Kázmér Gimnázium Matematika emelt ( óra/hét) 9-12 évfolyam Készült: 2013 február

mágnes mágnesesség irányt Föld északi déli pólus mágneses megosztás influencia mágneses töltés

Alkalmazott modul: Programozás

Három dimenziós barlangtérkép elkészítésének matematikai problémái

A poláros fény rejtett dimenziói

MUNKAANYAG. Angyal Krisztián. Szövegszerkesztés. A követelménymodul megnevezése: Korszerű munkaszervezés

MATEMATIKA Kiss Árpád Országos Közoktatási Szolgáltató Intézmény Vizsgafejlesztő Központ

Lineáris Algebra gyakorlatok

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Gráfelmélet II. Gráfok végigjárása

Mesterséges Intelligencia MI

diagnosztika 48 autótechnika 2002/9

3.1. Alapelvek. Miskolci Egyetem, Gyártástudományi Intézet, Prof. Dr. Dudás Illés

Bemenet modellezése II.

Nyugat-magyarországi Egyetem Geoinformatikai Kara. Prof. Dr. Závoti József. Matematika III. 6. MA3-6 modul. A statisztika alapfogalmai

A kvantummechanika általános formalizmusa

MATEMATIKA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

Markers stratégia építő program leírása

IFJÚSÁG-NEVELÉS. Nevelés, gondolkodás, matematika

19. Hasításos technikák (hash-elés)

A 3D képgenerálás komplexitása

elektronikus kitöltés és benyújtás

MATEMATIKA FELADATGYŰJTEMÉNY

Jelalakvizsgálat oszcilloszkóppal

2. Piaci modellek Oligopóliumok

Véletlenített algoritmusok. 4. előadás

Titkosítási rendszerek CCA-biztonsága

EMMI kerettanterv 51/2012. (XII. 21.) EMMI rendelet 2. sz. melléklet Matematika az általános iskolák 5 8.

HELYI TANTERV MATEMATIKA (emelt szintű csoportoknak) Alapelvek, célok

On-line értékelési módszerek II. Lengyelné Molnár Tünde

ÉS TESZTEK A DEFINITSÉG

Működési kockázati önértékelések veszteségeloszlás-alapú modellezése

Érdekes informatika feladatok

ProAnt Felhasználói Útmutató

Matematika évfolyam

OPERÁCIÓKUTATÁS, AZ ELFELEDETT TUDOMÁNY A LOGISZTIKÁBAN (A LOGISZTIKAI CÉL ELÉRÉSÉNEK ÉRDEKÉBEN)

Valószínűségszámítás és statisztika. István Fazekas

EGÉSZSÉGÜGYI DÖNTÉS ELŐKÉSZÍTŐ

Load-flow jellegű feladat a villamos rendszerirányításban

DIPLOMAMUNKA Bir o P eter

Ökonometria. Adminisztratív kérdések, bevezetés. Ferenci Tamás 1 tamas.ferenci@medstat.hu. Első fejezet. Budapesti Corvinus Egyetem

Síklefedések Erdősné Németh Ágnes, Nagykanizsa

Számrendszerek. Átváltás a számrendszerek között: Általában 10-es számrendszerből váltunk tetszőlegesre és tetszőlegest 10-esre.

Bináris keres fák kiegyensúlyozásai. Egyed Boglárka

Átírás:

Szakdolgozat Miskolci Egyetem A genetikus algoritmus alkalmazási lehetőségei Készítette: Biró Szilárd 5. Programtervező informatikus Témavezető: Dr. Körei Attila Miskolc, 2013

Miskolci Egyetem Gépészmérnöki és Informatikai Kar Alkalmazott Matematikai Tanszék Szám: Szakdolgozat Feladat Biró Szilárd (C76HZ6) programtervező informatikus jelölt részére. A szakdolgozat tárgyköre: genetikus algoritmusok A szakdolgozat címe: A genetikus algoritmus alkalmazási lehetőségei A feladat részletezése: A genetikus algoritmus, mint általános kereső eljárás bemutatása. A genetikus algoritmus operátorainak vizsgálata. Alkalmazási lehetőségek felkutatása. Genetikus algoritmussal megoldható keresési feladat programozása. Témavezető(k): Dr. Körei Attila egyetemi docens A feladat kiadásának ideje: 2010.09.28.................................. szakfelelős 2

Eredetiségi Nyilatkozat Alulírott...................................... ; Neptun-kód:................... a Miskolci Egyetem Gépészmérnöki és Informatikai Karának végzős................... szakos hallgatója ezennel büntetőjogi és fegyelmi felelősségem tudatában nyilatkozom és aláírásommal igazolom, hogy.................................................... című szakdolgozatom/diplomatervem saját, önálló munkám; az abban hivatkozott szakirodalom felhasználása a forráskezelés szabályai szerint történt. Tudomásul veszem, hogy szakdolgozat esetén plágiumnak számít: szószerinti idézet közlése idézőjel és hivatkozás megjelölése nélkül; tartalmi idézet hivatkozás megjelölése nélkül; más publikált gondolatainak saját gondolatként való feltüntetése. Alulírott kijelentem, hogy a plágium fogalmát megismertem, és tudomásul veszem, hogy plágium esetén szakdolgozatom visszautasításra kerül. Miskolc,............év............hó............nap................................. Hallgató 3

1. A szakdolgozat feladat módosítása szükséges (módosítás külön lapon) nem szükséges................................................. dátum témavezető(k) 2. A feladat kidolgozását ellenőriztem: témavezető (dátum, aláírás): konzulens (dátum, aláírás):................................................................................. 3. A szakdolgozat beadható:................................................. dátum témavezető(k) 4. A szakdolgozat................... szövegoldalt................... program protokollt (listát, felhasználói leírást)................... elektronikus adathordozót (részletezve)...................................... egyéb mellékletet (részletezve)................... tartalmaz.................................................. dátum témavezető(k) 5. bocsátható A szakdolgozat bírálatra nem bocsátható A bíráló neve:............................................................................................. dátum szakfelelős 6. A szakdolgozat osztályzata a témavezető javaslata:................ a bíráló javaslata:................ a szakdolgozat végleges eredménye:................ Miskolc,......................................................... a Záróvizsga Bizottság Elnöke 4

Tartalomjegyzék 1. Bevezetés 7 1.1. A genetikus algoritmus története..................... 7 2. A genetikus algoritmus működése 9 2.1. Egyedek................................... 9 2.1.1. Bitsorozat.............................. 9 2.1.2. Vektor................................ 9 2.1.3. Permutáció............................. 10 2.2. Populáció.................................. 10 2.3. Fitnesz függvény.............................. 10 2.4. Szelekció................................... 11 2.4.1. Véletlen kiválasztásos szelekció.................. 12 2.4.2. Rátermettség-arányos szelekció.................. 12 2.4.3. Sztochasztikus univerzális mintavétel............... 13 2.4.4. Lineáris rangsorolás......................... 13 2.4.5. Pár-verseny szelekció........................ 13 2.5. Rekombináció................................ 13 2.5.1. Egypontos keresztezés....................... 13 2.5.2. Egyenletes keresztezés....................... 14 2.5.3. Köztes keresztezés......................... 14 2.6. Mutáció................................... 14 2.6.1. Véletlen génenkénti mutáció.................... 14 2.6.2. Véletlen elemi permutáció..................... 14 2.6.3. Inverziós operátor.......................... 15 2.7. Speciális esetek............................... 15 2.7.1. Szimulált hűtés........................... 15 2.7.2. Tabu keresés............................. 15 2.7.3. Sztochasztikus hegymászó..................... 15 2.8. Alkalmazási területek............................ 16 2.8.1. Szélsőérték problémák....................... 16 2.8.2. Gráfalgoritmusok.......................... 16 2.8.3. Játékelmélet............................. 16 2.8.4. Genetikus programozás....................... 16 2.8.5. Tanulási problémák......................... 16 3. Fejlesztői dokumentáció 17 3.1. Felhasználói felület............................. 18 3.1.1. Függvényrajzoló........................... 19 5

3.1.2. Kezelőszervek............................ 20 3.2. A program használata........................... 21 4. Összefoglalás 24 4.1. A genetikus algoritmus előnyei....................... 24 4.2. Hátrányok és korlátok........................... 25 Irodalomjegyzék 26 Adathordozó használati útmutató 27 6

1. fejezet Bevezetés Nagyon sok olyan feladat van, amelyre nem ismert algoritmus, vagy ismert ugyan, de az nem hatékony, nem gyors, vagy éppen nem lehet megkeresni az optimális megoldást. Sok ilyen feladattal találkozhatunk a keresés illetve az optimalizálás témakörében. Olyan feladatoknál, ahol nehéz meghatározni az optimumot, megelégszünk az optimális megoldás egy közelítésével, és ezekre a közelítésekre keresünk hatékony, gyors algoritmust. Ilyenek a genetikus algoritmusok, melyek a természetben lejátszódó folyamatokat modellezik, mégpedig a genetikus öröklődést, az evolúciót, illetve a darwini küzdelmet az életben maradásért. A módszer egyik fő előnye, hogy a számítástechnikában előforduló problémák egy nagyon széles osztályára alkalmazható, ugyanakkor általában nem használ területfüggő tudást, így akkor is működik, ha a feladat struktúrája kevéssé ismert. Ebből a szempontból a problémafüggetlen metaheurisztikák csoportjába tartozik, amelyek közül a legismertebbek a szimulált hűtés, a tabu keresés és a különböző hegymászó keresések. 1.1. A genetikus algoritmus története A genetikus algoritmusok ötlete egyidős a számítógép, illetve a számítógépes programozás megjelenésével. Az alapkoncepció már megjelent az 1950-es években, természetes evolúciókutatással foglalkozó biológusok kívánták elsőként az elméleti eredményeket minél pontosabb szimulációval vizsgálni. Akkor még nem merült fel bennük, hogy a kidolgozott módszerek szélesebb körben is használhatóak. A 60-as évek elején többen egymástól függetlenül kidolgozták az evolúció által inspirált algoritmusaikat, főként függvényoptimalizálásra és gépi tanulásra, de ezek a munkák kevés érdeklődésre tettek szert. 1965-ben Ingo Rechenberg publikálta az evolúciós stratégiák alapjait, ami a genetikus algoritmusok egy rokon ága. Az elméletből még hiányoztak alapvető, ma használt fogalmak, de a terület fejlődésének lökést adott. Nem volt még keresztezés, csak önmagukat reprodukáló egyedek, viszont itt vetődött fel először a populáció fogalma. 1966 egy új irány, az evolúciós programozás születését hozta. A lehetséges megoldásokat ebben a verzióban véges állapotú automaták reprezentálták, egy automata állapotátmenet mátrixának véletlenszerű mutációja hozott létre egy új egyedet, majd az algoritmus a kettő közül jobbnak ítéltet tartotta meg. A keresztezés jelentőségét itt sem ismerték még fel. 7

1.1. A genetikus algoritmus története John Holland és csoportja volt az első, akik hivatalosan bevezették a keresztezés fogalmát, rávilágítva annak előnyeire. A hatvanas évek elejétől dolgozott tanuló rendszereken, eredményeit csak 1975-ben publikálta. Ezek az eredmények tekinthetőek a genetikus algoritmusok ma is használt elméleti alapjainak. A 80-as évek közepére az evolúciós programozás különböző válfajai széles körben használtak voltak. A számítási nagyság növekedésével és az Internet rohamos terjedésével jelentősége és használhatósága széles körben kiteljesedett. Míg az első időkben főként elméleti, napjainkban az élet számos terén alkalmazzák gyakorlati problémák megoldására. A kutató munka a Miskolci Egyetem stratégiai kutatási területén működő Fenntartható Természeti Erőforrás Gazdálkodás Kiválósági Központ / Alkalmazott Anyagtudomány és Nanotechnológia Kiválósági Központ / Mechatronikai és Logisztikai Kiválósági Központ / Innovációs Gépészeti Tervezés és Technológiák Kiválósági Központ keretében valósult meg. 8

2. fejezet A genetikus algoritmus működése A genetikus algoritmus az adott probléma lehetséges megoldásainak egy populációját tartja fenn. A lehetséges megoldások minőségét egy rátermettségi-, vagy más néven fitnesz függvény adja meg. Az aktuális populációból az algoritmus minden lépésben egy új populációt állít elő úgy, hogy a szelekciós operátor által kiválasztott legrátermettebb elemeken (szülőkön) alkalmazza a rekombinációs- és mutációs operátorokat. Az alapgondolat az, hogy általában minden generáció tagjai az előzőnél rátermettebbek, így a keresés folyamán egyre jobb megoldások állnak rendelkezésre. 2.1. Egyedek A feladat lehetséges megoldásait, melyeket egyedeknek (individual) nevezünk, között optimális, kevésbé optimális és teljesen elfogadhatatlan megoldások is lehetnek. A populációban az egyes megoldásokat valamilyen rögzített struktúrában kódolva kell tárolni. E struktúra neve kromoszóma (chromosome, genome). A klasszikus reprezentációs módszerekben a kromoszóma génekből áll, ahol egy gén egy bitet vagy például egy számot, szimbólumot tartalmazhat. A genetikus műveletek, például a keresztezés és a mutáció, a kromoszómákon, illetve azok génjein működnek. Az egyedeket nagy E-vel jelöljük. 2.1.1. Bitsorozat Bitsorozattal reprezentáljuk az egyedeket, ha valamely tulajdonsághalmazzal írjuk le azokat, és mindössze arra vagyunk kíváncsiak, hogy az adott tulajdonság jellemzi-e a példányt, vagy sem. Előnye alacsony tárigénye, illetve, hogy könnyű számításokat végezni vele. 2.1.2. Vektor Másik gyakori módszer a vektoros ábrázolás. Ezt olyan esetekben érdemes használni, ha fontos az egyedek egyes tulajdonságainak mennyiségi értéke is. Vektoros megoldásokkal nagyon sok minden könnyen leírható, és a számítások is jól elvégezhetőek alapvető lineáris algebrai ismeretekkel. Vektorokkal bármely olyan egyedtípus ábrázolható, amelyet fix darabszámú mennyiséggel/költséggel jellemezhető tulajdonság ír le. 9

2.3. Egyedek 2.1.3. Permutáció Sok esetben egy összesség bejárására kell sorrendet adnunk (gráfalgoritmusok, pl. utazó ügynök probléma), ilyenkor a megoldás az elemek egy permutációja lesz. Az ábrázolás itt is valós vektorral történik, a vektor elemei az alapelemek sorszámai lesznek a felsorolás sorrendjében. A populációt nagy P-vel jelöljük. A klasszikus genetikus algoritmusok bitsorozattal, vagy valós vektorral megvalósított genotípusos ábrázolást használnak, de az egyedi probléma ismeretében lehetséges egy másfajta, hatékonyabb megoldás is. 2.2. Populáció Az elemek együttese alkotja a populációt (population), melynek újabb és újabb, időben együtt létező egyedekből álló generációi (generation) jönnek létre az algoritmus futása során. Ez nem csak a lehetséges megoldások egy halmaza, mert egy adott tulajdonságokkal rendelkező egyed többször is benne lehet. A pupuláció méretén a benne található egyedek számát értjük: µ = P. Az algoritmus során a könnyebb számolás miatt gyakori az egyedek egyfajta kódolása. Egy ilyen kódolás adja az egyed genotípusát (genotype). Műveleteket az egyed genotípusával végzünk, a folyamat végén ebből dekódoljuk az optimális megoldást. Az egyedeket leíró tulajdonságok megjelenésének összességét fenotípusnak (phenotype) nevezzük. Felfogható úgy, hogy a fenotípus az egyed valóságban vett absztrakt vagy hétköznapi megjelenése, a genotípus ennek egy leképezése valamely az algoritmus során használható adattípusba. Ezt a leképezést kódoló függvénynek, a kimeneti változóit géneknek (gene), azok adott egyednél felvett értékeit alléloknak (allele) nevezzük. Ezek szerint, a kódoló függvény az egyes egyedek tulajdonságait képezi le génekbe. A genetikus algoritmus minden egyes iterációs lépése újabb és újabb populációkat állít elő. Az iterációs lépések során keletkező populációkat generációknak (generation) hívjuk. Az algoritmus minden generáció során új populációt állít elő az aktuális felhasználásával. Az új egyedek beépülnek a populációba lecserélve annak néhány, vagy akár az összes tagját. Utóbbi esetben generációs (generational) algoritmusról beszélhetünk. Ha a populáció mindössze egy elemű, akkor helybeni (steady state) az algoritmus. Sok esetben szokás az aktuális populáció adott számú, százalékú legjobb példányát automatikusan, változtatás nélkül átvinni az újba. Az ilyen megvalósítást elitistának (elitist) nevezzük. 2.3. Fitnesz függvény A genetikus algoritmusok másik fő összetevője a jósági vagy fitneszfüggvény (fitness function). Ez egy, a lehetséges kromoszómák halmazán értelmezett, általában nemnegatív valós értékkészletű leképezés. Az optimalizálási problémáknál a függvényértékek az egyes kromoszómák által reprezentált megoldások jóságát tükrözik, illetve a keresési problémák megoldásaihoz hasonlóan az adott elem elfogadhatóságát is jelzik. Minél rátermettebb egy elem, annál jobban megközelíti a fitnesz függvény értéke a globális szélsőértéket. A fitnesz függvény megválasztása lehet a legnehezebb feladat, és egyben 10

2.4. Egyedek a legfontosabb is, hiszen ennek segítségével mérjük az egyedek teljesítményét, alkalmasságát. Kiszámolása az algoritmus szempontjából sok időt vesz igénybe, ezért megválasztása jelentős a futási idő szerint is. Ha kromoszóma n bit hosszúságú, akkor a rátermettségi függvény a keresési téren egy n-dimenziós rátermettségi tájképet (fitness landscape) határoz meg. Valós vektorok esetén ez a függvény egy n-dimenziós folytonos valós függvény lesz. A genetikus algoritmus megoldása ekvivalens a rátermettségi tájkép globális szélsőértékének keresésével. 2.4. Szelekció Alapvető fontossággal bír az algoritmus szempontjából, hogy miként jutunk új megoldásokhoz. A meglévő egyedeken végzett műveleteket, amelyek új lehetséges megoldásokat állítanak elő kereső operátoroknak hívjuk. Háromféle operátort különböztetünk meg, melyek mindegyikét, vagy egy részét használjuk az eljárás során. Ezek: a szelekció, rekombináció, és a mutáció. Az egyedkiválasztás, vagy szelekció (selection) operátor az aktuális populációból alkalmas szülőket (párokat) választ, utódnemzés céljából. A kiválasztás alapja az egyes egyedek fitneszértéke. Általában a jobb értékekkel rendelkező elemek kerülnek nagyobb valószínűséggel kiválasztásra. Ezzel a módszerrel utánozza az algoritmus a természetes szelekció mechanizmusát azaz, hogy a jobb tulajdonságokkal rendelkező egyedek tudnak nagyobb valószínűséggel szaporodni. Így ezek utódaiból kerülnek ki a következő generáció egyedei, amelyek szintén jobb tulajdonságokkal fognak bírni. A művelet során a szelekciós állományból (selection pool) választunk bizonyos feltételek szerint egyedeket, és helyezzük a szülői állományba (mating pool). A szelekciós állomány kezdetben általában megegyezik a teljes populációval. A szülői állományt addig kell növelni, amíg az új egyedek létrehozásához elegendő szülő nem kerül bele, ez a genetikus algoritmus esetében klasszikusan megegyezik a populáció méretével. Az egymástól különböző szelekciós metódusok működését összehasonlíthatjuk, értékelhetjük többféle tulajdonsággal. A szelekciós intenzitás (selection intensity) a populáció átlagos rátermettségének változását mutatja a szelekció hatására: E E E Int = P E P ( ) E E P E µ E P Ahol P a szelekcióval létrehozott populációt jelöli. A változatosság elvesztése (loss of diversity) azon egyedek aránya, amelyek nem kerültek kiválasztásra. Azaz: D = {E : E P nem lett kiválasztva} µ Jellemző érték még a szelekciós változatosság (selection variance), amely a régi és új populációk szórásértékeinek aránya: 11

2.4. Egyedek V = E P ( E P E E P ( E E P ) E µ ) E µ Ezen tulajdonságokkal jól vizsgálhatjuk az algoritmusunk szelekciós működését. A szelekciós intenzitás megmutatja, hogy az algoritmus milyen mértékben választja ki a legrátermettebb egyéneket. Ha a változatosság elvesztése túl magas, félő hogy a keresési tér beszűküléséhez és korai, nem feltétlenül globális optimumhoz való konvergenciához vezet, mivel az új populáció túl sok azonos egyedből áll. A variancia ennek pont ellenkezőjét mutatja: nagyobb érték esetén szélesebb keresési térben dolgozhatunk, ami gyorsabb konvergenciát biztosít a globális szélsőértékhez. 2.4.1. Véletlen kiválasztásos szelekció A legegyszerűbb és legkevésbé hatékony szelekció. Gyakorlatilag az aktuális populációból véletlenszerűen választunk szülőket. Lehet ismétléses, vagy ismétlés nélküli. Előbbinél a szelekció során minden egyes lépésnél minden egyed azonos eséllyel kiválasztható, míg az utóbbi esetben a már kiválasztott egyedek nem vesznek részt a további kiválasztásban. Legnagyobb hátránya az, hogy nem veszi figyelembe azt a darwini alapelvet, miszerint a rátermettebb egyedek nagyobb eséllyel érvényesülnek az egyedlétrehozásban. 2.4.2. Rátermettség-arányos szelekció A rátermettség-arányos szelekció (fitness proportionate selection) esetében egy egyed kiválasztásának valószínűsége annál magasabb, minél nagyobb a rátermettsége a populáció átlagához viszonyítva. Visszatevéses szelekció, azaz minden lépésnél mindegyik példány (újra) kiválasztható. A kiválasztás esélye tetszőleges Ê egyednél: p(ê) = F (Ê) F (E) E P Ahol F (E) jelenti az E egyed fitneszértékét. Megvalósítása általában a rulett módszerrel történik, ami az egyik legrégebbi, és leginkább használt szelekciós operátor. Az algoritmus analógiája egy rulettkerék: a kerületén felvesszük az egyedeket p(ê) hosszarányú körcikkekkel. Ahol a golyó megáll, az egyed kiválasztásra kerül. Előnye, hogy könnyen megvalósítható, és figyelembe veszi a szülők rátermettségét. Hátránya, hogy egy nagy rátermettségű egyed aránytalanul sokszor bekerülhet a szülők közé, ezáltal beszőkülhet az algoritmus keresési tere. Ennek elkerülésére szokták a fitnesz függvényt skálázni (scaling) a ϕ(e) = g(f (E)) függvény segítségével. Például, ha a fitnesz függvény exponenciális, akkor egy megfelelő g(x) = c log(x) függvény lineárissá teheti. 2 12

2.5. Egyedek 2.4.3. Sztochasztikus univerzális mintavétel A sztochasztikus univerzális mintavétel (stochastic universal sampling) fitnesz alapú szelekció. A rulett szelekció olyan módosított változata, amely minimalizálja a művelet során az azonos egyedek többszörös kiválasztását. Itt úgy osztjuk fel a rulettkereket, hogy figyelembe vesszük az egyedek várható kiválasztásainak számát: V (Ê) = µ p(ê) A rulett kerületén µ darab mutatót helyezünk, azt egyenlő részekre felosztva. Pörgetés után azt az egyedet választjuk ki, amelyik a legközelebbi mutatóhoz esik pörgésirány szerint. 2.4.4. Lineáris rangsorolás A rangsorolásos szelekció (linear ranking) szintén a fitneszérték alapú módszereknél előforduló szórásbeli hátulütőket kívánja kiküszöbölni. A populáció egyedeit sorbarendezzük rátermettség szerint, kezdve a legrosszabbtól a legrátermettebbig. A sorszámozás egyedi, tehát azonos fitnesz értékű egyedek sorszáma eltérő. Az egyes egyedek kiválasztásának valószínűsége lineárisan függ azok sorszámától: p(e i ) = 1 µ ( η + 2(1 η)(i 1) µ 1 Ahol η a legrosszabb rátermettségű példány kiválasztási valószínűsége (0 η 1), i pedig az egyed sorszáma (1 i µ). A legrátermettebb egyed szelekciós esélye 2 η lesz, a köztes elemek valószínűségei lineárisan eloszlanak a két szélsőérték között. 2.4.5. Pár-verseny szelekció A versengő, vagy pár-verseny szelekció (binary tournament selection) nem fitnesz arányos szelekció. A módszer µ lépéses ciklusból áll. Minden lépésben előre rögzített T (tour) darab elemet választunk ki véletlenszerűen a populációból. Majd az így kapott elemek közül a legrátermettebbet választjuk a szülők közé. Pár-versenyről valójában T = 2 esetén beszélhetünk, ami a leggyakrabban használt paraméterérték. Előnye, hogy kisebb eséllyel veszít a változatosságból, cserébe általánosan kisebb a szelekciós intenzitás, mint a rátermettség arányos metódusoknál. A rekombináció folyamata sztochasztikus genetikus algoritmusok esetén. 2.5. Rekombináció A rekombináció (recombination) operátor két egyed (szülők) reprezentációjából generál új egyedet, egyedeket. Ez a klasszikus biológiai utód létrehozásának felel meg. A genetikus algoritmus alapvető kereső operátora a rekombináció, az új egyedek létrehozásában döntő szerepet játszik. 2.5.1. Egypontos keresztezés Egypontos keresztezésnél (1-point crossover) az egyedeket egy véletlenszerűen kiválasztott i-edik bitnél (1 i n) elvágjuk. Az új egyed az egyik szülő tulajdonságait ) 13

2.6. Egyedek 1,..., i bitig, a másik szülő tulajdonságait (i + 1),..., n-ig örökli. Lehetséges két új egyed (testvérek) létrehozása is: a második keletkező egyed, analóg módon a szülők kromoszómáinak másik feléből áll össze. 2.5.2. Egyenletes keresztezés Egyenletes keresztezés (uniform crossover) használatával az utód egyes génjei a szülők azonos génjeinek valamelyike lesz. Az i-edik utódgén 0,5 eséllyel az egyik vagy a másik szülő azonos génje lesz. Ez alapján átlagosan a gének fele cserélődik ki a szülők között. Formálisan leírva: u i = ap i + (1 a)q i Ahol u i az utód, p i, q i a szülők megfelelő génjeit jelöli, a pedig minden génre véletlenszerően választott együttható {0, 1} halmazból. 2.5.3. Köztes keresztezés A köztes keresztezés (intermediate recombination) az egyenletes keresztezés kissé módosított változata. A különbség annyiban rejlik, hogy az előbb megadott formulában a értéke [ h, 1 + h] intervallumban mozoghat (h 0). Tehát az utód génjeinek értéke szüleik génjeinek egy függvénye lesz, ami azt jelenti, hogy nem közvetlenül a szülői tulajdonságokat örökli. 2.6. Mutáció A mutáció művelete alapvetően úgy működik, hogy egy meglévő kromoszómát kismértékben módosít. Ennek leggyakoribb módja, hogy a gének közül egyet véletlenszerűen kiválaszt, majd ennek értékét egy szintén véletlenszerűen választott másikra cseréli. A mutáció elsődleges funkciója a keresési tér újabb területeinek felkutatása. Éppen ezért a mutáció jelentősége a genetikus algoritmus folyamán csekély, egy tulajdonság megváltoztatásának esélye általában p m 10 3. Ezt úgy kell érteni, hogy a mutáció valószínűsége p m minden egyed, minden génjére. 2.6.1. Véletlen génenkénti mutáció A mutáció (mutation) legegyszerűbb és legkézenfekvőbb formája, hogy az egyes géneket bizonyos valószínőséggel megváltoztatjuk. Bitsorozat esetén szimplán negáljuk a megfelelő értéket, valós vektoroknál az eredeti értéket egy véletlen értékkel helyettesítjük, ügyelve természetesen arra, hogy az új érték értelmezhető legyen az adott pozícíóban. Egy másik verzió szerint találomra veszünk n p m darab gént, és azokat változtatjuk meg. 2.6.2. Véletlen elemi permutáció Egy másik könnyen megvalósítható mutációs algoritmus a véletlen elemi permutáció. Igazából akkor van jelentősége, ha az egyedek permutációkkal vannak ábrázolva, hiszen az esetben eme tulajdonságot nem szabad a mutáció során sem elrontani. Ilyenkor az aktuális permutációt megszorozhatjuk (ij) transzpozícióval (1 i, j n), aminek 14

2.7. Egyedek eredménye egy olyan permutáció lesz, amiben az i-edik és j-edik érték helyet cserél. A mutáció valószínőségét egyedenként vizsgáljuk, egy kiválasztott egyednél akár több elemi permutációt is végrehajthatunk. 2.6.3. Inverziós operátor Az inverziós operátor (inversion operator) a véletlen bitenkénti mutáció egy változata. A mutáció valószínűsége itt is egyedekre vonatkozik. A kiválasztott egyedeknél véletlen (1 i, j n) számokra a i-edik és j-edik bit közötti részt invertáljuk. Ez bitsorozatnál a negációt jelenti. Valós vektoroknál az értelmezési tartomány alapján definiálni kell az inverz fogalmát. 2.7. Speciális esetek Az alapalgoritmus egyes lépéseinek elhagyásával, speciális értelmezéseivel speciális, megkülönböztetett eseteket kaphatunk. Ezek közül a legismertebbek a szimulált hűtés, a tabu keresés és a sztochasztikus hegymászó algoritmusok. 2.7.1. Szimulált hűtés A szimulált hűtés (simulated annealing) esetében a szokásos analógia a fémek edzésének a folyamata, amelynek során a fém lassú hűtés során közel optimálisan rendezett atomi szerkezetet vesz fel. Itt a populáció egyelemű, a kereső operátor kizárólag a mutáció. Ha az új megoldás rosszabb, mint a régi, akkor is elfogadjuk egy bizonyos valószínőséggel, amit a hőmérséklet paraméter szabályoz. Ha a hőmérséklet nulla, az új megoldást csak akkor fogadjuk el, ha nem rosszabb, mint a régi. A hőmérséklet a keresés folyamán fokozatosan csökken. 2.7.2. Tabu keresés A tabu keresés (tabu search) szintén egyelemű populációt használ, a kereső operátor szintén kizárólag a mutáció. A különbség itt is a visszahelyezési függvényben van. A tabu keresés során egy tabulistát tartunk fenn, amely a legutóbb megvizsgált néhány megoldásból áll. A tabulista mérete az algoritmus paramétere. Az új populáció, azaz az új aktuális megoldás kiválasztásához először megnézzük, hogy a mutációval létrehozott új elem szerepel-e a tabulistában. Ha igen, akkor nem fogadjuk el, egyébként, ha nem rosszabb, mint a régi megoldás, akkor elfogadjuk. A régi megoldás tabulistára kerül. Amennyiben elértük a maximális elemszámot a listán, a legrégebbi elemet töröljük. 2.7.3. Sztochasztikus hegymászó A sztochasztikus hegymászó (hill climber) a legegyszerűbb változat. A populáció itt is egyelemű, a kereső operátor pedig a mutáció. Az új megoldás felváltja a régit, ha ugyanolyan rátermett vagy rátermettebb. Látható, hogy ez tulajdonképpen egy klasszikus mohó algoritmusos megvalósítás. Érdekes ezen túl, hogy a sztochasztikus hegymászó lényegében egy fix nulla hőmérsékleten futó szimulált hűtés, vagy egy nulla elemű tabulistát használó tabu keresés, vagy egyelemű populációt használó elitista genetikus algoritmus. Az egyes metaheurisztikák tehát a hegymászó különböző általánosításaiként 15

2.8. Egyedek is felfoghatók. Másrészről ezen a módszereknek különböző kombinációi is használatosak, pl. tabulistát alkalmazó szimulált hűtés, csökkenő mértékű mutációt alkalmazó genetikus algoritmus, stb. 2.8. Alkalmazási területek 2.8.1. Szélsőérték problémák Legnyilvánvalóbb alkalmazási kör, adott függvény, vagy azok rendszerének szélsőérték keresése. Tulajdonképpen itt a fitnesz függvény maga a vizsgált függvény, kiegészítve az egyedre esetleg bizonyos megszorításokkal az értékkészlet, vagy egyéb feltételek alapján. 2.8.2. Gráfalgoritmusok A gráfelmélet számos, sok helyen előforduló NP-teljes problémával ajándékozta meg a matematikus társadalmat. Ilyen pl. az utazó ügynök problémája, az egyes színezési feladatok, hozzárendelési problémák. A genetikus algoritmus implementációk sokszor jobb eredményeket adnak, mint az elméletileg igazolt egyes algoritmusok. 2.8.3. Játékelmélet A játékelmélet tipikusan olyan problémákkal van tele, ahol igen nagy keresési teret kell bejárni. Ezen kívül nem mindig egyszerű magát a játékot formalizálni, viszont ha egy adott helyzetet ki tudunk értékelni (megadható rátermettségi függvény), akkor jól alkalmazhatóak a genetikus algoritmussal rokon módszerek. 2.8.4. Genetikus programozás A genetikus programozás a genetikus algoritmus egy alfaja, programok fejlesztésére használják. Minden egyed egy teljes programkódot ír le, általában a bejárási fákkal reprezentálják. Természetesen a kereső operátorok is eszerint módosulnak, például a mutáció egy formája, ha két ágat kicserélünk egymással a fában. Egyik leggyakoribb alkalmazási terület LISP programkódok készítése. 2.8.5. Tanulási problémák Elvben minden tanulási probléma megadható optimalizálási feladatként, így a genetikus algoritmusnak is sok alkalmazása van a gépi tanulás területén. 16

3. fejezet Fejlesztői dokumentáció A program egy kétváltozós függvény tetszőleges tartományán keres globális szélsőértéket a genetikus algoritmus segítségével. Ebben az esetben a fitneszfüggvény megegyezik a vizsgált függvénnyel, és a populáció egyedei pontok a függvény értelmezési tartományán. A kezdőpopulációt a program egyenletes eloszlással véletlenszerűen generálja ezen az intervallumon, ügyelve arra, hogy az egyedek csak ott keletkezzenek, ahol a függvény értelmezve van. A genetikus algoritmus egyik előnye, hogy az egyes lépések (keresztezés, mutáció, stb.) az adott problémára szabhatóak. Ezáltal megnő az esélye annak, hogy a keresztezés által létrejött új egyedek fitneszértéke jobb lesz az előző populációénál. A keresztezés implementációja itt a köztes keresztezés egy speciális esete, ahol az új egyed a szülők két dimenziós koordinátáinak felezőpontját örökli. Ez a fajta keresztezés feltételezi, hogy a keresett globális szélsőérték nem az intervallum széleinél található, hanem a pontok közrezárják azt. A program az új populáció létrehozásakor minden egyedet keresztez minden egyeddel. Egy n egyedből álló populációban így (n (n 1))/2 új egyed jön létre. Ezeknek a programban megadott százaléka mutációval jön majd létre. A mutáció itt azt arányt adja meg, hogy az új egyedek közül milyen arányban jöjjenek létre véletlenszerű kordinátával keresztezés helyett. Ezt tekinthetjük a teljes populáció mutációjának, mintsem az egyes egyedek fenotípusainak mutációjának. Hogy optimalizálja a keresést, a program már keresztezéskor elveti az életképtelen (értelmezési tartományon kívüli) egyedeket. A keresztezés pszeudokódja: for mit = 0 egyedek száma 2 do for mivel = mit egyedek száma 1 do ujegyed mit és mivel koordinátáinak felezőpontja if random(0, 100) < mutációs arány or ujegyed not értelmezési tartomány then repeat ujegyed véletlenszerű koordináták until ujegyed értelmezési tartomány end if end for end for Miután létrejöttek, az új egyedeket a szülőkkel együtt növekvő sorba rendezi fitnesz- 17

3.1. Felhasználói felület érték szerint, és az n legjobb egyedet tartja meg. Az így kapott egyedek összessége fogja a következő generációt alkotni. Mivel a szülőegyedeket is versenyezteti, ez a program az elitista genetikus algoritmust valósítja meg. Ennek az az előnye, hogy az új generáció fitnesz értéke sosem lehet kisebb az előzőnél, mert egy esetleges rossz generáció nem tudja lerontani a már meglévő jó értékeket. A szélsőérték keresés automatikus, és interaktív módban is futhat. Interaktív módban a program mindig csak egy iterációt hajt végre, azaz egy generációt lép előre, majd megáll. Így megfigyelhetjük az új generáció egyedeit, és nyomot következjük a fitneszértékek változását. A másik mód az automatikus. Ebben a módban a program keresést hajt végre, és csak akkor áll le, hogy a leállási feltételek teljesülnek. A leállási feltétel többféle lehet, a leggyakoribbak az idő- és hibakorlát, illetve a megengedett generációk számának lerögzítése. Mivel a program kisebb tartományokon való keresésre lett tervezve, ezért csak a hibakorlátot lehet megadni. Amennyiben egy új generáció javulása nem halad meg egy hibaküszüböt, a keresés leáll. A generáció fitnesz értékének a benne található legjobb egyed fitnesz értékét tekintjük. A többi egyedet azért nem vesszük figyelembe, mert a szélsőérték megtalálásához elég, ha egyetlen egyed a megfelelő közelségébe kerül. Az új generáció javulásának pszeudokódja: repeat ujf itnessz = populaciof itnessz elozojavulas = javulas javulas = (suly elozojavulas) + abs(ujf itnessz regif itnessz) until javulas > eps Mivel a fitneszérték megegyezik az adott pontban vett függvényértékkel, minimum keresés esetében esetében a fitneszértékek negatívak lesznek. A javuláshoz egy pozitív értéket rendelünk, ami a két generáció fitnesz értéke közötti abszolút eltérést tartalmazza. Ez azért lehetséges, mert az elitista keresés garantálja, hogy az új populáció fitnesz értéke nem lehet rosszabb az előzőnél. Fontos megjegyezni, hogy súlyozva az előző javulást is beleszámítjuk az új generáció javulásába. Erre azért van szükség, hogy a keresés ne ragadjon le egy-egy lokális szélsőértékben. A programban mindkét értéket szabadon paraméterezhetjük. 3.1. Felhasználói felület A program Java nyelven íródott és az IBM által fejlesztett Standard Widget Toolkit-et használja a grafikus elemek megjelenítése. A Swing-gel ellentétben nem képezi részét az alap Java csomagnak, viszont annál gyorsabb és jobban illeszkedik az operációs rendszerre készült nem-java programok kinézetéhez. A program kezelőfelülete három fő részre osztható: a függvényrajzolóra, a kezelőszervekre és egy konzolra, ahol a program kimenete megjelenik. 18

3.1. Felhasználói felület 3.1.1. Függvényrajzoló A program a 2 dimenziós függvényt egy négyzethálós felületként ábrázolja. Az ábrán láthatjuk ennek a felületnek a kavallier axonometriás megjelenítését. Ez az technika párhuzamos vetítést használ, ahol az Y tengely vízszintes, a Z tengely függőleges, az X tengely pedig a kettővel 135 -os szöget zár be. Ezen kívül az Y tengely a felére rövidül. A centrális vetítéseel szemben ez nem ad helyes térbeli képet, viszont könnyen rajzolható, és a mélységet megfelelően érzékelteti. A függvényen türkiz pontok formájában láthatóak az aktuális populáció egyedei. A legmagasabb fitneszértékkel rendelkező egyed pontja világosabb a többinél, hogy könnyebb legyen megkülönböztetni a többitől. Egy új generáció létrejöttekor az ábra mindig frissül, automatikus keresés esetén is. Az ábra tetszőlegesen forgatható, és nagyítható. Mivel a függvény értékkészletéről a rajzoló nem rendelkezik információval, az értékeket a tengely mentén skálázhatjuk az átláthatóság érdekében. A Nézet/Ábra beállításai menüben további megjelenítési beállításokat találhatunk. Itt bekapcsolhatjuk az élsimítást, ami megszünteti a vonalak töredezettségét, de meglehetősen erőforrásigényes. Az ábra felbontását is itt állíthatjuk be, amivel finomíthatjuk a függvény ábrázolásának lépésközét. Erre azért van szükség, mert a rajzoló a függ- 19

3.1. Felhasználói felület vényt diszkrét pontokban ábrázolja, és ezeket köti össze egyenesekkel. A képésköznek megadott számot a program a függvényváltozók értelmezési tartományainak megfelelő arányban osztja ketté az X és Y koordinákhoz. Ha nagy tartományt akarunk ábrázolni, akkor hasznos lehet a felbontás növelése, de ez szintén lassítja a kirajzolást. 3.1.2. Kezelőszervek Ezen a panelen találjuk az összes beállítást, ami az algoritmust vezérli. A könnyebb kezelhetőség érdekében az egybetartozó beállítások címszóval ellátott csoportokba vannak rendezve. A Populáció paraméterei csoportban az algoritmus alapbeállításait tudjuk változtatni. Az egyedek számánál állíthatjuk be, hogy egy populáció hány egyedből álljon. Ez a szám minden populációra érvényes, az újabb generációk egyedszáma is ennyi lesz. Nagyobb tartományhoz érdemes több egyedet felvenni, mert így a szélsőérték is hamarabb eléri a kívánt pontosságot, és a keresés hamarabb véget ér. A nagy egyedszám hátránya, hogy több időt vesz el az egyedek keresztezése, és a fitneszértékek kiszámítása az új populációhoz. A mutációs arány azt adja meg, hogy a populáció egyedeinek hány százalékában engedélyezzük a mutációt. Ezek az egyedek nem keresztezéssel, hanem véletlenszerűen jönnek majd létre, így frissítik a populáció egyedállományát. Többek között ez az, ami a genetikus algoritmust kiemeli a többi hegymászó algoritmus közül. A szélsőértéknél adhatjuk meg, hogy a függvényen minimumot, vagy maximumot keresünk. Ahhoz, hogy az új egyedszám, és szélsőértéktípus érvénybe lépjen új populációt kell létrehozni. A mutáció aránya bármikor tetszőlegesen állítható az algoritmus futása közben. Az Algoritmus vezérlése csoportban tudunk új populációt létrehozni, de az előző populáció kezdőegyedeit is visszaállíthatjuk. Ez hasznos lehet, ha azt akarjuk vizsgálni, hogy a különböző paramétereket (mutáció, leállási feltétel, stb.) változtatása hogyan befolyásolja a keresést. Itt tudjuk az algoritmust lépésenként futtatni, ahol a program egyszerre csak egy új populációt hoz létre, utána pedig megáll. A populáció egyedei, azok (x, y) koordinátája és fitneszértéke egy táblázatban megtekinthetők. 20

3.2. Felhasználói felület A keresés pontossága javítható az egyedszám növelésével, és a leállási feltételnek megadott hibakorlát csökkentésével. Mindkét esetben nő a futási idő, de a közelítő szélsőérték is pontosabb lesz. A szélsőérték keresés csoportban van lehetőség automatikus szélsőérték keresésre. A leállási feltételben egy hibaküszöböt adhatunk meg. Ha ennél kisebb a legjobb egyed javulása két populáció között, akkor a keresés leáll. Megadhatjuk azt is, hogy a program az előző populáció javulását milyen súllyal vegye figyelembe. Ez biztosítja, hogy ha két populáció között nincs jelentős javulás, akkor ne álljon le rögtön a keresés. Az Ábra csoportban az ábra mozgatásához szükséges egérgombok magyarázatát találjuk. A bal egérgombot lenyomva tartva tudjuk forgatni az ábrát. A vízszintes az X, a függőleges az Y tengely menti forgatást jelent. A jobb egérgombbal tudjuk az ábrát a rajzoló területén mozgatni. Az egérgörgő segítségével nagyítható, illetve kicsinyíthető az ábra. Fontos, hogy ez csak akkor működik ha a rajzoló területén van a fókusz. A beállítások változtatása után az ábrába kell kattintanunk, mielőtt ismét nagyítani tudnánk. Ha szeretnék visszakapni a rajz kiindulóállapotát, akkor az egér középső gombjával visszaállíthatjuk. A Függvény beállítások csoportban adhatjuk meg a függvényt, illetve azt, hogy milyen tartományon szeretnénk a keresést végezni. A program csak kétdimenziós függvényeken tud szélsőértéket keresni. Az itt megadott beállítások csak akkor lépnek érvénybe, ha új populációt hozunk létre, de az ellenőrzésük már a beírás közben megtörténik. A z skálázás csúszka csak a megjelenítést befolyásolja. Ezzel tudjuk a z tengely mentén nagyítani, illetve kicsinyíteni a függvény ábráját. 3.2. A program használata A program használatához tekintsük példaként az alábbi függvényt: f(x, y) = (x + 4)2 + 2 y 4 8 A függvény minimumát az x [ 20, 8], y [ 3, 4] tartományban keressük. A program egyéb paramétereit az alapértelmezésen hagyjuk. A keresés eredménye: 2 21

3.2. Felhasználói felület Wolfram Alpha vagy más szimbolikus matematikai szoftver segítségével gyorsan ellenőrizhetjük az eredmény helyességét: A genetikus algoritmus 6 tizedesjegyre kerekítve pontos eredményt adott a függvény minimumára. A szélsőérték helyénél már látható pontatlanság, de a közelítés javítható a populáció egyedszámának növelésével, vagy a leállási feltétel szigorításával. Egy másik teszt futás, egy bonyolultabb függvénnyel: f(x, y) = cos(y 4 ) 2 + 2 x + 2 y x 2 e y 22

3.2. Felhasználói felület Itt a függvény maximumát keressük az x [ 10, 10], y [ 5, 5] tartományon. Maximalizálás a Wolfram Alpha szoftverrel: 23

4. fejezet Összefoglalás 4.1. A genetikus algoritmus előnyei A genetikus algoritmus előnyének legfőképp azt tartják, hogy egy problémafüggetlen metaheurisztika. Ráadásul, ellentétben a legtöbb használt metaheurisztikával, sok esetben jóval gyorsabban eléri a kívánt közelítő eredményt. Globális algoritmus, azaz megfelelően választott kezdőpopuláció és szelekció esetén nagy keresési teret tud bejárni, kicsi az esélye hogy egy probléma valamely lokális optimuma becsapja. Fontos előny, hogy a genetikus algoritmus párhuzamosan működik, azaz egyszerre több megoldást vizsgál a keresési tér több területén. A legtöbb kereső algoritmus egyszerre csak egy lehetséges megoldást tud vizsgálni, és csak egy irányba iterál. Ezeknél egy lokális optimum esetében nincs alternatív választási lehetőség, el kell vetni az addigi eredményeket, és újra kezdeni a teljes eljárást. genetikus algoritmus esetében egy zsákutca könnyen eldobható, más, ígéretesebb irányba folytatva a keresést, ezáltal nagyobb eséllyel juthatunk az optimális megoldáshoz. A párhuzamosság másik előnye, hogy hatalmas méretű keresési terekkel tud dolgozni. Kiválóan alkalmas nemlineáris problémák megoldására, nem ritka az 1000 bitnél is nagyobb tér, azaz ahol a lehetőségek száma 2 1000 10 301 feletti. A feldolgozás során működési elvéből adódóan egy lehetséges megoldás vizsgálatával annak rokonait is feldolgozza, hiszen akár megtart, akár eldob egy megoldást, azzal minősíti a hozzá hasonló megoldásokat is (a tőle nem sokban eltérő fitnesz értékkel rendelkezőket). Felfogható egyfajta sztereotípikus gondolkodásnak is, mivel az egyed tulajdonságaiból következtetünk egy csoport tulajdonságaira. Ezt a tulajdonságot szkéma tételnek (Schema Theorem) nevezzük. Jól teljesít olyan helyzetekben is, ahol a kiértékelő függvény nem szép : bonyolult számolni, nem folytonos, időben változó, esetleg örökölt, vagy számítási hibákkal terhelt. Sokszor okoz gondot, hogy egy optimalizáló eljárás nem tud elég nagy teret bejárni, ezért érzékenyebb lehet a kisebb függvényhibákra is. A genetikus algoritmus egyszerre tudja használni a feldolgozáskor kapott információkat. Az különbözteti meg az egyelemű iterációktól, hogy a többszörös kiértékelés nem szimplán sok egyelemű közelítő lépés sorozata, az egyedek keresztezésével megvalósul a potenciális megoldások közötti információáramlás. Jó keresztezési eljárás választásával elérhető, hogy minél értékesebb információk cseréljenek gazdát az új populáció előállításakor. Végezetül, kiemelhetjük a módszer globalitását: az eredeti probléma ismerete nélkül működik, úgy állít elő megoldásokat, hogy nem használja fel annak tulajdonságait. 24

Ezért kiválóan alkalmazható olyan esetekben, ahol nem tudjuk leírni magát a problémát, de értékelni tudjuk a lehetséges megoldásokat valamilyen szempont szerint. 4.2. Hátrányok és korlátok A genetikus algoritmus természetesen nem mindenható. Sok esetben nem ad optimális megoldást, ellentétben bizonyos problémakörök ismert algoritmusainál, igaz, hogy ilyen esetekben is egy kellően jó megoldást lehet vele gyártani. Bár azt mondjuk, hogy az algoritmus anélkül képes lefutni, hogy ismerné magát a kiindulási problémát, a valóságban ez egyáltalán nem árt. A probléma alapos ismerete nélkül nehéz igazán jó és hatékony rátermettségi függvényt adnunk. Ha a kiértékelés nincs eléggé arányban az elvárásainkkal, akkor nem fogunk jó eredményt kapni, akárhogy is futtatjuk le az algoritmust. Könnyű, viszonylag kis keresési terű problémáknál túl költséges. A genetikus algoritmus nagy előnye, a párhuzamosság hátrány lehet olyan esetben, ha az adott feladat könnyen megoldható hagyományos módszerekkel. Ilyenkor ugyanis nagyságrenddel több kiértékelést végezhetünk, mint más kereső algoritmusok, ráadásul a sztochasztikus működésből adódóan nem feltétlenül fog olyan sebességgel konvergálni az algoritmusunk, mint az erre kidolgozott más módszerekkel. Általánosságban elmondható, hogy kritikus szerepe van a futás illetve az eredmény szempontjából az alapvető paraméterek választásának. Ezek: a populáció mérete, generációk száma, a különböző kereső operátorok, és nem utolsó sorban a kilépési feltételek jó megválasztása. Ahhoz, hogy ezeket finomra tudjuk hangolni, szükséges lehet a probléma szerkezetének mélyebb ismerete, a meglévő sejtések vagy egyéb eredmények felhasználása. Ha másképp nem megy, egyszerű próbálgatással is kereshetünk jobb paramétereket. Felhasználva egy előző futás eredményeit, tudunk arra következtetni, hogy milyen értéken célszerű változtatni egy jobb közelítés elérése érdekében. Sajnos ez nagyban növelheti az algoritmus költségét, mivel lehet, hogy igen sokszor le kell futtatnunk ahhoz, hogy megfelelő pontosságú, elfogadható eredményt kapjunk. 25

Irodalomjegyzék [1] Borgulya István: Evolúciós algoritmusok, Dialógus Campus Kiadó, Pécs, 2004. [2] Álmos Attila Győri Sándor Horváth Gábor Várkonyiné Kóczy Annamária: Genetikus algoritmusok, Typotex Kiadó, Budapest, 2003. [3] Futó Iván: Mesterséges Intelligencia, Aula Kiadó, Budapest, 1999 [4] Gregory J. E. Rawlins, Foundations of Genetic Algorithms, Morgan Kaufmann Publishers, 1991. [5] Jelasity Márk: The Wave Model of Genetic Algorithms, Dept. of Applied Informatics József Attila University, Szeged, Hungary, 1996. [6] Z. Michalewicz: Genetic Algorithms + Data Structures = Evolution Programs, Springer-Verlag, 1992. [7] Standard Widget Toolkit, http://www.eclipse.org/swt/javadoc.php [8] Jeks Function Parser, http://www.eteks.com/jeks/en/doc/index.html [9] Oracle ThinkQuest Library, http://library.thinkquest.org/29483/genetic_ index.shtml [10] The Genetic Programming Notebook, http://www.geneticprogramming.com 26

Adathordozó használati útmutató A CD könyvtárfája: / JRE jre-7u11-windows-i586.exe source genetikus... genetikus.jar A program használatához először telepíteni kell a Java futtatókörnyezetet. A Windows telepítő (jre-7u11-windows-i586.exe) a JRE alkönyvtárban található. Egyéb operációs rendszerekhez a http://java.com oldalról beszerezhető. A program (genetikus.jar) ezután futtathatóvá válik, és az fájlkezelőből dupla kattintásra indul Windows operációs rendszer esetén. Egyéb rendszereken (GNU/Linux, OS X) szükség lehet a program újracsomagolására, mert a JAR fájl tartalmazza a Windows-os SWT csomagot is. A source alkönyvtárban található a program forráskódja, és a hozzá tartozó Eclipse projekt is. 27