08.03.2015 Views

Ceo rad - PDF (1.3 MB)

Ceo rad - PDF (1.3 MB)

Ceo rad - PDF (1.3 MB)

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!