You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
146 Paralelizacija GA za rešavanje nekih NP-kompletnih problema<br />
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯<br />
istovetna kao i u slučaju RankBasedDirectSelect(). Međutim za razliku od<br />
prethodne funkcije za selekciju, sam izbor jedinki za narednu generaciju se vrši<br />
na ruletu, isto kao u slučaju proste selekcije. Pri tome se na isti način kao i kod<br />
proste rulet selekcije tretira prvih N elite najboljih i sledećih N pass jedinki, koje se<br />
direktno biraju, uz istovremenu popravku njihovih prilagođenosti po formuli<br />
(2.9).<br />
FinishRankBasedSelect()<br />
Ova funkcija obezbeđuje, na kraju <strong>rad</strong>a GA, oslobađanje memorijskog<br />
prostora koji je koristio niz rangova, u slučaju selekcije zasnovane na rangu.<br />
StohasticReminderSelectLR()<br />
Pri ovom načinu selekcije (videti odeljak 2.2.2.4) ceo deo očekivanog broja<br />
potomaka neke jedinke direktno se nasleđuje, a razlomljeni delovi učestvuju na<br />
ruletu za izbor preostalih, nepopunjenih, elemenata populacije u narednoj<br />
generaciji. Pre primene se prilagođenost svih jedinki u populaciji linearno skalira<br />
množenjem faktorom N pop / sumf, pa se tada direktno dobija očekivani broj<br />
potomaka svake jedinke. Pri izboru jedinki na osnovu razlomljenih delova<br />
očekivanog broja potomaka, primenjuje se potpuno isti postupak kao i u slučaju<br />
proste selekcije.<br />
TournamentSelect()<br />
Turnirska selekcija se, kao što je to već rečeno u odeljku 2.2.2.3,<br />
implementira simulacijom N pop - N nelite (ga->nitem - ga->newgener.nelite) turnira.<br />
Na svakom turniru učestvuje N tourn (ga->select.ncompet) jedinki, koje se biraju<br />
na slučajan način, a pobednik svakog turnira biva izabran u narednu generaciju.<br />
Svaki član koji učestvuje na turniru ima indeks intItem, indeks tekuće 32-bitne<br />
reči u okviru jedinke je intLong, a indeks jedinke-pobednika je intChamp.<br />
Pobednik turnira je jedinka sa najboljom prilagođenošću, od svih jedinki koje<br />
učestvuju na turniru.<br />
FineTournamentSelect()<br />
U nekim slučajevima nije pogodan izbor klasičnog oblika turnirske selekcije,<br />
jer su svi turniri iste veličine, gde veličina turnira N tourn (ga->select.ncompet)<br />
mora biti ceo broj. Na primer u nekim slučajevima veličina turnira N tourn daje<br />
suviše sporu konvergenciju, a već za veličinu turnira N tourn + 1 se dobija<br />
preuranjena konvergencija. U <strong>rad</strong>u [Fil98] se efektivno uvodi novi oblik turnirske<br />
selekcije, nazvan fino g<strong>rad</strong>irana turnirska selekcija, gde srednja veličina turnira<br />
može biti proizvoljni realan (racionalan) broj ga->select.fcompet. Izbor jedinki u<br />
narednu generaciju se vrši organizovanjem:<br />
• intNM turnira veličine intTFM = (int) ga->select.fcompet;<br />
• intNP turnira veličine intTFP = intTFM+1.<br />
Turniri su ili veličine intTFM koji predstavlja prvi ceo broj manji od ga-<br />
>select.fcompet, ili intTFP koji je prvi ceo broj veći od njega. Takođe važi<br />
jednakost intNM + intNP = intN, odnosno ukupan broj turnira je jednak broju