Informatikai Rendszerek Tervezése 5. Előadás: Genetikus algoritmusok Illyés László Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT.-5. kurzus 1 1
Tartalom Bevezető A kanonikus genetikus algoritmus A genetikus algoritmusok biológiai alapjai Történelem A genetikus algoritmusok helye az optimalizálásban A genetikus algoritmusok elméleti alapjai Permutációs adatstruktúrák Speciális reprezentációk Saját reprezentációk Könyvészet 2
Bevezető Charles Darwin elmélete és G.J. Mendel statisztikai kísérletei egy minőségi ugrást jelentettek a biológiában. J.D. Watson és F. Crick készítették el először a DNS struktúrát, ahogy ma is ismerjük. A komplexitás elmélet és az operációkutatás nagy hatással voltak a kutatásokra, kimutatva, hogy a valós, komplex problémák nem oldhatók meg polinomiális idő alatt Keresték az olyan algoritmusokat, amelyek modelezni és utánozni tudnák a nagy túlélőt: a Természetet. 3
A kanonikus genetikus algoritmus A problémát a hátizsák problémán keresztül vizsgáljuk, amelyik egy befektetési portfólióról szól. Egy befektetőnek c tőkéje van, amit be szeretne fektetni. Választhat n befektetésből. Az összes lehetséges befektetés értéke nagyobb, mint a tőke, ami rendelkezésére áll. Az i-edik befektetés összege fd i és a várható nyereség b i s i -kiválasztási vektor: s i =1 ha kiválasztjuk az i-edik variáns, másképp s i =0 A matematikai modell: 4
1 ajánlat2 ajánlat3 ajánlat4 ajánlat5 ajánlat6 ajánlat fd i befektetés b i jövedelem O1O2O2O3O3O4O4O5O5O6O Kodifikálás. Egyszerre több kromoszómával (egyeddel) dolgozunk, amelyek populációt alkotnak. Az első generáció általában pszeudó- aleatorikus Az alábbi kodifikáció azt jelenti, hogy a befektető elfogadta a {O1, O2, O5, O6} ajánlatokat, vagyis befektetett egységet és a várható jövedelme 2.105egység. Ha a befektetőnek csak egység befektetni valója van, akkor ez a kromoszóma egy nem érvényes egyedet jelképez. 5
Inicializálás és szelekció Az algoritmus központi eleme a POPULÁCIÓ. Egy populáció a kromoszómák egy halmaza, amelyek a megoldások terében egy lehetséges megoldást kódolnak. Az algoritmus iterációi során újabb egyedek keletkeznek, amelyek egy újabb populációt alkotnak: a következő generációt. Az inicializálás folyamán egy pszeudo-aleatorikus, kezdeti (P 0 ) populációt állítunk elő. Szelekció: – a populáció egyedeiből (kromoszómákból) az algoritmus kiválaszt egyeseket, a jósági értékükkel arányos valószínűséggel, akik szülővé válnak, s amelyek génjeit örökli a következő generáció. 6
A célfüggvény és a fitnessz függvény (fitness function): A fitnessz függvény a célfüggvényből alakul ki. Azt mutatja meg, hogy mennyire jó a kromoszóma által kodifikált megoldás. A kanonikus genetikus algoritmus esetében a fitnessz függvény megegyezik a célfüggvénnyel, vagyis f i = Skáláznunk kell az eredményeket, hogy megállapíthassunk egy relatív jóságot is. 7
A kromoszóma és a populáció-inicializálása private boolean[] structure=new boolean[6]; private Random rand=new Random(); public void init(){ for(int i=0;i<structure.length;i++){ structure[i]=rand.nextBoolean(); } public void compFitness(int InitValues[][]){ TotalSum=0; FitnessValue=0; for(int i=0;i<InitValues[0].length;i++){ if(structure[i]){ TotalSum=TotalSum+InitValues[0][i]; FitnessValue=FitnessValue+InitValues[1][i]; } 8
public static void main(String[] args) { int InitValues[][]=new int[2][6]; initValues[0][0]=2000; initValues[0][1]=2200; initValues[0][2]=2500; initValues[0][3]=3000; initValues[0][4]=3200; initValues[0][5]=3200; initValues[1][0]=300; initValues[1][1]=400; initValues[1][2]=500; initValues[1][3]=600; initValues[1][4]=700; initValues[1][5]=705; int cardPop=50; int cardGen=100; int mutationPercent=1; List Population=new ArrayList(); crmzClass Chromosome; //Az első populáció inicializálása for(int i=0;i<cardPop;i++){ crmzClass=new Chromosome(); crmzClass.init(); Population.add(crmzClass); } 9
for(int i=0;i<cardPop;i++){ //fitness kiszámítása int sumFitness=0; for(int j=0;j<Population.size();j++){ ((Chromosome)Population.get(j)).calcFitness(initValues); sumFitness=sumFitness+((Chromosome)Population.get(j)).getFitnessValue(); ((Chromosome)Population.get(j)).set ScaledFitness(sumFitness) //eredmények skálázása } //kiválasztás //keresztezés //mutáció //reprodukció } P1={ } P2={ } O1={ } O2={ } 10
private List xOver(Chromosome firstParent, Chromosome secondParent, int locus){ boolean vector[],vector2[],intermediate[]; List offspringList=new ArrayList(); //új kromoszóma objektumokat hozunk létre a gyerekeknek Chromosome offSpring=new Chromosome(); Chromosome offSpring2=new Chromosome(); vector=new boolean[n]; vector2=new boolean[n]; intermediate=new boolean[n]; for(int i=0; i<n; i++){ vector[i]=(firstParent.getStructure())[i]; } //vector[]={ } for(int i=0 ;i<n;i++){ vector2[i]=(secondParent.getStructure())[i]; intermediate[i]=(secondParent.getStructure())[i] } //vector2[]=intermediate[]={ } 11
for(int i=0;i<locus;i++){ intermediate[i]=vector[i]; } //intermediate[]={ } for(int i=locus;i<vector.length;i++){ vector2[i]=vector[i];} //vector2[]={ } offSpring.setStructure(intermediate); offSpring2.setStructure(vector2); offspringList.add(offSpring); offspringList.add(offSpring2); return offspringList; 12
A példapopuláció 4 egyedből (kromoszómából) áll. P P P P f i fd i Az eredmények skálázása: ff 1 =1605/( )=0.314 ff 2 =1800/( )=0.352 ff 3 =1705/( )=
Bináris sztringek egypontos keresztezése Keresztezés locusSzülők Gyerekek (offsprings) P1 P2 O1 O2 14
Bináris sztringek kétpontos keresztezése Keresztezés locusok Szülők Gyerekek (offsprings) P1 P2 O1 O2 15
Bináris sztringek uniform keresztezése Szülők Gyerekek (offsprings) P1 P2 O1 O valószínűséggel egyik vagy másik szülőtől 16
Bináris sztringek mutációja Csak egy gén mutálódik A gének egymástól függetlenül mutálódnak P1 O1 P1 O1 17
P1 (első kromoszóma) P2 (második kromoszóma) O1 (első leszármazott) O P P O O Feltételeztük, hogy a kiválasztás a következő kromoszóma-párokat adta {P1, P2} és {P2, P3} Alkalmazva az 1 pontos keresztezést, a következő generáció a következő képpen néz ki, feltételezve, hogy még a 2-es gyerek mutációja az 5-ös génben is megtörtént:
A genetikus algoritmus helye az optimalizálásban optimalizálási eljárások gradiens alapú módszereksztochasztikuskimerítő keresésen alapuló direktindirektDinamikus programozástabu algoritmus szimulált lehűtés evolúciós algoritmusok evolúciós stratégiák genetikus algoritmusok párhúzamossoros Álmos A. et.all, Genetikus algoritmusok, Typotex, Budapest, 2002, pp
Történeti áttekintés -minden rendszer egy olyan populáció kialakítására épül, amely egy adott probléma megoldási lehetőségeit tartalmazza 1965,73 – Rechenberg – evolúciós stratégiák 1966 – Fogel, Owens és Walsh – evolutív programozás 1975 – Holland J. – genetikus algoritmusok – a kanonikus genetikus algoritmus 1992,94 – Koza J.R. – genetikus programozás 20
A genetikus algoritmusok biológiai háttere Miért használható? Sok számítási feladat megoldásakor szükségünk van egy adaptációs lehetőségre, vagyis arra, hogy az algoritmus robusztus legyen változó környezetben is Robotikában, a robotirányításban, meg kell oldani olyan feladatokat, amelyek változó környezetben zajlanak, a program használható kell legyen más felhasználó számára is. A túlélési versenyben, az erősebb egyedeknek (akik jobban megoldanak egy problémát, több energiaforráshoz jutnak) nagyobb az esélyük, hogy szaporodjanak, a gyerekeik örökölni fogják a kromoszóma-állományuk egy részét. 21
A genetikus algoritmus és a biológiai megfelelője BiológiaGenetikus algoritmusok KromoszómaSztring Génjellemző génváltozat (allél)Jellemző értéke Gén helye (locus)Sztring-pozíció GenotípusStruktúra FenotípusEgy megoldás Álmos A. et.all, Genetikus algoritmusok, Typotex, Budapest, 2002, pp
A szaporodás Az egyszerű, vagy a generációs szaporodás: lecseréli a szülő (régi) populációt. Ennek kiegészítése képpen, használatos az elitizmus princípiuma, amelyben a populáció legjobb elemei továbbélnek a következő generációban is. 23
A genetikus algoritmus elméletei A sémaelmélet. (Holland) GA egy komplex keresést végezve bejárja a hipertér particióit. (*10)-egy él, (*1*) egy sík a 3 dimenziós térben. Azon sztring, amely tartalmaz * séma vagy sablon 24
Elméleti alapok A sémák egymással versengenek, hogy megvalósítsák a célfüggvényt (meta-egyedek versengése) Holland szerint az adaptív rendszereknek két fontos tulajdonságuk van: Új területek felfedezése (exploration) A régi adaptációk felhasználása (exploitation) Ezen tulajdonságok használatának egyensúlya jó eredményekhez vezet a megoldások terében. A mutáció ki tudja mozdítani az algoritmust egy lokális optimumból. A felfedezés a mutációs operátor által valósul meg, a kiaknázás pedig a keresztezés operátor által. 25
Más elméleti megközelítések Building block hyphotesis (Goldberg) Markov láncokkal Mechanikai statisztika 26
Átrendező operátorok Permutációkra kidolgozott Az utazóügynök problémát megoldó Egy olyan genetikus anyag, amelyben minden gén más-más információt hordoz- nincs 2 egyforma gén A permutációs jelleg megmarad 27
Átrendező operátorok INVERZIÓ-művelete KTLOSPFH KSOLTPFH “Egy valódi gén funkciója gyakran független annak a kromoszómán belüli pozíciójától (habár egy helyhez tartozó gének gyakran együttműködnek)” A A’A’ 28
Átrendező operátorok PMX-Partially Mixed Crossover Gyerekek (offsprings) A B A’A’ B’ 29
Átrendező operátorok PMX-Partially Mixed Crossover Gyerekek (offsprings) A B A’A’ B’ 30
Átrendező operátorok OX - Order Crossover Gyerekek (offsprings) A B A’A’ B’ 31
Átrendező operátorok OX - Order Crossover Gyerekek (offsprings) A B A’A’ B’ 32
Átrendező operátorok CX - Cycle Crossover Gyerekek (offsprings) A B A’A’ B’ 33
Átrendező operátorok CX - Cycle Crossover Gyerekek (offsprings) A B A’A’ B’ 34
Átrendező operátorok CX - Cycle Crossover Gyerekek (offsprings) A B A’A’ B’ 35
Edge rekombináció A szülők permutáció sorszámai közti szomszédos kapcsolatokat öröklik 36
Átrendező operátorok ERC – Edge Recombination Crossover GDMHBJFIAKEC P1 P2 CEKAGBHIJFMD AG, I, -K BG, -H, J CD, -E, G DC, G, -M E-C, -K FI, -J, M csúcslista Amely elemek 2-szer vannak jelen, külön megjelöljük – jellel. Ezeknek prioritásuk lesz az elkövetkezőkben. 37
Átrendező operátorok ERC – Edge Recombination Crossover GDMHBJFIAKEC P1 P2 CEKAGBHIJFMD GA, B, C, D H-B, I, M IA, F, H, J JB, -F, I K-A, -E M-D, F, H csúcslista Ez a megközelítés akkor állja a helyét, ha szimmetrikus a költségmátrix és az utazó- ügynök vissza kell térjen a bázishelyre 38
Reprezentáció és kódolás Klasszikus, rögzített hosszúságú bináris sztring 2. Egészértékű kódolás Lebegőpontos kódolás 39
Reprezentáció és kódolás Változó hosszúságú kromoszóma Kétdimenziós kromoszóma
Reprezentáció és kódolás 5. Listás kromoszóma ábrázolás 6. Fa-struktúrájú kromoszóma ábrázolás
Reprezentáció és kódolás b c x - a x - + xx ac b Programok kódolása fa-struktúrában 42
MTSP –több utazóügynök probléma Egy kromoszómás technika Két kromoszómás technika 43
MTSP –több utazóügynök probléma Kétrészű kromoszóma technika A kromoszóma első részére lehet alkalmazni bármilyen rekombinációs műveletet. A második részére a kromoszómának ki kell találni egy másfajta keresztezés vagy mutációs műveletet 44