sestavljanje urnika s pomoČjo rojne ...zunanji pomnilnik dobimo s pomočjo razširitvenega medija,...

50
i Fakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija Leon Merc SESTAVLJANJE URNIKA S POMOČJO ROJNE INTELIGENCE NA MOBILNI PLATFORMI ANDROID Diplomsko delo Maribor, september 2013

Upload: others

Post on 31-Jan-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

  • i

    Fakulteta za elektrotehniko, računalništvo in informatiko

    Smetanova ulica 17 2000 Maribor, Slovenija

    Leon Merc

    SESTAVLJANJE URNIKA S POMOČJO ROJNE INTELIGENCE NA MOBILNI

    PLATFORMI ANDROID

    Diplomsko delo

    Maribor, september 2013

  • ii

    SESTAVLJANJE URNIKA S POMOČJO ROJNE

    INTELIGENCE NA MOBILNI PLATFORMI ANDROID

    Diplomsko delo

    Študent: Leon Merc

    Študijski program: Univerzitetni, Računalništvo in informacijske tehnologije

    Mentor: Doc. dr. Iztok Fister

  • iii

  • iv

    Zahvala

    Zahvaljujem se mentorju doc. dr. Iztoku Fistru,

    za pomoč in vodstvo ob pisanju diplomske naloge.

    Prav tako bi se rad zahvalil vsem družinskim

    članom, ki so me spodbujali skozi vsa leta mojega

    šolanja.

  • v

    Sestavljanje urnika s pomočjo rojne inteligence na mobilni platformi Android

    Ključne besede: Android, rojna inteligenca, optimizacija z roji delcev

    UDK:621.39:004.5(043.2)

    Povzetek

    V diplomski nalogi se ukvarjamo s problemom avtomatizirane generacije urnika za

    poljubno šolsko ustanovo. Kot ciljni operacijski sistem smo uporabili mobilno platformo

    Android. Za optimizacijo samega urnika smo uporabili pristop rojne inteligence,

    natančneje algoritma PSO (angl. Particle swarm optimization), katerega smo tudi

    podrobno opisali.Ugotovili smo, da je optimizacija z zadovoljivimi rezultati na mobilnem

    telefonu možna, ter predstavili pridobljene rezultate pri različnih konstantah.

  • vi

    Timetabling using swarm intelligence on mobile platform Android

    Key words: Android, swarm intelligence, Particle Swarm Optimization

    UDK:621.39:004.5(043.2)

    Abstract

    In the thesis, we have dealt with the problem of automatic timetable generation for a

    chosen academic institution. As the target operating system, an Android mobile platform

    was used. The swarm intelligence approach, specifically the PSO (Particle swarm

    Optimization) algorithm was applied for scheduling the optimization itself. This algorithm is

    also described in detail. The conclusion of this thesis is that the automatic generation of

    timetable on mobile devices is possible and the obtained results are appropriate to use in

    a real-world.

  • vii

    Kazalo

    1 UVOD ................................................................................................................................................. 1

    2 OPERACIJSKI SISTEM ANDROID .......................................................................................................... 3

    2.1 MOBILNE NAPRAVE ............................................................................................................................... 3

    2.2 O ANDROIDU ....................................................................................................................................... 3

    2.2.1 Različice sistema Android ............................................................................................................ 4

    2.2.2 Shranjevanje podatkov ................................................................................................................ 5

    2.2.3 Vrste pomnilnika .......................................................................................................................... 5

    2.3 MOBILNA APLIKACIJA ............................................................................................................................. 5

    2.3.1 Aktivnost ...................................................................................................................................... 6

    2.3.2 Storitve......................................................................................................................................... 6

    2.3.3 Ponudniki vsebine ........................................................................................................................ 6

    2.3.4 Sprejemniki obvestil ..................................................................................................................... 7

    2.4 RAZVOJ MOBILNIH APLIKACIJ ................................................................................................................... 7

    3 ROJNA INTELIGENCA .......................................................................................................................... 9

    3.1 OPTIMIZACIJA Z ROJI DELCEV ................................................................................................................. 10

    3.2 SESTAVLJANJE URNIKA Z ROJI DELCEV ...................................................................................................... 12

    3.2.1 Določitev omejitev ..................................................................................................................... 13

    3.2.2 Predstavitev problema ............................................................................................................... 13

    3.2.3 Predstavitev položaja delca ....................................................................................................... 14

    3.2.4 Sestavljanje urnika ..................................................................................................................... 15

    3.2.5 Ocenitvena funkcija ................................................................................................................... 17

    3.2.6 Lokalno iskanje .......................................................................................................................... 18

    4 MOBILNA APLIKACIJA ZA SESTAVLJANJE URNIKA ............................................................................. 20

    4.1 GRAFIČNA PODOBNA APLIKACIJE ............................................................................................................ 20

    4.1.1 Osnovni meni ............................................................................................................................. 20

    4.1.2 Dodajanje učilnice ...................................................................................................................... 21

    4.1.3 Dodajanje predmetov ................................................................................................................ 22

    4.1.4 Dodajanje razreda ..................................................................................................................... 23

    4.1.5 Informacijski zaslon ................................................................................................................... 24

    4.2 SHRANJEVANJE V DATOTEKO.................................................................................................................. 25

    4.3 GENERACIJA URNIKA ............................................................................................................................ 26

  • viii

    5 EKSPERIMENTI IN REZULTATI ............................................................................................................ 28

    5.1 DOLOČANJE VELIKOSTI POPULACIJE ......................................................................................................... 29

    5.2 KAKOVOST IN ČAS IZDELAVE URNIKA ........................................................................................................ 30

    5.3 ČASOVNA ZAHTEVNOST POSAMEZNIH KOMPONENT ALGORITMA ................................................................... 31

    6 SKLEP ................................................................................................................................................ 33

    7 SEZNAM UPORABLJENIH VIROV ....................................................................................................... 34

  • ix

    Kazalo slik

    Slika 2-1: Primer oblikovanja enega izmed zaslonov......................................................... 8

    Slika 3-1: Primer gibanja delca ........................................................................................12

    Slika 3-2: Krčenje števila na termine za manjšo kompleksnost ........................................14

    Slika 3-3: Primer položaja delca .......................................................................................15

    Slika 3-4: Primer izbiranja 4 največjih števil .....................................................................15

    Slika 3-5: Primer izbire novega števila, ko pride do konflikta ............................................16

    Slika 4-1: Izgled osnovnega menija ..................................................................................21

    Slika 4-2: Izgled aktivnosti za dodajanje učilnice ..............................................................22

    Slika 4-3: Izgled aktivnosti za dodajanje predmeta ...........................................................23

    Slika 4-4: Aktivnost za dodajanje razreda ........................................................................24

    Slika 4-5: Izgled informacijskega zaslona .........................................................................25

    Slika 4-6: Prikaz rezultatov sestavljanja urnika .................................................................26

  • x

    Kazalo tabel

    Tabela 2-1: delež različic Android nameščenih na mobilnih napravah .............................. 4

    Tabela 3-1: Vrednosti za ocenjevanje urnika ...................................................................17

    Tabela 5-1: Rezultati eksperimenta ..................................................................................30

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    1

    1 Uvod

    Sestavljanje urnika je organizacijski problem, s katerim se ljudje srečujemo na različnih

    področjih življenja že od nekdaj, npr. ko delamo preprost razpored izmen v službah z

    večizmenskim delom, urnik dogodkov ob večdnevnih prireditvah, urnik prostega časa, ipd.

    Eden izmed takšnih problemov je tudi sestavljanje šolskega urnika, ki se mu posvečamo v

    pričujoči diplomski nalogi. Pri sestavljanju šolskega urnika je potrebno upoštevati

    naslednje štiri elemente oz. zainteresirane skupine [13]:

    predavatelje/učitelje,

    študente/učence,

    predavalnice/učilnice in

    časovne termine.

    V praksi imamo namesto skupine pogosto predavateljev/učiteljev opravka s predmeti, saj

    lahko en predmet uči več predavateljev/učiteljev. Prav tako študente/učence razvrščamo v

    razrede/oddelke, saj v praksi en predmet običajno obiskuje skupina študentov/učencev. V

    nadaljevanju zato uporabljamo izraz razred, za skupino študentov/učencev, ki obiskujejo

    iste predmete.

    Prav zaradi števila različnih kombinacij teh štirih elementov, je sestavljanje šolskega

    urnika običajno veliko kompleksnejše, kot sestavljanje urnika za običajne namene. To so v

    svoji raziskavi potrdili tudi avtorji Even, Itai in Shamir [1], ki so ugotovili, da je sestavljanje

    šolskega urnika NP-poln problem. Ker je sestavljanje šolskega urnika problem, ki ga je

    običajno potrebno prilagoditi razmeram na posamezni šoli, se je to opravilo donedavna

    praviloma izvajalo ročno, kar je zahtevalo ogromno časa in človeških virov. Z uporabo

    računalnika lahko upoštevamo želje posameznih skupin in na ta način kljub postavljenim

    omejitvam generiramo urnik, s katerim je zadovoljna večina zainteresiranih skupin [2].

    Področje sestavljanja šolskega urnika sta obravnavala med drugimi avtorja Ruey-Maw in

    Hsiao-Fang [2], ki sta za optimizacijo urnika predlagala algoritem z roji delcev. Dowsland

    in Thompson [17] sta se usmerila v dokaj podoben problem, sestavljanje urnika za pisne

    preizkuse znanja, za kar sta uporabila optimizacijo z roji mravelj. Alzaqebah in Abdullah

    [16] sta se enakega problema lotila z uporabo optimizacije z roji čebel.

    V naši diplomski nalogi za sestavljanje urnika uporabljamo mobilno napravo z

    operacijskim sistemom Android. Pri sami optimizaciji si pomagamo z optimizacijo z roji

    delcev, ki spada pod algoritme rojne inteligence. Ker so mobilni telefoni donedavnega

    veljali za računsko omejene, so se redko uporabljali za optimizacijske ali kakšne druge

    računsko zahtevne operacije. Moč mobilnih telefonov se z leti hitro povečuje, njihova

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    2

    uporaba pri sami optimizaciji pa nekoliko manj, saj še vedno velja prepričanje, da je moč

    mobilnih naprav v primerjavi z osebnimi računalniki veliko manjša. Za razliko od

    obravnavanih metod, smo naš optimizacijski algoritem razvili za mobilno napravo,

    analizirali rezultate, ter ocenili njegovo učinkovitost. Glavna prednost takšnega razvoja je

    dostopnost naše aplikacije kadarkoli in kjerkoli, saj je običajno mobilni telefon zmeraj v

    dosegu roke.

    Naša diplomska naloga je sestavljena iz petih poglavij. V drugem poglavju predstavimo

    operacijski sistem Android, njegove različice in razvojna orodja. V tretjem poglavju

    povemo nekaj o osnovah rojne inteligence, naštejemo nekaj algoritmov s tega področja in

    opišemo algoritem, ki smo ga uporabili pri svoji optimizaciji. V četrtem poglavju

    predstavimo grafični izgled naše aplikacije, opišemo postopek generacije urnikov, ter na

    koncu vse rezultate analiziramo in predstavimo grafično. V sklepu povzemamo svoje

    izkušnje o primernost mobilnih naprav za sestavljanje urnika.

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    3

    2 Operacijski sistem Android

    Z razvojem mobilnih tehnologij, se je izboljšala tudi dostopnost do naših podatkov. Danes

    lahko uporabniki, dostopajo do svojih osebnih ali službenih podatkov kadarkoli in od

    koderkoli, ne glede na njihovo lokacijo na svetu. Vse to je mogoče zaradi priročnih

    aplikacij, ki so implementirane na eni izmed mobilnih naprav [24]. Ena izmed takšnih

    aplikacij, je tudi aplikacija, ki smo jo implementirali v tem diplomskem delu.

    2.1 Mobilne naprave

    Mobilna naprava je običajno, majhna, prenosna, ročna, računalniška naprava [25]. Ena

    izmed takšnih naprav je tudi mobilni telefon, ki je namenjen opravljanju in sprejemanju

    klicev preko omrežja.

    Pametni telefon je mobilna naprava z mobilnim operacijskim sistemom, ki jo od

    običajnega mobilnega telefona loči boljša računska moč in povezljivost. Pametni telefon

    običajno vsebuje sprejemnik GPS, medijski predvajalnik, vgrajen fotoaparat, vgrajeno

    kamero, ipd. Večina modernih pametnih telefonov je opremljena z zaslonom na dotik,

    brezžičnim in internetnim sprejemnikom. Največja razlika med običajnim in pametnim

    telefonom je napredni programski vmesnik na slednjih, ki omogoča boljšo integracijo

    aplikacij tretjih oseb in operacijskega sistema [18].

    2.2 O Androidu

    Android je mobilni operacijski sistem, ki temelji na jedru sistema Linux. Primarno je

    zasnovan za naprave z zaslonom na dotik, pametne telefone in tablične računalnike.

    Sistem je odprto-koden, kar pomeni, da ga lahko modificira in distribuira vsak posameznik

    [3]. Prav zaradi slednjega in svoje izredne priljubljenosti med razvijalci, je Android v

    zadnjem četrtletju leta 2010 prehitel konkurenčni sistem Symbian, ter z tem postal najbolj

    razširjena platforma za pametne telefone [3][4].

    Osnovni programski jezik za razvoj aplikacij je prilagojena oblika Jave [3]. Poleg Jave

    Android omogoča tudi implementacijo delov kode napisanih v ostalih splošnih

    programskih jezikih, kot so C in C++, kar zna biti, zaradi ponovne uporabljivosti že

    napisane kode, za določene aplikacije še kako koristno. Vendar tak način prinaša tudi

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    4

    svoje slabosti, predvsem v zmogljivosti napisane kode. Zato je naloga vsakega razvijalca

    posebej, da oceni, kaj je najboljše za njegovo aplikacijo [5].

    V naši diplomski nalogi smo za razvoj svoje aplikacije izbrali programski jezik Java, kot

    razvojno okolje pa smo uporabili Android studio, ki ga predstavljamo kasneje. Najprej pa

    se dotaknimo vprašanja, kako izbrati pravilno različico sistema Android.

    2.2.1 Različice sistema Android

    V svoji prvi preizkusni različici je Android prvič izšel novembra leta 2007. Prva

    komercialna verzija Androida, označena kot verzija 1.0, je izšla septembra leta 2008. Vse

    verzije Androida so po aprilu leta 2009 poimenovane po eni izmed slaščic in si sledijo po

    abecednem vrstnem redu (Cupcake, Donut, itd.) [6].

    Ker se je z razvojem različic spreminjal tako vizualni kot funkcijski vidik samega

    operacijskega sistema, smo se v našem primeru morali odločiti, katera je minimalna

    zahtevana različica Androida, s katero lahko zajamemo večino trenutnih naprav, in pri tem

    še vedno uporabljamo najnovejše gradnike mobilnih aplikacij. Dne 1.9.2013 je bil delež

    različic nameščenih na mobilnih napravah takšen, kot ga prikazuje tabela 2-1 [3].

    Tabela 2-1: delež različic Android nameščenih na mobilnih napravah

    Verzija Ime Datum izdaje API nivo Delež

    4.1.x Jelly Bean 9. julij 2012 16 36.6%

    2.3.3 Gingerbread 9. februar 2011 10 30.7%

    4.0.3 Ice Cream Sandwich 16. december 2011 15 21.7%

    4.2.x Jelly Bean 13. november 2012 17 8.5%

    2.2 Froyo 20. maj 2010 8 2.4%

    3.2 Honeycomb 15. julij 2011 13 0.1%

    Pri tem je potrebno dodati, da je v veliki večini primerov aplikacija napisana za določeno

    različico kompatibilna tudi z novejšimi različicami. Obratno pa tega ne moremo trditi. Sami

    smo glede na podatke v omenjeni tabeli izbrali različico Ice Cream Sandwich, ki je bila v

    času razvijanja naše mobilne aplikacije dovolj nova, in je pri tem še vedo zajemala dobrih

    65% vseh mobilnih naprav Android.

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    5

    2.2.2 Shranjevanje podatkov

    Večina mobilnih aplikacij mora vsaj enkrat v svojem življenjske ciklu shraniti podatke.

    Android omogoča naslednje načine shranjevanja [22][23]:

    Shranjevanje datotek, primerno za shranjevanje velikih količin podatkov. Še

    posebej takrat, ko podatke beremo od začetka do konca.

    Shranjevanje podatkov v SQL bazo, primerno za shranjevanje ponavljajočih ali

    strukturiranih podatkov.

    Shranjevanje ključ-vrednost parov, se uporablja, ko imamo relativno majhno

    število podatkov vezane na neke ključe. Ključ nam predstavlja edinstven

    identifikator, ki kaže na vrednost. Vrednost je naš podatek ali kazalec na ta

    podatek.

    2.2.3 Vrste pomnilnika

    V samem Androidu obstajata dve vrsti spomina in sicer notranji in zunanji. Notranji

    pomnilnik je vgrajen v samo mobilno napravo. Zunanji pomnilnik dobimo s pomočjo

    razširitvenega medija, kot je kartica SD (angl. Secure Digital), ipd. Imena pomnilnikov

    izhajajo iz začetkov razvoja samega Androida, ko je večina telefon poleg notranjega oz.

    internega pomnilnika uporabljala tudi zunanje medije.

    Danes večina naprav svoj notranji pomnilnik deli na zunanjo in notranjo particijo, kar

    pomeni, da lahko simuliramo zunanji pomnilnik z notranjim [13].

    2.3 Mobilna aplikacija

    Mobilna aplikacija, je programska oprema, ki je implementirana tako, da jo poganjajo

    mobilni telefoni. Mobilne aplikacije so običajno na voljo preko posebne distribucijske

    platforme, ki jo upravlja sam mobilni operacijski sistem. Primeri najbolj znanih distribucijski

    platform so App Store [28], Google Play [29] in Windows Phone Store [30]. Na voljo so

    tako plačljive kot ne-plačljive aplikacije. Mobilne aplikacije so na začetku zajemala le

    najosnovnejše funkcionalnosti kot so elektronska pošta, koledar, kontakti, borzni podatki

    in informacije o vremenu. Vendar so z časom in zahtevami uporabnikov hitro razširile

    svoje funkcionalnosti tudi na mnoga druga področja, kot so mobilne igre, navigacija,

    bančništvo, ipd. [19].

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    6

    2.3.1 Aktivnost

    Aktivnost (angl. Activity) je razred oz. komponenta v operacijskem sistemu Android, ki

    skrbi za prikaz grafičnega vmesnika. Aktivnost običajno predstavlja neke logično

    povezane funkcionalnosti. Aplikacija je sestavljena iz več aktivnosti. Katera aktivnost teče

    trenutno določa sklad aktivnosti (angl. Activity Stack). Aktivnost, ki trenutno teče je zmeraj

    na vrhu sklada. Sama aktivnost ima lahko naslednja stanja [20]:

    Aktivna oz. teče (angl. active or running), ko je aktivnost v ospredju našega

    zaslona.

    Začasno ustavljena (angl. paused) aktivnost, ki je še zmeraj vidna vendar je

    izgubila pozornost. Takšna aktivnost ohranja vrednosti vseh spremenljivk in se

    zaustavi le v primeru, ko nam začne primanjkovati glavnega pomnilnika.

    Ustavljena (angl. stopped) aktivnost, ki ni več v ospredju in jo popolnoma

    prekriva neka druga aktivnost. Aktivnost ohranja vrednosti spremenljivk, vendar

    se zaustavi takoj, ko je glavni pomnilnik potreben za druge aktivnosti.

    2.3.2 Storitve

    Storitev je komponenta oz. gradnik Androida, ki nima uporabniškega vmesnika. Uporablja

    se za dolgotrajne operacije, ki tečejo v ozadju. Primer storitve je, predvajanje glasbe, ko

    smo v drugi aplikaciji ali pridobivanje podatkov preko spleta, ne da bi blokirali interakcijo z

    našo aktivnostjo. Storitev lahko zaženemo iz katerekoli aktivnosti [27].

    2.3.3 Ponudniki vsebine

    Ponudniki vsebine skrbijo za podatke aplikacije v skupni rabi. Omogočajo shranjevanje

    podatkov v podatkovno bazo, datotečni sistem, splet ali kateri koli drug vir za shranjevanje

    do katerega lahko dostopa naša aplikacija. Od ponudnika vsebine lahko druge aplikacije

    zahtevajo podatke ali jih celo spreminjajo (če imajo ustrezne pravice). Primer ponudnika

    vsebine je npr. seznam kontaktov. Aplikacije z ustreznimi pravicami lahko pridobijo

    podatke o posameznem kontaktu, ter jih spreminjajo če imajo za to zadostne pravice [27].

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    7

    2.3.4 Sprejemniki obvestil

    Sprejemniki obvestil, so še ena izmed komponent Androida, ki nimajo uporabniškega

    vmesnika. Veliko obvestil izhaja iz samega operacijskega sistema. Preko njih sprejmemo

    obvestila o prazni bateriji, ko se ugasne ekran, ko je bila zajeta zaslonska slika ipd.

    Obvestila lahko poleg operacijskega sistema pošiljajo tudi samo aplikacije. Vzemimo na

    primer aplikacijo, ki pridobi z spleta nov vir podatkov in razpošlje obvestila ostalim

    aplikacijam. S tem jih obvesti, da je ta vir na voljo vsem.

    2.4 Razvoj mobilnih aplikacij

    V preteklosti je kot glavno integrirano okolje za razvoj aplikacij Android veljalo ogrodje

    Eclipse. V Eclipse je bilo potrebno namestili vtičnik, ki je dodal funkcionalnosti potrebne za

    razvoj mobilnih aplikacij (npr. emulator, razhroščevalnik, ipd.) in lahko smo pričeli z delom

    [7] . Ker je ogrodje Eclipse v osnovi namenjeno za razvoj široke palete aplikacij, ki niso

    namenjene prvenstveno platformi Android, so dodatne funcionalnosti pomenile večjo

    kompleksnost uporabniškega vmesnika, kot bi bilo potrebno.

    Android studio je za razliko od ogrodja Eclipse integrirano razvijalno orodje, ki se

    osredotoča le na razvoj aplikacij za platformo Android. Izdan je bil junija leta 2013 kot

    zgodnji predogled, kar pomeni, da je bilo orodje v času našega razvijanja še v poizkusni

    različici [8].

    Kljub preizkusni različici Android studia smo med samim razvojem naše mobilne aplikacije

    ugotovili, da je orodje dovolj stabilno, da nam je uspelo v njem razviti celotno aplikacijo

    brez kakšnih večjih težav. Android studio za izdelavo aplikacij ponuja široko paleto že

    implementiranih gradnikov. Nekaj izmed teh gradnikov smo uporabili tudi mi [21]:

    Zavihki (angl. tabs): s pomočjo katerih olajšamo navigacijo med različnimi

    pogledi in funkcionalnostmi naše aplikacije.

    Gumbi (angl. button): gradnik sestavljen iz teksta in slike, ki ob pritisku nanj

    zažene določeno akcijo.

    Vnosno polje (angl. text field): uporabljajo se za pridobivanje podatkov od

    uporabnika. Lahko so tekstovna ali številska, omogočajo pa tudi posebne tipe

    vnosa kot so gesla.

    Potrditveno polje (angl. checkbox): uporabniku omogočajo izbiro različnih

    možnosti iz nabora funkcij oz. podatkov (v našem primeru seznam predmetov),

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    8

    izbrane možnosti so predstavljene kot obkljukano polje, neizbrane pa kot prazno

    polje.

    Seznam (angl. list): se uporablja za prikaz podatkov. Podatki so predstavljeni v

    vertikalnih vrsticah, kot tekst.

    Razširljiv seznam (angl. Expandable list): je po sestavi podoben seznamu, z

    dodatno funkcionalnostjo razširitve vsakega elementa. Ko pritisnemo na poljubno

    podatkovno vrstico v razširljivem seznamu, se ta razširi in prikaže dodatne

    informacije o naši izbiri.

    Slika 2-1: Primer oblikovanja enega izmed zaslonov

    Na sliki 2-1 lahko vidimo primer oblikovanja ene izmed aktivnosti naše aplikacije. Na levi

    strani vidimo nabor gradnikov, ki jih lahko uporabimo pri gradnji izgleda naše aplikacije.

    Na sredini imamo okno za oblikovanje naše aktivnosti. Če želimo uporabiti določen

    gradnik ga preprosto izberemo in prenesemo na želeno mesto na sredo ekrana. Na desni

    zgornji strani strani lahko vidimo hierarhično drevo naših gradnikov in njihovo povezavo.

    Ko izberemo katerega izmed gradnikov, se v spodnjem desnem kotu prikažejo njegove

    lastnosti. Z lastnostmi gradnika vplivamo na njegov izgled in obnašanje, s čimer ga lahko

    prilagodimo svojim potrebam.

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    9

    3 Rojna Inteligenca

    Rojna inteligenca (angl. Swarm Intelligence, krajše SI) je disciplina umetne

    inteligence(UI). Na svoji popularnosti je pridobila predvsem v zadnjem desetletju.

    Običajno se zgleduje po kolektivnem obnašanju bioloških sistemov, kot npr. roji mravelj,

    čebel, termitov, črvov ter jate ptic in rib [15].

    Osnovni gradnik populacije rešitev predstavljajo t.i. agenti. Agenti komunicirajo med seboj

    lokalno, z okoljem pa globalno. Agenti se obnašajo po zelo preprostih pravilih, čeprav ni

    centralnega sistema, ki bi tem agentom naročal, kako naj se obnašajo, nas komunikacija

    med agenti pripelje do neke vrste inteligentnega obnašanja, ki ga posamezni agenti ne

    poznajo [9].

    Zaradi različnosti sistemov, ki jih lahko opazujemo z rojno inteligenco, raziskave na tem

    področju razvrstimo glede na naslednje kriterije [10]:

    Naravni–umetni: o naravnih sistemih govorimo takrat, ko so cilj študije biološki

    sistemi, o umetnih pa, ko so to človeški artefakti.

    Znanstvene–inženirske: znanstvene raziskave so tiste, katerih cilj je osamitev in

    razumevanje mehanizma, ki omogoča sistemom inteligentno in koordinirano

    obnašanje. Medtem pa je cilj inženirske raziskave, izkoriščanje razumevanja

    znanstvenih raziskav, za sestavo sistema, ki razrešuje praktični problem.

    Naštejmo samo nekaj primerov algoritmov rojne inteligence [9]:

    Optimizacija s kolonijo mravelj (angl. Ant Colony Optimization, krajše ACO):

    je optimizacijski algoritem, ki posnema obnašanje kolonije mravelj. Uporaben je

    predvsem v primerih, ko moramo najti optimalno pot do cilja. V naravi mravlje

    puščajo feromone, s čimer usmerjajo ena drugo, medtem ko raziskujejo prostor.

    Kolonija čebel (angl. Artificial Bee Colony, krajše ABC): simulira obnašanje

    roja čebel pri iskanju hrane. V koloniji obstajajo tri vrste čebel (delavke, sledilci,

    skavti), ki ocenjujejo kakovost virov hrane s količino nektarja v njegovi okolici.

    Optimizacija z roji kresnic (angl. Firefly Algorithm, krajše FA): lastnost

    kresnic je njihova svetilnost, ki jo lahko občudujemo v toplih poletnih nočeh.

    Kresnice ocenijo svoj trenutni položaj glede na kriterije in ga zakodirajo v svojo

    svetilnost. Vsaka kresnica prepozna svoje sosede glede na doseg senzorjev in

    izračuna svoj premik proti kresnici, ki ima svetilnost večjo od svoje [15].

    Optimizacija z roji delcev (angl. Particle Swarm Optimization, krajše PSO): je

    globalni optimizacijski algoritem, ki rešitve problema (delce) predstavlja kot točke

    v n-dimenzionalnem prostoru. Vsak delec ima svojo začetno pozicijo in hitrost. Po

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    10

    vsaki iteraciji posodobimo oceno vsakega delca glede na kriterije in opravimo

    njegov premik. Premik je odvisen od komunikacije med delci, kar pomeni, da

    delec vedno privlačijo ostali delci z boljšo oceno.

    Več-rojna optimizacija (angl. Multi-swarm Optimization): je ena izmed izvedb

    optimizacije z roji delcev. Namesto, da pri optimizacijo uporabimo en roj delcev,

    ustvarimo več manjših pod-rojev. Vsak tak manjši roj se posveča preiskovanju

    svoje regije v prostoru preiskovanja.

    Samih osnovnih algoritmov v rojni inteligenci je veliko več, vendar tukaj na kratko

    opisujemo samo najpomembnejše. V našem primeru rešujemo optimizacijski problem

    z algoritmom z roji delcev.

    3.1 Optimizacija z roji delcev

    Optimizacijo z roji delcev so razvili Kennedy, Eberhart in Shi [11] leta 1995. Pri optimizaciji

    z roji delcev, algoritem iterativno izboljšuje kandidate za rešitev dokler ne doseže

    končnega pogoja. Vsaka rešitev problema je predstavljena kot delec. Vsak delec v

    populaciji predstavimo z njegovim položajem in hitrostjo gibanja za

    in . Položaj vseh delcev v prostoru obravnavamo kot možne rešitve.

    Poleg same položaja, je vsak delec opremljen tudi z funkcijo za ocenitev, ki vsakemu

    delcu dodeli številsko vrednost glede njegove kakovosti. Ko se vsak delec premakne na

    nov položaj, si zapomni položaj, na katerem je bila njegova ocena največja. Tako dobimo

    osebne najboljše rezultate za vsak delec za in , kjer

    označuje število delcev v populaciji in dimenzijo problema. Poleg tega, da si vsak

    delec beleži svoj najboljši osebni rezultat pa beležimo tudi globalno najboljši rezultat

    za . Glede na osebne najboljše rezultate in globalno najboljši rezultat

    vsak delec spremeni svoj položaj in hitrost, kar ga usmerja proti optimalni vrednosti in

    rešitvi.

    Pred začetkom zagona algoritma moramo najprej naključno generirati položaj in hitrost

    vsakega delca v populaciji. Ko vsem delcem določimo njihove začetne vrednosti

    nadaljujemo po algoritmu psevdokod 3-1 [2]:

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    11

    Psevdokod 3-1: Psevdokod algoritma PSO

    1:

    2:

    3:

    4:

    5:

    6:

    7:

    8:

    9:

    10:

    11:

    12:

    13:

    14:

    15:

    16:

    17:

    Delec[SteviloDelcev];i=0;ocena=0;

    FOR EACH delec

    Delec.Inicializiraj()//inicializiramo delce

    ENDFOR

    WHILEiPbest.Ocena() THEN

    Pbest=Delec.Pozicija();//nov osebno najboljši delec

    ENDIF

    IFocena>Gbest.Ocena() THEN

    Gbest=Delec.Pozicija();//nov globalno najboljši delec

    ENDIF

    Delec.Premakni();()//delec premaknemo

    ENDFOR

    i=i+1;

    ENDWHILE

    Delci se gibajo v prostoru po naslednji enačbi [2]:

    ( ) ( ) (3.1)

    kjer pomenijo:

    Np–velikost populacije,

    D –število dimenzij našega problema,

    - hitrost i-tega delca v j-ti dimenziji,

    - položaj i-tega delca v j-ti dimenziji,

    c1 - kognitivni faktor učenja,

    c2 - socialni faktor učenja,

    - osebno najboljši rezultat i-tega delca v j-ti dimenziji,

    – globalno najboljši rezultat v j-ti dimenziji,

    RAND1 in RAND2– naključno realno število med 0 in 1.

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    12

    Slika 3-1: Primer gibanja delca

    Na sliki 3-1 lahko vidimo primer gibanja delcev [12]. Zamislimo si, da se vsi naši delci

    gibljejo po prostoru. Vsak delec se giblje v neki smeri in z neko hitrostjo, kar označimo na

    sliki z dolgimi črtkanimi črtami. Poleg osnovnega gibanja vsakega delca, delujejo na njem

    tudi druge privlačne sile. Silo, s katero globalno najboljši rezultat k sebi privlači delec, na

    sliki označimo z polno krepko črto. Naš delec poleg globalno najboljšega k sebi privlači

    tudi osebni najboljši rezultat, kar označimo z navadno črto. Rezultat vseh sil je nova smer

    in hitrost gibanja našega delca, kar prikazuje kratka črtkana črta.

    3.2 Sestavljanje urnika z roji delcev

    Sestavljanje šolskega urnika je problem kombiniranja štirih elementov [13]:

    predavatelji/učitelji,

    študenti/učenci,

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    13

    predavalnice/učilnice,

    časovni termini.

    Pri tem moramo zagotoviti, da so izpolnjene določene omejitve. Za optimizacijo samega

    urnika izhajamo iz algoritma optimizacije z roji delcev za sestavljanje urnikov, ki sta ga

    opisala Ruey-Maw in Hsiao-Fang v [2].

    3.2.1 Določitev omejitev

    Kot prvo moramo določiti omejitve, ki jih mora izpolnjevati naš urnik. Omejitve delimo na

    težke in lahke. Težke omejitve so omejitve, ki jih moramo obvezno izpolniti, če želimo, da

    je izdelani urnik veljaven. Lahko omejitve sicer lahko kršimo, vendar te kršitve vplivajo na

    oceno samega urnika [2].

    Stroge omejitve pri sestavljanju našega urnika so naslednje:

    vsak razred ima istočasno samo en predmet,

    vsak profesor lahko istočasno uči samo en predmet,

    vsaka učilnica ima lahko samo en predmet istočasno,

    število učencev ne sme presegati kapacitete učilnice,

    računalniški predmet potrebuje računalniško učilnico.

    Lahka omejitev je ena sama, in sicer:

    izogibanje jutranjih ur v ponedeljek ter popoldanskih v torek.

    3.2.2 Predstavitev problema

    Pri sestavljanju šolskega urnika imamo opravka s štirimi glavnimi elementi: profesorji

    (predmeti), študenti (razredi), učilnicami in časovni termini. Kombinacije teh elementov

    definirajo položaj delca in s tem tudi rešitev. Naša naloga je, da s premikanje delcev v

    prostoru preiskovanja poizkusimo najti rešitev, ki je najbližja optimalni [2].

    Podobno kot Ruey-Maw in Hsiao-Fang smo tudi sami definirali urnik, ki zavzema 8 ur na

    dan, 5 dni na teden, kar nanese 40 ur tedensko. Po prvih 4 šolskih urah dneva sledi ura

    malice, nakar se nadaljuje pouk. Zaradi zmanjšanja kompleksnosti in manjše računske

    zahtevnosti samega sestavljanja urnika, smo 40 urni tedenski urnik, skrčili na 20 terminov,

    kar z drugimi besedami pomeni, da 1 termin zajema 2 šolski uri (slika 3-2). Posledično

    lahko urnik vsakega profesorja predstavimo kot polje z 20 elementi. Enako velja tudi za

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    14

    urnik razredov in učilnic. Iz tega sledi, da delec predstavimo kot tri dimenzionalen seznam

    polj za pripadajoče urnike učilnic, profesorjev in razredov [2].

    Slika 3-2: Krčenje števila na termine za manjšo kompleksnost

    3.2.3 Predstavitev položaja delca

    Naslednji element, potreben pri definiciji delca, je njegov položaj. Za položaj delca smo

    uporabili vektor, ki ima velikost 20*n elementov, pri čemer določa n število profesorjev.

    Takšna predstavitev vektorja namreč poenostavlja samo generacijo urnika. Primer

    vektorja, ki opisuje položaj delca (rešitev), lahko vidimo na sliki 3-3. Urnik, v katerem

    nastopa 5 profesorjev, na primer, predstavimo s položajskim vektorjem dolžine 100

    elementov [2].

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    15

    Slika 3-3: Primer položaja delca

    3.2.4 Sestavljanje urnika

    Pri samem sestavljanju urnika smo najprej ponastavili celoten položajski vektor. Vse

    njegove elemente smo nastavili na naključno vrednost med 0-9. Prav tako smo določili

    hitrost vsakega delca med -0,5 in 0,5. S tem smo delec naključno umestili v D-

    dimenzionalni prostor. Število dimenzij prostora preiskovanja je odvisno od števila

    elementov položajskega vektorja. Prvih 20 elementov položajskega vektorja predstavlja

    parametre za sestavo urnika prvega profesorja, drugih 20 za sestavo urnika drugega

    profesorja, tretjih 20 za sestavo urnika tretjega profesorja, itd.

    Pri sestavljanju urnika najprej vzamemo prvih 20 elementov našega položajskega vektorja

    in jih shranimo v vmesno spremenljivko. Iz vmesne spremenljivke nato poiščemo indekse

    elementov, ki vsebujejo najvišja števila. Koliko števil izvlečemo, je odvisno od števila

    predmetov, ki jih uči posamezen profesor. Na sliki 3-4 lahko vidimo primer, ko profesor

    potrebuje za vse svoje predmete 4 termine [2].

    Slika 3-4: Primer izbiranja 4 največjih števil

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    16

    Ko smo izvlekli najvišja števila, preverimo ali je predlagan termin prost. Najprej preverimo

    ali ima prost termin sam profesor. Nato preverimo vse skupine študentov oz. razrede, ki

    obiskujejo izbrani predmet. Če imajo vsi zainteresirani pri predmetu prost termin, na

    samem koncu preverimo še ali obstaja prosta učilnica, ki zadosti vsem našim potrebam.

    Če pri preverjanju ne pride do konfliktov, lahko v urnike pripadajočega profesorja,

    razredov in učilnice vpišemo rezervacijo za izbran termin. V primeru, da pride do konflikta,

    izbrani termin zavržemo in izberemo naslednjega po velikosti (Slika 3-5) [2].

    Slika 3-5: Primer izbire novega števila, ko pride do konflikta

    Zgoraj opisan postopek ponovimo za vse preostale profesorje. Po obravnavi vseh

    profesorjev dobimo kot končni rezultat sestavljen urnik. Ta urnik je s pomočjo ocenitvene

    funkcije potrebno še oceniti. Če ocena kakovosti urnika presega oceno osebne oz.

    globalne najboljše rešitve, jo/ju zamenjamo s trenutno rešitvijo. Položaj delca na koncu

    glede na enačbo (3.1) še posodobimo [2].

    Poenostavljen psevdokod za zgoraj opisan postopek nam prikazuje psevdokod 3-2.

    Psevdokod 3-2: Sestavljanja urnika iz položaja delca

    1:

    2:

    3:

    4:

    5:

    6:

    7:

    8:

    9:

    10:

    11:

    12:

    13:

    14:

    15:

    16:

    17:

    Polozaj[SteviloProfesorjev*20];i=0;ocena=0;najvisja=0;vmesni[20];

    WHILEi

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    17

    18:

    19:

    20:

    21:

    22:

    ENDIF

    UNTIL !nadaljuj

    ENDFOR

    i=i+1;

    ENDWHILE

    Ker smo vsak teden razdelili na 20 terminov, to pomeni, da lahko vsak termin traja

    natanko dve uri. Težava nastane, ko želimo dodeliti predmet, ki traja 3 ure. Če dodelimo

    tak predmet terminu pomeni, da lahko naslednjem terminu dodelimo le eno uro. Zato

    poleg preverjanja ali je sam termina prost, tukaj preverimo tudi predhodni in naslednji

    termin [2].

    3.2.5 Ocenitvena funkcija

    Ocenitvena funkcija izračuna urniku neko številsko vrednost, s katero merimo njegovo

    kakovost. Ta je močno odvisna od želj študentov in profesorjev. Na urniku z oceno 5

    predstavimo najbolj zaželen termin, z oceno 4 drugi najbolj zaželen termin, z oceno 3

    povprečnega, z oceno 2 slabega, in 1 najmanj zaželen termin. Z oceno -1 predstavimo

    termin, ki se ga želimo izogibati. V tabeli 3-1 lahko vidimo ocene terminov, ki jih

    uporabljamo v naši aplikaciji. Z oceno -1 smo označili le ponedeljkov jutranji termin in

    popoldanski termin v petek, saj smo v svojih lahkih omejitvah definirali, da sta ta termina

    nezaželena [2].

    Tabela 3-1: Vrednosti za ocenjevanje urnika

    Termin Ponedeljek Torek Sreda Četrtek Petek

    1 -1 4 5 4 3

    2 1 5 5 5 2

    Malica

    3 2 4 4 4 1

    4 3 3 3 3 -1

    Oceno urnika za posameznega profesorja oz. oddelek, dobimo tako, da v času, ko je

    njihov termin zaseden prištejemo pripadajočo število iz naše ocenjevalne matrike. Ocena

    urnika, je skupni seštevek ocen vseh terminov, ki so zasedeni v urniku. Skupno oceno

    celotnega urnika dobimo tako, da seštejemo ocene vseh urnikov po enačbi (3.2) [2]:

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    18

    ( ) ∑ ∑

    . (3.2)

    kjer pomenijo :

    – položaj i-tega delca,

    n_pred - število predavateljev/učiteljev,

    n_raz – število razredov,

    - urnik j-tega profesorja,

    – urnik j-tega razreda,

    Primer implementacije lahko vidimo na sliki psevdokod 3-3

    Psevdokod 3-3: Ocenitvena funkcija

    1:

    2:

    3:

    4:

    5:

    6:

    7:

    8:

    9:

    10:

    11:

    12:

    13:

    14:

    15:

    16:

    17:

    18:

    19:

    20:

    21:

    22:

    vmesni[20];i=0;j=0;ocena=0;

    WHILEi

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    19

    uvedli tako imenovan motilni mehanizem, ki po premiku delca in njegovi ocenitvi, poskuša

    naključno zamenjati 2 elementa našega položajskega vektorja in nato preveriti še

    naključno sosednjo rešitev. S tem prisilimo delec, da razišče tudi sosednje rešitve, z čimer

    povečamo kakovost rešitve s tem, da se izogibamo lokalnemu optimumu [2].

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    20

    4 Mobilna aplikacija za sestavljanje urnika

    4.1 Grafična podobna aplikacije

    Naša aplikacija za sestavljanje urnika sestoji iz šestih osnovnih aktivnosti. To so:

    osnovni meni,

    dodajanje učilnic,

    dodajanje predmetov,

    dodajanje razredov,

    informacijski zaslon,

    prikaz rezultatov.

    Pri zagonu aplikacije na Androidu se kot prvi zaslon pojavi osnovni meni, iz katerega

    dostopamo do ostalih funkcionalnosti naše aplikacije.

    4.1.1 Osnovni meni

    Namen osnovnega menija prikazanega na sliki 4-1 je, da z njim povežemo vse ostale

    funkcionalnosti naše aplikacije. Če pritisnemo gumb levo zgoraj, aplikacija odpre

    aktivnost, v kateri lahko dodajamo in brišemo učilnice. Pritisk na desni zgornji gumb,

    odpre aktivnost za dodajanje predmetov, spodnji levi nas povezuje z aktivnostjo za

    dodajanje razredov, medtem ko je spodnji desni gumb namenjen aktivnosti, ki vsebuje

    osnovne informacije o aplikaciji.

    Poleg osnovnih gumbov za proženje aktivnosti ima osnovni zaslon v skrajnem desnem

    kotu zgoraj tudi meni. Ob pritisku na menijsko tipko, se prikaže možnost, ki omogoča

    izbris vseh že vpisanih podatkov. Potem, ko dodamo podatke o učilnicah, predmetih in

    razredih imamo na voljo še gumb za proženje aktivnosti za sestavljanje urnika, glede na

    podatke, ki smo jih vstavili.

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    21

    Slika 4-1: Izgled osnovnega menija

    Na levi strani slike 4-1 lahko vidimo sam izgled in razporeditev naših gradnikov. Na desni

    strani slike pa si lahko ogledamo, kaj se zgodi ko pritisnemo na menijsko postavko.

    4.1.2 Dodajanje učilnice

    Aktivnost za dodajanje učilnice je zelo preprosta, saj vsebuje le dve vnosni polji. Prvo

    polje je tekstovno in je namenjeno vnašanju imena učilnica. Drugo polje je številčno in je

    namenjeno vnosu kapacitete naše učilnice. Dodatno imamo na voljo še potrditveno polje,

    ki ga označimo v primeru, da gre za računalniško učilnico.

    Ko vnesemo zahtevane podatke o učilnici, aktivnost omogoča gumb za dodajanje učilnice.

    S pritiskom na ta gumb aplikacija pobere podatke iz vnosnih polj in doda novo učilnico v

    datoteko. Več o samem shranjevanju podatkov obravnavamo v nadaljevanju.

    Poleg samega dodajanja učilnice lahko uporabnik izbere ogled vseh učilnic. S pritiskom

    na zavihek zgoraj desno se odpre pogled na seznam vseh učilnic, ki jih lahko po potrebi

    tudi izbrišemo.

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    22

    Slika 4-2: Izgled aktivnosti za dodajanje učilnice

    Slika 4-2 prikazuje aktivnost za dodajanje učilnic. Na levi strani vidimo primer vstavljanja

    testne učilnice, na desni pa izgled drugega zavihka, kjer v seznamu prikazujemo vse že

    vstavljene učilnice.

    4.1.3 Dodajanje predmetov

    Sama aktivnost za dodajanje predmetov je zelo podobna tisti za dodajanje učilnic. Tudi tu

    imamo polje, ki ga obkljukamo v primeru, da predmet zahteva računalniško učilnico.

    Razlika nastopi pri številu vnosnih polj. Podobno kot pri vnosu učilnic, imamo tudi tukaj

    tekstovno vnosno polje za vnos imena predmeta in numerično polje za vnos potrebnega

    števila ur predavanj. K temu dodamo še tekstovno polje za vnos nosilca predmeta. Tudi v

    tem primeru sprožimo dodajanje zapisa v datoteko šele ob pritisku na gumb . Seznam vseh predmetov lahko vidimo v drugem zavihku, kjer ji lahko brišemo

    po enakem postopku, kot smo brisali učilnice (slika 4-3).

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    23

    Slika 4-3: Izgled aktivnosti za dodajanje predmeta

    Slika 4-3 na levi strani prikazuje izgled prvega zavihka za dodajanje predmeta in na desni

    strani seznam vseh že vstavljenih predmetov.

    4.1.4 Dodajanje razreda

    Samo dodajanje razreda se nekoliko razlikuje od prej opisanih dodajanj učilnic in

    predmetov. Pri dodajanju razreda imamo dve vnosni polji . Prvo vnosno polje je tekstovno

    in je namenjeno vnosu imena razreda. Drugo numerično vnosno polja pa je namenjeno

    vnosu števila učencev/študentov vpisanih v ta razred.

    Pri ustvarjanju novega razreda potrebujemo tudi podatke o predmetih, ki jih dani

    študenti/učenci razreda obiskujejo. Zato odpremo datoteko s predmeti in preberemo vse

    predmete, ki smo jih do zdaj vstavili. Za vsak predmet posebej ustvarimo potrditveno

    polje. Ko dodajamo nov razred, tako potrdimo samo polja, tistih predmetov, katere bodo

    opravljali študenti/učenci tega razreda. Prav tako je spremenjeno prikazovanje podatkov o

    že vstavljenih razredih. Podatke prikazujemo v drugem zavihku. Za prikaz predmetov

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    24

    razreda uporabimo razširljivi seznam. Najprej se prikaže ime samega razreda. Če z

    dotikom na zaslon to ime izberemo, se prikaže seznam predmetov. Prav tako lahko

    posamezne razrede tudi odstranjujemo. Če želimo razred odstraniti, enostavno pritisnemo

    njegovo polje na zaslonu in pridržimo za nekaj časa.

    Slika 4-4: Aktivnost za dodajanje razreda

    Slika 4-4 na levi strani prikazuje dodajanje samega razreda, kjer lahko označimo

    predmete, ki jih študenti/učenci razreda obiskujejo. Na desni strani vidimo razširljiv

    seznam in primer prikaza predmetov posameznega razreda, ko ga izberemo na seznamu.

    4.1.5 Informacijski zaslon

    Informacijski zaslon je najpreprostejša aktivnost, saj ne potrebuje nobenega

    uporabniškega vnosa. Njegove edina naloga je sporočanje osnovnih informacij in virov

    uporabljenih pri izdelavi aplikacije. Ker je bilo uporabljeno tujo slikovno gradivo, ki je bilo

    javno objavljeno za ne-plačljivo uporabo (angl. free use), smo v tej aktivnosti zapisali tudi

    vse avtorje oz. vire uporabljenega gradiva. Ne-plačljiva uporaba pomeni, da lahko

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    25

    uporabljamo gradiva brez plačila, če avtorja v svojem produktu tudi navedemo. Izgled

    informacijskega zaslona lahko vidimo na sliki 4-5.

    Slika 4-5: Izgled informacijskega zaslona

    Slika 4-5 prikazuje preprost princip, po katerem v našem delu navedemo avtorje

    posameznih del.

    4.2 Shranjevanje v datoteko

    Za shranjevanje podatkov uporablja naša aplikacija preprost zapis v datoteke. Razlog,

    zakaj smo izmed vseh možnosti izbrali prav shranjevanje v datoteke tiči v tem, da ob

    vsakem sestavljanju urnika potrebujemo popolnoma vse podatke. To pa pomeni, da

    podatke vedno preberemo od začetka do konca, za kar so pa izredno primerne datoteke.

    V našem primeru za sam zapis datotek uporabimo notranji pomnilnik. Pri tem ustvarimo tri

    različne datoteke za: učilnice, predmete in razrede. Vsakega izmed teh elementov

    zapisujemo v pripadajočo datoteko po en element na eno vrstico, kar zelo poenostavi

    samo branje podatkov. Ko želimo podatke iz datoteke prebrati, lahko to počnemo

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    26

    sekvenčno, t.j. vrstico po vrstico, in sproti pretvarjamo prebrani tekst v ustrezne

    podatkovne tipe. Vendar moramo pri tem paziti, da je vrsti red zapisa parametrov enak

    vrstnemu redu elementov pri branju.

    4.3 Generacija urnika

    Ob pritisku na gumb generiranje urnika na osnovnem meniju poženemo sestavljanje

    našega urnika. Preden s samo generacijo začnemo, moramo prebrati vse podatke o

    razredih, predmetih in učilnicah, ki jih je predhodno shranil uporabnik. Te podatke najprej

    filtriramo tako, da vzpostavimo povezave med predmeti, profesorji in učenci. Optimizacijo

    izvedemo s pomočjo algoritma prikazanega v psevdokod 3-1

    Ko opravimo z generiranjem in sestavljanjem našega urnika, nas čaka še samo

    predstavitev rezultatov (slika 4-6).

    Slika 4-6: Prikaz rezultatov sestavljanja urnika

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    27

    Rezultate optimizacije predstavimo kot barvne bloke v tabeli. Na levi strani imamo

    definirane termine, zgoraj pa dneve v tednu. Za vsak razred dinamično dodamo zavihek

    na vrhu zaslona.

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    28

    5 Eksperimenti in rezultati

    Cilj našega eksperimenta je bil oceniti kakovost naših rešitev pri sestavljanju urnika in na

    podlagi teh sklepati o primernosti mobilnih naprav pri optimizaciji realnih problemov. V

    samih testih smo uporabili algoritem PSO. Vsi podatki so bili pridobljeni pri testiranju

    aplikacije na mobilni napravi Samsung Galaxy S2, ki ga poganja procesor ARM s hitrostjo

    1.2GHz.

    Pri eksperimentih smo uporabili naslednje parametre PSO: kognitivni faktor učenja

    (po raziskavi [2]), socialni faktor učenja (po raziskavi [2]), velikost

    populacije (dobljenih empirično), in pogoj ustavljanja

    generacij (dobljenih empirično). Algoritem smo zagnali 10 krat.

    Testni problem smo definirali kot: imamo 10 profesorjev, 10 razredov in 10 učilnic. Pet

    učilnic je računalniški, ostalih pet pa običajnih. Vsak profesor uči dva štiri-urna predmeta.

    Vsak razred obiskuje štiri različne predmete. Vsak predmet posameznega profesorja

    obiskujejo študenti/učenci vsaj dveh razredov.

    Za merjenje rezultatov sestavljanja urnika smo uporabili dve merili: kakovost izdelanega

    urnika in časovno zahtevnost izdelave . S prvim merilom preverjamo kakovost

    izdelanega urnika. Merilo definiramo po naslednji enačbi;

    , (5.1)

    kjer izrazimo kot ( )

    , nruns označuje število neodvisnih zagonov algoritma,

    ( ) oceno urnika po enačbi (3.2) in MAX_OC maksimalno oceno definiranega urnika po

    tabeli 3-1. Časovno zahtevnost izdelave izrazimo z enačbo

    , (5.2)

    kjer določa časovno zahtevnost i-tega zagona algoritma.

    V našem eksperimentalnem delu smo izvedli naslednje teste:

    - določanje velikosti populacije,

    - kakovost in čas izdelave urnika,

    - časovna zahtevnost posameznih komponent algoritma.

    V nadaljevanju predstavljamo rezultate omenjenih testov podrobneje.

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    29

    5.1 Določanje velikosti populacije

    Prvi korak pri izvajanju eksperimentov je bil določitev velikosti populacije. Ruey-Maw in

    Hsiao-Fang [2] sta v svoji raziskavi prišla do zaključka, da je optimalno število delcev 30.

    Čeprav smo sam algoritem za optimizacijo implementirali po njunem vzoru, smo prišli do

    nekoliko drugačnih rezultatov. Pri vsaki velikosti roja smo opravili 10.000 premikov delcev.

    Pri tem smo spreminjali velikost populacije od 5 do 30 s korakom 5. Pri tem smo

    maksimalno število generacij spreminjali po enačbi ⁄ . Algoritem smo

    za vsako velikost populacije zagnali trikrat in se na podlagi rezultatov odločili, da je v

    našem primeru najbolj optimalna velikost roja 25 delcev. Rezultate testa lahko vidimo na

    grafu 5-1.

    Graf 5-1: Odvisnost ocene od velikosti roja

    Na grafu 5-1 vidimo gibanje merila kakovosti urnika glede na število delcev. Z rdečo črto

    označujemo maksimalno oceno MAX_OC, ki jo urnik lahko doseže. Z modro črto

    označujemo najboljšo oceno kakovosti pri izbrani velikosti roja. Iz grafa je razvidno, da

    najvišjo oceno kakovosti dosežemo pri velikosti roja 25 delcev. Z zeleno črto smo označili

    povprečno oceno kakovosti prek vseh generacij. Iz slike lahko razberemo, da povprečna

    0,8

    0,85

    0,9

    0,95

    1

    5 delcev 10 delcev 15 delcev 20 delcev 25 delcev 30 delcev

    Kva

    lite

    ta u

    rnik

    a [Q

    ]

    Velikost roja[Np]

    Velikost roja

    Najboljša ocena

    MAX_OC

    Povprečna ocena

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    30

    ocena kakovosti več ali manj sledi maksimalni oceni, iz česar bi lahko sklepali, da je bilo

    izbrano število zagonov algoritma nekoliko premajhno.

    5.2 Kakovost in čas izdelave urnika

    Pri testu kakovosti in časa izdelave urnika smo spremljali končno oceno kakovosti

    vsakega zagona algoritma in čas, ki smo ga pri tem porabili. Algoritem smo zagnali 10

    krat pri parametrih in . Pri tem smo porabili

    ovrednotenj ocenitvene funkcije. Dobljene rezultate prikazuje

    tabela 5-1.

    Tabela 5-1: Rezultati eksperimenta

    i Qi Čas izvajanja[s]

    1 495 1760

    2 502 1941

    3 498 1880

    4 498 1713

    5 504 1895

    6 502 2014

    7 508 1975

    8 498 1922

    9 502 1769

    10 498 1893

    povprečno 500,5 1876,2

    Iz podatkov v tabeli 5-1 lahko razberemo, da je naše sestavljanje urnika zelo uspešno, saj

    v povprečji dosežemo kar 89% ocene kakovosti urnika. V najboljših primerih pa ta

    odstotek še nekoliko zvišamo. Po drugi strani pa ima najslabša ocena kakovosti, ki smo jo

    dosegli prek 10 zagonov algoritma, še vedno kar 88% odstopanja od maksimalne ocene

    urnika MAX_OC. Največja težava pri tem je trajanje algoritma, saj v povprečju porabimo

    za 5.000 generacij kar 31 minut in 7 sekund. S tem, ko se omejimo na 1.000 generacij

    žrtvujemo tudi oceno kakovosti urnika, saj je njegova ocena kakovosti pri tem števili

    generacij le 84%, kar lahko vidimo na grafu 5-2.

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    31

    Graf 5-2: Spreminjanje ocene kakovosti glede na generacije

    5.3 Časovna zahtevnost posameznih komponent algoritma

    Prav tako nas je zanimalo, katera komponenta našega algoritma je najpočasnejša in

    predstavlja t.i. ozko grlo. Tako kot pri testu kakovosti in časa izdelave urnika, smo tudi v

    tem primeru opravili 10 zagonov algoritma pri parametrih in ,

    pri tem pa merili skupni čas, ki ga porabi vsako opravilo.

    Tri glavna opravila v vsaki generaciji so:

    sestavljanje urnika iz položaja delca,

    ocenitev urnika,

    premik delcev.

    Kot lahko razberemo z grafa 5-3, kar 88% časa uporabimo na samem sestavljanju urnika

    iz položaja delca. Možna rešitev problema bi bila zmanjšanje samih omejitev pri

    0,6

    0,65

    0,7

    0,75

    0,8

    0,85

    0,9

    0,95

    1

    0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000

    Kva

    lite

    ta r

    eši

    tve

    [Q

    ]

    število generacij

    Spreminjanje ocene kakovosti glede na generacije

    Najboljša ocena

    MAX_OC

    Najslabša ocena

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    32

    sestavljanju urnika, ali implementacija tega dela kode v kakšnega od splošnih jezikov kot

    je C++.

    Graf 5-3: Časovna zahtevnost posameznih komponent algoritma PSO

    Iz grafa 5-3 lahko razberemo, da algoritem PSO povprečno porabi le 10% vsega časa

    izvajanja, kar je187 sekund oz. 3 minute in 7 sekund po tabeli 5-1. Ostalih 90% časa

    izvajanja pa porabimo za hevristično sestavljanje urnika. Najmanjši odstotek porabi sama

    ocenitvena funkcija, saj skozi celoten potek algoritma povprečno porabi le nekaj več kot

    37 sekund kar pomeni samo 2%. Preostalih 88% izvajanja pa porabimo na samem

    sestavljanju urnika, kar povprečno nanese na 1.650 sekund oz 27 minut in pol.

    Sestavljanje urnika 88%

    Ocenitvena funkcija

    2% Premik delca 10%

    Časovna zahtevnost posameznih komponent algoritma PSO

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    33

    6 Sklep

    V diplomski nalogi smo se podrobneje seznanili z rojno inteligenco in mobilnim

    operacijskim sistemom Android. Glavni problem, ki smo se ga lotili, je bila implementacija

    enega izmed algoritmov rojne inteligence za mobilno napravo in njegova uporaba pri

    optimizaciji urnika. Uporabili smo algoritem PSO. Pri tem smo ugotovili, da je kljub rasti

    moči samih mobilnih naprav, njihova uporabnost na področju optimizacije omejena, saj je

    njihov računska moč v primerjavi z običajnimi računalniki veliko manjša. Sama

    optimizacija urnika na Androidu je za enkrat mogoča le, če je problem dovolj majhen in

    obsega le nekaj učilnic in predmetov. Večji problemi namreč zahtevajo veliko daljši čas

    izvajanja algoritma. Rezultati, ki smo jih dobili skozi eksperimentalno delo, so več kot

    zadovoljivi, saj smo dosegli tudi 91% oceno kakovosti našega urnika. Z mobilno

    implementacijo pa pridobimo dostopnost naše aplikacije od kjerkoli in to kadarkoli.

    Za nadaljnje delo bi bilo vsekakor potrebno optimizirati hevristično funkcijo, ki opravlja

    sestavljanje urnika, saj prav ta funkcija predstavlja najbolj zahteven del aplikacije. Glede

    na izreden porast moči samih mobilnih telefonov v zadnjih letih, pa obstaja velika

    možnost, da se naši rezultati še izboljšajo, saj nam večja računska moč dovoljuje večje

    število generacij.

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    34

    7 Seznam uporabljenih virov

    [1] Even, S., Itai, A., Shamir, A., On the Complexity of timetable and Multi-Comodity Flow

    Problems, 16th IEEE Annual Symposium on Doundations of Computer

    Science,California,CA,USA, 13-15 Oktober 1975,str. 184-193

    [2] Ruey-Maw, C., Hsiao-Fang

    S.,SolvingUniversityCourseTimetablingProblemsUsingConstrictionParticleSwarmOpti

    mizationwithLocalSearch, Algorithms 2013, 6, str. 227-244

    [3] Android operating system, Wikipedia. Dostopno na:

    http://en.wikipedia.org/wiki/Android_(operating_system)

    [25.8.2013]

    [4] Google's Android becomes the world's leading smartphone platform, Canalys,

    Dostopno na:

    http://www.canalys.com/newsroom/google%E2%80%99s-android-becomes-

    world%E2%80%99s-leading-smart-phone-platform

    [25.8.2013]

    [5] Android NDK, Dostopno na:

    http://developer.android.com/tools/sdk/ndk/index.html

    [25.8.2013]

    [6] Android version history, Wikipedia, Dostopno na:

    http://en.wikipedia.org/wiki/Android_version_history#Android_1.1_.28API_level_2.29

    [25.8.2013]

    [7] Installing Eclipse plugin, Wikipedia Dostopno na:

    http://developer.android.com/sdk/installing/installing-adt.html

    [25.8.2013]

    http://en.wikipedia.org/wiki/Android_(operating_system)http://www.canalys.com/newsroom/google%E2%80%99s-android-becomes-world%E2%80%99s-leading-smart-phone-platformhttp://www.canalys.com/newsroom/google%E2%80%99s-android-becomes-world%E2%80%99s-leading-smart-phone-platformhttp://developer.android.com/tools/sdk/ndk/index.htmlhttp://en.wikipedia.org/wiki/Android_version_history#Android_1.1_.28API_level_2.29http://developer.android.com/sdk/installing/installing-adt.html

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    35

    [8] Android Studio, Wikipedia, Dostopno na:

    http://en.wikipedia.org/wiki/Android_Studio

    [25.8.2013]

    [9] Swarm Intelligence, Wikipedia,Dostopno na:

    http://en.wikipedia.org/wiki/Swarm_intelligence

    [26.8.2013]

    [10] Swarm Intelligence, scholarpedia,Dostopno na:

    http://www.scholarpedia.org/article/Swarm_intelligence

    [26.8.2013]

    [11] Particle swarm optimization, Wikipedia

    Dostopno na:

    http://en.wikipedia.org/wiki/Particle_swarm_optimization

    [26.8.2013]

    [12] Xiangyang, W.,Xiaoqin, Z., Xiaoqing Y., Wanggen, W., Annealed particle filter

    based on particle swarm optimization for articulated three-dimensional human motion

    tracking, Optical Engineering, Volume 49,Issue 1, MachineVision, Pattern

    Recognition,Dostopno na:

    http://opticalengineering.spiedigitallibrary.org/article.aspx?articleid=1096261

    [2.9.2013]

    [13] Schooltimetable, Wikipedia, Dostopno na:

    http://en.wikipedia.org/wiki/School_timetable

    [26.8.2013]

    [14] Writing to files, Android, Dostopno na:

    http://developer.android.com/training/basics/data-storage/files.html

    [3.9.2013]

    http://en.wikipedia.org/wiki/Android_Studiohttp://en.wikipedia.org/wiki/Swarm_intelligencehttp://www.scholarpedia.org/article/Swarm_intelligencehttp://en.wikipedia.org/wiki/Particle_swarm_optimizationhttp://opticalengineering.spiedigitallibrary.org/article.aspx?articleid=1096261http://en.wikipedia.org/wiki/School_timetablehttp://developer.android.com/training/basics/data-storage/files.html

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    36

    [15] I. Fister, I. Fister Jr, X.-S. Yang, J. Brest. A comprehensive review of firefly

    algorithms. SwarmandEvolutionaryComputation,

    2013.DOI10.1016/j.swevo.2013.06.001

    [16] Alzaqebah, M., Abdullah, S., Artificial bee colony search algorithm for examination

    timetabling problems, International Journal of the Physical Sciences, vol. 6(17), str.

    4264-4272

    [17] Dowsland, K.A., Thompson J.M., Ant colony optimization for the examination

    scheduling problem, Journal of the Opreational Resarch Society, vol. 56, str. 426-438

    [18] Smartphone, Wikipedia, Dostopno na:

    http://en.wikipedia.org/wiki/Smartphone

    [8.9.2013]

    [19] Mobile app, Wikipedia, Dostopno na:

    http://en.wikipedia.org/wiki/Mobile_app

    [8.9.2013]

    [20] Activity, Android, Dostopno na:

    http://developer.android.com/reference/android/app/Activity.html

    [8.9.2013]

    [21] Buildingblocks, Android, Dostopno na:

    http://developer.android.com/design/building-blocks/index.html

    [8.9.2013]

    [22] Savingdata, Android, Dostopno na:

    http://developer.android.com/training/basics/data-storage/index.html

    [9.9.2013]

    [23] Key-Valuepair, Dostopno na:

    http://searchenterprisedesktop.techtarget.com/definition/key-value-pair

    [10.9.2013]

    http://www.sciencedirect.com/science/article/pii/S2210650213000461http://www.sciencedirect.com/science/article/pii/S2210650213000461http://dx.doi.org/10.1016/j.swevo.2013.06.001http://en.wikipedia.org/wiki/Smartphonehttp://en.wikipedia.org/wiki/Mobile_apphttp://developer.android.com/reference/android/app/Activity.htmlhttp://developer.android.com/design/building-blocks/index.htmlhttp://developer.android.com/training/basics/data-storage/index.htmlhttp://searchenterprisedesktop.techtarget.com/definition/key-value-pair

  • Sestavljanje urnika s pomočjo rojne inteligence na mobilni platform android

    37

    [24] FISTER, I., FISTER, D., FONG, S., FISTER, I.. Wide spread mobile devices in

    applicationsfor real-time drafting detection in triathlons. Journal of emerging

    technologies in web intelligence, 2013, vol. 5, no. 3, str. 310-321

    [25] Mobiledevice, Wikipedia, Dostopno na:

    http://en.wikipedia.org/wiki/Mobile_device

    [13.9.2013]

    [26] Mobilephone, Wikipedia, Dostopno na:

    http://en.wikipedia.org/wiki/Mobile_phone

    [13.9.2013]

    [27] Applicationfundamentals, Android, Dostopno na:

    http://developer.android.com/guide/components/fundamentals.html

    [13.9.2013]

    [28] App store, Wikipedia, Dostopno na:

    http://en.wikipedia.org/wiki/App_Store_(iOS)

    [13.9.2013]

    [29] Google play, Wikipedia, Dostopno na:

    http://en.wikipedia.org/wiki/Google_Play

    [13.9.2013]

    [30] Windows phone store, Wikipedia, Dostopno na:

    http://en.wikipedia.org/wiki/Windows_Phone_Store

    [13.9.2013]

    http://en.wikipedia.org/wiki/Mobile_devicehttp://en.wikipedia.org/wiki/Mobile_phonehttp://developer.android.com/guide/components/fundamentals.htmlhttp://en.wikipedia.org/wiki/App_Store_(iOS)http://en.wikipedia.org/wiki/Google_Playhttp://en.wikipedia.org/wiki/Windows_Phone_Store