lv_3
DESCRIPTION
3TRANSCRIPT
Odsjek za ra£unarstvo i informatikuKurs: Optimizacija resursaAkademska godina: 2012./2013.Godina studija: I godina MoE studijaSemestar: I
Profesor: doc. dr Samim Konjicija, dipl. ing. el.Asistent: Dinko Osmankovi¢, MoE
Laboratorijska vjeºba 3 Tema: Geneti£ki algoritam - realizacija binarnihoperatora selekcije, kriºanja i mutacije
Na£in rada: Individualno Izvje²taj: DA (12.11.2012.)
Laboratorijska vjeºba 3
Postavka zadatka: Potrebno je implementirati jednostavni geneti£ki algoritam sa bi-narnim operacijama selekcije, kriºanja i mutacije.
Opis algoritma: Geneti£ki algoritam se moºe opisati pseudo kodom u Algoritam 1.
Algoritam 1 Pseudo kod jednostavnog geneti£kog algoritma1: Inicijalizacija: Generacija 0:k ← 0Pk - populacija n slu£ajno generiranih individua
2: Izra£unati fitness(i); ∀i ∈ Pk
3: repeat
4: Odabrati dva hromozoma za kriºanje5: Kriºanje i stvaranje novih individua6: Mutacija7: Evaluacija �tnesa potomaka8: Zamjena populacija9: until Ispunjen uslov zaustavljanja
Potrebno je:
1. Implementirati klasuApstraktnaIndividua koja sadrºi sljede¢e atribute i metode:
• DuzinaHromozoma - duzina hromozoma (integer);
• Hromozom - binarni niz duºine DuzinaHromozoma;
• Fitness - �tnes individue (double);
• Set i Get metode za prethodne atribute;
• Konstruktor sa jednim parametrom DuzinaHromozoma koji generira slu£ajanbinarni niz duºine DuzinaHromozoma;
• IzracunajFitnes() - virtuelna funkcija koja izra£unava vrijednost �tnesa indi-vidue.
Slika 1: Kriºanje u jednoj ta£ki
2. Implementirati klasu Populacija koja sadrºi sljede¢e atribute i metode:
• VelicinaPopulacije - broj individua u populaciji (integer);
• VjerovatnocaKrizanja - vjerovatno¢a da se izvr²i kriºanje izme�u dvije indivi-due (double izme�u 0 i 1);
• VjerovatnocaMutacije - vjerovatno¢a da se izvr²i mutacija nad individuom (do-uble izme�u 0 i 1);
• MaxGeneracija - maksimalan broj generacija GA (integer);
• VelicinaElite - broj najboljih individua koje se prenose u narednu generaciju(integer izme�u 0 i 2);
• Set i Get metode za sve navedene atribute klase;
• Konstruktor koji kao parametre prima sve navedene atribute i generira popu-laciju;
• Selekcija() - funkcija koja implementira selekciju na bazi ruletskog to£ka, pse-udo kod prikazan u Algoritam 2;
• Krizanje(Individua1, Individua2) - funkcija koja implementira operator kriºa-nja u jednoj ta£ki (integer, slu£ajno odabrana vrijednost izme�u 1 i DuzinaHromozoma-2) i vra¢a sve potomke prema slici 1;
• Mutacija(Individua) - funkcija koja implementira operator binarne mutacije ujednoj ta£ki (integer, slu£ajno odabrana vrijednost od 0 do DuzinaHromozoma-1);
• OdabirElite(VelicinaElite) - funkcija koja implementira odabir V elicinaElitenajboljih individua za prenos u narednu generaciju;
• Step() - funkcija koja izvr²ava jednu iteraciju geneti£kog algoritma i vra¢a novupopulaciju;
• Run() - funkcija koja izvr²ava geneti£ki algoritam za parametre zadane u kons-truktoru.
3. Implementirati izvedenu klasu MojaIndividua i reimplementirati funkciju Izracunaj-Fitnes() za sljede¢e funkcije:
f(x1, x2) = (x1 − 3)2 + (x2 + 1)2, xi ∈ [−5, 5]f(x1, x2) = (1− x1)2 + 100(x2 − x21)2, xi ∈ [−5, 5]
f(x1, x2) = 20 +2∑
i=1
(x2i − 10cos(2πxi)
), xi ∈ [−5.12, 5.12]. (1)
Hromozom kodirati tako da prva polovina predstavlja binarno kodiranu varijablux1, a druga polovina binarno kodiranu varijablu x2.
4. Na¢i vrijednosti minimuma zadanih funkcija kori²tenjem jednostavnog geneti£kogalgoritma. Za svaku generaciju ispisivati najbolji i srednji �tnes. Algoritam zaus-tavljati nakon izvr²enog maksimalnog broja iteracija.
Algoritam 2 Pseudo kod selekcije na bazi ruletskog to£ka
1: RWS(populacija)2: j ← 13: suma← ps(a
j)4: u← rand(0, 1)5: while suma<u do
6: j ++7: suma← suma+ ps(a
j)8: end while
9: return j
Napomena:
Pri realizaciji se mogu koristiti programski jezici C++ i Python.