Professional Documents
Culture Documents
Kandidat: Mentor:
Miljan Radović, E8774 Prof. dr. Zora Konjović
SADRŽAJ
1. UVOD ............................................................................................. 1
1.1. Pojam, vrste i način rutiranja ................................................... 1
1.2. Uvod u mravlje algoritme ........................................................ 4
1.2.1. Inspiracija .......................................................................... 4
1.2.2. Istorijat .............................................................................. 6
1.2.3. Razvoj ............................................................................... 6
1.2.4. Osnovne karakteristike ...................................................... 7
2. OPIS MRAVLJIH SISTEMA ......................................................... 9
2.1. Ponašanje mrava....................................................................... 9
2.2. ACO - Metaheuristika ............................................................ 11
2.2.1. Predstavljanje problema .................................................. 12
2.2.2. Ponašanje veštačkih mrava ............................................. 12
2.2.3. Primena stečenog znanja - metaheuristika ...................... 14
2.3. Mravlji Sistem ........................................................................ 15
2.3.1. Karakteristike mravljeg sistema ...................................... 17
2.4. Proširenja mravljeg sistema ................................................... 17
2.4.1. Strategija elite.................................................................. 18
2.4.2. Rangiranje ....................................................................... 19
2.4.3. Sistem mravlje kolonije .................................................. 19
2.4.4. MMAS ............................................................................ 20
2.5. Efikasnost algoritma............................................................... 21
2.5.1. Podešavanje parametara .................................................. 21
2.5.2. Efekat sinergije................................................................ 23
2.5.3. Inicijalizacija mravljeg sistema ....................................... 23
2.5.4. Povećanje dimenzija problema ....................................... 24
2.6. Primer algoritma za problem trgovačkog putnika.................. 24
3. SPECIFIKACIJA MRAVLJEG SISTEMA.................................. 27
3.1. Analiza zahteva ...................................................................... 27
3.2. Specifičnosti mravljeg algoritma za problem mrežnog rutiranja
u odnosu na problem trgovačkog putnika ..................................... 27
3.3. Funkcionisanje mravljeg sistema ........................................... 29
3.3.1. Inicijalizacija mravljeg sistema ....................................... 29
3.3.1.1. Struktura mreže ........................................................ 30
3.3.1.2. Parmetri mravljeg algoritma .................................... 30
3.3.2. Raspoređivanje mrava po čvorovima .............................. 33
3.3.3. Način rada mrava u sistemu ............................................ 34
3.3.4. Čuvanje rezulata rada algoritma...................................... 36
3.3.5. Ostali delovi .................................................................... 37
3.4. Osnovne funkcije sistema ...................................................... 39
3.5. Modeli sistema ....................................................................... 40
iv
PREDGOVOR
Predmet ovoga rada je specificikacija i implementacija
softverskog okruženja za praktičnu obuku studenata koje će
omogućiti analizu procesa rutiranja na različitim mrežnim
strukturama i za različite parametre mravljeg algortima. Rad se
sastoji od četiri poglavlja, zaključka, priloga, spiska korišćenih
referenci i biografije.
U prvom poglavlju definisani su osnovni pojmovi rutiranja i
dat je kratak uvod u mravlje sisteme.
Drugo poglavlje počinje uvodnim razmatranjima
metaheuristike algoritama baziranih na mravljim kolonijama, zatim
sledi opis ponašanja pravih i veštačkih mrava kao i njihove
međusobne razlike a nakon toga sledi predstavljanje mravljih
algoritama, njihove bitne karakteristike i moguća proširenja.
U trećem poglavlju izvršena je specifikacija mravljeg
sistema. Kao osnova korišćen je mravlji algoritam za problem
trgovačkog putnika (TSP) i na njemu su izvršene modifikacije
potrebne za primenu na problem rutiranja.
Četvrto poglavlje predstavlja prikaz implementacije
realizovanog mravljeg sistema: predstavljeno je razvojno okruženje
celog projekta, osnovni delovi programskog okruženja, način
povezivanja sa drugim programima a zatim i sam izgled realizovanog
rešenja. Na kraju, dat je opis najbitnijih delova programskog koda.
Ovom prilikom želeo bih da se zahvalim svima koji su mi
pomogli da studije uspešno privedem kraju a posebno svojim
roditeljima, ocu Branislavu i majci Verici, koji su pokazali mnogo
strpljenja, razumevanja a pre svega odricanja tokom mojih studija.
Miljan Radović
viii
1. UVOD
Pod pojmom optimizacija, najgrublje rečeno, podrazumeva se traženje
najboljeg rešenja među alternativnim rešenjima ili ekstremne vrednosti
(kriterijumske) funkcije, odnosno vrednosti varijable za koju se dostiže
ekstremum funkcije Postoje razne vrste optimizacija i većina ih se svodi na
minimizaciju neke funkcije sistema. Danas postoji veliki broj
optimizacionih metoda, što opštih što specijalizovanih, kojima se može
vršiti optimizacija raznih vrsta sistema a mi ćemo ovde predstaviti jednu
metodu opšte primene koja se naziva optimizacija kolonijom mrava (engl.
Ant Colony Optimization - ACO) [7, 11]. Metoda će biti korišćena za
rešavanje problema rutiranja.
Kao što vidimo sa slike, tabela rutiranja je ustvari matrica čija prva
vrsta sadrži identifikatore susednih čvorova (čvorovi 1, 3 i 4) a prva
kolona identifikatore svih mogućih odredišnih čvorova tj. svih
čvorova mreže osim posmatranog (čvorovi 1,3,4, i 5). Radi lakšeg
4
meri, zavisi od jačine traga na koji naiđu. Jačina traga zavisi od toga
koliko je mrava u bližoj prošlosti prošlo tuda jer trag vremenom
isparava. Ukoliko odluči da ga prati mrav dodatno pojačava već
postojeći trag, u suprotnom mrav traži alternativne putanje do hrane.
Takvo kolektivno ponašanje koje se ispoljava je oblik
autokatalitičkog procesa gde što više mrava prati određeni trag, taj
trag postaje primamljiviji i za ostale mrave koji će tek naići. Proces je
prema tome okarakterisan kao pozitivna povratna sprega gde se
verovatnoća sa kojom mrav bira putanju kretanja povećava sa brojem
mrava koji su prethodno prošli tim putem. Inače, autokatalitički
proces je, po definiciji, proces koji pojačava samog sebe, na takav
način da uzrokuje rapidnu konvergenciju i, ukoliko nema mehanizma
ograničenja, dovodi do tzv. „eksplozije“.
Deneuborgh i saradnici [19, 37] koristili su most sa dve grane
koji je spajao gnezdo sa hranom da bi proučavali trag feromona koji
je ostajao za mravima i pratili ponašanje mrava u kontrolisanim
eksperimentalnim uslovima. U tom eksperimentu naučnici su koristili
koloniju Argentinskih mrava (Iridomyrmex Humilis) koji ostavljaju
trag feromona u oba smera (i u pravcu kretanja prema hrani i pri
povratku u gnezdo). Izvršeno je mnoštvo eksperimenata u kojima je
menjan kvalitet hrane i odnos dužina grana mosta ali za nas je
najinteresantniji eksperiment u kojem je jedna grana mosta duža od
druge. U ovom eksperimentu mravi su bili slobodni da sami biraju
put do hrane a naučnici su posmatrali procenat mrava koji je birao
određeni put u toku nekog vremenskog intervala. Rezultat je bio taj
da, iako su u početku mravi nasumično birali put, u većini
eksperimenata su na kraju svi mravi koristili kraći put.
Ovaj rezultat se može objasniti na sledeći način: kada
ekperiment počne nema nikakvog traga feromona, dakle mravi
nemaju nikakvu pretpostavku i nasumično biraju jednu od dve grane.
Zato možemo očekivati da će na početku u proseku polovina mrava
da krene jednom granom a druga polovina mrava drugom granom
(mada je to slučajni proces i jedna grana može biti favorizovana u
odnosu na drugu). Ipak, zbog činjenice da je jedna grana kraća od
druge, mravi koji su izabrali kraći put prvi stižu do hrane i započinju
povratak u gnezdo. Tada, kada moraju doneti odluku kojim će se
putem vratiti u gnezdo, viši nivo feromona na kraćoj grani ih nagoni
da krenu njom. Prema tome, feromon počinje brže da se akumulira na
kraćoj grani što će na kraju dovesti do toga da će je koristiti većina
mrava. Primer ovakvog kretanja kolonije mrava prikazan je i
objašnjen u poglavlju 2.1.
Trebalo bi da je do sada jasno kako su pravi mravi inspirisali
razvoj mravljih algoritama: most sa dve grane je zamenjen grafom a
trag feromona veštačkim tragom feromona. Takođe, zbog toga što
smo želeli da veštački mravi rešavaju mnogo složenije probleme nego
što ih inače rešavaju pravi mravi, dodali smo veštačkim mravima
neke dodatne sposobnosti kao što su memorija (koja se koristi za
6
1.2.2. Istorijat
1991. godine Marco Dorigo je predložio prvi algoritam baziran na
koloniji mrava: mravlji sistem (Ant System - AS) [24, 28, 29, 30].
Mravlji sistem je predstavljen na problemu trgovačkog putnika
(Travelling Salesman Problem - TSP) [38, 50], sa maksimalno 75
gradova. U tim početnim fazama razvoja bilo je moguće dostići
performanse ostalih heuristika opšte primene kao što je npr.
evolutivno računarstvo (Evolutionary Computation - EC). Međutim,
uprkos početnim ohrabrujućim rezultatima mravlji sistem nije bio
konkurentan sa modernim algoritmima specijalne namene za TSP
kada je veliki broj gradova u pitanju. I pored toga imao je važnu
ulogu u podsticanju daljeg razvoja varijanti AS algoritma što je
dovelo do toga da u kasnijim fazama razvoja isti algoritam dostigne
mnogo bolje performanse pri rešavanju različitih vrsta optimizacionih
problema. U stvari, danas se mravlji sistem u velikoj meri primenjuje
na mnoge optimizacione probleme kao što su problem kvadratne
dodele (Quadric Assignment Problem - QAP), vremensko planiranje
poslova (Job-Shop Scheduling - JSP), mrežno rutiranje (Network
Routing - NR), itd. [18, 21, 34, 35, 45, 57].
1.2.3. Razvoj
Kao što smo već rekli, mravlji sistem je bio prvi primer algoritma
baziran na koloniji mrava koji je predstavljen uopšte. Iako je
predstavljen kao da je u pitanju jedan algoritam, mravlji sistem je u
početku bio skup tri algoritma:
• tok mrava (Ant Cycle - AC)
• gustina mrava (Ant Density - AD)
• količina mrava (Ant Quantity - AQ).
Dok su u AD i AQ algoritmima mravi vršili izmene veštačkog traga
feromona pri kretanju prema hrani, u AC algoritmu izmena feromona
se vršila pri povratku u gnezdo nakon što mrav kompletira celu
putanju kretanja tj. stigne do hrane i tada je količina feromona koja se
ostavlja na čvorovima i vezama bila funkcija kvaliteta dobijenog
rešenja. Zbog činjenice da je AC algoritam davao znatno bolje
rezultate od druga dva algoritma, kasnije je on jednostavno prozvan
mravlji sistem i upravo taj algoritam će biti detaljnije predstavljen u
daljem izlaganju.
Primećeno je da su algoritmi bazirani na mravljim kolonijama
koji su počeli da se razvijaju kasnije, iako su zadržavali neke osobine
7
put kraći, prošla istim putem unazad pre mrava koji su krenuli putem
DHB, ostavljajući feromon po drugi put čime će se njegova jačina još
više povećati. Upravo zbog toga će mravi koji budu kasnije prolazili
davati prednost putu DCB nad DHB. Kao posledica toga, broj mrava
koji se kreću putem BCD će vremenom postajati sve veći u odnosu
na broj mrava koji se kreću BHD. Ova pojava uzrokuje veću
koncentraciju feromona na kraćem putu u odnosu na duži put čime se
verovatnoća kojom mrav bira kraći put povećeva. Konačan ishod je
da će za relativno kratak vremenski period svi mravi birati kraći put.
Algoritmi koji će biti opisani u nastavku su modeli preuzeti iz
analiza kolonija pravih mrava. Zbog toga ovakav sistem nazivamo
mravlji sistem a algoritme mravlji algoritmi. Simulacija mravljih
kolonija nam nije od nekog preteranog interesa ali primena veštačkih
kolonija mrava kao alata za optimizaciju jeste s’ tim da u takvom
sistemu imamo značajne razlike veštačkih u odnosu na prave mrave i
to su:
• Postojanje memorije
• Neće biti potpuno slepi
• Živeće u okruženju gde je vreme diskretno
Posmatrajmo sliku 2.2 koja je moguća predstava mravljeg
sistema sa slike 2.1b. Pretpostavimo da su razdaljine između D i H,
između B i H i između B i D preko C jednake i iznose 1 i da se C
nalazi na pola puta između D i B (slika 2.2a). Takođe ćemo uvesti
sledeće pretpostavke:
• 30 mrava dolazi u B iz A i 30 mrava u D iz E u svakom
vremenskom intervalu
• Svaki mrav se kreće brzinom 1 po jedinici vremena
• Dok se kreće , mrav u jedinici vremena t odlaže na zemlju
feromon intenziteta 1 koji, da bi primer bio lakši, kompletno i
potpuno isparava nakon vremenskog intervala (t+1, t+2).
Razmatraćemo šta se dešava u diskretnim vremenskim intervalima: t
= 0, 1, 2, 3,... . U trenutku t=0, nema traga feromona i 30 mrava se
nalazi u B i isto toliko mrava u D. Oni treba da odluče na koju stranu
će krenuti (prema C ili prema H) i pošto nema traga feromona nihov
izbor je sasvim slučajan. Zbog toga pretpostavljamo da će polovina
mrava sa svakog čvora krenuti prema čvoru H a druga polovina
prema čvoru C (slika 2.2b). U trenutku t=1, 30 mrava koji pristižu u
B iz A nailaze na trag intenziteta 15 na putu koji vodi do H, koji je
odložilo 15 mrava koji su prošli tim putem iz B, i na trag intenziteta
30 na putu do C što se dobija kao suma traga koji je ostavilo 15
mrava koji su prošli tim putem od B i od 15 mrava koji su pristigli u
B od D preko C (slika 2.2c). Verovatnoća izbora jednog od puteva je
zbog toga na strani puta koji ide preko C, tako da će očekivani broj
mrava koji će ići tuda biti duplo veći od broja mrava koji će ići preko
H: 20 protiv 10. Isto važi i za 30 mrava koji se nalaze u D a došli su
iz E. Ovaj proces se nastavlja sve dok svi mravi ne izaberu kraći put.
11
Ideja cele ove priče je da ako u nekoj tački mrav može da bira
između dva puta bira onaj koji je češće biran od strane mrava koji su
ranije prošli tim putem tj. put gde je nivo feromona viši, čime se
verovatnoća izbora pomenutog puta povećava. Inače, po ACO
poimanju, viši nivoi feromona su sinonim za kraću putanju.
α
τ ij (t ) ⋅ ηij
β
ako j ∈ dozvoljenik
pijk (t ) = ∑ [τ ik (t )] ⋅ [ηik ]
α β
(2.5)
k∈dozvoljenik
0 inače
gde je dozvoljenik = { N − tabuk } a parametri α i β kontrolišu
relativan značaj tragova u odnosu na vidljivost. Zbog toga je promena
verovatnoće balans između vidljivosti koja nam govori da bi bliži
gradovi trebali biti izabrani sa većom verovatnoćom, čime se
sprovodi greedy heuristika, i jačine traga feromona u trenutku t koja
govori da ako je na vezi (i,j) bilo puno saobraćaja tj. puno mrava je
prošlo tom vezom, onda je ta veza poželjnija, čime se dobija
autokatalitički proces.
2.4.2. Rangiranje
Mravlji sistem baziran na rangiranju ( AS rank ) [14] je u suštini
proširenje strategije elite na način da se mravi sortiraju u odnosu na
dužine putanja koje su konstruisali odn. kvaliteta rešenja, i nakon
svake faze konstrukcije puta samo (ω − 1) najboljih mrava i mrav koji
je konstruisao opšte najbolje rešenje mogu da polože feromon. r-ti
najbolji mrav iz kolonije doprinosi izmeni količine feromona težinom
max {0, ω − r} , dok mrav koji je konstrisao opšte najbolje rešenje
doprinosi feromonom tezine ω . Tada količina feromona koja se
polaže po vezama iznosi:
ω −1
τ ij (t + 1) = (1 − ρ ) ⋅τ ij (t ) + ∑ (ω − r ) ⋅ ∆τ ijr (t ) + ω ⋅ ∆τ ijgb (t ) (2.7)
r =1
gde su ∆τ (t ) = 1/ L (t ) i ∆τ (t ) = 1/ Lgb (t ) .
r
ij
r gb
ij
2.4.4. MMAS
MMAS [56, 58, 59] predstavlja gornju i donju granicu vrednosti traga
feromona kao i različitu inicijalizaciju njegove vrednosti. U praksi, u
MMAS dozvoljeni opseg jačine traga feromona je ograničen na
interval [τ min ,τ max ] , tj. τ min ≤ τ ij ≤ τ max ∀τ ij a tragovi feromona su
postavljeni na gornju granicu što dovodi do toga da se na početku
izvršavanja algoritma više radi istraživanje puteva. Takođe, kao i u
ACS, u MMAS samo najbolji mrav, bilo da je reč o globalno ili o
iterativno najboljem mravu, ima mogućnost da dodaje feromon nakon
svake iteracije algoritma. Rezultati dobijeni ispitivanjem pokazuju da
se najbolji rezultati dobijaju kada feromon menja globalno najbolji
21
naprave istu putanju. Ovaj drugi slučaj se naziva stagnacija zato što
označava situaciju u kojoj algoritam prestaje sa traženjem
alternativnih rešenja.
Mravlji algoritam za rešavanje TSP se može predstaviti
pseudo-kodom:
procedura TSP
InicijalizacijaTragaFeromona()
RaspoređivanjeMravaPoGradovima()
InicijalizacijaTabuListe()
WHILE NOT TabuListaPopunjena()
PomeranjeMrava()
AžuriranjeTabuLista()
RačunanjeDužinePuta()
KorekcijaNajkraćegPuta()
AžuriranjeTragaFeromona()
IF NOT PrekoračenMaxBrojCiklusa() AND NOT
Stagnacija()
BrisanjeListaZabrana()
GOTO RaspoređivanjeMravaPoGradovima()
ELSE
IspisNajboljegPuta()
kraj TSP
3. SPECIFIKACIJA MRAVLJEG
SISTEMA
Jedan od zadataka rada je specifikacija softverskog okruženja koje će
realizovati funkcionalnost mravljeg sistema. Realizovano programsko
okruženje će se sastoji iz dva dela: prvi deo (AntSystem.jar) koji izvršava
logiku mravljeg sistema (algoritma) i drugog dela (AntSystemGUI.jar) koji
u sebe uključuje prvi deo, upravlja njime, preuzima njegove rezultate rada i
vrši njihov grafički prikaz (GUI). U daljim razmatranjima pod mravljim
sistemom podrazumevaće se prvi deo programskog okruženja.
U ovom poglavlju biće prikazan mravlji sistem specijalizovan za
probleme mrežnog rutiranja, mada nema prepreka da se sistem koristi i za
slične probleme rutiranja koji su navedeni u uvodnim razmatranjima.
Videćemo koje su to razlike u odnosu na prethodno opisani algoritam opšte
namene primenjen na TSP a takođe ćemo, radi boljeg razumevanja
funkcionisanja sistema, opisati njegove bitne delove.
Pošto čvor ima tri susedna čvora sistem kreira tri oblasti:
• Za susedni čvor 1: [0 – 0.002)
• Za susedni čvor 3: [0.002 – 0.914)
• Za susedni čvor 4: [0.914 – 1)
Vrednost 0.914 je dobijena zbirom 0.002 + 0.912 a vrednost 1
predstavlja zbir sve tri vrednosti iz posmatrane vrste. Dalje sistem
bira susedni čvor tako što generiše pseudoslučajni broj u intervalu [0
– 1) i posmatra čijoj oblasti generisani broj pripada.
Ovo je slučaj kada mrav nije istraživač. Ukoliko je mrav
istraživač na njega ne utiču verovatnoće iz tabele rutiranja tj. on bira
susedne čvorove sa podjednakom verovatnoćom. Zbog toga se
svakom čvoru dodeljuje podjednaka verovatnoća prelaska 1 / broj
susednih čvorova što u slučaju sa slike 3.2 iznosi 1 / 3 = 0.33˙ pa bi
granične oblasti u tom slučaju bile:
• Za susedni čvor 1: [0 – 0.33˙)
• Za susedni čvor 3: [0.33˙ – 0.66˙)
• Za susedni čvor 4: [0.66˙ – 1)
Dalje biranje se izvodi na potpuno isti način, generisanjem
pseudoslučajnog broja. Inače, mravi istraživači se koriste radi
otkrivanja (moguće boljih) alternativnih putanja i da sistem ne bi
ušao u zasićenje. Postupak kretanja kroz čvorove se ponavlja sve dok
mrav ne stigne do odredišnog čvora ili ne prekrši jedno od sledećih
ograničenja sistema:
• Prekoračen maksimalan broj skokova
• Prekoračeno maksimalno vreme života (trajanja) mrava
• Petlja u putu
Ukoliko mrav prekorači maksimalan broj skokova (prelazaka
sa čvora na čvor) ili maksimalno dozvoljeno vreme života tada
prestaje sa radom tj. umire ne utičući nikako na sistem. Ukoliko se
pojavi petlja u putu (prolazak kroz neki čvor dva puta) tada mrav
može da prekine sa radom (umre, ne utičući na sistem) ili da nastavi
sa radom povratkom u prethodni čvor, što je određeno parametrima
sistema.
Celim tokom kretanja unapred mrav je pamtio čvorove kroz
koje je prolazio i vremena potrebna za dolazak do njih što će mu
koristiti pri ažuriranju tabela rutiranja i statistika saobraćaja pri
36
• Za ostale čvorove:
novaVer = 0.33˙ - 0.6 * 0.33˙ = 0.13
Korišćenje tabela rutiranja je objašnjeno u prethodnom
poglavlju pa se time nećemo baviti.
Statistike saobraćaja predstavljaju malo složeniju strukturu od
tabele rutiranja unutar koje se prati više informacija. Svaki čvor u
mreži poseduje jednu ovakvu strukturu, baš kao i tabelu rutiranja. Ovi
podaci se stalno ažuriraju u toku rada sistema i to ažuriranje vrše
mravi pri povratku do početnog čvora isto kao i tabele rutiranja. Na
osnovu podataka koje im pružaju statistike saobraćaja mravi dobijaju
informacije o pojačanju koje treba da primene na neki čvor pri
povratku u početni. Takođe, iz statistika saobraćaja se vidi koji je to
najbolji otkriveni put do tada između bilo koja dva čvora u mreži.
Unutar jedne statistike saobraćaja se prate podaci o:
• Najskorije dobijenim putevima od posmatranog do svih ostalih
čvorova u mreži
• Prosečna vremena od posmatranog do svih ostalih čvorova u
mreži
• Razlike u vremenima od posmatranog do svih ostalih čvorova
u mreži
• Najskorija najbolja vremena od posmatranog do svih ostalih
čvorova u mreži
• Najbolje ikad postignuta vremena od posmatranog do svih
ostalih čvorova u mreži
Svaki mrav u fazi povratka u gnezdo (backward) svakom
čvoru kroz koji se vraća prosleđuje rešenje koje je dobio, čvor
proverava kvalitet rešenja i ukoliko je rešenje u granicama poverenja
(parametar zetaConfidenceLevel) ono se pamti unutar statistika
saobraćaja i vrši se ažuriranje ostalih podataka. Koliko će se
poslednje dobijenih rezultata čuvati zavisi od podešavanja koje
korisnik naveo u parametrima (parametar windowSizeCoefficient).
Odredišni 1 3 4 5
RDNC čvora 2
Izabran puta 0 0 0 0
Slika 3.3 RDNC nakon inicijalizacije
Odredišni 1 3 4 5
RDNC čvora 2
Izabran puta 2 0 3 2
Slika 3.4 RDNC u nekom trenutku rada
Čvor 2 3 5
Path čvora 2
Ukupno vreme 0 16 35
Slika 3.6 Primer Path strukture
4. IMPLEMENTACIJA SISTEMA
U ovom poglavlju upoznaćemo se sa detaljima implementacije realizovanog
mravljeg sistema. Ukratko će biti prikazano korišćeno razvojno okruženje a
detaljnije programsko okruženje za grafički prikaz rada sistema pomoću
kojeg ćemo objasniti kako funkcioniše implementirani mravlji sistem.
4.4.2. Statistike
Statistike se u programu koriste za praćenje i kontrolu rada mravljeg
sistema. Program prikazuje tri vrste statistika mravljeg sistema:
• matrica prelaza
• mravi u sistemu
• tabele rutiranja i lokalnog saobraćaja
Poslednje navedena statistika je i najbitnija statistika jer nam
prikazuje rezultate rada mravljeg sistema: tabele rutiranja i najbolje
rezultate. U daljem tekstu ćemo opisati sve tri statistike ponaosob.
Osobina Značenje
ID Jedinstveni identifikator
A Mrav je aktivan (Y/N)
P Mrav je pauziran (Y/N)
TP Prioritet programske niti (1-10)
SRC Početni čvor
CUR Trenutna pozicija
DLY Pozicija u putu
DST Krajnji čvor
E Mrav je istraživač (Y/N)
F Mrav je forward (Y/N)
PATH Pređeni put
Tabela 4.3 Objašnjenje osobina mrava
62
Kao što smo rekli, radna površina nam služi za prikaz tabela
rutiranja i statistika saobraćaja čvorova koje želimo da posmatramo.
Na slici 4.12 je prikazana situacija kada se posmatraju statistike za
čvorove 1 i 5. Na levoj strani se nalaze tabele rutiranja a na desnoj
statistike saobraćaja. Pošto je izgled i način rada sa tabelom rutiranja
već objašnjen u poglavlju 1.1 posvetićemo pažnju prikazu statistika
saobraćaja. Kao što vidimo, sistem prati ukupno šest statistika koje su
navedene u tabeli 4.4.
Osobina Značenje
DST Odredište
AVG Prosečno vreme do čvora
VAR Razlika u vremenu do čvora
BTE Najbolje vreme ikada
BTW Najbolje vreme u prozoru
DIF Razlika između BTW i BTE
PATH Najbolja (najoptimalnija) putanja
Tabela 4.4 Objašnjenje osobina statistika saobraćaja
4.4.3. Podešavanja
Kao što svaka iole kvalitetnija aplikacija ima neku vrstu podešavanja
tako je slučaj i sa našim programskim okruženjem. U nastavku ćemo
predstaviti jedine dve vrste podešavanja: programa i parametara
mravljeg sistema.
4.5.1. Ant
4.5.1.1. Ant.run()
Ovom metodom je predstavljeno šta radi mrav kada se pokrene. Iz
programskog koda se može videti na mrav izvršava metodu korak
unapred dok je forward mrav a kada „postane“ backward tada
izvršava metodu korak unazad. Ove dve metode će biti objašnjene
nakon metode run().
4.5.1.2. Ant.StepForward()
Ovo je metoda koja predstavlja jedan korak mrava unapred. Metoda
se koristi kada je mrav forward i služi za „usmeravanje kretanja“
mrava kroz mrežu kao i za kontrolu rada mrava tj. provere da li je
mrav prekoračio neka ograničenja i, ukoliko jeste, odluka o tome da li
da nastavi ili prekine sa radom.
// Petlja
if (this.params.isLoopDetection() &&
this.path.HasLoop()) {
if (this.params.isAntDieOnLoop())
this.Die(-2);
else {
this.loopDetected = true;
this.lastLoopNodeSkipped = false;
// Okrenemo mrava
this.Reverse();
}
}
if (this.nextNode == -1)
this.Die(-5);
// Kašnjenje sledećeg čvora i veze
this.nodeDelay = 0;
this.linkDelay = 0;
}
}
}
} while (this.isActive() &&
this.forward && ProgressAnt());
}
4.5.1.3. Ant.StepBackward()
Ovo je metoda koja predstavlja jedan korak mrava unazad. Metoda se
koristi kada je mrav backward i samim tim služi za kretanje mrava
unazad do početnog čvora.
this.nest.UpdatePath(tempPath, mandatory);
this.nodeDelay = 0;
this.linkDelay = 0;
}
}
} while (this.isActive() && ProgressAnt());
}
4.5.2. AntNest
4.5.2.1. AntNest.ChooseNextNode(...)
Ova metoda nam otkriva implementaciju dela sistema koji koristi
mrav radi dobijanja informacije koji sledeći čvor da izabere.
probabilitiesForDest = this.getRoutingTable(nodeId)
.getProbabilitiesForDest(destNodeId);
4.5.2.2. AntNest.getReinforcement()
Ovo je metoda koja mravu, na osnovu prosleđenih podataka o
početnom (tj. trenutnom, pošto se mrav kreće od krajnjeg prema
početnom unazad) i krajnjem čvoru kao i o dužini pređenog puta,
daje podatak o tome koliko pojačanje treba da primeni na čvoru na
kojem se trenutno nalazi.
double z = params.getZetaConfidenceLevel();
double c2 = params.getTimeWeight();
double c1 = 1.0 - c2;
double Isup = 0.0;
int T = tripTime;
int windowSize =
this.getLocalTrafficStatistic(sourceNodeId)
.getWindowSize();
Math.sqrt((double) windowSize));
else
Isup = Wbest + z * (variance /
Math.sqrt((double) windowSize));
double r = c1 * currentTimeToBestRatio +
c2 * stabilityOfCurrentValue;
reinforcement = SquashedReinforcement(
sourceNodeId, r, true);
reinforcement = this.params.
getMaxReinforcement();
}
return reinforcement;
}
4.5.2.3. AntNest.UpdatePath(…)
Metoda se koristi za ažuriranje tabele rutiranja i statistika saobraćaja
čvora na kojem se mrav trenutno nalazi na osnovu puta koji je mrav
prešao. Parametar mand (mandatory) predstavlja podatak da li je
ažuriranje obavezno čak i ako je putanja loša koje se koristi samo
kada se ažuriranje vrši između početnog i krajnjeg čvora (ne između
čvorova posrednika).
path.currentIndex = 0;
71
if (this.UpdateLocalTrafficStatistic(
source, dest, subPath, mandatory)) {
4.5.3. AntSystem
4.5.3.1. AntSystem.Pause(...)
Pauziranje mravljeg sistema sa odlukom o nastavku ili pauziranju
rada mrava.
4.5.3.2. AntSystem.Reset()
Metoda se koristi za resetovanje stanja mravljeg sistema:
poništavanje rezultata rada i ubijanje svih mrava pri čemu sistem
nastavlja sa radom.
4.5.3.3. AntSystem.run()
U nastavku teksta biće opisana metoda koja vrši kreiranje i
raspoređivanje novih mrava po čvorovima u određenim vremenskim
intervalima i koja kontroliše njihov broj da bi se, eventualno,
prekinulo sa radom.
while (true) {
if (this.stopped == false && this.paused == false) {
this.systemState = 1;
limitAnts = this.nest.getParams().
getMaxTotalAntsCoefficient() *
nest.getNodeCount();
int[] nodes = nest.getAllNodes();
if (this.antsGenerated < 0)
this.antsGenerated = 0;
}
if (limitAnts != 0) {
this.percentageDone =
(this.antsGenerated * 100) / limitAnts;
}
}
this.systemState = 0; // idle
}
try {
Thread.sleep(this.nest.getParams().
getAntGenerationTime());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
4.5.3.4. AntSystem.setNetwork(…)
Sledeća metoda se koristi za izmenu strukture mreže. Takođe se vrši
provera i ažuriranje mrava ukoliko su koristili putanje koje više ne
postoje.
4.5.3.5. AntSystem.setParameters(…)
Metoda vrši izmenu parametara mravljeg sistema.
4.5.3.6. AntSystem.Start()
Metoda koja služi za pokretanje mravljeg sistema.
this.setAntsAreStopped(false);
this.stopped = false;
this.paused = false;
}
4.5.3.7. AntSystem.Stop()
Predstavljena metoda se koristi za zaustavljanje mravljeg sistema i
prekid rada mrava.
this.stopped = true;
this.setAntsAreActive(false);
if (this.nest.getParams().
getMaxTotalAntsCoefficient() != 0)
this.percentageDone = 0;
else
this.percentageDone = -1;
this.antsBuffer.removeAllElements();
// this.nest.Reset();
this.nest.getParams().printlnToConsole(
"Mravlji sistem je zaustavljen.");
}
4.5.4. LocalTrafficStatistics
4.5.4.1. LocalTrafficStatistics.Update(...)
Ovo je metoda koja služi za ažuriranje statistika saobraćaja izabranog
čvora.
this.averageTime.setElementAt(new Double(average),
this.getNodeIndex(destNodeId));
// Dodajemo put
this.windowData.set(windowIndex, nodeIndex, path);
4.5.5. RoutingTable
4.5.5.1. RoutingTable.Update(...)
Ovo je metoda koja služi za ažuriranje tabele rutiranja izabranog
čvora.
IndexOfNeighborNode(neighborNodeId);
this.data.set(indexOfDest, i,
new Double(newProbability));
}
if (this.params.
getMaxRoutingTableProbability() != 1.0)
this.LimitProbabilityAndEqualize(destNodeId);
5. ZAKLJUČAK
U radu je dat prikaz osnovnih mravljih algoritama. Analizirane su
mogućnosti primene pristupa baziranog na mravljim algoritmima na
rutiranje u mreži. Na osnovu rezultata analize, odabran je model
algoritma za problem TSP i modifikovan tako da zadovolji
specifičnosti zadatka rutiranja na računarskoj mreži. Specificirano je i
implementirano softversko okruženje za praktičnu obuku studenata
koje omogućuje analizu procesa rutiranja na različitim računarskim
mrežnim strukturama i za različite parametre mravljeg algortima. Za
specifikaciju je korišćen objektni pristup i UML metodologija.
Implementacija sistema izvršena je na Java platformi.
Sistem podržava sledeće osnovne funkcije:
• Inicijalizacija mravljeg sistema koja se sastoji u tome da mu se
proslede dva ulazna parametra: struktura mreže i parametri
mravljeg algoritma
• Početno raspoređivanje mrava po čvorovima mreže, gde se, na
osnovu zadatih parametara mravljeg sistema, generiše po jedan
novi mrav na svakom čvoru mreže i podešava mu se prioritet
• Rad mrava u sistemu koji obuhvata ponašanje mrava od
trenutka njegovog kreiranja do trenutka prestanka rada
• Podrška funkcijama korišćenja i modifikacije deljenih
numeričkih informacija o mreži u kojoj se mravi kreću
U osnovnom tekstu rada, u poglavlju 2.4, navedena su neka
od mogućih poboljšanja mravljeg algoritma. Realizovani algoritam
podržava jedno od navedenih poboljšanja: strategiju elite. Algoritam
poseduje još jedno poboljšanje koje je predstavljeno u poglavlju 3.3.3
a tiče se načina kretanja mrava, tačnije, načina na koji mrav reaguje
na petlju u putu. U daljem tekstu ćemo razmatrati moguća
poboljšanja koja u implementiranom sistemu nisu realizovana.
Odredišni čvor za mrava koji je kreiran i počinje obilazak
mreže bira se nasumično (videti poglavlje 3.3.5). Tako odabran čvor
može se nalaziti „daleko“ (po pitanju broja skokova) od posmatranog
početnog čvora i pošto na početku rada mravi nemaju nikakve
podatke tj. nikakvo znanje o topologiji mreže, kreću u obilazak mreže
i dolaze do generalno loših rešenja. Kako vreme odmiče mravi
dobijaju „uvid“ u topologiju mreže i dolaze do optimalnih rešenja.
Jedno od poboljšanja koje bi doprinelo efektivnijem izvršavanju
algoritma bilo bi da na početku rada algoritam generiše mrave čiji će
odredišni čvor biti susedni čvor posmatrnog čvora tj. da maksimalni
broj skokova na početku bude jednak 1 i da algoritam postepeno to
ograničenje povećava kako mravi stiču iskustvo.
Aplikacija nema mogućost dodavanja tzv. plug-in-ova tako da
bi se sve eventualne izmene na sistemu vršile direktno u izvornom
kodu što u nekim situacijama i primenama nije dobro tako da bi se
aplikacija mogla preraditi da podrži i plug-in-ove.
80
81
6. PRILOG
6.1. Skraćenice
Skr. Pun naziv Objašnjenje
Jedan od tri algoritma iz prvobitnog
AC Ant Cycle algoritma mravlji sistem koji je
kasnije preimenovan u AS
Sistem koji koristi metode mravlje
ACS Ant Colony System
kolonije
Jedan od tri algoritma iz prvobitnog
AD Ant Density
algoritma mravlji sistem
Ant Colony Način optimizacije korišćenjem
ACO
Optimization mravljeg algoritma
AS Ant System Mravlji sistem
Jedan od tri algoritma iz prvobitnog
AQ Ant Quantity
algoritma mravlji sistem
Oznaka za mrava koji se kreće od
krajnjeg do početnog čvora i pritom
BA Backward Ant
ažurira tabele rutiranja čvorova kroz
koje se vraća
Evolutionary
EC Evoluciono računanje
Computation
Oznaka za mrava koji se kreće od
FA Forward Ant početnog i traži put do krajnjeg
čvora
Grafički korisnički interfejs –
Graphic User predstavlja spregu korisnika sa
GUI
Interface programom na čoveku pojmljiv
način (slikama i simbolima)
Planiranje poslova (jedan od
problema optimizacije koji se može
JSP Job-Shop Scheduling
rešavati primenom mravljeg
sistema)
82
• Eclipse
o Autor: Eclipse Contributors and others
o Verzija: 3.2.1
o Godina: 2006
• Icon Workshop
o Autor: Axialis
o Verzija: 6.01
o Godina: 2005
Naziv Naziv
Autor(i) God. Literatura
problema algoritma
Dorigo,
[24, 29,
Maniezzo, AS 1991
30]
Colorni
Gambardella,
Ant-Q 1995 [31]
Dorigo
Traveling
Dorigo, ACS & [26, 27,
Salesman 1996
Gambardella ACS-3-opt 32]
[56, 58,
Stützle, Hoos MMAS 1997
59]
Bullnheimer,
Asrank 1997 [14]
Hartl, Strauss
85
Graph
Costa, Hertz ANTCOL 1997 [17]
coloring
Shortest
Michael,
common AS-SCS 1998 [46, 47]
Middendorf
supersequence
Frequency Maniezzo,
ANTS-FAP 1998 [42]
assignment Carbonaro
Generalized Ramalhinho, MMAS-
1998 [49]
assignment Lourenço, Serra GAP
Multiple Leguizamón,
AS-MKP 1999 [39]
knapsack Michalewicz
Optical
Navarro, Varela,
networks ACO-VWP 1999 [48]
Sinclair
routing
Redundancy
Liang, Smith ACO-RAP 1999 [40]
allocation
Constraint
Solnon Ant-P-solver 2000 [53]
satisfaction
Tabela 6.2 Primeri primene algoritma
87
7. LITERATURA
[1] B.Milosavljević, M.Vidaković – Java i Internet programiranje, Novi
Sad, Srbija, 2002.
[2] D.E.Goldberg. Genetic Algorithms in Search, Optimization &
Machine Learning, Addison-Wesley, Reading, MA, 1989.
[3] B.Golden, W.Stewart. Empiric analysis of heuristics, in The
Travelling Salesman Problem, E. L. Lawler, J. K. Lenstra, A. H. G.
Rinnooy-Kan, D. B. Shmoys eds., New York:Wiley, 1985.
[4] E.L.Lawler, J.K.Lenstra, A.H.G.Rinnooy-Kan, D.B.Shmoys eds. The
Travelling Salesman Problem, New York:Wiley, 1985.
[5] A. Bauer, B. Bullnheimer, R. F. Hartl, and C. Strauss. An ant colony
optimization approach for the single machine total tardiness problem.
In Proceedings of the 1999 Congress on Evolutionary Computation
(CEC’99), pages 1445–1450. IEEE Press, Piscataway, NJ, 1999.
[6] R. Beckers, J.-L. Deneubourg, and S. Goss. Modulation of trail laying
in the ant Lasius niger (hymenoptera: Formicidae) and its role in the
collective selection of a food source. Journal of Insect Behavior,
6(6):751–759, 1993.
[7] M. Bolondi and M. Bondanza. Parallelizzazione di un algoritmo per
la risoluzione del problema del commesso viaggiatore. Master’s
thesis, Dipartimento di Elettronica, Politecnico di Milano, Italy, 1993.
[8] E. Bonabeau, M. Dorigo, and G. Theraulaz. Swarm Intelligence:
From Natural to Artificial Systems. Oxford University Press, New
York, NJ, 1999.
[9] E. Bonabeau, M. Dorigo, and G. Theraulaz. Inspiration for
optimization from social insect behavior. Nature, 406:39–42, 2000.
[10] E. Bonabeau, F. Henaux, S. Guérin, D. Snyers, P. Kuntz, and G.
Theraulaz. Routing in telecommunication networks with ”Smart” ant-
like agents. In Proceedings of IATA’98, Second Int.Workshop on
Intelligent Agents for Telecommunication Applications. Lectures
Notes in AI vol. 1437, Springer Verlag, 1998.
[11] E. Bonabeau and G. Theraulaz. Swarm smarts. Scientific American,
282(3):54–61, 2000.
[12] B. Bullnheimer, R. F. Hartl, and C. Strauss. Applying the Ant System
to the vehicle routing problem. In S. Voß S. Martello, I. H. Osman,
and C. Roucairol, editors, Meta-Heuristics: Advances and Trends in
Local Search Paradigms for Optimization, pages 285–296. Kluwer
Academic Publishers, Dordrecht, 1999.
[13] B. Bullnheimer, R. F. Hartl, and C. Strauss. An improved ant system
algorithm for the vehicle routing problem. Annals of Operations
Research, 89:319–328, 1999.
88
8. BIOGRAFIJA