1
Sadržaj
1 Uvod............................................................................................................................................................................................................. 3
2 Genetski algoritam ..................................................................................................................................................................................... 5
3 Genetsko programiranje ........................................................................................................................................................................... 6
3.1 Elementi genetskog programiranja................................................................................................................................................. 6
3.1.1 Odabir podatkovnih i funkcijskih elemenata rješenja .......................................................................................................... 6
3.1.2 Funkcija dobrote ....................................................................................................................................................................... 7
3.1.3 Parametri genetskog programa .............................................................................................................................................. 7
3.1.4 Uvjet zaustavljanja postupka .................................................................................................................................................. 8
3.1.5 Građa rješenja........................................................................................................................................................................... 8
3.2 Genetski algoritam ............................................................................................................................................................................ 8
3.2.1 Početna populacija ................................................................................................................................................................... 9
3.2.2 Selekcija i eliminacija ............................................................................................................................................................. 10
3.2.3 Genetski operatori .................................................................................................................................................................. 10
4 Algoritmi zamjene stranica u radnom spremniku ................................................................................................................................ 12
4.1 OPT (optimalni algoritam) .............................................................................................................................................................. 12
4.2 FIFO (first-in-first-out) ..................................................................................................................................................................... 13
4.3 Second chance ................................................................................................................................................................................ 14
4.4 CLOCK (satni algoritam) ................................................................................................................................................................ 15
4.5 NFU (not frequently used).............................................................................................................................................................. 16
4.6 LRU (last recently used)................................................................................................................................................................. 16
4.7 RANDOM.......................................................................................................................................................................................... 17
5 Program „simradsprem“ .......................................................................................................................................................................... 19
5.1 Način rada programa ...................................................................................................................................................................... 19
5.2 Osnovni parametri programa ......................................................................................................................................................... 20
5.2.1 Ključni parametri programa ................................................................................................................................................... 20
5.2.2 Dobrota .................................................................................................................................................................................... 20
5.2.3 Selekcija i eliminacija ............................................................................................................................................................. 20
5.2.4 Križanje i mutacija .................................................................................................................................................................. 21
5.3 Rezultati ............................................................................................................................................................................................ 21
6 Zaključak ................................................................................................................................................................................................... 26
7 Literatura ................................................................................................................................................................................................... 27
2
8 Sažetak...................................................................................................................................................................................................... 28
9 Abstract ..................................................................................................................................................................................................... 29
3
1 Uvod
Priručna memorija (cache), primarna memorija (radna) i sekundarna memorija (diskovi) su dijelovi
računalne memorije koji se razlikuju po veličini i brzini. Svaka memorija je podjeljena na manje dijelove –
stranice. U stranice se spremaju dijelovi programa i podatci koji su potrebni procesoru za rad.
Radna memorija se prividno čini kao najbrža cache memorija s najvećim kapacitetom sekundarne
memorije zbog straničenja. Straničenje je proces koji prebacuje stranice potrebne za rad procesora iz
sekundarne memorije u radnu, čime procesor ima omogućeni brži pristup podatcima.
Postupak kopiranja stranica u radni spremnik najsporija je komponenta izvršavanja programa te
brzina programa poprilično ovisi o stranici koja će biti izbačena prilikom upisivanja nove stranice. Razvijeni
algoritmi koji povećavaju učinkovitost postupka straničenja podliježu zakonima prostorne i vremenske
lokalnosti. Prostorna lokalnost govori da će podatci referencirani u bliskoj budućnosti imati adrese bliske
nedavno korištenim podatcima, dok vremenska lokalnost upućuje na veliku vjerojatnost ponovnog
referenciranja nedavno korištenih podataka. S obzirom na te zakone postoje algoritmi zamjena stranica u
radnome spremniku koji više-manje poštuju i koriste navedane zakone. Optimalni algoritam (OPT) u
potpunosti uzima ta dva zakona, no praktično je neizvediv i služi samo kao referenca, dok RANDOM
algoritam ne uzima u obzir niti jedan zakon, no u praksi daje u prosijeku bolje rezultate od FIFO algoritma
koji na određenoj razini ostvaruje navedene zakone. Postoje i drugi algoritmi poput Second chance,
CLOCK, NFU i LRU koji u različitim količinama implementiraju prostornu i vremensku lokalnost.
Zbog takvih problema, zamjena stranica u radnome spremniku, za koje nije moguće razviti ili
upotrijebiti optimalne i efektivne egzaktne algoritme, tijekom posljednja dva desetljeća, a posebno u
posljednjih nekoliko godina, sve više se koriste i razvijaju heuristički algoritmi. Naziv “heuristički algoritam“
koristi se za opisivanje algoritma koji se bazira na heuristici. Takvi su algoritmi obično iterativni. Potragu za
rješenjem počinju nekim trivijalnim dopustivim rješenjem problema koje je često daleko od optimalnog. Pri
svakoj iteraciji modificiraju trenutno rješenje kako bi došli što bliže optimalnom. Heuristika se koristi prilikom
odabira parametara za iduću iteraciju unutar algoritma kao i prilikom odabira konstanti koje se koriste
tijekom algoritma.
4
U ovom radu biti će opisane već određene egzaktne strategije zamjene stranica u radnom
spremniku, te će biti izvedena i opisana metoda dobivena genetskim algoritmom
5
2 Genetski algoritam
Genetski algoritam je heuristička metoda optimiranja koja imitira prirodni evolucijski proces.
Sredinom 60-tih godina John H.Holland (1973.) je prvi razvio metodu rješavanja problema optimizacije
genetskim algoritmom. Njegov student D.E.Goldberg razvio je i usavršio metodu za rješavanje
kompleksnih problema optimizacije, te 1989. godine objavljuje knjigu koja se poslije javlja kao inspiracija i
startna točka skoro svih metoda razvijenih na bazi evolucijskog programiranja. [2]
Zbog gotovo identičnog oponašanja prirode, genetski algoritmi spadaju u evolucijske algoritme.
Analogija evolucije kao prirodnog procesa i genetskog algoritma kao metode optimiranja očituje se u
procesu selekcije i genetskim operatorima. Evolucija se u prirodi javlja radi preživljavanja i reprodukcije
sposobnih jedinki koje predaju svoj genetski materijal sljedećim generacijama. Kao posljedica tog procesa
genetski materijal koji čini sposobnije jedinke ima mogućnosti povećati svoj udio u cjelokupnoj populaciji,
što uzrokuje promjenu na razini vrste. [5]
Svaki genetski program počinje s inicijalnom populacijom (skup rješenja). Obično se početna
populacija generira slučajnim odabirom rješenja iz domene, mada je moguće početnu populaciju generirati
uniformno ili usaditi početno (inicijalno) rješenje dobiveno nekom drugom optimizacijskom metodom. Svaka
jedinka predstavlja potencijalno rješenje problema koji se obrađuje - kromosomi. Svakom rješenju se
pridjeljuje određena mjera kvalitete - dobrota, dok se funkcija koja tu kvalitetu određuje naziva funkcija cilja
ili funkcija dobrote.
Iz stare populacije formira se nova populacija izdvajajući, po nekom postupku odabira, bolje jedinke
iz skupa postojećih. Neki članovi ove nove populacije podvrgnuti su utjecajima genetskih operatora koji iz
njih formiraju nove jedinke. Operatori se dijele na unarne, koji stvaraju novu jedinku mijenjajući manji dio
genetskog materijala (mutacija) i operatore višeg reda, koji kreiraju nove individue kombinirajući osobine
nekoliko jedinki (križanje).
Nakon nekog broja izvršenih generacija čitav postupak se zaustavlja kada se zadovolji uvjet
zaustavljanja (prošao je određeni broj iteracija ili je postignuta određena dobrota jedinke), a najbolji član
trenutne populacije predstavlja rješenje koje bi trebalo biti sasvim blizu optimuma.
6
3 Genetsko programiranje
Genetsko programiranje je tehnika koja omogućava rješavanje nekog problema računalom bez
potrebe za stvaranjem programa koji rješava zadani problem. Ovu metodu prezentirao je John Koza 1990
godine.
Ideja genetskog programiranja došla je kao generalizacija genetskih algoritama. S obzirom da u GA
vršimo manipulaciju nad kromosomima koji predstavljanju brojeve (binarne ili realne), moguće je formirati
koromosome koji predstavljaju kompjuterske programe nad kojim bi vršili operacije križanja i mutacije, te
time dobivali računalni program koji bi optimalno rješavao neki određeni problem. [2]
3.1 Elementi genetskog programiranja
Kod svake primjene bilo koje paradigme strojnog učenja pri rješavanju problema prethodno je
potrebno definitati određene elemente sustava. Elementi genetskog programiranja su sljedeći (Koza,
1992):
podatkovni i funkcijski elementi rješenja,
funkcija dobrote,
parametri genetskog programa,
uvjet zaustavljanja postupka te
građa rješenja.
3.1.1 Odabir podatkovnih i funkcijskih elemenata rješenja
Najvažniji zahtjev koji treba zadovoljiti prilikom odabira podatkovnih i funkcijskih elemenata je taj da
je uz pomoć njih moguće izraziti rješenje problema kojega pokušavamo riješiti. Ovo se svojstvo naziva
potpunost (engl. sufficiency), a zadovoljavanje istog ovisi o određenom problemu i nije ga u općenitom
7
slučaju moguće definirati. Skup podatkovnih elemenata i funkcijskih elemenata sastavlja se s elementima
za koje se smatra da bi mogli biti od koristi u dotičnom problemu.
Drugo svojstvo koje skup treba zadovoljavati je zatvorenost (engl. closure). Zatvorenost zadanog
skupa elemenata definira se, za bilo koji funkcijski element, kao sposobnost prihvaćanja rezultata od bilo
kojeg drugog funkcijskog ili podatkovnog elementa. Zadovoljavanje ovog svojstva ovisi o vrsti podataka
određenog problema; npr. u rješavanju nekog problema u domeni Booleoove algebre. Funckijski čvorovi će
kao argumente obično primati i vraćati isključivo logičke vrijednosti 0 i 1.
3.1.2 Funkcija dobrote
Funkcija dobrote, kao i kod genetskih algoritama, je element sustava koji u najvećoj mjeri rukovodi
evolucijom i upravlja kretanjem cjelokupne populacije.
U većini ostvarenja genetskog programiranja određivanje dobrote rješenja oduzima najveći dio
utrošenog procesorskog vremena. Ukoliko izvedeni programi uljučuju iterativne ili rekurzivne strukture,
potrebno je uvesti i dodatne nadzorne mehanizme koji će otkriti postojanje nepravilnosti u programu (npr.
beskonačne petlje).
Određivanje dobrote nekog rješenja obično se sastoji od ispitivanja ponašanja tog rješenja na nizu
ispitnih primjera. Potrebno je uočiti da je proces učenja vođen isključivo funkcijom dobrote.
3.1.3 Parametri genetskog programa
Parametri genetskih metoda su: veličina populacije (30-100), vjerojatnost mutacije (0.1-0.001),
vjerojatnost križanja (0.9-0.6), broj jedinki za eliminaciju (VelPop/2-VelPop/4) itd.
Odabir odgovarajućih vrijednosti ovisan je o dotičnoj primjeni i ne postoji skup vrijednosti parametara
koji su najbolji za svaki problem. Postavljanje parametara dodatno komplicira i njihova međusobna
povezanost. Kako za različite vrijednosti parametara dobivamo različite rezultate koji se očituju u brzini i
točnosti rješenja, postavljanje djelotvornih parametara zahtjeva izvođenje velikog broja eksperimenata.
8
3.1.4 Uvjet zaustavljanja postupka
Uvjet zaustavljanja svojstven je dotičnom problemu, no najčešći oblik uvjeta zaustavljanja je
dostizanje predefiniranog broja generacija evolucijskog procesa. Razlog takvog zaustavljanja leži u
gubljenju sposobnosti pronalaženja bitno različitih rješenja, te da su eventualna naknadna poboljšanja vrlo
mala. U svom radu (Koza, 1992) J. Koza za sve pokuse koristi broj od 50 generacija, ukoliko već prije nije
pronađeno točno rješenje. Vjerojatnost nalaženja boljeg rješenja nakon toga leži u višestrukom ponavljanju
pokusa.
3.1.5 Građa rješenja
Predposatvimo li uobičajeni prikaz rješenja genetskog programiranja u obliku stabla, građa rješenja
može podrazumijevati definiranje programa, tj. po prihvaćenom nazivu, automatski definiranih funkcija
(ADF).
Automatski definirana funkcija je potprogram (funkcija, procedura, rutina) koji može biti pozvan od
strane glavnog programa, a svi eventualni potprogrami, kao i glavni program, dinamički se izgrađuju
tijekom evolucijskog procesa. U slučaju rješenja predstavljanog stablom, podatkovni elementi su završni
čvorovi stabla (listovi) – podatkovni čvorovi, dok su ostali čvorovi funkcijski elementi – funkcijski čvorovi.
3.2 Genetski algoritam
stvaranje početne populacije;
dok (nije zadovoljen uvjet zaustavljanja) {
selekcija, eliminacija (na temelju dobrote jedinke)
genetski operatori
križanje;
mutacija;
}
9
3.2.1 Početna populacija
Početna populacija (nulta generacija) stvara se na temelju slučajnog odabira. Čvorovi stabla se
mogu podijeliti na završne i nezavršne, pri čemo samo nezavršni čvorovi mogu biti listovi.
Izgradnja početne populacije može se izvesti na tri načina: grow metodom, full metodom i ramped
half-and-half metodom.
Grow metoda
Počevši od korijena, slučajno se odabire vrsta čvora koji će se dodati u stablo. Pritom je moguće
birati završne ili nezavršne čvorove. Ako je odabran završni čvor, sustav odabire bilo koji završni čvor i
dodaje ga u stablo, inače dodaje neki nezavršni čvor. Postupak se rekurzivno ponavlja dok svi listovi stabla
nisu završni ili dok se ne dostigne maksimalna dozvoljena dubina stabla
Full metoda
Poput grow metode, ali je unaprijed definirano na kojoj se minimalnoj dubini stabla mogu početi
pojavljivati završni čvorovi.
Remped half-and-half metoda
Prilikom generiranja jedinki definira se samo maksimalna dubina stabla (md). Populacija se dijeli na
md-1 dijelova, te se polovica svakog dijela generira grow metodom, a druga polovica full metodom.
Slika 3.2.1 primjer jedinke: f=a+b*c [4]
10
3.2.2 Selekcija i eliminacija
Selekcija je proces koji osigurava prenošenje boljeg genetskog materijala iz generacije u generaciju
te stoga direktno utječe na samu kvalitetu genetskog programa. Postupci selekcije se međusobno razlikuju
na dva načina: način prenošenja genetskog materijala i način odabira pojedinih jedinki iz skupa jedinki na
temelju njihove dobrote.
Prvi se dijeli na:
Generacijske selekcije: proces odabire najbolje jedinke i od njih kreira novu populaciju. Može
rezultirati smanjenjem genetske raznolikosti.
Eliminacijske selekcije: proces eliminira najgore jedinke i nadomiješta ih križanjem postojećih.
Drugi način ima više postupaka. Jednostavniji primjeri:
Jednostavna proporcionalna selekcija: slučajno se biraju jedinke iz populacije, s time da
jedinke s većom dobrotom imaju veću vjerojatnost biti odabrane.
K-turnirska selekcija: odabire k članova populacije te uspoređuje njihove dobrote. Jedinke
lošije dobrote se eliminiraju te zamijenjuju novima koje nastaju križanjem preostalih. Kod ove
selekcije javlja se elitizam, tj. najbolja jedinka nikada neće biti eliminirana.
3.2.3 Genetski operatori
Križanje
Križanje jedinki je proces u kojem se rekombinira genetski materijal dvaju, selekcijom odabrana,
roditelja i kao rezultat dobiva jedna ili dvije jedinke djece.
Kod genetskog programiranja nasumično se odabiru dva čvora i mijenjaju stvarajući dvije potpuno
nove jedinke.
11
Slika 3.2.2 roditeljske jedinke: f1=b*(a+c) i f2=b*c+(c-a*b) [4]
Slika 3.2.3 djeca: f1=(a*b)*(a+c) i f2=b*c+(c-b) [4]
Mutacija
Mutacija je unarni genetski operator koji služi za uvođenje nekih gena koji će rezultirati novim
jedinkama s boljim rješenjem i za obnavljanje izgubljenog genetskog materijala. Mutacijama se može dobiti
poboljšanje ali i pogoršanje prosječne dobrote jedinki u populaciji. No, jedinke sa „smrtonosnim“
mutacijama bit će vrlo brzo eliminirane u selekcijskom procesu, tako da iste ne bi smjele dugotrajno narušiti
prosječnu dobrotu jedinki u populaciji.
Kod genetskog programiranja slučajno odabrani čvor zamjenjuje se slučajno odabranim podstablom.
12
4 Algoritmi zamjene stranica u radnom spremniku
Odluka koju ćemo stranicu izbaciti iz radnog spremnika kada iz sekundarne memorije moramo
prenjeti novu stranicu u radni spremnik temelji se na algoritmima zamjene stranica. Problem zamjene
stranica je bitan i dobro proučen. Važnost učinkovitog algoritma ležu u izrazito čestom pojavljivanju
zamjena stranica pri izvođenju programa. Algoritam direktno utječe radna svojstva operacijskog sustava.
Ako algoritam nije dovoljno učinkovit, operacijski sustav može zaglaviti duže na zamjeni stranica potrebnih
programu, nego na samom izvođenju programa. [3]
Cilj algoritma zamjene stranica je smanjenje broja promašaja. Promašaj je zahtjev procesora za
stranicom koja se ne nalazi u radnom spremniku. Ako je procesor zatražio stranicu koja se nalazi u radnom
spremniku, radi se o pogotku. Nakon pogotka sadržaj radne memorije se ne mjenja te procesor nastavlja
sa radom.
Praktična ostvarenja postupaka za izbacivanje stranica zasnivaju se na nekoliko teorijskih
razmatranja strategija, te se kao mjera za usporedbu strategija najčešće koristi broj promašaja stranica.
Primjer:
Stranice dolaze redom: 23145214531
Spremnik: 4 okvira
Oznaka pogodka: *
4.1 OPT (optimalni algoritam)
Optimalna strategija ovisi u potpunosti o budućim unosima. Ona provjerava koje stranice najdalje
budućnosti se neće koristiti, te prema tome prilagođava izbacivanje stranica u okvire. Premda daje najbolje
riješenje, nije praktična i u potpunosti ovisi o samom primjeru. Ipak, ovaj algoritam se može koristiti za
usporedbu koliko je neka strategija zamjene stranica dobra. [1]
13
Primjer: 23145214531
- - - -
2- - -
23- -
231-
2314
2514
2514 *
2514 *
2514 *
2514 *
2513
2513 *
Broj promašaja: 6
4.2 FIFO (first-in-first-out)
FIFO strategija za izbacivanje odabire stranicu koja je nadulje u radnom spremniku (First-In-First-
Out). [1]
Primjer: 23145214531
- - - -
2- - -
23- -
231-
2314
5314
5214
5214 *
14
5214 *
5214 *
5234
5231
Broj promašaja: 8
4.3 Second chance
Second chance je jednostavna modifikacije FIFO algoritma. Svakoj od stranica pridružen je jedan bit
koji govori je li se stranica u posljednje vrijeme koristila. Ako je taj bit u nuli, stranica je i stara i nekorištena
te se izbacuje. U slučaju da je taj bit u jedinici, postavlja se u nulu, a stranica se pomiče na kraj reda. [1]
Primjer: 23145214531
- - - - 0000
2- - - 1000
23- - 1100
231- 1110
2314 1111
5314 1000
5214 1100
5214 * 1110
5214 * 1111
5214 * 1111
3214 1000
3214 * 1010
Broj promašaja: 7
15
4.4 CLOCK (satni algoritam)
Clock algoritam je modifikacija FIFO, tj. Second chance algoritma. Algoritam djeluje tako da se sve
stranice u radnom spremniku slažu u kružnu listu po prispjeću. Prilikom traženja stranice za izacivanje
posebnom se kazaljkom pretražuje lista, počevši odmah iza zadnje učitane stranice u memoriju. Ukoliko
stranica ima oznaku A=1 (koristila se u nekom bliskom trenutku) ta se oznaka postavlja na 0 te se kazaljka
pomiče na sljedeću stranicu. Prilikom učitavanja nove stranice zastavica se postavlja na 1. [1]
Primjer: 23145214531
- - - - 0000
2- - - 1000
23- - 1100
231- 1110
2314 1111
5314 1000
5214 1100
5214 * 1110
5214 * 1111
5214 * 1111
5234 0010
5231 0011
Broj promašaja: 8
16
4.5 NFU (not frequently used)
NFU algoritam izbacuje stranicu koja se u prošlosti najrijeđe koristila. Svaka stranica u radnom
spremniku ima svoj brojač koji se postavlja u nulu kada se stranica stavlja u radni spremnik. Brojač se
povećava za jedan pri ponovnom korištenju stranice. [1]
Primjer: 23145214531
- - - - 0000
2- - - 0000
23- - 0000
231- 0000
2314 0000
5314 0000
5214 0000
5214 * 0010
5214 * 0011
5214 * 1011
5314 1011
5314 * 1021
Broj promašaja: 7
4.6 LRU (last recently used)
LRU strategija izbacuje stranice koja se najdalje u prošlosti nije upotrebljavala (od engl. Least
Recently Used). Strategija se temelji na prepostavci da će se stranice koje su se bogato koristile u liskoj
prošlosti vrlo vjerojatno koristiti i u bliskoj budućnosti. [1]
17
Primjer: 23145214531
- - - -
2- - -
23- -
231-
2314
5314
5214
5214 *
5214 *
5214 *
5314
5314 *
Broj promašaja: 7
4.7 RANDOM
Random algoritam iz radne memorije izbacuje slučajno odabranu stranicu. Algoritam ne zahtjeva
pamćenje, a u praktičnoj primjeni pokazao se boljim od FIFO algoritma. [1]
Primjer: 23145214531
- - - -
2- - -
23- -
231-
2314
2514 2
2514 *
2514 *
18
2514 *
2514 *
3514 1
3514 *
Broj promašaja: 6
19
5 Program „simradsprem“
Algoritmi zamjena stranica u radnom spremniku pokušavaju predvidjeti buduće zahtjeve za
stranicama na temelju nekih pravilnosti i bliže prošlosti. Svaki algoritam ima svoje prednosti i nedostatke, te
njegova učinkovitost ovisi o zadanom primjeru. Napravljena je simulacija svake strategije zamjene stranica
u radnom spremniku iz prethodnog poglavlja i strategija izrađena genetskim algoritmom.
Zadatak ovog programa je pronalaženje optimalnog omjera korištenja navedenih strategija zamjene
stranica u radnom spremniku, tj. optimalno iskorištavanje prednosti svakog navedenog algoritma.
5.1 Način rada programa
Rad genetskog algoritma za zamjenu stranica u radnom spremniku temelji se na obliku same
jedinke. Jedinka se sastoji od šest brojeva (1-100, 0 ne da ne bi došlo do izgladnjivanja neke od strategija)
koji predstavljaju omjer za svaku od šest već definiranih strategija – FIFO, LRU, NFU, Second chance,
Clock i RANDOM. Tih šest omjera zapravo predstavljaju vjerojatnosti izbora neke strategije za zamjenu
određene stranice u primjeru. Za svaki promašaj izabire se slučajno, ali ovisno o vjerojatnostima, strategija
izbacivanja za baš taj određeni promašaj.
Stvaraju se različite jedinke za početnu populaciju, te se svaka jedinka testira preko
primjer_za_ucenje.txt datoteke koja sadrži niz zahtjeva za stranicama i evaluira. Broja promašaja
predstavlja kvalitetu jedinke prema kojoj se dalje, kao i u svakom genetskom algoritmu, jedinke provlače
kroz selekciju i genetske operatore stvarajući time novu generaciju.
20
5.2 Osnovni parametri programa
5.2.1 Ključni parametri programa
Moguće je mijenjati ključne parametre programa kao veličina radnog spremnika, broj stranica
(veličina sekundarne memorije) i broj zahtjeva. Promjena dotičnih parametara direktno utječe na samu
kvalitetu jedinki i time na broj promašaja tj. pogodaka koje je pojedina jedinka ostvarila prilikom
referenciranja stranica sekundarne memorije.
5.2.2 Dobrota
Kao što je rečeno, dobrota jedinki određuje njenu kvalitetu i kvalitetu u odnosu na druge jedinke, tj. u
kojoj je mjeri dotična jedinka bolja ili lošija od jedinki iz generacije. Kod genetskog algoritma za zamjenu
stranica u radnom spremniku koristi se broj promašaja ili broj pogodatka koji je dotična jedinka ostvarila pri
zamjeni kao mjera kvalitete.
U slučaju ovog programa odabran je broj promašaja, te će dobrota bolje jedinke biti manja u odnosu
na lošije jedinke.
5.2.3 Selekcija i eliminacija
Kao postupak selekcije odabran je 3-turnirski eliminacijski odabir:
Odabiru se potpuno slučajno tri jedinke
Najlošija se izbacuje
Nova jedinka nastaje križanjem preostalih dviju
Turnirski eliminacijski odabir ima svojstvo elitizma – najbolja jedinka će uvijek biti očuvana (tj. u
ovom slučaju, najbolje dvije jedinke).
21
5.2.4 Križanje i mutacija
Križanjem se stvara dijete koje uzima na temelju slučajnog odabira od dvije jedinke dobivene tj.
preostale iz selekcije omjere za Clock, Second chance, RANDOM, NFU, LRU i FIFO algoritme. Tako može
nastati jedinka ista jednom ili drugom roditelju, ali i jedinka koja je potpuna mješavina ta dva.
Mutacija mijenja tu istu jedinku nastalu križanjem i zamjenjuje jedan slučajno odabrani omjer od
mogućih šest sa novim slučajnim omjerom. Mutacija nije nužna i odvija se slučajno.
5.3 Rezultati
Za potrebe ispitivanja provedeno je niz pokusa sa različitim ispitnim primjerima i različitim
primjerima za učenje. U tablici 5.3.1 za GA na četiri primjera za učenje navedeni su postotci promašaja na
dva različita tipa ispitnih primjera iste duljine. Primjeri za učenje sastoje se od 16, 64, 128 i 256 zahtjeva.
Zahtjevi idu od 1 do 9. Vrti se 314 generacija i broj jedinki u generaciji je 20 (pretpostavljene optimalne
vrijednosti). Dok u tablici 5.3.2 navedeni su postotci promašaja za sedam navedenih i istraženih algoritama
(RANDOM, FIFO, Second chance, Clock, LRU, NFU i OPT) za već navedena dva različita ispitna primjera
iste duljine radi usporedbe sa dobivenim postotcima riješenja GA. Ispitni primjeri:
1. 39376548642327332386343966528752219181746141314152
2. 46662527772444132437488849326235266355536266624462
Tablica 5.3.1 Postotci promašaja riješenja GA dobivenih na 4 različita primjera za učenje za 2 ispitna primjera
1. 16 zahtjeva 2. 64 zahtjeva 3. 128 zahtjeva 4. 256 zahtjeva
1. 56% 52% 50% 50%
2. 32% 32% 28% 30%
22
Tablica 5.3.2 Postotak promašaja za dva ispitna primjera
Iz tablica 5.3.1 i 5.3.2 vidi se da je broj promašaja ovisan o ispitnim primjerima, premda su primjeri
iste duljine, te da veličina primjera za učenje kod GA ne čini veliku razliku. Za drugo, razlog leži u činjenici
da primjeri za učenje stvaraju jedinke GA prilagođene određenoj frekvenciji dolaska i izmjene različitih
stranica. Optimalnu jedinku je teško stvoriti i jedinka će uvijek biti najviše prilagođena primjeru za učenje.
Broj promašaja na drugom primjeru je kod svih algoritama, u prosjeku, skoro upola manji od prvog
primjera.
Za tablicu 5.3.3 vide se postotci promašaja za rješanje GA nastalo korištenjem primjera za učenje sa
128 zahtjeva. To riješenje GA u tablici 5.3.1 ima relativno najmanje postotke promašaja. Te se također
koriste isti primjeri za ispitivanje. Mijenja se broj generacija i broj jedinki u populaciji. Ispitni primjeri:
1. 39376548642327332386343966528752219181746141314152
2. 46662527772444132437488849326235266355536266624462
Tablica 5.3.3 nam daje odgovor na optimalne vrijednosti parametara GA broj generacija i broj jedinki
u populaciji. Pokazalo se da je intuitivno bilo točno, tj. optimalan broj generacija je 100-500, te jedinki u
populaciji 20-50.
RANDOM FIFO Second chance Clock LRU NFU OPT
1. 52% 50% 58% 52% 54% 58% 42%
2. 38% 36% 41% 36% 32% 32% 24%
23
Tablica 5.3.3 Postotak promašaja za različiti broj generacija i jedinki u populaciji GA
Broj generacija: Broj jedinki: 1. 2.
10
10 56% 32%
20 60% 36%
50 56% 34%
100 56% 32%
100
10 54% 34%
20 50% 30%
50 52% 28%
100 54% 32%
500
10 54% 36%
20 52% 32%
50 54% 30%
100 58% 34%
1000
10 54% 36%
20 54% 32%
50 56% 34%
100 58% 36%
24
Kod tablice 5.3.4 uzimaju se optimalne vrijednosti dobivene na temelju navedenih ispitivanja. Broj
generacija GA je 250, broj jedinki u populaciji je 30, te se korisi primjer za učenje od 128 zahtjeva. Tablica
prikazuje postotke promašaja za optimalne vrijednosti GA na različitim primjerima različitih duljina i
postotke promašaja za navedene algoritme radi usporedbe. Ispitni primjeri:
1. 23632646727263717135
2. 38645273257673236257738282837273457236347233726547
3. 99828732379837732324836374734554672762354778788177727368247346387648237468274
382882828374838232838845
4. 34596342319911983748388773492982374476462874748728736482374688178171733684648
83478454582374899876666372772255511828721818172638163818126381638263862361826
3861288882181622262799191928379462236348
GA Random FIFO Second chance Clock LRU NFU OPT
1. 35% 45% 45% 45% 45% 40% 40% 35%
2. 46% 48% 54% 46% 52% 56% 64% 32%
3. 39% 44% 45% 42% 45% 51% 36% 29%
4. 38% 42% 45% 36% 44% 41% 54% 30%
Tablica 5.3.4 Postotci promašaja na četiri testna primjera
25
Slika 5.3.1 graf postotaka svih algoritama naćinjen na temelju tablice 5.3.4
Iz tablice 5.3.4 i grafa sa slike 5.3.1 mogu se očitati u prosjeku postotci za svaki od algoritama. OPT
algoritam radi oko 30% promašaja, zatim slijedi GA sa oko 40%. RANDOM, Second chance, LRU i NFU
imaju oko 45%, premda LRU i NFU imaju drastičnije varijacije, te za neke primjera daju veoma dobre dok
za druge iznimno loše rezultate. Na kraju dolaze FIFO i Clock sa oko 50%.
26
6 Zaključak
Od postojećih strategija najboljim su se pokazale NFU i LRU strategije, te je dokazana činjenica da
je RANDOM strategija u praksi često bolja od FIFO i srodnih strategija Second chance i Clock.
Genetskim algoritmom dobivene jedinke su bolje u velikoj većini slučajeva od već izrađenih
strategija, premda su poprilično daleko od optimalnih vrijednosti. Pokazano je da poprilično ovise o
primjerima za učenje i nije uvijek istinito da duži primjer daje bolju kvalitetu jedinki. Ako su primjeri za
učenje sličniji primjeru za testiranje, kraći primjeri za učenje mogu dati bolja rješenja.
27
7 Literatura
1.1 Page replacment algorithm, http://en.wikipedia.org/wiki/Page_replacement_algorithm
1.2 Bahrudin Hrnjica, 16.8.2007., Genetic programming – Genetsko programiranje (GP),
http://bh.datasoft.com.ba/?p=66
1.3 McCraw, TI. Virtual Memory Page Replacement Algorithms, CS384 – Operating Systems. Milwaukee
School of Engineering, 2005.
1.4 Balenović, NB. Pronalaženje strategije zamjene stranica u radnom spremniku uz pomoć genetskog
programiranja. Završni rad. FER, 2008.
1.5 Ivošević, MI. Genetski algoritmi u likovnoj umjetnosti. Seminarski rad. FER, 2008.
28
8 Sažetak
U radu je opisan princip rada i ideja genetskog algoritma. Detaljno je opisano genetsko
programiranje kao generalizacija genetskih algoritama. Opisani su elementi i pojmovi vezani uz genetsko
programiranje (odabir podatkovnih i funkcijskih elemenata rješenja, funkcija dobrote, početna populacija,
selekcija, eliminacija, genetski operatori, itd.).
Nadalje, opisan je razlog problema zamjena stranica u radnom spremniku, te pregled već postojećih
strategija zamjena stranica (OPT, FIFO, LRU, NFU, Second chance, Clock i RANDOM).
U nastavku opisano je ostvarenje strategije zamjena stranica u radnom spremniku putem genetskog
algoritma. Opisan je način rada programa, njegovi osnovni parametri. Zabilježeni su i analizirani rezultati
koji se koriste za procijenu kvalitete rada samog programa. Procjenjen je rad i korisnosti već postojećih
strategija zamjena stranica.
29
9 Abstract
Title: Obtaining primary memory page replacment strategy with genetic algorithm
This paper describes principle and idea of genetic algorithm. Genetic programming is described in
detail as a generalization of genetic algorithms. Elements and concepts (i.e. data and functional elements
solution choice, fitness function, initial population, selection, elemination, genetic operators, etc.) of genetic
programming are also described.
Furthermore, a description of page replacement in virtual memory problem and overview of existing
strategies (OPT, FIFO, LRU, NFU, Second chance, Clock i RANDOM) is included.
In the latter part of the paper strategy of page replacement in virtual memory using genetic algorithm
is achieved. Program workflow and its basic parameters are described. The obtained results which are
recorded and analized are used for program quality assassment. Quality of existing strategies is evaluated.
Key words: page replacment algorithms, genetic algorithm