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