Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
72 Paralelizacija GA za rešavanje nekih NP-kompletnih problema<br />
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯<br />
uključivanje u svoju potpopulaciju. Pošto je njihova vrednost već bila izračunata,<br />
direktno se preuzima bez potrebe da se ponovo računa. Pri preuzimanju jedinki<br />
od susednih procesora, prethodno se mora osloboditi mesto za njeno<br />
smeštanje. Pri tome se izbor jedinke za izbacivanje iz tekuće potpopulacije, da<br />
bi na njeno mesto bila smeštena preuzeta jedinka, može vršiti na različite<br />
načine. Najčešće se primenjuje pristup da se uvek izbacuje najlošija jedinka u<br />
potpopulaciji, ali takav izbor se može vršiti i turnirski, pri čemu se izbacuje<br />
najlošija jedinka na turniru. Time se daje određena šansa i najlošijoj jedinki u<br />
potpopulaciji da ostane, što u nekim slučajevima može da se odrazi pozitivno<br />
na izvršavanje lokalnog GA. Međutim, pošto u praksi oba ova pristupa daju vrlo<br />
slične rezultate, obično se primenjuje onaj prvi, pošto je nešto jednostavniji.<br />
Posle toga izračunavaju se vrednosti jedinki u populaciji za koje je to<br />
potrebno (nije već ranije poznata njihova vrednost) i računaju se odgovarajuće<br />
prilagođenosti svih jedinki u populaciji. Ukoliko je nastupila generacija u kojoj se<br />
vrši slanje jedinki, bira se odgovarajuća jedinka i šalje svim susednim<br />
procesorima. Izbor jedinke za slanje susedima takođe može da se vrši na više<br />
načina. Najjednostavnije je ukoliko biramo uvek najbolju jedinku u potpopulaciji,<br />
a izbor se takođe može vršiti i turnirski (šaljemo jedinku koja je najbolja na<br />
odgovarajućem turniru).<br />
3.3.2 Globalni i lokalni završetak izvršavanja GA<br />
Tokom daljeg izvršavanja proverava se da li postoji neka poruka o<br />
eventualnom kraju izvršavanja GA. Ukoliko takva poruka postoji, vrši se njen<br />
prijem, a zatim su moguća dva slučaja, u zavisnosti od sadržine date poruke.<br />
Ako je data poruka donosila informaciju o globalnom završetku izvršavanja<br />
GA, ona se prosleđuje dalje procesorima "potomcima" i prekida se dalje<br />
izvršavanje lokalnog GA. Nakon toga se samo primaju konačna rešenja od<br />
suseda "potomaka", kombinuju sa rešenjem lokalnog GA na tekućem procesoru<br />
i na kraju prosleđuju susedu "roditelju". Kada osnovni procesor primi sva<br />
rešenja od svojih suseda "potomaka" i generiše konačno rešenje, prekida se<br />
<strong>rad</strong> paralelnog programa i svi procesori prekidaju svoje izvršavanje.<br />
Po eventualnom prijemu poruke o lokalnom završetku izvršavanja GA na<br />
nekom od susednih procesora, beleži se ta informacija. Pri tome su moguće<br />
dve različite strategije:<br />
• Takvim susedima se više ne šalju jedinke, jer su oni završili izvršavanje svog<br />
lokalnog GA:<br />
• Jedinke se i dalje šalju svim susedima a dati susedni procesori pošto ne<br />
mogu sami da koriste ovakve jedinke, jer su završili <strong>rad</strong> svog lokalnog GA,<br />
prosleđuju ih dalje. Pri tome se beleže i informacije o prvom pošiljaocu<br />
jedinke, čime se efikasno spečava ciklično prosleđivanje jedinki.<br />
Ukoliko je završeno izvršavanje lokalnog GA i svi susedi su završili<br />
izvršavanje svojih lokalnih genetskih algoritama, odgovarajuća poruka se šalje<br />
susedu "roditelju". Ukoliko osnovni procesor primi takvu poruku od svih suseda<br />
potomaka i u međuvremenu je i sam završio svoj lokalni GA, on generiše<br />
poruku o globalnom završetku izvršavanja GA i šalje je svojim susedima<br />
"potomcima".