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;