Cilj ovog dok dokumenta je pojasniti Stohastičku difuzijsku pretragu (eng. Stochastic diffusion search), u daljnjem tekstu SDS.
SDS je algoritam iz obitelji Evolucijskih algoritama koji se primarno koristi za probleme optimizacije, a može se svrstati
u potkategoriju Swarm Inteligence (inteligencija roja).
U okviru ovog rada napraviti će se kratki teorijski uvod u problematiku, te će se pobliže opisati sam algoritam i pojasniti njegov
pseudokod. Prikazati će se jedan problem na koji se može primijeniti SDS i njegova usporedba s nekoliko drugih algoritama.
U praktičnom dijelu biti će opisano programsko rješenje za problem pretrage u kojem je korišten SDS.
SDS je prvi puta opisao Dr. John Mark Bishop 1989. godine. SDS je efektivna generička metoda pretraživanja,
originalno razvijena kao populacijski orijentiran algoritam koji traži odgovarajuće uzorke. Algoritam je dio Inteligencije
Roja (eng. Swarm Intelligence) i algoritama optimizacije i pretraživanja, inspiriranih socijalnim insektima (pčele i mravi),
kao što su Optimizacija Kolonijom Mrava (eng. Ant Colony Optimization, u daljnjem tekstu ACO), Optimizacija Partikularnim Rojem
(eng. Parcticle Swarm Optimization, u daljnjem tekstu PSO) i Genetskim Algoritmima. Zadnjih godina je iskazana velika
zainteresiranost za distribuiranim izračunavanjem korištenjem interakcije između agenata.
ACO je zasnovan na komunikaciji koja se zasniva na izmjenama fizičkih osobina simulirane okoline (mravi koji koriste feromone
u svojoj okolini). Za takav oblik indirektne komunikacije rabi se izraz Stigmetrička komunikacija (eng. Stigmetric Communication).
SDS koristi oblik direktne (jedan na jedan) komunikacije između agenata, slične mehanizmu izravne komunikacije prisutne kod
jedne vrste mrava, Leptothorax acervorum.
SDS koristi populaciju agenata gdje svaki ima hipotezu o mogućem rješenju i evaluira je parcijalno. Agenti izvode jeftinu,
djelomičnu procjenu hipoteze (kandidata za rješenja problema pretrage). Potom dijele informacije o hipotezi (difuzija informacija)
direktnom jedan na jedan komunikacijom. Kao rezultat difuzijskog mehanizma, veoma kvalitetna rješenja mogu se identificirati
pomoću skupine agenata s istom hipotezom. Rad SDS-a je najjednostavnije prikazati Igrom restorana.
SDS je najučinkovitiji za probleme optimizacije gdje se objektna funkcija može rastaviti na dijelove koji se mogu ocijeniti
samostalno. Da bi pronašao optimum dane objektne funkcije SDS upošljava roj od n agenata, gdje svaki održava hipotezu o optimumu.
SDS algoritam nameće ponavljanje faza TEST (testiraj) i DIFFUSION (podijeli) dok roj agenata ne konvergira optimalnoj hipotezi.
Grupa izaslanika je nazočna na dugoj konferenciju u njima nepoznatom gradu. Svaku večer moraju pronaći gdje će večerati.
Postoji veliki odabir restorana, svaki s velikim odabirom jela. Problem s kojim se grupa suočava je pronalaženje najboljeg restorana
gdje će najveći broj delegata uživati u večeri. Paralelna pretraga restorana i kombinacija jela bi bila iscrpljujuća te,
najvažnije, preduga. U rješavanju problema Delegati odlučuju primijeniti SDS. [1]
Svaki izaslanik se ponaša kao agent održavajući hipotezu najboljeg restorana u gradu. Svake noći svaki izaslanik testira svoju
hipotezu večerajući u svom, trenutno najboljem restoranu neko nasumce odabrano jelo. Iduće jutro, za doručkom svaki izaslanik
koji nije uživao u jelu prethodne večeri, pita jednog odabranog kolegu kakva je bila njegova večera. Ukoliko je iskustvo pozitivno
i on prihvaća taj restoran za svoj omiljeni, odnosno najbolji. U suprotnom jednostavno izabere nasumce restoran iz telefonskog imenika.
Korištenjem ove strategije uočeno je da se vrlo brzo značajan broj izaslanika skupi oko najboljeg restorana u gradu. Taj proces se
može opisati idućim algoritmom:
![]() |
Slika 2.1.1 Pseudokod |
U originalnoj definiciji SDS-a populacija agenata traži najbolje rješenje za problem optimizacije. Skup svih mogućih rješenja problema
formiraju prostor rješenja S. Svaka točka prostora S ima pridruženu objektnu vrijednost. Objektne vrijednosti iz cijelog prostora rješenja
S formiraju objektnu funkciju f. Zbog pojednostavljenja, pretpostavlja se da je problem minimalizirati sumu od
- vrijednosti komponente funkcije
koja može biti deterministička:
![]() ![]() |
(2.1) |
![]() |
Slika 2.1.2Pseudokod 1 |
![]() |
Slika 2.1.3 Pseudokod 2 |
![]() |
Slika 2.1.4 Pseudokod 3 |
Algoritamski opis operacija agenata nije dovoljan da se u potpunosti razumije kako SDS rješavanja probleme optimizacije. Potrebno je razmotriti što se dešava sa populacijom kao cjelinom. Iteraciom faza testiraj i difuzija agenti kao jedinke istražuju cijeli prostor rješenja. Kako faza testiranja češće uspijeva u prostoru s dobrim objektnim vrijednostima, agenti će u prosjeku više vremena provoditi istražujući kvalitetna rješenja, istodobno privlačeći druge agente, koji će pak povlačiti još agenata. To je mehanizam koji uzrokuje formiranje dinamičkih, ali stabilnih nakupina agenata u određenom prostoru rješenja. Ograničenost broja agenata osigurava da samo najbolje rješenje otkriveno do tog trenutka održi stabilan broj agenata u nakupini. Upravo ova neproporcijalna uporaba resursa (broja agenata) na kraju dozvoljava da optimalno rješenje bude pronađeno najvećom nakupinom agenata, bez da svaki agent pretraži cijeli prostor rješenja.
Standardni SDS nema mehanizama za istraživanje sličnosti u samoj objektnoj funkciji. To znači da prostor rješenja često može imati jako slične objektne vrijednosti. Mehanizam uvođenja malih varijacija na različitosti hipoteza se lako može uvesti u postojeći algoritam, što je već učinjeno u rojevima. Jedna mogućnost je narušavanje kopiranja parametara hipoteze uvođenjem nasumičnog pomaka prilikom kopiranja hipoteze za vrijeme faze difuzije. Nešto poput mutacije kod evolucijskih algoritama. Učinak je raspršenje agenata po susjednim lokacijama, umjesto da se samo okupljaju u nakupine oko jedne vrijednosti. To omogućava poboljšano vrijeme konvergencije u prostoru sa sličnostima objektne funkcije i praćenje pokretnih maksimuma dinamičkih problema.
Spor zahtjeva za pretraživanjem velikog ili većine prostora rješenja, pogotovo u dinamičkim okruženjima, i potrebe za stabilnim nakupinama koje istražuju trenutno najbolje rješenje ne daje uvijek optimalna rješenja prilikom rabljenja standardnog SDS-a. Njegova distribucija resursa je pohlepna. Nakon što je dobro rješenje otkriveno veliki dio roja će se distribuirati u njegovo istraživanje, što će omogućiti tim agentima da istražuju dalje. Potreban je mehanizam koji će osloboditi neke od tih agenata, a da neće uvelike narušiti stabilnost agenata u nakupini dobrog rješenja. Takav mehanizam bi povećao učinak SDS-a u velikom broju problema, posebno prilikom dinamičke optimizacije. Jedan takav mehanizam je kontekstno-osjetljiv SDS. Njegova razlika od standardnog SDS-a je u fazi difuzije za aktivne agente. Aktivni agenti standardnog SDS-a cijelo vrijeme održavaju svoju trenutnu hipotezu. Kontekstno-ovisan SDS svakom aktivnom agentu odabire drugog aktivnog agenta za komunikaciju. Ukoliko oba podupiru isto hipotezu, onda prvi agent postaje neaktivan i odabire nasumice novu hipotezu iz prostora rješenja. Mehanizam regulira samog sebe protiv stvaranja ogromnih nakupina agenata, jer što je više agenata s istim hipotezama, veća je vjerojatnost da će upravo oni međusobno komunicirati. Time je uveden mehanizam negativne selekcije u originalni algoritam koji omogućuje SDS-u da održi relativno velike nakupine na višestruko sličnim, skoro optimalnim rješenjima.
SDS je sam po sebi paralelan, no praktično paralelno izvođenje SDS-a je problematično zbog a) potrebe svakog agenta da komunicira s drugima b) količine komunikacije između agenata. Moguće rješenje je organizacija agenata u rešetkastu strukturu s direktnom komunikacijom sa samo k najbližih agenata. Drugo rješenje je podjela roja agenata u manje rojeve, gdje se svaki roj izvodi na zasebnom procesoru ali sa potpunom povezanošću uz nisko frekventnu komunikaciju među rojevima.
Problem je uskladiti poravnavanjem manju fotografiju, koja je slikana iz blago drugačijeg kuta gledanja, sa velikom slikom. Treba napomenuti da
je primjer odabran da pokaže princip rada SDS, a ne kao rješenje specifičnog problema. Primjer je prikazan na slici.
![]() |
Slika 2.3.1 Fotografija za razradu problema |
![]() |
(2.2) |
![]() |
(2.3) |
![]() ![]() |
(2.4) |
![]() |
Slika 2.3.2Prostor rješenja problema poravnavanja manje fotografije u veću |
Iako postoje dobro definirani problemi pretrage za uspoređivanje algoritama kao što je DeJongov test, takav eksperiment za prikaz efikasnosti za korištenje SDS-a nije
prikazan zbog nedovoljno definiranih uvjeta težine same pretrage. U ovom odjeljku biti će prikazana empirijska ocjena težine pretrage uspoređujući SDS s nekoliko
drugih čestih optimizacijskih algoritama: nasumična pretraga (random search), hill climber, i Particle Swarm Optimization (u daljnjem tekstu PSO). Algoritmi se
uspoređuju na problemu opisanom u prethodnom odjeljku 2.3.1.
Nasumična pretraga odabire nasumično rješenje i evaluira ga dok ne pronađe Vrh 1 na slici Slika 2.3 2.
Hill climber odabire rješenje nasumično i evaluira ga. U idućim iteracijama 8 susjednih rješenja je evaluirano. Pretraga se pomiče prema najboljem poboljšanju u
objektivnoj vrijednosti. Ukoliko takav pomak nije moguć, pretraga je pronašla lokalni optimum, te se ponovno pokreće u novom, nasumično odabranom području. Proces se
ponavlja dok se ne otkrije optimalno rješenje, odnosno Vrh 1.
PSO Ovaj algoritam slijedi inačicu PSO ograničenog na lokalne optimume [3]. Algoritam se izvodi dok se optimalno rješenja Vrh 1 ne
pronađe s barem jednom česticom, odnosno agentom. Sljedeći parametri su korišteni: koeficijent ograničenja ,
kognitivni i socijalni parametri
, 200 čestica s radijusom susjedstva 1,
i
. Parametri su odabrani u svrhu davanja optimalnog PSO algoritma pretrage. Za detalje implementacije detalje
potražiti u [3]. SDS Korišten je standardni SDS algoritam s 1000 agenata. Mali mutacijski mehanizam opisan u poglavlju 2.2.2 je korišten koji
dodaje male pomake (x,y) koordinatama gdje je vjerojatnost mutacije 8%. Pretraga konvergira optimalnom rješenju, tj. Vrhu 1 kad se skupi trećina svih agenata oko njega.
Rezultati izvođenja pokusa su prikazani idućim slikama.
![]() |
Slika 2.3.3Usporedba izvođenja Nasumične pretrage, Hill Climbing i PSO. Prikaz za 1000 izvođenja |
![]() |
Slika 2.3.4Prikaz rezultata 1000 izvođenja algoritma SDS |
Osnovni cilj ostvarenog programa je pretraga, i uklapanje male slike u veliku, kao što je to opisano u poglavlju 2.3.1. Treba naglasiti da je poglavlju 2.3.1 predviđeno da je mala slika slikana iz blago različitog kuta. U ostvarenju ovog programa je predviđeno da je mala slika dio velike, odnosno njezina potslika. Ulaz programa su dvije slike u bmp formatu. Izlaz je u tekstualnom obliku. Ime programa je Stochastic Diffusion Search.
Kao ulazi programa zamišljene su dvije slike u bmp formatu. Predviđeno je da prva slika bude veličine 500*300 pixela, a mala slika 50*30 pixela.
Program radi i za slike drugih veličina, koje moraju biti manje od zadanih dimenzija, iako je izvorno predviđen za zadane dimenzije.
Izlazi programa su na desnoj strani glavnog prozora programa i ispisuju se u obliku koordinata na kojima se agenti trenutno nalaze.
Rezultate je moguće spremiti u obliku txt datoteke.
Program je ostvaren programskim jezikom C# u razvojnom okruženju Microsoft Visual C# 2008 Express Edition. Za pokretanje programa nisu potrebni nikakvi dodatci,
iako računalo mora imati instaliran .NET framework 3.0 ili 3.5.
Agenti SDS-a kao algoritma su programski ostvareni kao četiri dretve gdje svaka pretražuje jedan kvadrant slike.
Program se pokreće kao posebna Win32 aplikacija.
![]() |
Slika 3.3.1Aplikacijski prozor programa Stochastic Diffusion Search |
Nakon što korisnik pokrene aplikaciju otvara se prozor kao što je to prikazano na slici Slika 3.3 1. Lijevi dio prozora je rezerviran a prikaz velike i male slike,
dok se desno ispisuju rezultati. Na dnu desnog kuta se nalaze četiri gumba za kontroliranje programa.
Prvi gumb je 'Učitaj veliku sliku'. Nakon njegovog pritiskanja korisniku se otvara novi prozor u kojem treba učitati veliku sliku. Slika mora biti bmp formata
(inače program neće raditi) i korisnik mora pripaziti na dimenzije kako je već opisano.
Drugi gumb je 'Učitaj malu sliku' i procedura je ista kao za veliku sliku, no ovaj put korisnik treba učitati malu sliku.
Treći gumb je 'Pokreni traženje' čijim se pritiskom pokreće pretraga, odnosno stvaraju se i aktiviraju agenti.
Četvrti gumb je 'Spremi ispis' kojim se svi rezultati koji su prikazani u prozoru rezultata mogu spremiti u obliku txt datoteke. Korisniku će se otvoriti novi
prozor gdje može odabrati ime datoteke i njezinu lokaciju. Ukoliko prilikom čitanja dobivene txt datoteke ispis bude nečitak, ili slova budu gusto naslagana,
preporuča se otvaranje dobivene txt s Microsoft Wordom koji će od korisnika zatražiti da odabere dekodiranje. Potrebno je odabrati Other encoding, Unicode (UTF 8).
Za ponovnu pretragu, program se mora ugasiti i ponovno pokrenuti. Nije dovoljno samo učitati nove slike i stisnuti gumb 'Pokreni traženje'.
Program je testiran s proizvoljnim slikama koje su preporučenih dimenzija iz prethodnog poglavlja.
Velika slika za testiranje je prikazan na donjoj slici. Dok je mala slika zbog lakšeg uočavanja istaknuta unutar veće.
![]() |
Slika 4.1.1Velika slika za testiranje programa |
SDS je dio inteligencije roja, a nastao je promatrajući socijalne insekte u prirodi. Njegova specifičnost je u komunikaciji agenata jedan na jedan.
[2.1] Iz toga proizlazi njegov pseudokod koji se najapstraktnije može opisati u dvije faze: test i difuzija. 2.2 Iteraciom tih procesa vrlo brzo
dolazi do nakupljanja agenata oko najboljeg rješenja. Snaga SDS-a je što svaki agent ne mora pretražiti cijeli prostor rješenja. Iako se po želji korisnika to može
promijeniti manipulacijom procesa distribucije resursa. 2.2.2
SDS je sam po sebi paralelan, no postoje poteškoće u ostvarivanju potpunog paralelnog izvođenja.
Pokazano je da je SDS u principu može koristiti za stohastičke i dinamičke optimizacijske probleme. Prikazan je njegov algoritam i mogućnost prilagodbe istog.
Njegova mogućnost laganog prilagođavanja između naglaska na lokalni prostor ili sveukupni prostor pretrage prostora rješenja uz njegovu parcijalnu evaluaciju
čini ga potencijalno jako korisnim u primjeni rješavanja navedenih problema. Istražuje se njegova primjena u aplikacijama za traženje manjih dijelova sveukupne
slike, npr. traženja očiju na licu.
SDS je trenutno aktivan u nekim alatima za pretrage teksta i za trenutnu pretragu Interneta. Također se njegov princip koristi u WLAN mrežama, gdje računalo koje se
spaja na usmjeritelj (eng. router) ne traži samo koji mu je usmjeritelj najbolji, već tu odluku donosi u komunikaciji s drugim računalima u blizini.
[1] Scholarpedia, http://www.scholarpedia.org/article/Stochastic_diffusion_search
[2] Kris de Meyer, Slawomir J. Nasuto, Mark Bishop: Stochastic Diffusion Search: Partial Function Evaluation in Swarm Intelligence Dynamic Optimisation
[3] Kennedy, J, Eberhart, R C (2001) Swarm Intelligence. Morgan Kaufmann