Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Dodatak B Detaljan opis implementacije 145<br />
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯<br />
koja služi u slučaju selekcije zasnovane na rangu kao pokazivač na datoteku<br />
gde je smešten niz rangova.<br />
Sledeće varijante selekcije su implementirane:<br />
SimpleSelect()<br />
Proste rulet selekcija, koja je detaljno opisana u odeljku 2.2.2.1, je<br />
realizovana simuliranjem bacanje kuglice na ruletu, gde su širine polja na ruletu<br />
direktno proporcionalne prilagođenosti jedinke. To se realizuje na sledeći način:<br />
• Za svaku jedinku i koju biramo za prolaz u sledeću generaciju, se slučajno<br />
bira broj rndf iz intervala [0, sumf ], gde je sumf zbir prilagođenosti svih<br />
jedinki u populaciji;<br />
• Traži se jedinka j čiji opseg prilagođenosti (polje na ruletu) sadrži dati broj<br />
rndf ;<br />
• Kopira genetski kod jedinke j u privremeni genetski kod jedinke i.<br />
U narednu generaciju se direktno selektuje najboljih N elite + N pass (ga-<br />
>newgener.nelite + ga->select.npass) jedinki. Da date jedinke ne bi bile<br />
neopravdano favorizovane u odnosu na ostale jedinke u populaciji, jer je jedna<br />
kopija svake od njih direktno prošla proces selekcije, vrši se popravka<br />
prilagođenosti po formuli (2.9).<br />
InitRankBasedSelect()<br />
Vrši inicijalizaciju niza rangova kod selekcije zasnovane na rangu,<br />
učitavanjem iz datoteke određene pokazivačem rankfile, gde je naziv<br />
odgovarajuće datoteke na disku "RANK.DAT". Ukoliko u datoteci ima više<br />
vrednosti od broja jedinki u populaciji N pop (ga->nitem), učitava se prvih N pop<br />
vrednosti. U suprotnom, ako u datoteci ima manje od N pop vrednosti, niz<br />
rangova se popunjava sve dok ima vrednosti, a sva nepopunjena mesta se<br />
popunjavaju vrednošću poslednjeg učitanog elementa. Niz rangova na koji<br />
pokazuje odgovarajući pokazivač (ga->select.rank) i koji se alocira dinamički,<br />
memoriše učitane vrednosti i kasnije ih prosleđuje u populaciju.<br />
RankBasedDirectSelect()<br />
Primenjena je selekcija zasnovana na rangu, koja je već opisana u odeljku<br />
2.2.2.2, pri čemu se preporučuje da jedinke u populaciji budu uređene u<br />
nerastuđem poretku po prilagođenosti. Pri tome se insistira da niz rangova bude<br />
uređen u nerastućem poretku. Prilagođenost jedinki se direktno očitava iz niza<br />
rangova (*ga->select.rank). Broj kopija date jedinke u narednoj generaciji se<br />
određuje na osnovu prilagođenosti date jedinke. Nedostatak ove metode je<br />
potpuno deterministički način izbora jedinki u narednu generaciju, što ne<br />
doprinosi u dovoljnoj meri raznovrsnosti genetskog materijala.<br />
RankBasedRouletteSelectR()<br />
Ova funkcija realizuje selekciju zasnovanu na rangu, za izbor jedinki u<br />
sledećoj generaciji. Prva faza dodele niza rangova za prilagođenost jedinki je