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

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<br />

Opis detalja svih mogućih aspekata GANP i PGANP implementacija bi bio<br />

vrlo opširan, i sadržao bi i neke relativno manje važne delove. S druge strane,<br />

neki delovi su već opisani vrlo detaljno (keširanje GA), pa nema potrebe za<br />

ponovnim opisivanjem. Zbog toga će u ovom dodatku biti prikazani samo ostali<br />

delovi implementacije koji su najvažniji za izvršavanje GA, a koji nisu prethodno<br />

detaljno opisani: funkcija prilagođenosti i genetski operatori selekcije, ukrštanja i<br />

mutacije.<br />

B.1 Funkcije prilagođenosti<br />

U datoteci fitness.c se nalazi veći broj funkcija prilagođenosti, koje<br />

izračunavaju prilagođenost jedinki u populaciji na osnovu njihovih vrednosti. Pri<br />

učitavanju iz konfiguracione datoteke ("GENET.CFG"), funkcijskom pokazivaču<br />

ga->fitness.f se dodeljuje pokazivač na izabranu funkciju prilagođenosti.<br />

Implementirane su sledeće funkcije, čije se objašnjenje može videti u odeljku<br />

2.3.2.<br />

NoScaling()<br />

Primenom ove funkcije, vrednost svake jedinke postaje njena prilagođenost,<br />

što odgovara shemi direktnog preuzimanja.<br />

LinearScaling()<br />

Ova funkcija realizuje linearno skaliranje, gde su koeficijenti A i B konstantni<br />

unapred zadati (učitavaju se iz konfiguracione datoteke). Dati koeficijenti se<br />

redom memorišu u promenljivima ga->fitness.a i ga->fitness.b .<br />

DirectTo01Scaling()<br />

Ova funkcija realizuje skaliraje vrednosti u jedinični interval, u slučaju<br />

problema maksimizacije. Funkcija je implementirana u dva ciklusa, gde se u<br />

prvom ciklusu računaju minimalna i maksimalna vrednost jedinki u populaciji, a<br />

u drugom vrši dodeljivanje prilagođenosti jedinkama po formuli (2.6). Vrednost<br />

tekuće jedinke i je data sa ga->pop[i]->funvalue, a minimalna i maksimalna<br />

vrednost se memorišu u lokalnim promenljivima min i max.

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

Saved successfully!

Ooh no, something went wrong!