lv_3

3
k 0 P k n f itness(i); i P k

Upload: vedran

Post on 04-Dec-2015

11 views

Category:

Documents


4 download

DESCRIPTION

3

TRANSCRIPT

Page 1: LV_3

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.

Page 2: LV_3

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.

Page 3: LV_3

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.