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.

148 Paralelizacija GA za rešavanje nekih NP-kompletnih problema<br />

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯<br />

rednog broja l ostaju na svojim mestima, sve one koje su posle rednog broja l<br />

se kompletno razmenjuju, dok se 32-bitna reč na mestu l delimično razmenjuje.<br />

Pri delimičnoj razmeni, se formira maska, koja sadrži vrednost 0 na mestima<br />

bitova koji ostaju nepromenjeni, a sadrži vrednost 1 na mestima bitova koje<br />

treba razmeniti. Zbog efikasnosti sve operacije se izvode kao bitovske.<br />

TwoPointCrossover()<br />

Kao i kod prethodnog jednopozicionog ukrštanja privremeni genetski kodovi<br />

svih jedinki ga->pop[i]->tmpgencode se kopiraju u genetske kodove ga->pop[i]-<br />

>gencode. Takođe se na slučajan način biraju jedinke itm1 i itm2 i slučajan<br />

broj iz intervala [0, 1]. I u ovom slučaju se vrši poređenje sa nivoom ukrštanja<br />

ga->cross.prob, što određuje, da li se jedinke ukrštaju, ili ne.<br />

Ako se date jedinke ukrštaju, dve pozicije za ukrštanje site1 i site2 se biraju<br />

kao slučajani celi brojevi iz intervala [0, nbits]. Ako je site1 > site2, oni<br />

razmenjuju mesta, pa site1 dobija vrednost site2, i obratno. Na taj način u<br />

daljem postupku uvek važi da je prva pozicija za ukrštanje site1 pre druge<br />

pozicije site2 u genetskom kodu (site1 ≤ site2). Slično kao i u slučaju<br />

jednopozicionog ukrštanja vrši se celobrojno deljenje pozicija za ukrštanje site1<br />

i site2. Količnici l1 i l2 predstavljaju redne brojeve 32-bitnih reči koje sadrže<br />

pozicije ukrštanja, a ostaci site1 i site2 je redne brojeve bitova unutar datih 32-<br />

bitnih reči.<br />

Sve 32-bitne reči pre rednog broja l1 i posle rednog broja l2 ostaju na svojim<br />

mestima, sve one koje su između l1 i l2 se kompletno razmenjuju, dok se 32-<br />

bitne reči l1 i l2 delimično razmenjuju. Pri delimičnoj razmeni na mestu l1, se na<br />

isti način kao u slučaju jednopozicionog ukrštanja, formira maska, koja sadrži<br />

vrednost 0 na mestima bitova koji ostaju nepromenjeni, a sadrži vrednost 1 na<br />

mestima bitova koje treba razmeniti. Kao i u prethodnim slučajevima, se zbog<br />

efikasnosti sve operacije izvode kao bitovske.<br />

UniformCrossover()<br />

Kao i kod prethodnih operatora ukrštanja privremeni genetski kodovi ga-<br />

>pop[i]->tmpgencode se kopiraju u genetske kodove ga->pop[i]->gencode.<br />

Takođe se na slučajan način biraju jedinke (itm1 i itm2) i slučajan broj iz<br />

intervala [0, 1]. Ukoliko je taj slučajan broj manji od nivoa ukrštanja ga-<br />

>cross.prob jedinke se ukrštaju, inače ostaju nepromenjene.<br />

Ako se date jedinke ukrštaju za svaku 32-bitnu reč se generiše odgovarajuća<br />

maska ukrštanja. Ona se generiše na slučajan način, tako da je verovatnoća<br />

pojavljivanja bita čija je vrednost 1 jednaka p unif (ga->cross.probunif), a 0 je 1 -<br />

p unif .<br />

U ovom slučaju se ukrštanje mora efektivno primeniti na svaku 32-bitnu reč,<br />

za razliku od prethodnih operatora ukrštanja (jednopozicionog i dvopozicionog),<br />

gde se efektivno primenjuje samo na jednu (odnosno dve) 32-bitne reči u<br />

genetskom kodu, dok su se ostale direktno kopirale. Zbog toga je operator<br />

uniformnog ukrštanja nešto sporiji od prethodnih, ali je to uglavnom<br />

zanemarljivo u odnosu na vreme izvršavanja vrednosne funkcije.

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

Saved successfully!

Ooh no, something went wrong!