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.

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

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

Pre skaliranja se proverava da li postoje bar dve različite jedinke, da bi ono<br />

moglo da se izvrši. U suprotnom dalje izvršavanje nema smisla, jer je populacija<br />

konvergirala, pa se prekida <strong>rad</strong> GA, i štampa izveštaj da su sve jedinke iste.<br />

Na sličan način se pre samog skaliranja proverava i korektnost pojedinačnih<br />

jedinki u populaciji, i u razmatranje se uzimaju samo korektne jedinke. Ukoliko<br />

su sve jedinke nekorektne, dalje izvršavanje nema smisla, pa se prekida<br />

izvršavanje GA, i štampa odgovarajući izveštaj.<br />

InverseTo01Scaling()<br />

Formula (2.7) je primenjena kod ove funkcije prilagođenosti, pa se vrednosti<br />

inverzno skaliraju u jedinični interval, što se primenjuje u problemima<br />

minimizacije. Ako su sve jedinke iste ili sve nekorektne, štampa se izveštaj o<br />

tome. Data funkcija je implementirana analogno direktnom skaliranju u jedinični<br />

interval.<br />

DirectToStretchScaling()<br />

U ovom slučaju se vrši skaliranje po formuli f(x)=Ax+B, gde A i B nisu<br />

konstantni već se određuju prema formulama (2.4) i (2.5). Parametar C u tim<br />

formulama se učitava iz konfiguracione datoteke, a memorisan je u promenljivoj<br />

ga->fitness.c, dok se ostale promenljive memorišu u lokalnim promenljivima.<br />

Računanje se vrši u tri faze: nalaženje minimalne i maksimalne vrednosti,<br />

nalaženje ostalih parametara i dodeljivanje prilagođenosti jedinkama. I u ovom<br />

slučaju se proverava korektnost jedinki i to da li su sve jedinke iste.<br />

DirectSigmaTruncationScaling()<br />

Funkcija prilagođenosti po shemi sigma-odsecanja, koja je data formulom<br />

(2.8). Kao i u prethodnim slučajevima proverava se korektnost jedinki i da li su<br />

sve jedinke iste. Računanje se, kao i u prethodnom slučaju, vrši u tri faze:<br />

nalaženje minimalne i maksimalne vrednosti, nalaženje ostalih parametara i<br />

dodeljivanje prilagođenosti jedinkama.<br />

B.2 Selekcija<br />

Više implementiranih varijanti selekcije se nalazi u datoteci select.c, gde<br />

odgovarajuće funkcije vrše selekciju jedinki za narednu generaciju. Funkcijski<br />

pokazivač ga->select.f sadrži varijantu selekcije koja se primenjuje u<br />

izvršavanju GA, a informacija o tome se učitava iz konfiguracione datoteke.<br />

Ukoliko je jedinka i izabrana na mesto j u sledećoj generaciji, vrši se<br />

kopiranje genetskog koda. U prvoj fazi se kopira dužina genetskog koda, pa se<br />

vrši dodeljivanje ga->pop[i]->tmpcodelen = ga->pop[j]->codelen. Zatim se kopira<br />

ceo genetski kod, odnosno genetski kod jedinke j prelazi u privremeni genetski<br />

kod jedinke i. Time se niz ga->pop[j]->gencode kopira na mesto niza ga->pop[i]-<br />

>tmpgencode.<br />

Jedina globalna promenljiva je<br />

FILE *rankfile;

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

Saved successfully!

Ooh no, something went wrong!