Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Sekvencijalna GA implementacija 39<br />
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯<br />
novih, prvi put primenjenih, metoda. Svi elementi su ukomponovani u jednu<br />
celinu i maksimalno je olakšano programiranje pri rešavanju novih NPkompletnih<br />
problema, uz očuvanje efikasnosti cele implementacije. Pošto<br />
genetski algoritam sadrži veliki broj parametara koji su bitni za izvršavanje, kao i<br />
veći broj varijanti genetskih operatora, njihovo izbor i zadavanje je izvršeno na<br />
vrlo fleksibilan način. Pri rešavanju problema opisanih u ovom <strong>rad</strong>u, dobijeni su<br />
veoma dobri rezultati, u nekim slučajevima čak bolji od svih dosadašnjih<br />
primenjivanih metoda.<br />
Neke važne karakteristike GANP implementacije su:<br />
• Formiranje strukture koja sadrži sve informacije o GA, zajedničke za svaki<br />
problem koji se rešava;<br />
• Formiranje strukture koja sadrži informacije specifične za problem koji se<br />
rešava;<br />
• Izbor raznih varijanti operatora selekcije, ukrštanja i mutacije, kao i izbor<br />
funkcije prilagođenosti i kriterijuma za kraj izvršavanja GA se vrši pomoću<br />
konfiguracione datoteke. Pošto su korišćeni funkcijski pokazivači, očuvana<br />
je brzina izvršavanja, uz mogućnost variranja raznih operatora promenom u<br />
konfiguracionoj datoteci, bez ponovnog prevođenja programa.<br />
• Fleksibilan način čitanja podataka iz konfiguracione datoteke;<br />
• Mogućnost nadog<strong>rad</strong>nje nekim specifičnijim potrebama (meta GA, paralelni<br />
GA, itd).<br />
• Korišćenje generatora slučajnih brojeva datog u izvornom kodu, što<br />
doprinosi nezavisnosti koda od platforme na kojoj se izvršava, mogućnost<br />
determinisanog testiranja programa i jednake rezultate izvršavanja na svim<br />
platformama;<br />
• Laka dopuna funkcijama koje zavise od prirode problema.<br />
Svi podaci specifični za GANP implementaciju su grupisani u jednu<br />
strukturu C programskog jezika. Ona je podeljena po načinu korišćenja na<br />
podstrukture koje su zadužene za sledeće elemente GA:<br />
• Populacija sastavljena od jedinki;<br />
• Funkcija prilagođenosti;<br />
• Politika zamene generacija;<br />
• Selekcija;<br />
• Ukrštanje;<br />
• Mutacija;<br />
• Zajedničke funkcije;<br />
• Keširanje GA;<br />
• Kriterijum završetka.<br />
U ovom odeljku je dat samo pregled promenljivih u odgovarajućoj<br />
podstrukturi, a pregled funkcija, koje mogu biti dodeljene odgovarajućem<br />
funkcijskom pokazivaču, se može videti u narednom odeljku. Detaljne<br />
pojedinačne informacije o parametrima, koje sadrže tip i opseg odgovarajućeg<br />
numeričkog parametra, se mogu videti u dodatku B.