genetski algoritmi - Oddelek za matematiko
Transcription
genetski algoritmi - Oddelek za matematiko
UNIVERZA V MARIBORU ˇ PEDAGOSKA FAKULTETA MARIBOR ODDELEK ZA MATEMATIKO Andrej Taranenko GENETSKI ALGORITMI Diplomsko delo MARIBOR, 2001 ZAHVALA Mentorju dr. Aleksandru Veselu se iskreno zahvaljujem za skrbno spremljanje ter pomoˇc pri izdelavi diplomskega dela. Zahvaljujem se tudi starˇsem, sestri in njeni druˇzini ter babici za vsestransko pomoˇc na moji izobraˇzevalni poti. Prav tako se zahvaljujem vsem prijateljem, saj so mi stali ob strani, ko sem jih potreboval. Kazalo 1 Uvod 7 2 Osnove genetskih algoritmov 2.1 Osnovni pojmi . . . . . . . . . . . . . . . . 2.2 Definicija enostavnega genetskega algoritma 2.3 Funkcija uspeˇsnosti . . . . . . . . . . . . . . 2.4 Razmnoˇzevanje . . . . . . . . . . . . . . . . 2.4.1 Kriˇzanje . . . . . . . . . . . . . . . . 2.4.2 Mutacija . . . . . . . . . . . . . . . . 2.5 Kako delujejo genetski algoritmi? . . . . . . 2.6 Primerjava z drugimi tehnikami . . . . . . . 2.6.1 Grobo in nakljuˇcno iskanje . . . . . . 2.6.2 Metode plezanja v hrib . . . . . . . . 2.6.3 Algoritem ohlajanja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 9 10 11 12 12 14 14 26 26 26 27 3 Matematiˇ cno ozadje genetskih algoritmov 29 3.1 Sheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.2 Osnovni izrek o genetskih algoritmih . . . . . . . . . . . . . . . . . . 30 4 Neodvisnostno ˇ stevilo grafa 4.1 Osnovni pojmi iz teorije grafov . . . . . . . . . . . . . 4.2 Genetski pristop za iskanje najveˇcje neodvisne mnoˇzice 4.2.1 Genetski algoritem . . . . . . . . . . . . . . . . 4.2.2 Kodiranje in dekodiranje reˇsitev . . . . . . . . . 4.3 Funkcija uspeˇsnosti . . . . . . . . . . . . . . . . . . . . 4.4 Operaciji kriˇzanja in mutacije . . . . . . . . . . . . . . 4.4.1 Kriˇzanje z delno preslikavo . . . . . . . . . . . . 4.4.2 Kriˇzanje poloˇzajev . . . . . . . . . . . . . . . . 4.4.3 Kroˇzno kriˇzanje . . . . . . . . . . . . . . . . . . 4.4.4 Operacija mutacije . . . . . . . . . . . . . . . . 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 35 36 36 37 39 40 40 42 42 43 KAZALO 4.5 4.6 Elitna strategija . . . . . . . . . . . . . . . Eksperimentalni rezultati . . . . . . . . . . 4.6.1 DIMACS testni grafi . . . . . . . . 4.6.2 Vrednosti uporabljenih parametrov 4.6.3 Rezultati . . . . . . . . . . . . . . . 4.6.4 Raˇcunalniˇski program . . . . . . . 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 45 45 45 46 47 Program diplomskega dela Naslov: Genetski algoritmi Podrobno predstavite osnove genetskih algoritmov, njihovo delovanje in matematiˇcno ozadje. Opiˇsite delovanje genetskega algoritma za iskanje najveˇcje neodvisne mnoˇzice grafa in ga implementirajte v programskem okolju Borland Delphi. Preizkusite delovanje programa s pomoˇcjo DIMACS testnih grafov. Mentor: dr. Aleksander Vesel Povzetek V diplomskem delu so na zaˇcetku predstavljeni in definirani genetski algoritmi ter osnovni pojmi, kot so osebek, populacija, generacija, funkcija uspeˇsnosti, selekcija, kriˇzanje in mutacija. Na primeru je natanˇcno razloˇzeno delovanje enostavnega genetskega algoritma. V nadaljevanju je opisano matematiˇcno ozadje genetskih algoritmov in izrek o shemah. V zadnjem poglavju je predstavljeno iskanje najveˇcje neodvisne mnoˇzice s pomoˇcjo raˇcunalniˇskega programa, ki temelji na genetskih algoritmih. Na koncu so prikazani rezultati delovanja programa na DIMACS testnih grafih. Math. Subj. Class. (2000): 68W20, 68W25 Kljuˇcne besede: genetski algoritem, neodvisnostno ˇstevilo 1 Uvod Genetski algoritmi (GA) so prilagodljive metode, ki jih uporabljamo za reˇsevanje iskalnih in optimizacijskih problemov. Temeljijo na genetskem procesu bioloˇskih organizmov, saj se zgledujejo po evoluciji v naravi, kjer se populacija neke vrste skozi generacije razvija po naˇcelu naravnega izbora in preˇzivetju uspeˇsnejˇsega. To je prvi jasno zapisal ˇze Charles Darwin. S posnemanjem tega procesa lahko genetski algoritmi “razvijejo” reˇsitev podanega problema, ˇce jih ustrezno sprogramiramo. Osnove genetskih algoritmov je prvi predstavil Holland leta 1962. Od takrat so genetski algoritmi hvaleˇzno podroˇcje za mnoge tehtne raziskave. Pravi razcvet pa doˇzivijo v 90tih letih, ko izide mnogo pomembnih ˇclankov in monografij, glej npr. [5]. GA posnemajo tiste procese v naravi, ki so bistveni za evolucijo. V naravi posamezniki neke populacije med seboj tekmujejo za ˇzivljenjsko pomembne vire. Hitrejˇsi in pametnejˇsi predstavniki vrste bodo imeli veˇc in boljˇse vire za preˇzivetje, poˇcasnejˇsi in manj pametni jih bodo dobili teˇzje ali pa sploh ne. Ravno tako se pojavi tekmovanje pri iskanju partnerja za razmnoˇzevanje. Tisti, ki so uspeˇsnejˇsi v preˇzivetju in pri parjenju, bodo po vsej verjetnosti imeli relativno veˇcje ˇstevilo potomcev. Slabˇsi posamezniki jih bodo imeli manj ali pa sploh ne. To pomeni, da se bodo geni dobro prilagojenih oz. ustreznih posameznikov bolj razˇsirili na prihodnje generacije, slabˇsi pa bodo celo izumrli. Kombinacija genov dveh ustreznih starˇsev lahko privede do pojava super-ustreznega potomca, ki ima boljˇse lastnosti od obeh starˇsev. Na ta naˇcin se vrste razvijajo in prilagajajo na svoje okolje. GA delujejo po analogiji k temu naravnemu procesu. Delujejo nad neko populacijo osebkov (kromosomov), od katerih vsak predstavlja moˇzno reˇsitev danega 7 1. UVOD 8 problema. Vsakemu kromosomu se priredi ocena uspeˇsnosti, ki je prilagojena iskanemu problemu (npr. ˇce bi iskali najkrajˇso pot v grafu med dvema vozliˇsˇcema, bi bila ocena lahko kar dolˇzina poti, ki jo kromosom predstavlja). Ustreznejˇsi kromosomi - tisti z boljˇso oceno - imajo veˇc moˇznosti za reprodukcijo od ostalih. Nad trenutno populacijo izvedemo simuliran proces evolucije. Iz naˇse populacije izberemo podmnoˇzico starˇsev, ki se razmnoˇzujejo. Tako za naˇso populacijo dobimo nove potomce, ki prevzamejo nekaj lastnosti od vsakega starˇsa. Manj ustrezni predstavniki se bodo razmnoˇzevali z manjˇso verjetnostjo in tako izumrli. Z izborom najustreznejˇsih reˇsitev (starˇsev) s pomoˇcjo razmnoˇzevanja dobimo nove reˇsitve (potomce), ki nadomestijo slabˇse osebke. Ta nova populacija reˇsitev vsebuje viˇsje povpreˇcje lastnosti dobrih reˇsitev prejˇsnje populacije. Na ta naˇcin se dobre lastnosti razˇsirijo v naslednje generacije. Z izbiranjem ustreznejˇsih kromosomov ˇ smo za razmnoˇzevanje raziˇsˇcemo najobetavnejˇsa podroˇcja v domeni reˇsitev. Ce genetski algoritem dobro zastavili, bo populacija konvergirala k optimalni reˇsitvi. 2 Osnove genetskih algoritmov 2.1 Osnovni pojmi Naj bodo moˇzne reˇsitve, nad katerimi izvajamo genetski algoritem, predstavljene z nizi. Tako predstavljene reˇsitve so osebki, pravimo jim tudi kromosomi. Posamezne simbole v nizu imenujemo geni. Lokus je mesto gena v kromosomu, alel pa njegova konkretna vrednost. V prostoru preiskovanja ima vsaka toˇcka svojo vrednost glede na kriterijsko funkcijo. V genetskem algoritmu pa osebke ocenjujemo s pomoˇcjo funkcije uspeˇsnosti (angl. fitness function). Le-ta mora biti definirana tako, da osebkom, ki predstavljajo boljˇse reˇsitve, priredi viˇsjo uspeˇsnost (glej razdelek 2.3). Populacija je mnoˇzica osebkov. Populacijo obdelujemo v korakih, ki jih imenujemo generacije. Iz osebkov (starˇsev) trenutne populacije tvorimo naslednike (potomce), ki pripadajo populaciji v naslednji generaciji. Velikost populacije ostaja nespremenjena skozi vse generacije. Nad posamezno populacijo izvajamo tri operacije, s pomoˇcjo katerih dobimo potomce. Te operacije so: selekcija, kriˇzanje in mutacija. Selekcija iz tekoˇce populacije izbere osebke za razmnoˇzevanje. Kriˇzanje in mutacija sta t.i. genetski operaciji, saj delujeta na ravni genov izbranih kromosomov. 9 2. OSNOVE GENETSKIH ALGORITMOV 2.2 10 Definicija enostavnega genetskega algoritma Genetski algoritmi so sredstvo za reˇsevanje problemov, ki so iskalne ali optimizacijske narave. Delujejo na principu preˇzivetja uspeˇsnejˇsega. Dobre reˇsitve zdruˇzimo v upanju, da bo potomec predstavljal boljˇso reˇsitev. Genetski algoritem lahko predstavimo s psevdokodo, kot jo vidimo na sliki 2.1. BEGIN /* genetski algoritem */ ustvarimo zaˇ cetno populacijo; izraˇ cun uspeˇ snosti osebkov v populaciji; se reˇ sitve WHILE nimamo najboljˇ nismo izvedli doloˇ ceno ˇ stevilo korakov ni minil doloˇ cen ˇ cas se potomci bistveno razlikujejo starˇ sev BEGIN // faza selekcije izbor starˇ sev za razmnoˇ zevanje; OR OR OR DO // faza razmnoˇ zevanja kriˇ zanje starˇ sev; mutiranje posameznikov; ocena uspeˇ snosti populacije; END END Slika 2.1: Enostavni genetski algoritem Ko prviˇc izvedemo genetski algoritem, se ustvari zaˇcetna populacija reˇsitev. Le-te se po navadi izberejo nakljuˇcno in veˇcina osebkov v prvotni populaciji verjetno ne bo predstavljala dobrih reˇsitev. Nekatere bodo celo nasprotje priˇcakovanega. Izraˇcun uspeˇsnosti osebkov v populaciji se nanaˇsa na preizkuˇsanje reˇsitev, glede na to, kako uspeˇsno in v kaki meri reˇsijo dani problem. Na ta naˇcin lahko doloˇcimo, katera reˇsitev je boljˇsa od druge. Osebki, ki uspeˇsneje ali vsaj delno reˇsijo problem, dobijo veˇcjo vrednost uspeˇsnosti od tistih, ki problem reˇsijo slabˇse ali pa ga ne morejo reˇsiti. Izraˇcun uspeˇsnosti se opravi glede na funkcijo uspeˇsnosti. 2. OSNOVE GENETSKIH ALGORITMOV 11 V fazi selekcije iz trenutne populacije izberemo podmnoˇzico osebkov. Glede na oceno uspeˇsnosti bomo kasneje iz te podmnoˇzice izbrali pare osebkov - starˇsev, ki jih bomo uporabili za razmnoˇzevanje. V fazi razmnoˇzevanja se po nekem postopku zdruˇzita izbrana starˇsa, iz katerih dobimo dve novi reˇsitvi (dva potomca). Cilj je, da nam razmnoˇzevanje d´a vsaj enega potomca, ki je, glede na funkcijo uspeˇsnosti, boljˇsi od obeh starˇsev. Novi reˇsitvi v populaciji zamenjata dva osebka z najmanjˇso oceno uspeˇsnosti, ali pa zamenjata kar starˇsa. Tako velikost populacije ostaja nespremenjena. Mutacija spremeni posamezne gene v potomcih. Koliko otrok bo mutiralo, ˇce sploh bo kateri mutiral, se doloˇci nakljuˇcno. Tudi geni mutacije se praviloma izberejo nakljuˇcno. V algoritmu na sliki 2.1 vidimo, da se postopek ponavlja tako dolgo, dokler ne najdemo najboljˇse reˇsitve. Vedno pa ni nujno tako. GA lahko tudi prenehamo izvajati po doloˇcenem ˇstevilu korakov, ˇcez doloˇcen ˇcas (miˇsljen je realni ˇcas) ali ko potomci niso veˇc uspeˇsnejˇsi od starˇsev. V veliko primerih bo genetski algoritem naˇsel ˇ genetski algoritem izvajamo zelo zelo dobro reˇsitev, vendar ne tudi najboljˇse. Ce dolgo, postanejo vsi kromosomi v populaciji enaki. Ta pojav lahko delno odpravimo z mutacijo ali z veˇcjo populacijo, popolnoma pa ga ne moremo odpraviti. 2.3 Funkcija uspeˇ snosti Obstaja veˇc oblik genetskih algoritmov. Pri razliˇcnih oblikah lahko izbiramo razliˇcne lastnosti in parametre, vendar razen kodiranja in funkcije uspeˇsnosti velikega vpliva na delovanje algoritma ti dejavniki nimajo. Skupaj z izbiro predstavitve reˇsitev (pri enostavnem genetskem algoritmu so to obiˇcajno binarni nizi), je primerna izbira funkcije uspeˇsnosti najbolj pomemben del genetskih algoritmov. Funkcijo uspeˇsnosti moramo definirati posebej za vsak problem, ki ga reˇsujemo. Funkcija uspeˇsnosti danemu kromosomu priredi neko numeriˇcno “uspeˇsnost”, ki naj bi bila sorazmerna s sposobnostjo oz. uˇcinkovitostjo osebka, ki ga kromosom predstavlja. V idealnem primeru bi ˇzeleli, da je funkcija uspeˇsnosti zvezna tako, da so kromosomi s primerno uspeˇsnostjo blizu (glede na prostor preiskovanja) kromosomom 2. OSNOVE GENETSKIH ALGORITMOV 12 ˇ takih funkcij ni vedno mogoˇce najti. Ce ˇ pa ˇzelimo, z malo boljˇso uspeˇsnostjo. Zal da GA delujejo dobro, moramo najti funkcijo uspeˇsnosti, ki nima preveˇc lokalnih maksimumov ali zelo izoliranega globalnega maksimuma. Sploˇsno pravilo pri konstruiranju funkcije uspeˇsnosti je, da naj predstavi vrednost kromosoma na nek “realen” naˇcin. Vendar pa ta “realna” vrednost ni vedno uporabna koliˇcina za GA. V kombinatoriˇcni optimizaciji so pogosti problemi z veliko omejitevami, kar pomeni, da veliko toˇck v prostoru preiskovanja predstavlja neveljavne kromosome in zato nimajo “realne” vrednosti. Da bi bil GA v takˇsnih primerih uˇcinkovit, moramo najti tako funkcijo uspeˇsnosti, ki bo ocenjevala uspeˇsnost nedopustnega kromosoma glede na to, ali nas lahko pripelje do dopustne reˇsitve. Teˇzava v tem primeru je, da moramo vedeti, kje so dopustne reˇsitve, da lahko okoliˇske toˇcke dobijo dobre ocene, bolj oddaljene pa slabˇse. Drugi pristop k reˇsevanju problema, v katerem se pojavljajo omejitve, je uporaba funkcije kaznovanja. V tem primeru kromosomom, ki ne izpolnjujejo doloˇcenih omejitev, zmanjˇsamo njihovo oceno uspeˇsnosti. Slabost tega pristopa je, da je teˇzko loˇciti skoraj dopustne reˇsitve (to so tiste, ki zadoˇsˇcajo veˇcini omejitev) od dopustnih reˇsitev z nizko vrednostjo kriterijske funkcije. 2.4 Razmnoˇ zevanje V fazi razmnoˇzevanja iz trenutne populacije nakljuˇcno, po nekem pravilu, ki upoˇsteva uspeˇsnost posameznikov, izberemo starˇse, iz katerih dobimo potomce, ki bodo ˇclani populacije v novi generaciji. Posamezniki z visoko uspeˇsnostjo bodo za razmnoˇzevanje izbrani z veˇcjo verjetnostjo in veˇckrat kot tisti z nizko uspeˇsnostjo, za katere se pogosto pripeti, da za razmnoˇzevanje sploh niso izbrani. Kako lahko izberemo posameznike za razmnoˇzevanje, je opisano v poglavju 2.5. ˇ prej si oglejmo, kako iz dveh starˇsev dobimo potomca. Pri tem si pomagamo Se z binarnima operacijama – s kriˇzanjem in mutacijo. 2.4.1 Kriˇ zanje Kriˇzanje je operacija, s pomoˇcjo katere iz dveh starˇsev dobimo dva potomca, ki v populaciji obiˇcajno nadomestita svoje starˇse. Kriˇzanje obiˇcajno poteka tako, da 2. OSNOVE GENETSKIH ALGORITMOV 13 nakljuˇcno izberemo mesto kriˇzanja, ki kromosoma obeh starˇsev (predstavljena kot binarna niza) razdeli na dva dela, “glavo” in “rep”. Nato zamenjamo glavi ali repa obeh starˇsev in tako dobimo dva kromosoma, ki predstavljata nova potomca. Na ta naˇcin vsak izmed potomcev podeduje nekaj genov od vsakega starˇsa. Ta naˇcin kriˇzanja imenujemo enostavno ali enomestno kriˇzanje. Primer je prikazan na sliki 2.2. Obstajajo pa oblike kriˇzanja, pri katerih izberemo veˇc toˇck kriˇzanja in kromosomoma, ki predstavljata starˇse, izmenjamo enega ali veˇc podnizov. Primer kriˇzanja v dveh toˇckah je na sliki 2.3. Slika 2.2: Kriˇzanje v eni toˇcki Slika 2.3: Kriˇzanje v dveh toˇckah Obiˇcajno ne kriˇzamo vseh parov izbranih za razmnoˇzevanje. Ali bomo par kriˇzali, doloˇcimo z neko v naprej doloˇceno verjetnostjo. Verjetnost za kriˇzanje je v ra- 2. OSNOVE GENETSKIH ALGORITMOV 14 ˇ para ne kriˇzamo, zliˇcnih izvedbah razliˇcna, obiˇcajno se giblje med 0.25 in 1.0. Ce sta potomca kar enaka svojima starˇsema. Tako ima vsak posameznik, izbran za razmnoˇzevanje moˇznost, da njegovi geni pridejo v novo generacijo, ne da bi se jih spremenilo s kriˇzanjem. 2.4.2 Mutacija Mutacija, se za razliko od kriˇzanja, izvaja na potomcih. Za vsakega potomca se doloˇci lokus (mesto gena), ki se mu spremeni vrednost. Mutacijo nad posameznikom izvajamo z zelo majhno verjetnostjo (obiˇcajno reda 0.01). Na sliki 2.4 se potomcu z mutacijo spremeni tretji gen. Slika 2.4: Mutacija v eni toˇcki Kriˇzanje je operacija, ki nam omogoˇca hitro raziskovanje prostora preiskovanja v smeri optimuma, mutacija pa poskrbi za nakljuˇcno raziskovanje, ter za to, da nobena toˇcka v preiskovalnem prostoru ni brez moˇznosti, da bi jo raziskali. 2.5 Kako delujejo genetski algoritmi? Preden na primeru prikaˇzemo, kako delujejo genetski algoritmi, zapiˇsimo nekaj opomb. Ni teˇzko videti, da lahko, brez izgube za sploˇsnost, govorimo samo o ˇ bi problem zahteval minimizacijo funkcije f , lahko maksimizacijskih problemih. Ce problem pretvorimo v maksimizacijo funkcije g, kjer je g = −f , ker velja min f (x) = max g(x) = max{−f (x)}. Predpostavimo lahko tudi, da je funkcija f pozitivna na celotnem definicijskem obmoˇcju. Sicer lahko vedno dodamo tako konstanto C, da velja f (x) + C je povsod 2. OSNOVE GENETSKIH ALGORITMOV 15 pozitivna in max f (x) = max{f (x) + C}. Recimo, da ˇzelimo poiskati maksimum funkcije n spremenljivk, f (x1 , . . . , xn ) : Rn → R. Naj velja: xi ∈ Di = [ai , bi ] ⊆ R in f (x1 , . . . , xn ) > 0 za vsak xi ∈ Di . Maksimum ˇzelimo poiskati na ˇsest decimalnih mest natanˇcno. Za takˇsno natanˇcnost moramo vsako domeno Di razdeliti na (bi − ai ) · 106 enako velikih intervalov. Z mi oznaˇcimo najmanjˇse celo ˇstevilo, tako da velja (bi −ai )·106 ≤ 2mi −1. Potem zahtevi natanˇcnosti oˇcitno zadoˇsˇca, da predstavimo vsako spremenljivko iz domene Di kot binarne nize dolˇzine mi . Vrednost tako kodiranega kromosoma dobimo po naslednji formuli: bi − a i xi = ai + dec(11001 . . . 00112 ) · mi , 2 −1 kjer je dec(niz) desetiˇska vrednost binarnega niza niz. Tako lahko vsak kromosom (kot moˇzno reˇsitev) predstavimo z binarnim nizom P dolˇzine m = ni=1 mi , saj prvih m1 genov pretvorimo v vrednost iz domene D1 = [a1 , b1 ], naslednjo skupino m2 genov v vrednost iz domene D2 , itd., zadnjih mn genov pa v vrednost iz domene Dn . Za zaˇcetno populacijo lahko preprosto doloˇcimo velikost pop kromosomov, ki jim ˇ imamo kakˇsno informacijo o porazdelitvi nakljuˇcno izberemo vrednosti genov. Ce moˇznih maksimumov, lahko pri izbiri zaˇcetne populacije to uporabimo. Nato sledimo algoritmu za enostavni genetski algoritem, kot je predstavljen na sliki 2.1: v vsaki generaciji ocenimo trenutno populacijo (tako da uporabimo funkcijo f na dekodiranih vrednostih), izberemo novo populacijo glede na verjetnost izbora, ki je odvisna od njihove ocene uspeˇsnosti, spremenimo kromosome v novi populaciji s pomoˇcjo operatorjev (kriˇzanje in mutacija). Po doloˇcenem ˇstevilu generacij, ko ne opazimo nobene izboljˇsave veˇc, najboljˇsi kromosom predstavlja (lahko tudi globalno) najboljˇso reˇsitev. Kot smo ˇze povedali, pa lahko algoritem ustavimo tudi po doloˇcenem ˇstevilu ponavljanj. Za fazo selekcije (izbor nove populacije glede na verjetnost, odvisno od ocene uspeˇsnosti) se uporablja t.i. ruleta z reˇzami velikosti, ki so odvisne od uspeˇsnosti kromosoma. Ruleto tvorimo na naslednji naˇcin (predpostavimo, da so ocene uspeˇsnosti pozitivne vrednosti): • Izraˇcunamo uspeˇsnost oceni(vi ) za vsak kromosom vi , i = 1, . . . , velikost pop. 2. OSNOVE GENETSKIH ALGORITMOV 16 • Izraˇcunamo skupno uspeˇsnost populacije U= Pvelikost pop i=1 oceni(vi ). • Izraˇcunamo verjetnost izbire pi za vsak kromosom vi , i = 1, . . . , velikost pop: pi = oceni(vi )/U • Izraˇcunamo kumulativno verjetnost qi za vsak kromosom vi , i = 1, . . . , velikost pop: qi = Pi j=1 pj . Proces selekcije poteka tako, da velikost pop -krat zavrtimo ruleto in vsakiˇc iz trenutne populacije izberemo en kromosom, na sledeˇci naˇcin: • Izberemo nakljuˇcno (realno) ˇstevilo r z intervala [0, 1]. ˇ je r < q1 potem izberemo prvi kromosom (v1 ); sicer izberemo i-ti kromosom • Ce vi (2 ≤ i ≤ velikost pop), tako da qi−1 < r ≤ qi . Oˇcitno je, da lahko nekatere kromosome izberemo veˇckrat. To je v skladu z izrekom o shemah (poglavje 3.2): najboljˇsi kromosomi dobijo veˇc kopij, povpreˇcnih ostane enako, najslabˇsi pa izumrejo. Sedaj smo pripravljeni na fazo kriˇzanja. Kriˇzanje izvajamo z verjetnostjo pc , ki je podana kot parameter genetskega algoritma. Ta verjetnost nam d´a priˇcakovano ˇstevilo pc · velikost pop kromosomov, ki se bodo kriˇzali. Izbor poteka takole: Za vsak kromosom iz (nove) populacije: • Izberemo nakljuˇcno (realno) ˇstevilo r iz intervala [0, 1]. ˇ je r < pc , izberemo kromosom za kriˇzanje. • Ce Sedaj izbrane kromosome nakljuˇcno kriˇzamo: za vsak par kromosomov generiramo nakljuˇcno celo ˇstevilo kje iz intervala [1, m − 1], kjer je m dolˇzina kromosoma ˇ (ˇstevilo genov v kromosomu). Stevilo kje doloˇca mesto kriˇzanja. Tako kromosoma 2. OSNOVE GENETSKIH ALGORITMOV 17 (b1 b2 . . . bkje bkje+1 . . . bm ) in (c1 c2 . . . ckje ckje+1 . . . cm ) nadomestimo z njunima potomcema: (b1 b2 . . . bkje ckje+1 . . . cm ) in (c1 c2 . . . ckje bkje+1 . . . bm ). Naslednja operacija, ki jo izvedemo, je mutacija. Mutacijo izvajamo nad vsakim genom posebej. Parameter pm (verjetnost mutacije) genetskega algoritma nam poda priˇcakovano ˇstevilo mutiranih genov pm · m · velikost pop. Vsak gen (v vseh kromosomih v celotni populaciji) ima enako moˇznost, da bo mutiral, t.j. se spremenil iz 0 v 1 in obratno. Za vsak kromosom iz trenutne (po izvedenem kriˇzanju) populacije in za vsak gen v kromosomu: • Izberemo nakljuˇcno (realno) ˇstevilo r iz intervala [0, 1]. ˇ je r < pm , mutiramo gen. • Ce Po konˇcanih treh fazah (selekcija, kriˇzanje in mutacija) lahko na novo ocenimo dobljeno populacijo. Glede na nove ocene ponovimo celoten postopek, kar pomeni da za novo populacijo definiramo novo ruleto, izberemo podmnoˇzico moˇznih starˇsev, jih s podano verjetnostjo kriˇzamo in po kriˇzanju z verjetnostjo mutacije mutiramo vse gene kromosomov v celotni populaciji. Proces oponaˇsanja evolucije nad reˇsitvami je le ponavljanje teh korakov (glej algoritem na sliki 2.2). Poglejmo si sedaj celoten postopek na konkretnem primeru optimizacije funkcije. Naj bo velikost populacije velikost pop = 20, verjetnost kriˇzanja pc = 0.25 in verjetnost mutacije pm = 0.01. Recimo, da ˇzelimo poiskati maksimum funkcije dveh spremenljivk: f (x, y) = 45 + xy sin(4πx) cos(20πy), kjer velja: −3.0 < x < 13.0 in 3.0 < y < 5.0. Graf funkcije vidimo na sliki 2.5. Recimo, da ˇzelimo natanˇcnost ˇstirih decimalnih mest za vsako izmed spremenljivk. Dolˇzina domene spremenljivke x je 16.0; zahteva natanˇcnosti doloˇca, da interval [−3.0, 13.0] razdelimo na vsaj 16.0 · 104 ekvidistanˇcnih intervalov. To pomeni, da 2. OSNOVE GENETSKIH ALGORITMOV 18 Slika 2.5: Graf funkcije f (x, y) = 45 + xy sin(4πx) cos(20πy) 18 bitov zadostuje za predstavitev prve spremenljivke v binarnem kromosomu, saj velja 217 < 160000 ≤ 218 . Dolˇzina domene spremenljivke y je 2.0, zato podobno kot pri spremenljivki x, zaradi zahtevane natanˇcnosti za njeno predstavitev v binarnem kromosomu zadostuje 15 bitov, saj velja 214 < 20000 ≤ 215 . Konˇcna dolˇzina kromosoma, ki predstavlja moˇzno reˇsitev, je torej m = 18 + 15 = 33 bitov; prvih 18 bitov predstavlja x, ostalih 15 bitov (to so biti od 19 do 33) pa predstavlja y. Poglejmo kromosom (001111110011010110111000000111110). Prvih 18 bitov, 001111110011010110, predstavlja x = −3.0+dec(0011111100110101102 )· 13.0−(−3.0) = 218 −1 16.0 = −3.0 + 3.950576 = 0.950576. −3.0 + 64726 · 262143 Naslednjih 15 bitov, 111000000111110, predstavlja y = 3.0+dec(1110000001111102 )· 2. OSNOVE GENETSKIH ALGORITMOV 19 2.0 = 3.0 + 28734 · 32767 = 3.0 + 1.753837 = 4.753837. Tako kromosom (001111110011010110111000000111110) predstavlja par hx, yi = h0.950576, 4.753837i. Ocena uspeˇsnosti za ta kromosom je 5.0−3.0 215 −1 f (0.950576, 4.753837) = 47.553499. Za optimizacijo funkcije f s pomoˇcjo genetskega algoritma, smo ustvarili populacijo velikosti velikost pop = 20 kromosomov. Vsem 33 genom v kromosomu so nakljuˇcno doloˇcene vrednosti (aleli). Tako dobimo naslednjo zaˇcetno populacijo: v1 = (111100001010101000001001101010111) v2 = (111111110100011011000110100010001) v3 = (111100010001011001100100101010101) v4 = (111000101001111001111001001000001) v5 = (100101011001000010100011000010110) v6 = (010111011010111011011101001010110) v7 = (010101111110100011001100000100010) v8 = (010011110101110100101100100000111) v9 = (101010110000110100010000011100101) v10 = (000110111111110010011000010110111) v11 = (000100000100111100011000001101001) v12 = (011111001101001111111011001111111) v13 = (001110011101100100110110001011101) v14 = (100010000101111100001000011000110) v15 = (010001000111001000010010111101010) v16 = (000011011101100100010000001011011) v17 = (100011000101100110000111101000000) v18 = (101101011100000100010000111010100) v19 = (110000011011001001100000110001000) v20 = (101001000110111110000001010100001) Ko ocenjujemo uspeˇsnost kromosomov, vsakega dekodiramo in izraˇcunamo vrednost funkcije f (x, y) za vrednosti, ki smo jih dekodirali. Tako dobimo: 2. OSNOVE GENETSKIH ALGORITMOV oceni(v1 ) = f (12.041561, 3.302194) = 64.647939 oceni(v2 ) = f (12.954833, 3.204168) = 23.446118 oceni(v3 ) = f (12.067989, 4.145847) = 8.5442915 oceni(v4 ) = f (11.163689, 4.785271) = 73.410052 oceni(v5 ) = f (6.347813, 4.095126) = 21.646644 oceni(v6 ) = f (2.855185, 3.911526) = 36.893084 oceni(v7 ) = f (2.494344, 3.377086) = 44.921802 oceni(v8 ) = f (1.960223, 4.391094) = 41.503667 oceni(v9 ) = f (7.690714, 3.513992) = 56.685521 oceni(v10 ) = f (−1.250847, 3.761192) = 45.038230 oceni(v11 ) = f (−1.980709, 3.756431) = 46.642200 oceni(v12 ) = f (4.801726, 4.851557) = 59.031114 oceni(v13 ) = f (0.615492, 4.693227) = 47.612314 oceni(v14 ) = f (5.523225, 3.262092) = 41.241623 oceni(v15 ) = f (1.277848, 3.592425) = 43.601019 oceni(v16 ) = f (−2.134518, 3.505569) = 51.978953 oceni(v17 ) = f (5.771884, 3.238288) = 48.762288 oceni(v18 ) = f (8.359662, 3.528580) = 51.458562 oceni(v19 ) = f (9.106064, 4.023957) = 47.331909 oceni(v20 ) = f (7.277260.3.041077) = 51.296084 Vidimo, da je kromosom v4 najboljˇsi, kromosom v3 pa najslabˇsi. Sedaj ustvarimo ruleto za fazo selekcije. Skupna uspeˇsnost generacije je U = 905.693421. Verjetnost izbire pi za vsak kromosom vi (i = 1, . . . , 20) je enaka: 20 2. OSNOVE GENETSKIH ALGORITMOV p1 = oceni(v1 )/U p3 = oceni(v3 )/U p5 = oceni(v5 )/U p7 = oceni(v7 )/U p9 = oceni(v9 )/U p11 = oceni(v11 )/U p13 = oceni(v13 )/U p15 = oceni(v15 )/U p17 = oceni(v17 )/U p19 = oceni(v19 )/U = 0.071379 = 0.009433 = 0.023900 = 0.049599 = 0.062587 = 0.051498 = 0.052570 = 0.048141 = 0.053839 = 0.052260 21 p2 = oceni(v2 )/U p4 = oceni(v4 )/U p6 = oceni(v6 )/U p8 = oceni(v8 )/U p10 = oceni(v10 )/U p12 = oceni(v12 )/U p14 = oceni(v14 )/U p16 = oceni(v16 )/U p18 = oceni(v18 )/U p20 = oceni(v20 )/U = 0.025887 = 0.081053 = 0.040734 = 0.045825 = 0.049727 = 0.065177 = 0.045535 = 0.057391 = 0.056816 = 0.056637 Kumulativne verjetnosti qi za vsak kromosom vi (i = 1, . . . , 20) so: q1 q5 q9 q13 q17 = 0.071379 q2 = 0.211655 q6 = 0.410402 q10 = 0.629377 q14 = 0.834285 q18 = 0.097266 q3 = 0.252390 q7 = 0.460130 q11 = 0.674913 q15 = 0.891102 q19 = 0.106700 q4 = 0.301989 q8 = 0.511629 q12 = 0.723054 q16 = 0.943362 q20 = 0.187754 = 0.347814 = 0.576807 = 0.780445 = 1.000000 Sedaj smo pripravljeni, da 20-krat zavrtimo ruleto, vsakiˇc iz populacije izberemo enega od kromosomov. Program je generiral naslednjih 20 nakljuˇcnih ˇstevil iz intervala [0, 1]: 0.487727 0.712488 0.384286 0.631095 0.354492 0.102114 0.551053 0.809124 0.275074 0.470400 0.376828 0.897063 0.228429 0.628189 0.466801 0.831809 0.321259 0.603310 0.232462 0.036421 Prvo ˇstevilo r = 0.487727 je veˇcje od q10 in manjˇse od q11 , kar pomeni, da za novo populacijo izberemo kromosom v11 ; naslednje ˇstevilo r = 0.354492 je veˇcje od q8 in manjˇse od q9 , zato v novo populacijo dodamo kromosom v9 , itd. Tako je nova populacija sestavljena iz naslednjih kromosomov: v10 = (000100000100111100011000001101001) = v11 v02 = (101010110000110100010000011100101) = v9 v03 = (111100010001011001100100101010101) = v3 v40 = (011111001101001111111011001111111) = v12 v05 = (100011000101100110000111101000000) = v17 v06 = (010001000111001000010010111101010) = v15 v70 = (010101111110100011001100000100010) = v7 2. OSNOVE GENETSKIH ALGORITMOV 22 v08 = (000100000100111100011000001101001) = v11 v90 = (101010110000110100010000011100101) = v9 0 = (110000011011001001100000110001000) = v v10 19 v011 = (101010110000110100010000011100101) = v9 v012 = (010111011010111011011101001010110) = v6 v013 = (001110011101100100110110001011101) = v13 v014 = (000100000100111100011000001101001) = v17 v015 = (100011000101100110000111101000000) = v11 0 = (100010000101111100001000011000110) = v v16 14 v017 = (010011110101110100101100100000111) = v8 v018 = (001110011101100100110110001011101) = v13 v019 = (010111011010111011011101001010110) = v6 0 = (111100001010101000001001101010111) = v v20 1 Sedaj nad to populacijo (vektorji vi0 ) izvedemo kriˇzanje z verjetnostjo pc = 0.25, kar pomeni, da lahko priˇcakujemo, da se bo v povpreˇcju kriˇzalo 25% kromosomov, v naˇsem primeru torej 5 kromosomov. To storimo tako: za vsak kromosom v (novi) populaciji tvorimo nakljuˇcno realno ˇstevilo r iz intervala [0, 1]; ˇce je r < 0.25, izberemo dan kromosom za kriˇzanje. Naj bodo tvorjena naslednja nakljuˇcna ˇstevila: 0.415826 0.576977 0.425767 0.866816 0.703928 0.314879 0.547305 0.474972 0.835276 0.267812 0.384001 0.223930 0.232305 0.433631 0.442863 0.549149 0.064320 0.737575 0.981984 0.092007 ˇ je ˇstevilo To pomeni, da so kromosomi v0 10 , v0 12 , v0 17 in v0 20 izbrani za kriˇzanje. Ce izbranih kromosomov liho, enega izpustimo ali pa enega dodatno (seveda nakljuˇcno) izberemo. Sedaj nakljuˇcno kriˇzamo izbrane kromosome: recimo prva dva (t.j. v0 10 in v0 10 ) in naslednja dva (v0 17 in v0 20 ). Za vsakega od teh parov tvorimo nakljuˇcno ˇ celo ˇstevilo kje iz intervala [1, 32] (33 je dolˇzina kromosoma). Stevilo kje nam pove mesto kriˇzanja v kromosomu. Prvi par kromosomov je v010 = (110000011011001001100000110|001000) 0 = (010111011010111011011101001|010110) v12 2. OSNOVE GENETSKIH ALGORITMOV 23 in mesto kriˇzanja kje = 27. Kromosoma kriˇzamo v tej toˇcki in ju v populaciji zamenjamo z njunima potomcema v0010 = (110000011011001001100000110|010110) v0012 = (010111011010111011011101001|001000). Drugi par kromosomov je 0 v17 = (01001111|0101110100101100100000111) 0 v20 = (11110000|1010101000001001101010111) in tvorjeno ˇstevilo za mesto kriˇzanja kje = 8. Tudi ta dva kromosoma nadomestita njuna potomca: v0017 = (01001111|1010101000001001101010111) v0020 = (11110000|0101110100101100100000111). Trenutno populacijo sestavljajo torej naslednji kromosomi: v01 = (000100000100111100011000001101001) v02 = (101010110000110100010000011100101) v03 = (111100010001011001100100101010101) v04 = (011111001101001111111011001111111) v05 = (100011000101100110000111101000000) v06 = (010001000111001000010010111101010) v07 = (010101111110100011001100000100010) v08 = (000100000100111100011000001101001) v09 = (101010110000110100010000011100101) 00 = (110000011011001001100000110010110) v10 v011 = (101010110000110100010000011100101) v0012 = (010111011010111011011101001001000) v013 = (001110011101100100110110001011101) 0 = (000100000100111100011000001101001) v14 v015 = (100011000101100110000111101000000) v016 = (100010000101111100001000011000110) v0017 = (010011111010101000001001101010111) v018 = (001110011101100100110110001011101) 0 = (010111011010111011011101001010110) v19 2. OSNOVE GENETSKIH ALGORITMOV 24 v0020 = (111100000101110100101100100000111) Naslednja operacija, ki jo izvajamo nad vsakim genom v vseh kromosomih v celotni populaciji, je mutacija. Verjetnost mutiranja pm = 0.01 pomeni, da v povpreˇcju priˇcakujemo, da bo mutiralo 1% genov. V celotni populaciji je m × velikost pop = 33 × 20 = 660 bitov (genov), od katerih ima vsak enako moˇznost, da mutira, zato za vsak bit v populaciji tvorimo nakljuˇcno realno ˇstevilo r iz intervala [0, 1], in ˇce je r < 0.01 potem bit mutiramo. To pomeni, da moramo tvoriti 660 nakljuˇcnih ˇstevil. V naˇsem primeru so bila ˇstiri od teh ˇstevil manjˇsa od 0.01, tako so mutirali naslednji ˇstirje geni: ˇ ˇ kromosoma Stevilka gena Tvorjeno ˇstevilo Stevilka 0.007657 7 19 0.003393 10 13 0.009272 12 7 0.000461 15 12 Spodaj je izpisana konˇcna nova populacija, mutirani geni (biti) so krepko izpisani: v1 = (000100000100111100011000001101001) v2 = (101010110000110100010000011100101) v3 = (111100010001011001100100101010101) v4 = (011111001101001111111011001111111) v5 = (100011000101100110000111101000000) v6 = (010001000111001000010010111101010) v7 = (010101111110100011101100000100010) v8 = (000100000100111100011000001101001) v9 = (101010110000110100010000011100101) v10 = (110000011011101001100000110010110) v11 = (101010110000110100010000011100101) v12 = (010111111010111011011101001001000) v13 = (001110011101100100110110001011101) v14 = (000100000100111100011000001101001) v15 = (100011000100100110000111101000000) v16 = (100010000101111100001000011000110) v17 = (010011111010101000001001101010111) 2. OSNOVE GENETSKIH ALGORITMOV 25 v18 = (001110011101100100110110001011101) v19 = (010111011010111011011101001010110) v20 = (111100000101110100101100100000111) Zakljuˇcili smo prvo ponavljanje (t.j. prvo generacijo) v while zanki preprostega genetskega algoritma (slika 2.2). Poglejmo, kakˇsno oceno uspeˇsnosti imajo kromosomi eno generacijo kasneje: oceni(v1 ) = f (−1.980709, 3.756431) = 46.642200 oceni(v2 ) = f (7.690714, 3.513992) = 56.685521 oceni(v3 ) = f (12.067989, 4.145847) = 8.544291 oceni(v4 ) = f (4.801726, 4.851557) = 59.031114 oceni(v5 ) = f (5.771884, 3.238288) = 48.762288 oceni(v6 ) = f (1.277848, 3.592425) = 43.601019 oceni(v7 ) = f (2.494344, 4.377117) = 44.897172 oceni(v8 ) = f (−1.980709, 3.756431) = 46.642200 oceni(v9 ) = f (7.690714, 3.513992) = 56.685521 oceni(v10 ) = f (9.108017, 4.024811) = 45.424202 oceni(v11 ) = f (7.690714, 3.513992) = 56.685521 oceni(v12 ) = f (2.980186, 3.910672) = 42.749931 oceni(v13 ) = f (0.615492, 4.693227) = 47.612314 oceni(v14 ) = f (−1.980709, 3.756431) = 46.642200 oceni(v15 ) = f (5.767977, 3.238288) = 48.101372 oceni(v16 ) = f (5.523225, 3.262092) = 41.241623 oceni(v17 ) = f (1.979022, 3.302194) = 43.313343 oceni(v18 ) = f (0.615492, 4.693227) = 47.612314 oceni(v19 ) = f (2.855185, 3.911526) = 36.893084 oceni(v20 ) = f (12.022762, 4.391094) = 57.624276 Opazimo, da je skupna uspeˇsnost nove generacije U = 925.391516 veliko veˇcja kot skupna uspeˇsnost predhodne populacije, 905.693421. Sedaj lahko ponovimo celoten postopek nad novo populacijo. Po 1000 generacijah dobimo najboljˇsi kromosom best = (111111100001101111111011001100111), katerega ocena uspeˇsnosti 2. OSNOVE GENETSKIH ALGORITMOV 26 je oceni(best2 ) = f (12.881835, 4.850093) = 107.246685. V naˇsem primeru to ni najboljˇsi najden kromosom v celotnem procesu evolucije, saj je najboljˇsi kromosom v 519. generaciji imel oceno uspeˇsnosti 107.418042. 2.6 Primerjava z drugimi tehnikami Za reˇsevanje iskalnih in optimizacijskih problemov je znanih veliko tehnik. Podobno kot genetski algoritmi, te tehnike predpostavljajo, da problem doloˇca funkcija uspeˇsnosti, ki jo moramo maksimizirati. Vse tehnike lahko uporabljamo tudi za minimizacijo, vendar smo ˇze povedali, da lahko brez izgube za sploˇsnost govorimo samo o maksimizaciji. Poglejmo sedaj nekaj drugih tehnik. 2.6.1 Grobo in nakljuˇ cno iskanje Za “divje” funkcije lahko uporabimo nakljuˇcno ali grobo iskanje. Nakljuˇcno iskanje toˇcke v preiskovalnem prostoru nakljuˇcno izbira in vrednoti. Ta metoda se zelo redko samostojno uporablja in je obiˇcajno neuˇcinkovita. Grobo iskanje pa se pregledovanja preiskovalnega prostora loti sistematiˇcno po nekem predpisu. Slaba lastnost te metode je velika (obiˇcajno eksponentna) ˇcasovna zahtevnost. 2.6.2 Metode plezanja v hrib Za “lepe” funkcije je bilo razvitih kar nekaj metod, ki temeljijo na naraˇsˇcanju ˇ ne moremo izraˇcufunkcije, kar vodi smer raziskovanja preiskovalnega prostora. Ce nati odvoda funkcije, pa te metode pogosto ne najdejo dobrih reˇsitev. Takim metodam reˇcemo metode plezanja v hrib. Metode so zelo uspeˇsne na funkcijah z enim samim maksimumom (unimodalne funkcije). Na funkcijah z veˇcimi maksimumi (multimodalne funkcije) se sooˇcimo s teˇzavami, da se lahko povzpnemo na prvi najdeni maksimum, ki ni nujno globalni maksimum. Ko enkrat doseˇzemo lokalni maksimum, ne moremo veˇc najti kakˇsne boljˇse toˇcke. Na sliki 2.6 vidimo primer, kjer se iz nakljuˇcno izbrane zaˇcetne toˇcke X, povzpnemo do vrha B. Viˇsjih vrhov A in C ne najdemo. 2. OSNOVE GENETSKIH ALGORITMOV 27 Slika 2.6: Plezanje v hrib 2.6.3 Algoritem ohlajanja Algoritem ohlajanja (angl. simulated annealing) je leta 1982 definiral Kirkpatrick. Gre za spremenjeno metodo plezanja v hrib. Iz nakljuˇcno izbrane toˇcke preiskovalˇ nas premik privede nega prostora naredimo premik v nakljuˇcno izbrano smer. Ce ˇ v viˇsjo toˇcko s pomoˇcjo tega premika ne pridemo, do viˇsje toˇcke, ga sprejmemo. Ce ga sprejmemo samo z doloˇceno verjetnostjo p(t), kjer t predstavlja temperaturo. Verjetnost p(t) je v zaˇcetku blizu 1, vendar s ˇcasom pada proti niˇcli – od tod analogija z ohlajanjem trdnega telesa. V zaˇcetku sprejmemo skoraj vsak premik, vendar se z niˇzanjem “temperature” niˇza tudi verjetnost, da sprejmemo neugodni premik. Neugodni premiki so pomembni, kadar ˇzelimo “uiti” lokalnemu maksimumu, je pa oˇcitno, da nas preveˇc takˇsnih premikov privede proˇc od maksimuma. Podobno kot pri nakljuˇcnem iskanju algoritem ohlajanja preverja eno moˇzno reˇsitev naenkrat, ter tako ne daje kakˇsne sploˇsne slike o preiskovalnem prostoru. Ne shranjujemo niti nobenih informacij o predhodnih premikih, da bi se s pomoˇcjo le-teh odloˇcali o nadalnjih izbirah. Pregled in primerjavo tehnik bomo zakljuˇcili z duhovitim opisom, ki ga je 1. septembra 1993, na Internetu v ˇclanku Kenguruji v noviˇcarski skupini comp.ai.neuralnets objavil W. Sarle. Ta del ˇclanka nam poda lepo primerjavo med plezanjem v hrib, ohlajanjem in genetskimi algoritmi: 2. OSNOVE GENETSKIH ALGORITMOV “Opazimo, da lahko v vseh metodah plezanja v hrib, ki smo jih do sedaj opisali, kenguru upa, da bo naˇsel vrh gore blizu toˇcke, kjer je zaˇcel. Ni nobenega zagotovila, da bo ta gora Everest, ali sploh visoka gora. Da bi naˇsli globalni optimum, se poskuˇsajo uporabljati razliˇcne metode. Pri ohlajanju je kenguru pijan in zelo dolgo skaˇce naokoli. Vendar se poˇcasi strezni in teˇzi k temu, da bi priskakal do vrha. V genetskih algoritmih imamo veliko kengurujev, ki jih s padali nakljuˇcno spustimo v Himalajo (ˇce se pilot ni izgubil). Ti kenguruji ne vedo, da bi naj iskali vrh Mt. Everesta. Kakorkoli, vsakih nekaj let postrelimo kenguruje v niˇzinah in upamo, da bodo preostali plodni in se razmnoˇzili.” 28 3 Matematiˇ cno ozadje genetskih algoritmov Genetski algoritmi so preprosti, saj so zasnovani na elementarnih operacijah nad nizi, ki nam predstavljajo moˇzne reˇsitve problema. Iz empiriˇcnih razlogov vemo, da evolucijsko razvijanje reˇsitev, kakrˇsnega poznamo iz GA, vodi do zelo dobrih reˇsitev. V tem poglavju si bomo ogledali, kako delovanje genetskih algoritmov podpira teorija. 3.1 Sheme Za teoretiˇcno utemeljevanje GA bomo definirali sheme. Naj bodo reˇsitve problema kodirane z nizi dolˇzine l nad neko abecedo A. Shemo vpeljemo z uvedbo ?, t.i. nadomestnega simbola. Tako iz abecede A dobimo razˇsirjeno abecedo A+ = A∪{?}. Znak ? predstavlja katerikoli znak iz abecede A. Sheme definiramo kot nize dolˇzine l nad abecedo A+ . Shema predstavlja vse nize, ki se z njo ujemajo na vseh mestih razliˇcnih od ?. Na primer, poglejmo binarne nize in sheme dolˇzine 5. Potem shemi (? 0 1 0 0) ustrezata natanko dva niza: (00100), (10100), shema (? 0 1 ? 0) pa predstavlja ˇstiri nize: (00100), (00110), (10100), (10110). 29 ˇ 3. MATEMATICNO OZADJE GENETSKIH ALGORITMOV 30 Seveda shema (1 0 1 1 0) predstavlja natanko en niz: (10110), shema (? ? ? ? ?) pa je predstavnica vseh nizov dolˇzine 5. Oˇcitno je, da vsaka shema predstavlja 2n nizov, kjer je n ˇstevilo simbolov ? v shemi. Za nize dolˇzine l (v mislih imamo binarne nize), obstaja 3l razliˇcnih shem, saj za vsak lokus obstajajo trije moˇzni aleli: (0, 1, ?). Po drugi strani je vsak niz dolˇzine l predstavnik 2l shem. V populaciji velikosti n in z nizi dolˇzine l lahko torej prikaˇzemo med 2l in n2l shem. Razliˇcne sheme imajo razliˇcne lastnosti. Opazili smo ˇze, da ˇstevilo nadomestnih simbolov v shemi doloˇca ˇstevilo nizov, ki tej shemi pripadajo. Uvedimo ˇse dve pomembni lastnosti shem. Red sheme S nam poda ˇstevilo fiksnih znakov, t.j. od ? razliˇcnih znakov, v shemi S. Oznaˇcimo ga z o(S). Tako za shemo S1 = (? 0 1 0 0) velja o(S1 ) = 4, za S2 = (? 0 1 ? ?) pa o(S2 ) = 2. Red sheme je pomemben, ko raˇcunamo moˇznosti preˇzivetja sheme po mutaciji. Aktivna dolˇzina sheme S je razdalja med prvim in zadnjim fiksnim mestom v ˇ pogledamo prejˇsnja primera: δ(S1 ) = 3 in δ(S2 ) = 1. shemi, oznaˇcimo jo z δ(S). Ce Aktivna dolˇzina sheme je pomembna pri raˇcunanju preˇzivetja sheme pri kriˇzanju. 3.2 Osnovni izrek o genetskih algoritmih Poglejmo, kako selekcija in razmnoˇzevanje vplivata na ˇstevilo predstavnikov sheme v populaciji. Imamo neko doloˇceno shemo S. Oznaˇcimo z ξ(S, t) ˇstevilo predstavnikov, ki v ˇcasu t (ˇcas merimo v generacijah) pripadajo shemi S. Definirajmo ˇse eno lastnost sheme S. Uspeˇsnost sheme S (angl. schema fitness) v ˇcasu t je povpreˇcna uspeˇsnost vseh nizov v populaciji, ki jih shema S predstavlja. Oznaˇcimo jo z oceni(S, t). Recimo, da p nizov {vi1 , vi2 , . . . , vip } v populaciji ustreza shemi S v ˇcasu t. Potem je oceni(S, t) = p X oceni(vij ) j=1 p . V fazi selekcije ustvarimo vmesno populacijo, kjer vsak kromosom kopiramo niˇckrat, enkrat ali veˇckrat, odvisno od njegove uspeˇsnosti. Kot je bilo reˇceno v ˇ 3. MATEMATICNO OZADJE GENETSKIH ALGORITMOV 31 prejˇsnjem poglavju, je verjetnost, da bo kromosom vi izbran za razmnoˇzevanje, enaka pi = oceni(vi )/U (t) (U (t) je skupna uspeˇsnost celotne populacije v ˇcasu t). Po fazi selekcije priˇcakujemo, da bo ξ(S, t + 1) nizov ustrezalo shemi S. Ker je (1) za povpreˇcen niz, ki pripada shemi S, verjetnost selekcije enaka oceni(S, t)/U (t), (2) ˇstevilo nizov, ki jih shema S predstavlja, enako ξ(S, t) in (3) ˇstevilo selekcij enako velikost pop, je oˇcitno, da je ξ(S, t + 1) = ξ(S, t) · velikost pop · oceni(S, t) . U (t) Upoˇstevamo, da je povpreˇcna uspeˇsnost populacije U (t) = U (t)/velikost pop in zgornjo formulo pretvorimo v ξ(S, t + 1) = ξ(S, t) · oceni(S, t) U (t) . (3.1) Formulo (3.1) imenujemo formula rasti sheme po razmnoˇzevanju. Z drugimi besedami, ˇstevilo nizov v populaciji raste v razmerju uspeˇsnosti sheme s povpreˇcno uspeˇsnostjo populacije. To pomeni, da nadpovpreˇcne sheme dobijo v naslednji generaciji veˇcje ˇstevilo predstavnikov, slabˇse manjˇse ˇstevilo, predstavnikov povpreˇcnih shem pa ostane enako ˇstevilo. Predpostavimo, da je shema S v naslednji generaciji % nad povpreˇcjem (t.j. oceni(S, t) = U (t) + · U (t)). Potem je ξ(S, t) = ξ(S, 0)(1 + )t , in = (oceni(S, t) − U (t))/U (t) ( > 0 za nadpovpreˇcne sheme in < 0 za podpovpreˇcne sheme). Ne le, da nadpovpreˇcne sheme dobijo poveˇcano ˇstevilo predstavnikov, ampak ˇstevilo le-teh raste eksponentno, kot eksponentno pada ˇstevilo podpovpreˇcnih shem. Selekcija sama ne doda za pregled novih toˇck (moˇznih reˇsitev) preiskovalnega prostora, ampak samo kopira stare v vmesno populacijo. Za raziskovanje novih toˇck je odgovorna naslednja faza v genetskem algoritmu - razmnoˇzevanje, pri ˇcemer uporabljamo dve operaciji: kriˇzanje in mutacijo. Shema S preˇzivi kriˇzanje, ˇce je vsaj eden od potomcev njen predstavnik. Verjetnost, da shema S preˇzivi kriˇzanje, je odvisna od aktivne dolˇzine sheme δ(S), saj ˇ 3. MATEMATICNO OZADJE GENETSKIH ALGORITMOV 32 kriˇzanje shemo uniˇci, kadar je mesto kriˇzanja med prvim in zadnjim fiksnim mestom v kromosomu. V sploˇsnem primeru izberemo mesto kriˇzanja v enem izmed m − 1 moˇznih mest. Torej je verjetnost uniˇcenja sheme pd (S) = δ(S) , m−1 in zato verjetnost preˇzivetja sheme ps (S) = 1 − δ(S) . m−1 Pomembno se je zavedati, da operator kriˇzanja z verjetnostjo pc izvajamo samo nad nekaterimi kromosomi. Kar pomeni, da je verjetnost preˇzivetja sheme v resnici ps (S) = 1 − pc · δ(S) . m−1 Zgodi se lahko tudi, da shema S preˇzivi kriˇzanje tudi, ˇce je mesto kriˇzanja med prvim in zadnjim fiksnim mestom v kromosomu (npr. ˇce sta oba starˇsa predstavnika iste sheme). Zato formulo preˇzivetja sheme pri kriˇzanju zapiˇsimo kot: ps (S) ≥ 1 − pc · δ(S) . m−1 Z upoˇstevanjem sprememb pri kriˇzanju in prejˇsnjih ugotovitev iz faze selekcije, lahko formulo rasti sheme v razmnoˇzevanju izpopolnimo: ξ(S, t) · oceni(S, t) δ(S) ξ(S, t + 1) ≥ (3.2) 1 − pc · . m−1 U (t) Formula (3.2) nam pove, da je priˇcakovano ˇstevilo kromosomov, ki pripadajo shemi S v naslednji generaciji, funkcija ˇstevila kromosomov, ki pripadajo shemi v tej ˇ generaciji, relativne uspeˇsnosti sheme in njene aktivne dolˇzine. Stevilo kromosomov nadpovpreˇcne sheme ˇse vedno raste eksponentno. Druga operacija, ki jo v fazi razmnoˇzevanja izvajamo, je mutacija. Operator mutacije z verjetnostjo pm nakljuˇcno spremeni doloˇcen gen v kromosomu. Sprememba ˇ ˇzelimo, da shema preˇzivi pomeni, da se vrednost premeni iz ‘0’ v ‘1’ in obratno. Ce mutacijo, je oˇcitno, da morajo vsa fiksna mesta (ˇstevilo fiksnih mest sheme S smo oznaˇcili z o(S)) v shemi ostati nespremenjena. Ker je verjetnost spremembe gena ˇ 3. MATEMATICNO OZADJE GENETSKIH ALGORITMOV 33 enaka pm , je verjetnost preˇzivetja gena enaka 1 − pm . Mutacije genov so med seboj neodvisne, tako je verjetnost, da shema S preˇzivi mutacijo enaka psm (S) = (1 − pm )o(S) . Ker je pm 1, lahko to verjetnost zapiˇsemo s pribliˇzkom: psm (S) ≈ 1 − o(S) · pm . Zdruˇzeni uˇcinki selekcije, kriˇzanja in mutacije, nam dajo novo obliko formule rasti sheme v razmnoˇzevanju: ξ(S, t + 1) ≥ ξ(S, t) · oceni(S, t) h U (t) i δ(S) ih 1 − pc · 1 − o(S) · pm . m−1 (3.3) Formula (3.3) nam (podobno kot 3.1 in 3.2) pove, da je priˇcakovano ˇstevilo kromosomov, ki pripadajo shemi S v naslednji generaciji, funkcija ˇstevila kromosomov, ki pripadajo shemi, relativne uspeˇsnosti sheme in njene aktivne dolˇzine ter njenega reda. Znova je oˇcitno, da ˇstevilo kromosomov nadpovpreˇcne sheme s kratko aktivno dolˇzino in majhnega reda raste eksponentno. Formula (3.3) je osnovana na predpostavki, da je funkcija uspeˇsnosti f pozitivna na celotnem definicijskem obmoˇcju. Tako dobimo izrek o shemah ali osnovni izrek o genetskih algoritmih: Izrek 1 (Izrek o shemah) Z genetskim algoritmom se v evolucijskem procesu z generacijami eksponentno poveˇcuje ˇstevilo primerkov nadpovpreˇcno uspeˇsnih (in pada ˇstevilo primerkov podpovpreˇcno uspeˇsnih) shem s kratko aktivno dolˇzino in nizkega reda. Izrek velja za model enostavnega genetskega algoritma, kakrˇsnega smo obravnavali v predhodnih poglavjih. Izrek o shemah pojasnjuje delovanje genetskih algoritmov. Namesto neposrednega generiranja reˇsitev GA z odkrivanjem in kombiniranjem predstavnikov uspeˇsnih shem postopoma sestavljajo ˇcedalje boljˇse reˇsitve. Pri tem igrajo posebno vlogo nadpovpreˇcne sheme kratke aktivne dolˇzine in nizkega reda. Takim shemam pravimo gradniki ([1]). ˇ 3. MATEMATICNO OZADJE GENETSKIH ALGORITMOV 34 Hipoteza 1 (Hipoteza o gradnikih) Genetski algoritem raziskuje reˇsitve blizu optimuma, tako da preiskuje, zdruˇzuje in znova preiskuje nadpovpreˇcno uspeˇsne sheme s kratko aktivno dolˇzino in nizkega reda. ˇ Ceprav je bil dokaz te hipoteze tema mnogih raziskav, se lahko pri netrivialnih problemih sklicujemo zgolj na empiriˇcne rezultate. V zadnjih petnajstih letih je bilo na razliˇcnih podroˇcjih razvitih mnogo genetskih algoritmov, ki so hipotezo o gradnikih potrdili. Hipoteza nam pove, da je izbor kodiranja reˇsitev v genetskem algoritmu kjuˇcnega pomena, saj mora zadoˇsˇcati ideji kratkih gradnikov. Rekli smo, da lahko v populaciji velikosti velikost pop kromosomov dolˇzine m genetski algoritem obdela vsaj 2m in najveˇc velikost pop · 2m shem. Nekaj od teh shem je obdelanih v koristnem smislu (pripomorejo k iskanju optimalne reˇsitve): to so sheme, katerih ˇstevilo predstavnikov v populaciji eksponentno raste in jih kriˇzanje in mutacija ne “pokvarita”. Takim shemam pravimo koristne sheme. Obdelovanje shem v genetskih algoritmih je analiziral ˇze Holland leta 1975. Izpeljal je oceno ˇstevila koristnih shem. Po tej oceni nastopa pri obravnavanju n nizov O(n3 ) takˇsnih shem1 . To lastnost genetskih algoritmov je Holland poimenoval implicitni paralelizem, saj jo dobimo brez dodatne uporabe spomina ali dodatnega obdelovanja. Zanimivo je opomniti, da je v populaciji velikosti velikost pop predstavljenih mnogo veˇc shem od velikost pop. 1 Pred kratkim je bilo pokazano, da ocena O(n3 ) velja le v doloˇcenih primerih, ko je velikost pop sorazmerna z 2l . 4 Neodvisnostno ˇ stevilo grafa 4.1 Osnovni pojmi iz teorije grafov Graf G predstavlja neprazna mnoˇzica elementov, ki jih imenujemo toˇcke grafa, in seznam (neurejenih) parov elementov, ki jih imenujemo povezave grafa. Mnoˇzico ˇ sta v in w toˇcki grafa toˇck grafa oznaˇcimo z V (G), seznam povezav pa z E(G). Ce G, potem za povezavi vw ali wv reˇcemo, da povezujeta toˇcki v in w. Imejmo graf G z mnoˇzico toˇck V (G) in seznamom povezav E(G) ter graf G0 z ˇ je V 0 podmnoˇzica mnoˇzice V (G) in ˇce mnoˇzico toˇck V 0 in seznamom povezav E 0 . Ce je vsaka povezava iz seznama E 0 tudi v seznamu povezav E(G), potem je G0 podgraf grafa G. ˇ sta v in w povezani s povezavo, reˇcemo, da Naj bosta v in w toˇcki grafa G. Ce sta toˇcki v in w sosednji ali krajiˇsˇci povezave vw. Naj bo G graf z n toˇckami, oznaˇcenimi z 1, 2, 3, . . . , n. Matrika sosednosti M (G) je matrika razseˇznosti n×n, v kateri element v j-tem stolpcu i-te vrstice pove ˇstevilo povezav, ki povezujejo toˇcki i in j. Povezave, ki povezujejo isti par toˇck, imenujemo veˇckratne povezave. Povezava, ki povezuje neko toˇcko s seboj, je zanka. Enostavni graf je graf brez zank in veˇckratnih povezav. Matrika sosednosti za enostavni graf je binarna matrika, v kateri je element v j-tem stoplcu i-te vrstice enak 1, ˇce sta toˇcki i in j povezani, sicer je enak 0. Naj bo G enostavni graf. Komplement G grafa G je graf z mnoˇzico toˇck V (G), v katerem sta poljubni toˇcki povezani natanko tedaj, ko v grafu G nista. Polni graf je graf, v katerem je vsak par razliˇcnih toˇck povezan z natanko eno 35 ˇ 4. NEODVISNOSTNO STEVILO GRAFA 36 povezavo. Poln graf na n toˇckah oznaˇcimo s Kn . Polni podgraf imenujemo tudi klika. Velikost najveˇcje klike oz. velikost polnega podgrafa grafa G oznaˇcimo z ω(G). Mnoˇzico toˇck, v kateri noben par toˇck ni soseden, imenujemo neodvisna mnoˇzica toˇck, neodvisna mnoˇzica toˇck najveˇcje velikosti pa je najveˇcja neodvisna mnoˇzica. Moˇc najveˇcje neodvisne mnoˇzice imenujemo neodvisnostno ˇstevilo grafa G in ga oznaˇcimo z α(G). Neodvisnostno ˇstevilo in velikost najveˇcje klike sta tesno povezani. Oˇcitno namreˇc velja α(G) = ω(G). 4.2 Genetski pristop za iskanje najveˇ cje neodvisne mnoˇ zice Problema doloˇcitve neodvisnostnega ˇstevila in velikosti najveˇcje klike sta NP-teˇzka. V [2] so avtorji predstavili genetski algoritem za reˇsevanje problema neodvisnostnega ˇstevila grafa. 4.2.1 Genetski algoritem V genetskem algoritmu, uporabljenem za reˇsevanje problema neodvisnostnega ˇstevila, predstavlja P (t) populacijo v generaciji t. Populacija je konstantne velikosti velikost pop, kar pomeni, da vedno obstaja velikost pop kromosomov. Reˇsitev, ki jo kromosom β predstavlja, razumemo kot neodvisno mnoˇzico, ki jo iz β izpeljemo. ˇ se vrednost najboljˇsega kromosoma po Tstop generacijah ne izboljˇsa, prenehamo Ce z izvajanjem algoritma. Na sliki 4.1 je predstavljen algoritem, ki smo ga uporabili za iskanje neodvisnostnega ˇstevila grafa. V inicializaciji se velikost pop kromosomom priredijo nakljuˇcno izbrane vrednosti genov. Ocenjevanje izraˇcuna vrednost uspeˇsnosti vseh kromosomov v populaciji. Izbor je faza selekcije, kjer se s pomoˇcjo rulete izberejo novi osebki populacije, ki jih v fazi razmnoˇzevanja med sabo kriˇzamo in potomce z doloˇceno verjetnostjo tudi mutiramo. ˇ 4. NEODVISNOSTNO STEVILO GRAFA 37 PROCEDURE GenetskiAlgoritem; BEGIN inicializiraj P(0); najboljˇ si := 0; ˇ stevec := 0; t := 0; stevec < Tstop DO WHILE ˇ BEGIN oceni kromosome v P(t); reˇ sitev := najboljˇ si kromosom v P(t); IF (reˇ sitev > najboljˇ si) THEN BEGIN ˇ stevec := 0; najboljˇ si := reˇ sitev; END; ˇ stevec := ˇ stevec + 1; izberi P(t+1) iz P(t); razmnoˇ zevanje izbranih; t := t + 1; END; END. Slika 4.1: Genetski algoritem za iskanje neodvisnostnega ˇstevila 4.2.2 Kodiranje in dekodiranje reˇ sitev V [2] so avtorji predlagali za kodiranje reˇsitev naslednjo metodo. Metoda kodira moˇzno reˇsitev kot permutacijo objektov in jo s poˇzreˇsnim algoritmom dekodira. Glede na to, da so objekti v danem problemu toˇcke grafa G(V, E), je kromosom permutacija n toˇck, kjer je n = |V (G)|. Poˇzreˇsno dekodiranje doloˇci vse toˇcke v kromosomu, ki pripadajo skupni neodvisni mnoˇzici, v vrstnem redu, kot se pojavijo v permutaciji. Oznaˇcimo permutacijo β velikosti n kot β = (β(1), β(2), . . . , β(n)), kjer je vsak β(k), 1 ≤ k ≤ n, toˇcka iz V (G). Ker podan kromosom opisuje vrstni red toˇck, ki bi lahko bile v neodvisni mnoˇzici, algoritem dekodiranja uporablja sosednost ˇze pregledanih toˇck z ostalimi, tako da ˇ 4. NEODVISNOSTNO STEVILO GRAFA 38 izkljuˇci tiste, ki v neodvisni mnoˇzici ne morejo biti. Algoritem dekodiranja je predstavljen na sliki 4.2 in vrne ˇstevilo toˇck v neodvisni mnoˇzici, ki jo izpeljemo iz kromosoma β. ˇ na koncu dekodiranja velja vrednost[v] = 1, potem toˇcka v pripada neodCe visni mnoˇzici, sicer pa ne. Mnoˇzica sosednje[v] vsebuje vse toˇcke, ki so sosednje z v. Ni teˇzko preveriti, da je neodvisna mnoˇzica, izpeljana iz permutacije na tak naˇcin, vedno maksimalna. Dokaˇzemo lahko tudi, da za vsako maksimalno neodvisno mnoˇzico obstaja permutacija, iz katere algoritem to mnoˇzico izpelje . FUNCTION Dekodiraj(β); BEGIN FOR (∀v ∈ V ) DO vrednost[v] := 1; ˇ stevec := 1; FOR i := 1 TO n DO BEGIN v := β(i); IF (vrednost[v] = 1) THEN BEGIN ˇ stevec := ˇ stevec + 1; FOR (∀u ∈ sosednje[v]) DO vrednost[u] := 0; END; END; RETURN ˇ stevec; END. Slika 4.2: Funkcijski algoritem za dekodiranje kromosoma Po konˇcanem dekodiranju je informacija o neodvisni mnoˇzici, izpeljani iz kromosoma β, shranjena v nizu vrednost. Glede na to informacijo je moˇzno preurediti toˇcke v β tako, kot kaˇze funkcijski algoritem na sliki 4.3. Najprej postavimo toˇcke, ki pripadajo neodvisni mnoˇzici, na zaˇcetek preurejenega kromosoma, v vrstnem redu, kot se pojavijo v originalu β. Nato preostala mesta permutacije zapolnimo s toˇckami, ki niso v neodvisni mnoˇzici. V funkcijo dekodiranja ˇ 4. NEODVISNOSTNO STEVILO GRAFA 39 na konec dodamo vrstico: β := Preuredi(β, vrednost); Intuitivno lahko priˇcakujemo, da bo preurejanje kromosomov pripomoglo k uspeˇsnenjˇsemu delovanju algoritma. V naˇsi implementaciji je verjetnost preurejanja pr = 0.9. Na preurejanje lahko gledamo, tudi kot na dodatno mutiranje. FUNCTION Preuredi(β, vrednost); BEGIN j := 1; FOR i := 1 TO n DO IF (vrednost[i] = 1) THEN BEGIN γ[j] := β[i]; j := j + 1; END; FOR i := 1 TO n DO IF (vrednost[i] = 0) THEN BEGIN γ[j] := β[i]; j := j + 1; END; RETURN γ; END. Slika 4.3: Funkcijski algoritem za preurejanje kromosoma 4.3 Funkcija uspeˇ snosti Funkcija uspeˇsnosti je definirana1 kot: f (β) = eDekodiraj(β)−Dmin +1 , 1 V [2] so avtorji kot funkcijo uspeˇsnosti v implementaciji programa uporabili funkcijo g(β) = 2 2 Dekodiraj(β) − Dmin + 1. ˇ 4. NEODVISNOSTNO STEVILO GRAFA 40 kjer je Dekodiraj(β) enako ˇstevilu toˇck v neodvisni mnoˇzici izpeljani iz kromosoma β in Dmin najmanjˇsa vrednost Dekodiraj(γ) med vsemi kromosomi γ iz generacije t. Eksponentno funkcijo smo izbrali za to, da dobijo bolj uspeˇsni kromosomi veˇcjo moˇznost, da bodo izbrani za razmnoˇzevanje, saj je razlika Dekodiraj(β) − Dmin + 1 v veˇcini primerov zelo majhna. 4.4 Operaciji kriˇ zanja in mutacije Za operacijo kriˇzanja smo uporabili veˇc razliˇcnih tipov kriˇzanja permutacij. Izvedli smo obiˇcajno in spremenjeno kriˇzanje z delno preslikavo (angl. partially mapped crossover - PMX), kriˇzanje poloˇzajev (angl. order crossover - OX) ter kroˇzno kriˇzanje (angl. cycle crossover - CX). 4.4.1 Kriˇ zanje z delno preslikavo Obiˇcajno kriˇzanje z delno preslikavo zgradi potomca tako, da izbere del permutacije enega starˇsa ter pri kolikor toˇckah je moˇzno ohrani vrstni red in mesto toˇck drugega starˇsa. Del permutacije se izbere tako, da nakljuˇcno doloˇcimo dve toˇcki kriˇzanja, ki sluˇzita kot meji za zamenjavo. Poglejmo si to na primeru. Starˇsa (toˇcki kriˇzanja sta oznaˇceni z ‘| ’) s1 = (1 2 3 | 4 5 6 7 | 8 9) in s2 = (4 5 2 | 1 8 7 6 | 9 3) tvorita potomca na naslednji naˇcin. Najprej se dela kromosomov med toˇckama kriˇzanja zamenjata (znak ‘x’ naj predstavlja trenutno ˇse neznano vrednost): p1 = (x x x | 1 8 7 6 | x x) in p2 = (x x x | 4 5 6 7 | x x). Zamenjava definira naslednje preslikave: 1 ↔ 4, 8 ↔ 5, 7 → 6 in 6 ← 7. Tiste vrednosti, ki v zgornjih preslikavah ne nastopajo (2, 3 in 8), ostanejo v potomcih na svojih mestih: p1 = (x 2 3 | 1 8 7 6 | x 9) in p2 = (x x 2 | 4 5 6 7 | 9 3). ˇ 4. NEODVISNOSTNO STEVILO GRAFA 41 Sedaj bi moral biti prvi x v potomcu p1 enak 1, vendar je 1 ˇze zastopana v permutaciji, zato 1 preslikamo, kot nam pove preslikava: 1 ↔ 4. Podobno nadomestimo drugi x v potomcu p1 s 5, nedopolnjeni mesti v potomcu p2 sta (po enakem postopku) 1 in 8, v tem vrstnem redu. Tako sta potomca enaka: p1 = (4 2 3 | 1 8 7 6 | 5 9) in p2 = (1 8 2 | 4 5 6 7 | 9 3). Spremenjeno kriˇzanje z delno preslikavo, ki je bilo uporabljeno v naˇsem primeru, deluje tako, da se doloˇcita toˇcki kriˇzanja in se nato v celoti doloˇci preslikava, ki jo geni med toˇckama kriˇzanja doloˇcajo. Tako bi v prejˇsnjem primeru, ˇce bi dodali preslikave, ki jih doloˇcajo prve tri toˇcke (1 ↔ 4, 8 ↔ 5, 7 ↔ 6) dobili kot preslikavo naslednjo permutacijo: 1 2 3 4 5 6 7 8 9 π= . 4 2 3 1 8 7 6 5 9 Vendar moramo dodati ˇse eno preslikavo in sicer 1 2 3 4 5 6 7 8 π= 4 2 3 1 8 6 7 5 7 ↔ 6. Tako dobimo: 9 . 9 Sedaj, ko imamo preslikavo definirano, preslikamo vse toˇcke v obeh starˇsih, kot doloˇca preslikava. Tako po spremenjenem kriˇzanju z delno preslikavo na koncu dobimo potomca: p1 = (4 2 3 | 1 8 6 7 | 5 9) in p2 = (1 8 2 | 4 5 7 6 | 9 3). Razlika med obema operatorjema je v tem, da ni nujno, da se izbrani podsekvenci v starˇsih izmenjata, kot demonstrira prejˇsnji primer. Kriˇzanje z delno preslikavo smo spremenili zato, ker so avtorji v [2] svoje rezultate dosegli s spremenjenim kriˇzanjem z delno preslikavo. V [2] ni podano, kako so avtorji PMX kriˇzanje spremenili, zato smo se mi odloˇcili za prej opisano razliˇcico spremenjenega PMX kriˇzanja. S to vrsto kriˇzanja smo dosegli zanimive rezultate, ki so podani v tabeli 4.1. ˇ 4. NEODVISNOSTNO STEVILO GRAFA 4.4.2 42 Kriˇ zanje poloˇ zajev S pomoˇcjo tega tipa operatorja za kriˇzanje ustvarimo potomca tako, da izberemo zaporedje toˇck iz prvega starˇsa ter ohranimo relativni poloˇzaj ostalih toˇck v drugem starˇsu. Poglejmo, katera potomca bi dobili s tem operatorjem na ˇze znanem primeru. Starˇsa (toˇcki kriˇzanja sta oznaˇceni z ‘| ’) s1 = (1 2 3 | 4 5 6 7 | 8 9) in s2 = (4 5 2 | 1 8 7 6 | 9 3) tvorita potomca na naslednji naˇcin. Najprej se dela kromosomov med toˇckama kriˇzanja skopirata v potomca: p1 = (x x x | 4 5 6 7 | x x). p2 = (x x x | 1 8 7 6 | x x) in Nato zaˇcenˇsi v drugi toˇcki kriˇzanja enega starˇsa, skopiramo toˇcke drugega starˇsa v vrstnem redu, kot se pojavijo, a pri tem izpustimo toˇcke, ki so ˇze v potomcu. Ko doseˇzemo konec kromosoma, nadaljujemo na njegovem prvem mestu. Vrstni red toˇck v drugem starˇsu (od druge toˇcke kriˇzanja dalje) je 9 − 3 − 4 − 5 − 2 − 1 − 8 − 7 − 6; ko odstranimo toˇcke 4, 5, 6 in 7, ki so ˇze v potomcu, dobimo 9 − 3 − 2 − 1 − 8. Te toˇcke vstavimo v prvega potomca (zaˇcenˇsi po drugi toˇcki kriˇzanja): p1 = (2 1 8 | 4 5 6 7 | 9 3). Podobno dobimo drugega potomca: p2 = (3 4 5 | 1 8 7 6 | 9 2). Kriˇzanje poloˇzajev izkoriˇsˇca lastnost kromosomov, da so pomembni poloˇzaji toˇck (t.j. vrstni red toˇck), saj v dekodiranju neodvisno mnoˇzico iˇsˇcemo zaporedno po toˇckah, kot se pojavijo. 4.4.3 Kroˇ zno kriˇ zanje Kroˇzno kriˇzanje gradi potomca tako, da poloˇzaj vsake toˇcke v potomcu ustreza poloˇzaju te toˇcke v enem od starˇsev. Na primeru poglejmo, kako kroˇzno kriˇzanje deluje. Starˇsa ˇ 4. NEODVISNOSTNO STEVILO GRAFA 43 s1 = (1 2 3 4 5 6 7 8 9) in s2 = (4 1 2 8 7 6 9 3 5) bi dala enega od potomcev tako, da vzamemo prvo mesto prvega starˇsa: p1 = (1 x x x x x x x x). Glede na to, da bi morala biti vsaka toˇcka (in njen poloˇzaj) vzeta iz enega od starˇsev, sedaj nimamo izbire: naslednja toˇcka, ki pride v poˇstev je toˇcka 4, saj je toˇcka 4 v starˇsu p2 na istem mestu kot v starˇsu p1 izbrana toˇcka 1. V p1 je ta toˇcka na mestu ˇstevilka ‘4’, zato je p1 = (1 x x 4 x x x x x). To nam poda toˇcko 8, saj je 8 v p2 istoleˇzna 4 v p1 . Tako dobimo p1 = (1 x x 4 x x x 8 x); ˇ sledimo temu pravilu, sta naslednji toˇcki, ki ju vstavimo v potomca 3 in 2. Sedaj Ce pa nam izbira toˇcke 2 nakaˇze, da moramo izbrati toˇcko 1, ki pa je ˇze v potomcu tako smo sklenili krog p1 = (1 2 3 4 x x x 8 x). Preostale toˇcke dopolnimo iz drugega starˇsa: p1 = (1 2 3 4 7 6 9 8 5). Podobno dobimo p2 = (4 1 2 8 5 6 7 3 9). Kroˇzno kriˇzanje ohranja absolutni poloˇzaj toˇck glede na kromosoma starˇsev. 4.4.4 Operacija mutacije Uporabljena je obiˇcajna oblika mutacije, pri kateri ˇzelimo ohranjati permutacije. Razen mesta gena, ki mutira, nakljuˇcno doloˇcimo ˇse en gen v kromosomu, in njuni vrednosti zamenjamo. Na ta naˇcin kromosomi ohranijo lastnost permutacije. K mutaciji pripomore tudi, kot ˇze omenjeno, preurejanje kromosoma, ˇce le-to izvedemo z verjetnostjo pr < 1. ˇ 4. NEODVISNOSTNO STEVILO GRAFA 4.5 44 Elitna strategija Elitna strategija je oblika genetskega algoritma, kjer je spremenjen postopek doloˇcanja osebkov nove generacije. Z uporabo elitne strategije doloˇcimo osebke za novo generacijo tako, da s pomoˇcjo selekcije, kriˇzanja in mutacije po obiˇcajnem postopku ustvarimo vmesno populacijo in jo ocenimo. Stare populacije ne nadomestimo z na novo dobljeno populacijo, temveˇc iz obeh populacij izberemo velikost pop kromosomov z najveˇcjo uspeˇsnostjo. Ti izbrani kromosomi so osebki v novi generaciji. Eksperimentalni rezultati kaˇzejo, da s pomoˇcjo elitne strategije, genetski algoritem hitreje konvergira k optimalni reˇsitvi. Na sliki 4.4 je predstavljen genetski algoritem z elitno strategijo. PROCEDURE GenetskiAlgoritem; BEGIN inicializiraj P(0); najboljˇ si := 0; ˇ stevec := 0; t := 0; WHILE ˇ stevec < Tstop DO BEGIN oceni kromosome v P(t); reˇ sitev := najboljˇ si kromosom v P(t); IF (reˇ sitev > najboljˇ si) THEN BEGIN ˇ stevec := 0; najboljˇ si := reˇ sitev; END; ˇ stevec := ˇ stevec + 1; izberi P(t+1) iz P(t); razmnoˇ zevanje izbranih; P(t+1) := elitni izbor nad P(t) in P(t+1); t := t + 1; END; END. Slika 4.4: Genetski algoritem z elitno strategijo ˇ 4. NEODVISNOSTNO STEVILO GRAFA 4.6 45 Eksperimentalni rezultati Opisani algoritem je implementiran v programskem okolju Borland Delphi 4 (objektni Pascal). Program smo poganjali na osebnem raˇcunalniku s procesorjem Intel Celeron 433 MHz s 64 MB delovnega pomnilnika. 4.6.1 DIMACS testni grafi DIMACS testni grafi so bili predstavljeni v drugem implementacijskem izzivu leta 1993 na NSF centru za znanost in tehnologijo. Namenjeni so za testiranje uˇcinkovitosti programov oziroma algoritmov za razliˇcne probleme diskretne optimizacije: teorija kodiranja, barvanje grafov, geometrija in diagnosticiranje napak. Grafov za testiranje uˇcinkovitosti iskanja najveˇcje neodvisne mnoˇzice med DIMACS grafi sicer ni, so pa testni grafi za iskanje najveˇcje klike. Ker neodvisnostno ˇstevilo grafa ustreza velikosti najveˇcje klike njegovega komplementa, lahko te grafe seveda enostavno uporabimo za naˇs namen. Testni grafi so sestavljeni iz nakljuˇcnih grafov z znanimi velikostmi najveˇcjih klik. Na voljo je devet razliˇcnih razredov grafov, ki skupaj vsebujejo 66 grafov velikosti od 28 do 3.361 toˇck in z do 5.506.380 povezav. 4.6.2 Vrednosti uporabljenih parametrov Pred testiranjem programa je bilo potrebno doloˇciti ustrezne parametre. Na zaˇcetku smo doloˇcili parametra velikost pop = 30 in Tstop = 1000, kar pomeni, da algoritem preneha z iskanjem boljˇse reˇsitve, ˇce po 1000 generacijah ne pride do izboljˇsave. Verjetnosti za kriˇzanje, mutacijo in preurejanje so pc = 0.8, pm = 0.08 in pr = 0.9. Testiranje je bilo izvedeno z vsemi tremi vrstami kriˇzanja, kot so opisane v razdelku 4.4. Rezultate smo primerjali z rezultati podanimi v [2], kjer so bili uporabljeni drugaˇcni parametri (npr. velikost pop = 50 in Tstop = 50). V ˇclanku tudi ni podrobno opisano, kateri operator kriˇzanja je bil uporabljen, omenjeno je le, da je uporabljeno prirejeno kriˇzanje z delno preslikavo, na kakˇsen naˇcin so avtorji to vrsto kriˇzanja priredili, pa ni opisano. ˇ 4. NEODVISNOSTNO STEVILO GRAFA 4.6.3 46 Rezultati Rezultate testiranja smo primerjali z rezultati iz [2]. Naˇs algoritem je bil zelo uspeˇsen v veˇcini primerov. Od 66 testnih grafov je bila najdena najveˇcja neodvisna mnoˇzica ali pa doseˇzena znana spodnja meja kar v 54 grafih. Pri 21 grafih so bili doseˇzeni tudi boljˇsi rezultati, kot z metodo opisano v [2]. Najboljˇse rezultate, v primerjavi z metodo iz ˇclanka, smo dosegli pri skupini grafov brock-xxx-y, saj smo pri vseh grafih iz te skupine, razen pri grafu brock-800-4, vsaj z eno vrsto kriˇzanja naˇsli veˇcjo neodvisno mnoˇzico. Boljˇsi rezultat od naˇsega so avtorji iz [2] dosegli le pri enem grafu in sicer pri p-hat1500-3. Tako kot v [2] smo pri dveh grafih (p-hat1000-3 in p-hat1500-2) presegli spodnjo mejo, ki je bila podana DIMACSovih podatkih. V implementaciji programa je bila uporabljena tudi elitna strategija. Kot smo ˇze povedali, elitna strategija spremeni postopek doloˇcanja nove generacije, saj s selekcijo, kriˇzanjem in mutacijo po obiˇcajnem postopku doloˇcimo novo generacijo, vendar z njo ne nadomestimo stare generacije. Osebke nove generacije dobimo tako, da iz obeh generacij izberemo velikost pop kromosomov z najboljˇsimi uspeˇsnosti. Rezultate, boljˇse od zapisanih v tabelah 4.1 in 4.2, smo dosegli z obiˇcajnim PMX kriˇzanjem, ˇce smo uporabili ˇse elitno strategijo, je to oznaˇceno z dodatnim znakom ‘e’. Izboljˇsani rezultati so prikazani v tabeli 4.3. Rezultati testiranja so zapisani v tabelah 4.1 in 4.2. V stolpcu naˇsa metoda so poudarjeno oznaˇceni rezultati, pri katerih je bila najdena ali preseˇzena najveˇcja ˇ je z metodo doseˇzena znana spodnja meja velikosti najveˇcje neodvisna mnoˇzica. Ce neodvisne mnoˇzice za graf, je ob rezultatu izpisan znak ‘=’. Znak • pri rezultatih pa pomeni, da je najdena najveˇcja neodvisna mnoˇzica veˇcja od mnoˇzice, ki so jo s svojo implementacijo algoritma dosegli v [2]. Tudi naˇs algoritem je v grafih p-hat1000-3 in p-hat-1500-2 presegel znani spodnji meji (tabela 4.3). Program je pri velikih grafih ˇcasovno zelo poˇzreˇsen, saj ˇze sam proces dekodiranja enega vektorja traja veˇc sekund. V skupinah grafov c-fatxxx-y in johnsonxx-y-z je bila spodnja meja neodvisnostnega ˇstevila doseˇzena ˇze v inicializacijski populaciji (ˇcas od 0 do 50 milisekund). V tabeli 4.4 so za posamezne druˇzine grafov zapisani ˇcasi trajanja procesa evolucije do najboljˇsega najdenega kromosoma za PMX kriˇzanje brez in z uporabo elitne strategije (PMXe). ˇ 4. NEODVISNOSTNO STEVILO GRAFA 4.6.4 47 Raˇ cunalniˇ ski program Program teˇce v operacijskih sistemih MS Windows. V oknu, ki se nam odpre po zagonu programa, moramo najprej naloˇziti graf, ki je shranjen v tekstovni datoteki tipa .mts. V datoteki so podani naslednji podatki: 1. vrstica: ˇstevilo toˇck v grafu 2. vrstica: spodnja znana meja neodvisnostnega ˇstevila 3. vrstica: od te vrstice dalje je shranjena spodnje trikotna matrika sosednosti za komplement grafa2 , za katerega iˇsˇcemo neodvisnostno mnoˇzico. V programskem oknu lahko izbiramo tip kriˇzanja, pri ˇcemer so na voljo vse ˇstiri oblike kriˇzanja (obiˇcajno in spremenjeno kriˇzanje z delno preslikavo, kroˇzno kriˇzanje in kriˇzanje poloˇzajev). Program preneha s procesom evolucije, ko doseˇze znano spodnjo mejo neodvisnostnega ˇstevila, ˇce imamo izbrano to opcijo v pogovornem oknu, sicer proces evolucije poteka, dokler doloˇceno ˇstevilo generacij (ˇstevilo se lahko v programu doloˇci) ni bilo izboljˇsave. Izberemo lahko tudi, kolikokrat naj program izvede proces evolucije, kar je primerno za testiranje programa. Izberemo lahko tudi, ali ˇzelimo uporabiti elitno strategijo ali ne. Med iskanjem evolucije se na ekran izpisuje najveˇcje neodvisnostno ˇstevilo v generaciji, zaporedna ˇstevilka najboljˇsega kromosoma ter najveˇcja najdena neodvisna mnoˇzica. Ko program neha z iskanjem neodvisnostnega ˇstevila, se izpiˇse ˇcas, ki je pretekel od priˇcetka evolucije do ustavitve. Kot smo ˇze povedali, do ustavitve lahko pride v dveh primerih: doloˇceno ˇstevilo generacij ni bilo izboljˇsave ali pa je bila doseˇzena znana spodnja meja in je bila v programu izbrana moˇznost, da se v tem primeru z izvajanjem preneha. Okno programa je na sliki 4.5. Naj bo n ˇstevilo toˇck v grafu. Potem imajo posamezne vrste kriˇzanja v implementaciji sledeˇce ˇcasovne zahtevnosti: PMX kriˇzanje: O(n2 ), spremenjeno PMX kriˇzanje: O(n2 ), OX kriˇzanje: O(n) in CX kriˇzanje: O(n2 ). Prostorska zahtevnost programa je reda O(n2 ), saj je graf predstavljen kot ma- 2 DIMACS testni grafi so bili prvotno namenjeni za problem iskanja najveˇcje klike. ˇ 4. NEODVISNOSTNO STEVILO GRAFA 48 Slika 4.5: Okno programa trika n × n velikosti, v kateri je element na mestu (i, j) enak 1, ˇce sta toˇcki i in j povezani, sicer ima vrednost 0. Podprogram, ki ocenjuje uspeˇsnost kromosomov v doloˇceni generaciji, ima ˇcasovno zahtevnost O(n3 ), kar je tudi najviˇsja ˇcasovna zahtevnost med podprogrami v celotni implementaciji. Zaradi te ocene, ocenimo ˇcasovno zahtenost ene celotne evolucije (sprememba za eno generacijo) z O(n3 ). Elitna strategija je bila implementirana s pomoˇcjo urejanja s kopico, saj moramo po velikosti urediti polje uspeˇsnosti kromosomov v dveh populacijah (velikosti populacij sta enaki in konstantni). Urejanje s kopico ima ˇcasovno zahtevnost O(n·log n). ˇ 4. NEODVISNOSTNO STEVILO GRAFA 49 Tabela 4.1: Tabela rezultatov na DIMACS testnih grafih graf c-fat200-1 c-fat200-2 c-fat200-5 c-fat500-1 c-fat500-2 c-fat500-5 c-fat500-10 johnson8-2-4 johnson8-4-4 johnson16-2-4 johnson32-2-4 keller4 keller5 keller6 hamming6-2 hamming6-4 hamming8-2 hamming8-4 hamming10-2 hamming10-4 sanr200-0.7 sanr200-0.9 sanr400-0.5 sanr400-0.7 san200-0.7-1 san200-0.7-2 san200-0.9-1 san200-0.9-2 san200-0.9-3 san400-0.5-1 san400-0.7-1 san400-0.7-2 san400-0.7-3 san400-0.9-1 san1000 ˇst. toˇck ˇst. povezav optimum [2] 200 200 200 500 500 500 500 4 14 8 16 171 776 3361 64 64 256 256 1024 1024 200 200 400 400 200 200 200 200 200 400 400 400 400 400 1000 1534 3235 8473 4459 9139 23191 46627 210 210 210 210 9435 225990 4619898 1824 704 31616 20864 518656 434176 13868 17863 39984 55869 13930 13930 17910 17910 17910 39900 55860 55860 55860 71820 250500 12 24 58 14 26 64 ≥ 126 4 14 8 16 11 27 ≥ 59 32 4 128 16 512 ≥ 40 18 ≥ 42 13 ≥ 21 30 18 70 60 44 13 40 30 22 100 15 12 24 58 14 26 64 126 4 14 8 16 11 27 50 32 4 128 16 512 36 18 41 13 21 30 18 70 60 37 13 40 30 17 100 10 naˇsa metoda sPMX OX CX 12 12 12 24 24 24 58 58 58 14 14 14 26 26 26 64 64 64 = 126 = 126 = 126 4 4 4 14 14 14 8 8 8 16 16 16 11 11 11 27 27 27 • 51 50 • 51 32 32 32 4 4 4 128 128 128 16 16 16 494 471 476 35 34 36 18 18 18 = • 42 = • 42 = • 42 13 13 13 = 21 = 21 = 21 30 30 30 18 18 18 70 70 70 60 60 60 • 44 • 44 • 44 13 13 13 40 40 40 30 30 30 • 22 • 22 • 22 100 100 100 • 15 10 10 ˇ 4. NEODVISNOSTNO STEVILO GRAFA 50 Tabela 4.2: Tabela rezultatov na DIMACS testnih grafih (nadaljevanje) graf brock200-1 brock200-2 brock200-3 brock200-4 brock400-1 brock400-2 brock400-3 brock400-4 brock800-1 brock800-2 brock800-3 brock800-4 p-hat300-1 p-hat300-2 p-hat300-3 p-hat500-1 p-hat500-2 p-hat500-3 p-hat700-1 p-hat700-2 p-hat700-3 p-hat1000-1 p-hat1000-2 p-hat1000-3 p-hat1500-1 p-hat1500-2 p-hat1500-3 MANN-a9 MANN-a27 MANN-a45 MANN-a81 ˇst. toˇck ˇst. povezav optimum [2] 200 200 200 200 400 400 400 400 800 800 800 800 300 300 300 500 500 500 700 700 700 1000 1000 1000 1500 1500 1500 45 378 1035 3321 14834 9876 12048 13089 59723 59786 59681 59765 207505 208166 207333 207643 10933 21928 33390 31569 62946 93800 60999 121728 183010 122253 244799 371746 284923 568960 847244 918 70551 533115 5506380 21 12 15 17 27 29 31 33 23 24 25 26 8 25 36 9 36 ≥ 49 11 44 ≥ 62 10 ≥ 46 ≥ 65 12 ≥ 63 ≥ 94 16 126 345 ≥ 1100 20 10 14 16 23 24 23 23 18 19 18 20 8 25 35 9 36 49 11 44 61 10 46 68 11 64 94 16 126 341 1094 naˇsa metoda sPMX OX CX • 21 • 21 20 • 12 • 12 • 12 14 • 15 • 15 • 17 16 • 17 • 25 • 24 • 24 24 • 25 • 25 23 23 • 25 • 24 • 24 • 25 • 19 • 19 • 20 • 20 • 20 • 21 • 19 • 19 • 20 18 19 20 8 8 8 25 25 25 • 36 35 • 36 9 9 9 36 36 36 = 49 = 49 = 49 11 11 11 44 44 44 61 59 60 10 10 10 46 44 45 61 63 64 11 11 11 63 61 63 85 82 83 16 16 16 126 126 126 • 342 • 342 • 343 • 1095 1092 1094 ˇ 4. NEODVISNOSTNO STEVILO GRAFA 51 Tabela 4.3: Izboljˇsani rezultati s pomoˇcjo elitne strategije graf keller6 hamming10-2 hamming10-4 p-hat700-3 p-hat1000-3 p-hat1500-1 p-hat1500-2 MANN-a45 MANN-a81 ˇst. toˇck 3361 1024 1024 700 1000 1500 1000 1035 3321 ˇst. povezav 4619898 518656 434176 183010 371746 284923 568960 533115 5506380 optimum ≥ 59 512 ≥ 40 ≥ 62 ≥ 65 12 ≥ 63 345 ≥ 1100 [2] 50 512 36 61 68 11 64 341 1094 naˇsa metoda: PMX • 55 e = 512 = • 40 e = • 62 e > 68 e = • 12 e > 64 e • 344 e • 1098 e Tabela 4.4: ˇcasovne meritve za druˇzine grafov graf c-fat500-10 johnson32-2-4 keller4 keller 6 hamming8-2 hamming10-2 hamming10-4 san200-0.9-1 san400-0.7-1 san1000 brock200-4 brock400-3 brock800-4 p-hat300-3 p-hat500-3 p-hat700-3 p-hat1000-3 p-hat1500-2 MANN-a27 MANN-a45 MANN-a81 ˇst. toˇck ˇst. povezav 500 16 171 3361 256 1024 1024 200 400 1000 200 400 800 300 500 700 1000 1500 378 1035 3321 46627 210 9435 4619898 20864 518656 434176 17910 55860 250500 13089 59681 207643 33390 93800 183010 371746 568960 70551 533115 5506380 DIMACS optimum 126 16 11 ≥ 59 16 512 ≥ 40 60 40 15 17 31 26 36 ≥ 49 ≥ 62 ≥ 65 ≥ 63 126 345 ≥ 1100 PMX ˇcas v ms PMXe ˇcas v ms 126 16 11 51 16 512 35 60 40 15 16 25 20 36 49 62 61 62 126 343 1095 0 0 60 87880 220 980370 37630 440 2980 42840 11700 23560 26320 21290 34880 61190 43670 104850 19720 48120 4976420 126 16 11 55 16 478 40 60 40 10 17 23 20 36 49 62 68 64 126 344 1098 0 0 110 414440 1040 339930 51090 610 7580 900 30320 5100 18400 46300 44930 123690 266940 270000 9550 312580 8544980 Literatura [1] B. Filipiˇc, Genetski algoritmi v kombinatoriˇcni optimizaciji, doktorska disertacija, FER, Ljubljana, 1993 [2] A. Sakamoto, X. Liu in T. Shimamoto, A Genetic Approach for Maximum Independent Set Problems, IEICE TRANS. Fundamentals, Vol. E80-A, No.3, [551-556] 1997 [3] W. Sarle, Kangaroos, ˇclanek poslan 1. septembra 1993 na noviˇcarsko skupino comp.ai.neural-nets [4] R.J. Wilson in J.J. Watkins, Uvod v teorijo grafov, DMFA Slovenije, Ljubljana, 1997 [5] Z. Michalewicz, Genetic algorithms + data structures = evolution programs, Springer - Verlag, New York, 1999 52