Sunteți pe pagina 1din 48

UNIVERSITATEA POLITEHNICA BUCURETI

FACULTATEA DE AUTOMATIC I CALCULATOARE


DEPARTAMENTUL CALCULATOARE

PROIECT DE DIPLOM
Ambient Intelligence for Task Integration on Android Devices

Coordonator tiinific:
.l. Dr. Andrei Olaru

Absolvent:
Vlad Costin Herescu

BUCURETI
2014

Cuprins

1. Abstract .......................................................................................................................................................... 4
2. Platforma i tehnologiile utilizate .................................................................................................................. 5
2.1Platform ................................................................................................................................................. 5
2.2 Tehnologii .............................................................................................................................................. 5
3. Noiuni teoretice ............................................................................................................................................. 7
3.1 Programare orientat pe obiecte ............................................................................................................. 7
3.2 Sistemul de operare Android .................................................................................................................. 7
3.2.1 Ciclul de via al unei activiti Android ..................................................................................... 8
3.2.2 Fiierul Manifest .......................................................................................................................... 9
3.2.3 Componentele grafice Android...10
3.2.4 BroadCast Receiver.10
3.2.5 Bluetooth.10
3.2.6 Stocarea datelor...11
3.3 Algoritmi nvtare automat..12
3.3.1 Algoritmul K-Means...........................................................................................................13
3.3.2 Algoritmi genetici.......................................................................................................................14
3.4 Inteligen ambiental...........................................................................................................................15
4. Algoritmi.........................................................................................................................................................17
4.1 Algoritmi genetici pentru implementarea problemei comis voiajorului................................................17
4.1.1 Testare algoritm...19
4.2 Algoritmul de clusterizare KMeans...19
4.2.1 Determinare K.21
4.2.2 Distana ntre titluri a doua taskuri..22
4.2.3 Testare algoritm...22
5. Detalii de implementare..23
5.1 Funcionalitti...23
5.1.1 Setarea programului fix..23
5.1.2 Adugarea unui task...23
5.1.3 Vizualizarea taskurilor introduse i modificarea proprietilor..25
5.1.4 Vizualizarea taskurilor ce se pot executa n contextul actual.26
5.1.5 Detectarea dispozitivelor prin Bluetooth27
5.1.6 Recomandarea orarului pentru un interval al zilei..28
5.1.7 Vizualizarea taskului curent de executat.28
5.2 Baza de date.29
5.2.1 Tabela tasks29
5.2.2 Tabela Schedule.30
5.2.3 Tabela Devices30
5.2.4 Tabela Task_Devices.30
5.2.5 Operatii DML Sqlite..31
5.3 Modularizare31
5.3.1 DatabaseOperation.32
5.3.2 Clustering...32
5.3.3 Travelling Salesman33
5.3.4 ContextElements....33
5.3.5 CheckCompatibility...34
6.Descrierea aplicaiei.35
6.1 Meniu principal.35
6.2 Adaugarea unui task.36
6.3 Vizualizarea i modificarea taskurilor..39
6.4 Setarea programului fix....41

6.5 Vizualizarea taskurilor executabile n contextul curent...42


6.6 Detectarea dispozitivelor..42
6.7 Vizualizarea unui program pentru o zi sugerat de aplicaie.................................................................44
6.8 Vizualizarea taskului curent.........45
7.Concluzii..47
8.Bibliografie..48

VLAD COSTIN HERESCU

1. Abstract
Aplicaia Task Scheduler are rolul de asista ntr-un mod inteligent utilizatorul n programarea
propriilor taskuri, oferindu-i informaii pe baza unor elementele de context precum locaie, ora de
execuie a taskului, persoanele i dispozitivele necesare.
Astfel, n afara posibilitii de a specifica taskuri ce reprezint programul fix al utilizatorului i
taskuri care nu au un interval fix, repetitive pe baza informaiilor obinute din taskurile executate,
aplicatia ofer functionaliti suplimentare precum:
-

Indicarea locaiei , a prioritii, a dispozitelor necesare n momentul adugrii unui nou task
pentru execuie
Specificarea taskurilor care pot fi executate n momentul curent, filtrarea fiind facut pe baza
informaiilor introduse de ctre utilizator i pe baza contextului actual n care se afl
utilizatorul :
ct ar dura execuia taskului i dac aceasta este n concordan cu programul fix al
utilizatorului,
dac n preajma utilizatorului se afl persoanele necesare pentru execuie,
dac utilizatorul se afl n apropierea locaiei pentru execuia taskului
Calcularea orarului taskurilor, lund n considerare prioritatea acestora, locaia i ora de
execuie pentru care durata necesar execuiei lor ar fi minim.

Ambient Intelligence for Task Integration on Android Devices

2. Platforma i tehonlogiile utilizate


Aplicaia a fost dezvoltat pentru sistemul de operare Android si este compatibila cu versiunea
3.2. A fost scris n limbajul de programare orientat pe obiecte Java iar pentru dezvoltare a fost
folosit mediul de dezvoltare Eclipse care dispune de ADT Plugin pentru comunicarea cu sistemul de
operare al dispozitivului. Bibliotecile Android au fost accesate prin intermediul lui Android SDK.
Dezvoltarea aplicaiei s-a bazat n mare parte pe serviciile Google, pentru care a fost necesar
adaugarea bibliotecii google-play-service.

2.1 Platforma utilizat


Aplicaia a fost realizat pe sistemul de operare Android. Acesta pune la dispoziie tehnologiile
necesare pentru implementarea funcionalitilor : retele wifi, GPS, Bluetooth.
Astfel, prin:
-

Reelele Wifi si GPS pot determina aproximativ coordonatele locaiei utilizatorului


Bluetooth este utilizat pentru a determina dac utilizatorul dispune de dispozitivele
necesare pentru executia aplicaiei. De asemenea, fiecare dispozitiv avnd o adresa mac
unic, o persoana ce detine un dispozitiv poate fi asociat cu adresa mac a acestuia. Prin
urmare, depistarea unui dispozitiv cu o anumit adresa mac poate fi asociat cu depistarea
unei persoane n apropierea utilizatorului i astfel se poate determina dac n preajma
utilizatorului se afl persoanele necesare pentru execuia taskului.

2.2 Tehnologiile utilizate


Pentru stocarea i gestiunea datelor, sistemul de operare Android dispune de 2 metode:
folosirea tehnologiei Shared Preferences pentru stocarea datelor sub forma : cheie valoare
asociat. Aceasta se preteaz pentru date care nu trebuie s fie structurate, accesarea lor
fiind foarte facil prin aceast tehnologie spre deosebire de tehnologia Sqlite. n cazul
aplicaiei mele, aceasta a fost utilizat pentru a stoca texte introduse de utilizator (de
exemplu adrese, titluri). Ulterior, textele sunt extrase din shared preferences pentru
cmpurile care folosesc proprietatea autocomplete.
- folosirea tehnologiei Sqlite pentru stocarea datelor complexe, care necesit structurare,
normalizare. Aceasta optiune a fost preferat pentru stocarea datelor despre dispozitive i
taskuri.
Folosirea acestui sistem de operare permite utilizarea serviciilor Google i a API-ului Google Map
Android V2 a acestora. Google Map pune la dispoziie o hart prevazut cu functionaliti de zoom
in, zoom out precum i posibilitatea de a marca diferite locaii. Aceste functionaliti sunt
indispensabile pentru a permite utilizatorului s indice locaia unde se execut un task. De
-

VLAD COSTIN HERESCU

asemenea, serviciile google au fost folosite pentru a determina locaia curent a utilizatorului, pe
baza reelelor Wireless sau a GPS-ului, funcie de cea care ofer mai mult acuratee. Cunoaterea
locaiei curente este de asemenea necesar, n vederea determinrii distanelor ntre aceasta i alte
locaii.
Alt bibliotec specific Androidului folosit n cadrul aplicaiei este android.location prin
intermediul creia se determin adresa unei locaii pe baza unor coordonate, respectiv coordonatele
unei locaii pe baza unei adrese.
n ceea ce privete interfaa grafic, Android permite programatorului utilizarea facil a
componentelor grafice n cadrul activitii prin intermediul XML-ului. Astfel, folosind XML-ul,
programatorul poate specifica locaia relativ a componentelor una fa de cealalta, organizarea
componentelor sub form ierarhic i structurarea activitii n fragmente, a atributelor precum
fontul, culoarea textului, mrimea componentei i id-urile componentelor pentru a fi apoi referite i
utilizate n clas.
Printre componentele grafice puse la dispoziie de ctre Android se numr:
- Date Picker pentru selecia datei,
- Time Picker pentru selecia orei,
- liste drop down,
- cmpuri,
- butoane.

Ambient Intelligence for Task Integration on Android Devices

3. Noiuni teoretice
Pentru dezvoltarea aplicaiei au fost necesare cunotine de:
-

Programare orientat pe obiecte


Sistem operare Android
Algoritmi inteligen artificial

3.1 Programare orientat pe obiecte


Dezvoltarea aplicaiei a fost realizat n limbajul de programare Java. Java este un limbaj de
programare orientat pe obiecte, programul fiind structurat n colecii de obiecte i avnd drept
caracteristici urmatoarele principii : abstractizarea, modularizarea, ierarhizarea si ncapsularea[1].
Abstractizarea este principiul prin care se ncearca identificarea unei similariti ntre situaii,
obiecte concrete din viaa real i contextul problemei de rezolvat, accentul punndu-se pe
trsturile comune, eseniale n rezolvarea problemei. Astfel, programarea orientat pe obiecte
graviteaz n jurul definirii claselor i a caracteristicilor acestora ce reprezint un set de de variabile
i proceduri denumite membri i metode.
Modularizarea este principiul prin care se realizeaz structurarea complex a programului n
componente de o complexitate redus numite module. Modulele au avantajul de a putea fi
compilate separat i au posibilitatea de a avea conexiuni cu alte module ale programului.
Ierarhizarea este principiul prin care se definesc relaiile de subordonare ntre obiectele definite.
Relaiile pot fi :
-

de tip , prin care o clas are acces la structura unei alte clase prin motenire
de agregare, prin care o clas are acces la structura altei clase avnd drept membru o
instan a sa.
ncapsularea este principiul prin care vizualizarea metodelor i valorilor membrilor unei clase
poate fi restricionat de relaiile ntre cele dou clase i de modificatorii de acces.
Prin urmare, programarea orientat pe obiecte este un limbaj care preia facilitaile programrii
procedurale i are n plus fa de aceasta structurarea programului n module uor de neles si
gsirea unor abloane ntre viaa real i contextul problemei.

3.2 Sistemul de operare Android


Sistemul de operare Android dispune de o serie de tehnologii precum Bluetooth, reele Wifi i
GPS care permit comunicarea ntre dispozitive, obinerea de informaii de pe Internet, determinarea
locaiei utilizatorului i, mpreun cu suportul senzorilor, a contextului n care se afl utilizatorul i
activitilor sale. Astfel, sistemul de operare ofer mijloacele necesare pentru a implementa o
aplicaie inteligent i interactiv cu utilizatorul[2].
7

VLAD COSTIN HERESCU

Entitatea care st la baza implementarii unei aplicaii Android este activitatea. Activitatea
reprezint componenta aplicaiei prin care este gestionat interfaa grafic, analog ferestrelor ntr-o
aplicaie desktop sau a unei pagini dintr-o aplicaie web. Alte elemente importante utilizate in cadrul
unei aplicaii Android sunt componentele grafice, obiectele Broadcat Receiver i obiectele Intent.
Precum o aplicaie web sau desktop, o aplicaie android conine mai multe activiti,
comunicarea dintre acestea fiind realizat prin intermediul unui obiect Intent. Un obiect Intent are
rolul de a porni i de a descrie o nou activitate i de a-i transmite valori din activitatea actual. Alte
roluri ale obiectului Intent sunt pornirea serviciilor i a receiver-elor broadcast.

3.2.1 Ciclul de via al unei activiti Android


Activitatea este caracterizat de un ciclu de via, ncepnd din momentul n care este creat de
ctre un intent pn cnd este distrus la ieirea din aceasta. Astfel, strile pe care le deine o
activitate pe perioada acestui interval sunt urmatoarele: stare de creare, pornire, rulare, pauz,
oprire, distrugere, pentru setarea acestora apelndu-se metodele onCreate, onStart, onResume,
onPaused, onStop, onDestroy . Strile de rulare, pauz i oprire sunt statice, restul fiind tranzitive[3].
Starea de creare este una dintre strile tranzitive n care este apelat metoda onCreate pentru
crearea unei instane a activitaii.Implementarea metodei onCreate trebuie sa conin instanierea
membrilor activitii, configurarea unor componente grafice i alte operaii care trebuie s se
realizeze ntr-un singur ciclu de via al unei activiti. La sfritul metodei onCreate sistemul trece
rapid la urmatoarele stri : de pornire i de rulare.
Starea de pornire este starea n care activitatea devine vizibil i este urmat rapid de starea de
rulare. Starea de rulare este starea n care activitatea este n prim plan iar utilizatorul poate sa
interacioneze cu aceasta.
Starea de pauz este iniiat n momentul n care activitatea este eclipsat de catre alt
activitate aflat n prim plan, dar care nu acoper tot ecranul (de exemplu un dialog). n aceast
stare, activitatea nu poate primi comenzi de la utilizator i nu poate s execute operaiuni, astfel c
orice aciune este oprit pn cnd utilizatorul reia activitatea sau pn cnd iese definitiv din ea. n
metoda onPause, este indicat s se opreasc aciunile care ar putea ocupa CPU i memoria, precum
animaiile, obiectele broadcast receiver sau fiiere deschise. Dac utilizatorul revine la activitate,
este reapelat metoda onResume iar activitatea devine din nou vizibil.
Starea de oprire este starea n care activitatea este complet ascuns i nu este vizibil
utilizatorului, considerandu-se c se afl n fundal. La fel ca metoda onPause, i n metoda onStop
are loc eliberarea resurselor, cele care implic operaii CPU intensive, precum scrierea datelor n
baza de date. Situaii posibile n care activitatea ar trece n starea de oprire sunt: cnd utilizatorul
primete un apel telefonic n momentul navigrii prin aplicaie sau n momentul n care din
activitatea curent este pornit una nou. Daca utilizatorul prsete activitatea nou i se ntoarce
la cea actual, se reapeleaz metoda onStart, iar activitatea este repornit.
Ultima stare prin care trece activitatea este cea de distrugere. Activitatea este distrus n
momentul n care este apelat metoda finalize(), cnd utilizatorul apas pe butonul de back, sau
dac este distrus de catre sistem din cauza faptului ca folosete prea multe resurse.
8

Ambient Intelligence for Task Integration on Android Devices

3.2.2 Fiierul Manifest


Aplicatia are la baza un fisier xml numit implicit AndroidManifest.xml. In acest fisier sunt
specificate date generale cu privire functionarea si structurarea aplicatiei. Radacina fisierulul are
marcajul <manifest>[4].
Astfel, contine informatii cu privire la versiunea minima si ultima versiune de Android pe
care este functionala aplicatia. Aceasta informatie este continuta in marcajul uses-sdk, in valorile
atributelor android:minSdkVersion si android:targetSdkVersion. Acest lucru este exemplificat prin
urmatoarea secventa de cod.
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18"
/>

De asemenea, sunt specificate permisiunile care trebuie oferite aplicatiei pentru ca aceasta
sa functioneze in mod correct. Permisiunile sunt oferite de catre utilizator cand aplicatia este
instalata. Un exemplu de permisiune, prin care se solcita permisiunea de acces la internet, este
urmatoarea:
<uses-permission android:name="android.permission.INTERNET" />

Alte informatii din fisierul Manifest specifica activitatile aplicatiei, care este activitatea
principala a aplicatiei( prin marcajul intent-filter) , metadatele folosite, icon-ul folosit pentru
identificarea aplicatiei in interfata dispozitivului, etc. O secventa de cod prin care se specifica aceste
informatii este urmatoarea :
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<activity
android:name="com.example.meniu.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
. . . . . . . . . . . . . .
</application>

VLAD COSTIN HERESCU

3.2.3 Componentele grafice Android


Interfaa grafic a unei activiti este format dintr-o ierarhie de obiecte View, respectiv View
Group. Instanele View reprezint frunzele ierarhiei i sunt componente grafice precum cmpuri
text i butoane. Alte componente grafice utilizate n interfa sunt Date Picker i Time Picker, prin
care utilizatorul poate s selecteze data i ora, slidere, liste spinner[5].
Instanele View Group reprezint nodurile printe ale instanelor View i sunt containerele n
care sunt afiate componentele grafice. Rdcina ierarhiei este un ViewGroup reprezentat de unul
din elementele urmtoare : RelativeLayout ( se poate specifica poziia unei componente grafice
relativ fa de alta), LinearLayout ( componentele grafice sunt aranjate ntr-o singur coloan sau
rnd) , ScrollView (n cazul n care compontentele grafice nu ncap n activitate, este asociat ca
parinte obiectului RelativeLayout sau LinearLayout un obiect ScrollView, cu ajutorul cruia
utilizatorul poate s baleieze activitatea).
Definirea componentelor grafice i a modului n care sunt afiate poate fi realizat n mod static
sau n mod dinamic. n modul static, componentele sunt definite ntr-un fiier XML i sunt vizibile la
pornirea activitii fr a fi necesar s fie gestionate n cadrul acesteia. n cadrul fiierului XML, se
pot specifica informaii precum poziia relativ a componentei grafice fa de container sau fa de
alte componente grafice din acelai container, culoarea componentei grafice, textul continuu,
mrimea. Se pot defini de asemenea id-uri prin care componentele pot fi identificate n cadrul
activitii pentru a li se putea asocia asculttori.
Programarea dinamic se realizeaz prin adaugarea componentelor grafice prin intermediul
codului activitatii. Este util cnd existena componentelor grafice depinde de aparitia unui
eveniment ca de exemplu apasarea unui buton. Se pot specifica aceleasi informatii referitoare la
componenta grafica ca in XML.

3.2.4 Broadcast Receiver


Broadcast Receiver reprezint componenta aplicaiei Android care poate fi nregistrat ntr-o
activitate cu scopul de a asculta evenimente de sistem sau de aplicaie. Evenimente sunt instane
ale clasei Intent si printre acestea se numr: detectarea unei reele wireless, detectarea unei reele
bluetooth, dac bateria nu mai are energie sau dac a fost conectat la ncrctor. n momentul n
care evenimentul pentru care instana receiver a fost nregistrat este sesizat, aceasta este
notificat i i este apelat metoda onReceive[6].
Pentru ca resursele folosite pentru nregistrarea receiver-ului s nu rmn ocupate dup
distrugerea activitii, este necesar ca metoda onStoped a activitii s fie suprascris pentru
dealocarea resurselor prin apelarea metodei unregisterReceiver();

3.2.5 Bluetooth
Platforma Android ofer suport pentru reele Bluetooth, dnd posibilitatea dispozitivului de a
face schimb de informaii cu alte dispozitive prevzute cu Bluetooth[7].

10

Ambient Intelligence for Task Integration on Android Devices

Accesul la funcionalitatea Bluetooth se face prin API-ul Android Bluetooth, acest API realiznd
comunicarea wireless Point to Point ntre cele dou dispozitive. Prin folosirea API-ul, sunt posibile
urmatoarele operaiuni : scanarea pentru alte dispozitve prevzute cu Bluetooth, conectarea celor
dou dispozitive, transferul de date de la un dispozitiv la altul, interogarea adaptorului Bluetooth
pentru dispozitive mperecheate.
Detectarea de dispozitive este o procedur de scanare a dispozitivelor locale Bluetooth i care
solicit apoi informaii despre fiecare. Dispozitivele, n cazul n care sunt configurate pentru a fi
detectate, vor raspunde oferind informaii, cum ar fi : numele dispozitivului, clasa i o adres MAC
unic. Utiliznd aceste informaii, dispozitivul ce a executat cautarea poate iniia o conexiune cu
dispozitivele cutate.
Cutarea de dispozitive Bluetooth se realizeaz prin apelarea metodei startDiscovery de ctre o
instan BluetoothAdapter. Este un proces asincron de scanare care dureaza aproximativ 12
secunde, urmat de interogarea n detaliu a fiecrui dispozitiv pentru obinerea datelor acestuia.
Pentru ca aplicaia s fie notificat n momentul n care un nou dispozitiv este gsit, este
necesar nregistrarea unui Broadcast Receiver cu filtrul asociat BluetoothDevice.ACTION_FOUND.
Pentru ca resursele folosite pentru nregistrarea receiver-ului s nu ramn ocupate dup
distrugerea activitii, este necesar ca metoda onStoped sa fie suprascris pentru dealocarea
resurselor prin apelarea metodei cancelDiscovery() a instanei BluetoothAdapter.
Pentru utilizarea API-ului Android Bluetooth, trebuie s fie declarate permisiuni n fiierul
Manifest al aplicaiei :
<!-- for Bluetooth discovery devices -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

3.2.6 Stocarea datelor


Stocarea informaiilor poate fi realizat pe Android folosind dou metode:
-

Shared Preferences[8]
Sqlite[9]

Shared Preferences reprezint o structur de date sub forma unui set de perechi cheie-valoare,
fiind o structur Non Relational Database. Este o opiune optim n cazul n care datele sunt simple,
nu este necesar a fi structurate, numrul intrrilor nu este foarte mare i are avantajul eliminrii
latenei cauzate de join-ul dintre tabele.
Dup obinerea handle-ului Shared Preferences asociat activitii curente, inserarea unei valori
se face prin apelarea unei metode care primete ca parametri o valoare distincta cu rolul de cheie al
perechii i valoarea asociat acesteia. De asemenenea, obinerea valorilor inserate se face prin
apelarea unor metode ce primesc ca parametru cheia folosit.
11

VLAD COSTIN HERESCU

n cazul aplicaiei mele, Shared Preferences a fost o util pentru specificarea facil ctre
utilizator a adresei locaiei taskului, avnd drept cheie un string, iar ca valoare totalitatea adreselor
specificate de utilizator la adugarea taskurilor. Astfel, n momentul n care utilizatorul introduce o
noua adres, la salvarea taskului n baza de date, adresa este adaugat la lista de adrese din taskurile
precedente. Ulterior, cnd utilizatorul va dori sa specifice aceeai adres, setul de adrese extras din
shared preferences va fi folosit ca autocomplete pentru ca utilizatorul s nu fie nevoit s scrie
ntreaga adres.
Urmtorul cod explic modul n care sunt extrase i adugate informaiile din shared
preferences:

// pentru extragere
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
valueString = sharedPreferences.getString(valueKey, defaultString);
// pentru inserare
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
Editor edit = sharedPreferences.edit();
edit.putString(keyString, valueString);
edit.commit();

Sqlite ofer posibilitatea de a crea baze de date relaionale, utile cnd exista un numr mic de
date de salvat (n comparaie cu Shared Preferences), iar datele sunt complexe i pot fi vzute ca un
set de de perechi atribut-valoare, ntre care exist relaii.
n cazul aplicaiei mele, a fost necesar s stochez informaii privind dispozitivele detectate de
bluetooth, programul fix al utilizatorului i taskurile introduse. Pentru aceasta, am creat o clas ce
extinde SQLiteOpenHelper i care are metodele de creare i updatare a bazei de date suprascrise.

3.3 Algoritmi nvare automat


nvarea automat este o ramur a inteligenei artificiale care ofer dispozitivelor abilitatea de
a nvaa, de a lua o decizie ntr-un anumit context , fr ca aceasta s fie explicit specificat, dupa
realizarea unor observaii fcute n timpul procesrii unui set de date[10].
nvarea automat presupune identificarea i implementarea unei modaliti ct mai eficiente
de a reprezenta informaii, n sensul facilitrii cutrii, reorganizarii i modificrii lor. Alegerea
modului de a reprezenta datele ine de conceptia general asupra modului de rezolvare a problemei
i de caracteristicile datelor cu care se lucreaz.
Cei mai muli algoritmii de nvare automat folosesc trei metode care difer prin feedbackul
primit n urma lurii unei decizii i modul n care proceseaza datele: nvare nesupervizat, nvare
supervizat si nvare prin recompens.
n nvarea nesupervizat, scopul agentului inteligent este de a determina un pattern n inputul
primit sau de a lua o decizie, fr s i fie dat apriori un set de date etichetate pe baza crora s
12

Ambient Intelligence for Task Integration on Android Devices

determine patternul. Cea mai des ntlnit utilizare a nvrii nesupervizate este clusterizarea:
mparirea setului de date n grupuri de date care pot fi considerate similare.
n nvarea supervizat, agentul primete apriori un set de date deja etichetate numit set de
antrenare i un set de date de testare neetichetate. Fiecrei valori din setul de date de antrenare Xi
i este asociat o valoare Yi , astfel nct exist o funcie F care, oricare ar fi i, F(Xi) = Yi. Scopul
algoritmului este de a calcula o funcie H numit funcie ipotez, care are rolul de a aproxima funcia
F. Astfel, pentru fiecare valoare din setul de antrenare, H(Xi) s ofere aceleai valori ca F, i pentru
fiecare valoare din setul de testare, H s ofere un rezultat ct mai apropiat de cel dat de F.
n nvarea prin recompens, precum n nvarea nesupervizat, agentul inteligent nu primete
un set de date apriori. n timpul derulrii algoritmului, dup fiecare decizie luat, agentul primete o
recompens sau o pedeaps, n funcie de calitatea deciziei. Ulterior, n cazul n care agentul se
regsete intr-o situaie prin care a mai trecut, va realiza aceeai aciune sau va ncerca una diferit,
n funcie de recompensa sau pedeapsa primit anterior.

3.3.1 Algoritmul K-Means


Algoritmul K-Means este un algoritm de clusterizare NP dur, care primete la intrare un set de
N puncte ntr-un spaiu hiperdimensional pe care le partiioneaza n K clustere n funcie de
apropierea sau deprtarea dintre date, ncercnd s minimizeze variaia medie a punctelor. K Means
folosete ca distan ntre puncte distana euclidian, aceasta fiind folosit n spaii eucliediene[11].
Paii implementrii algoritmului sunt:
1. Din punctele date ca input se aleg K puncte ct mai deprtate unul fa de celalalt, numii
centroizi
2. Fiecare punct din setul de date este asignat celui mai apropiat centroid.
3. Dup asignarea punctelor, se recalculeaz coordonatele fiecrui centroid ca media valorilor
coordonatelor punctelor asociate n fiecare dimensiune.
4. Consecina recalculrii coordonatelor centroizilor este c punctele pot deveni ulterior mai
apropiate de ali centroizi fa de cei crora au fost asignate iniial, aa c se reiau paii 2 si 3
pn cnd niciun punct nu i mai schimb centroidul asignat.
Scopul acestui algoritm este reducerea numrului de date care s fie folosite ntr-o problem
ulterioar, astfel ca, n locul folosirii ntregului set de date primit ca input se pot utiliza numai
centroizii determinai n urma clusterizrii.
Principala provocare a algoritmului K-Means este estimarea numrului optim de clustere.
Metoda cea mai des utilizat pentru a determina K optim se numete metoda elbow.
Metoda elbow presupune creterea numrului de clustere ncepnd de la K = 1 i calcularea
pentru fiecare K a variaiei medie a punctelor n cadrul clusterelor. Variaia medie scade pe masur
ce este crescut valoarea k, astfel c metoda presupune oprirea incrementrii valorii lui K i a
recalculrii clusterelor dup ce valoarea variaiei medie calculat la un pas nu a sczut semnificativ
fa de valoarea de la pasul anterior[12][13].
13

VLAD COSTIN HERESCU

Variaia medie a punctelor, pentru o valoare K se calculeaz astfel :

=1 2

unde Nr este numrul de clustere, iar Dr este suma ptratelor distanelor euclidiene n cadrul
clusterului r ntre fiecare doua puncte i si j aparinnd clusterului.

= ( )2

Alt formul care nu presupune calculul distanei ntre fiecare doua puncte ale unui cluster,
ci se bazeaza numai pe distana euclidian ntre un punct dintr-un cluster i centroid, este
urmatoarea:

= ( )2

3.3.2. Algoritmi genetici

Algoritmii genetici reprezint o opiune euristic de a cuta o soluie pentru o problem dat.
Reprezint o alternativ la algoritmii clasici fa de care are avantajul de a determina mult mai rapid
o soluie ntr-un spaiu de cutare foarte mare. Soluia gsit nu este cea optim, dar este
satisfctoare pentru complexitatea problemei[14].
Algoritmii genetici se bazeaz pe principiile geneticii i ale seleciei naturale. Astfel, n contextul
algoritmilor genetici, o potential soluie a problemei se numete individ, iar un set de indivizi se
numete populaie. La o anumita etap n rezolvarea problemei, populaia trece printr-un set de
schimbri - selecie, combinare, mutaie -prin care indivizii acesteia devin mai bine adaptai
mediului ( potenialele soluii au o valoare mai apropiata de soluia optim).
n implementarea celor trei operaii trebuie s existe un echilibru ntre exploatare i explorare.
n cazul n care accentul n implementare este pus pe exploatare, este mbuntit valoarea
fitnessului celui mai bun individ la un moment dat, fr s se ia n considerare ca viitoare posibile
soluii ceilali indivizi, iar algoritmul converge astfel rapid ctre o soluie local. n cazul n care
accentul n implementare este pus pe explorare, se iau n considerare ca soluii finale pentru
problem foarte muli indivizi i se incearc imbuntirea lor, iar algoritmul converge ctre o soluie
global, ns foarte lent.
Valoarea individului i apropierea sa de soluia optim se numete fitness i este calculat cu
ajutorul unei funcii obiectiv a carei form depinde de contextul problemei.
Astfel, etapele implementrii algoritmului sunt urmatoarele :
1. Stabilirea structurii individului i generarea aleatoare a unui numr de indivizi care s
reprezinte populaia iniial.
14

Ambient Intelligence for Task Integration on Android Devices

2. Executarea setului de operaii asupra populaiei :


a. Selecie pe baza fitnesului
b. Combinarea
c. Mutaie
3. Se reia pasul 2 pn cnd se ndeplinete criteriul de oprire
n etapa de selecie, funcia obiectiv este evaluat pentru fiecare individ pentru
determinarea fitness-ului acestora. Ulterior, un numr de indivizi din generaia curent este
selectat pentru a fi inclus n generatia viitoare. Metodele de selecie a indivizilor pot fi :
-

selecia rulet, n care posibilitatea pentru un individ de a fi ales este proporional cu


valoarea fitness-ului acestuia
selecia trunchiat, n care este aleas o fracie din populaie reprezentat de cei mai buni
indivizi
selecia turneu ce presupune generarea aleatorie de un numr de ori a unui subset din
populaie i selectarea ulterior a celui mai bun individ din fiecare subset.

Combinarea este un operator genetic utilizat pentru diversificarea cromozomilor de la o


generaie la alta i este analog reproduciei din genetic pe care se bazeaz algorimtii genetici. Astfel
se selecteaz aleator un numr de perechi de indivizi, pe baza carora se produc alti indivizi, numii
descendeni, pn cnd numrul de indivizi din noua generaie este egal cu numrul de indivizi din
generaia curent.
Mutaia este operatorul genetic utilizat pentru pstrarea diversitii genetice de la o generaie la
alta i este analog mutaiei biologice, astfel c realizeaz schimbarea unei valori a unui element din
structura individului. Mutaia cauzeaz creterea explorrii spaiului problemei pentru gsirea unei
soluii, astfel c dup aceast etap algoritmul genetic poate obine soluii mai satisfctoare.
Mutaia se poate petrece la un individ conform unei probabiliti definit de ctre programator. n
cazul n care valoarea probabilitii este setat la o valoare mare, cutarea soluiei va deveni
aleatorie.
Criteriile de oprire a algoritmului sunt : gsirea soluiei ce satisface un criteriu impus, dac se
atinge un numr de generaii, dac se consum bugetul alocat n privina resurselor sistemului
informatic sau dac valoarea celui mai bun individ stagneaz dup un numr de generaii.

3.4 Inteligena ambiental


Inteligena ambiental este o ramur a inteligenei artificiale ce presupune implementarea unor
aplicaii inteligente pe dispozitive senzitive la prezena unei persoane, dispozitivele conlucrnd
pentru a oferi suport utilizatorilor n rezolvarea activitilor zilnice[15][16].
Implementarea unui sistem prevzut cu inteligen ambiental se bazeaz pe urmatoarele
concepte i proprieti :
- adaptarea comportamentului n funcie de cererile i profilul utilizatorului
15

VLAD COSTIN HERESCU

caracter proactiv, anticipativ astfel c poate lua decizii proprii fr s fie necesar
interaciunea cu utilizatorul. Acest lucru se poate petrece intr-o situaie n care sistemul
poate s ia o decizie, situatie similar cu o una n care a fost informat de ctre utilizator cu
privire la aciunea ce trebuia luat.
Caracter senzitiv cu privire la situaia curent n care se afl utilizatorul. Determinarea
contextului curent se determin cu ajutorul tehnologiilor cu care este echipat dispozitivul.
Printre acestea se numar : senzori, tehnologie wireless, bluetooth, GPS, e.t.c.
Caracter omniprezent, astfel ca tehnologiile cu care este echipat dispozitvul i pe care se
bazeaz s fie funcionale indiferent de locaia n care se afl utilizatorul.
Utilizarea unei tehnologii hardware neobservabil sau ct mai puin observabil, astfel nct
interaciunea cu sistemul ambiental s fie ct mai natural posibil pentru utilizator.
Caracter comunicativ, astfel s poat s realizeze schimb de informaii cu alte dispozitive
pentru un suport mai mare oferit utilizatorului.

Pentru ca inteligena ambiental sa fie acceptat, scopul implementrii acesteia trebuie sa aib
n vedere rezolvarea problemelor/preocuprilor umane. Una dintre acestea este facilitarea
interaciunii dintre oameni ntr-o comunitate i a suportului oferit ntre acetia. Ca de exemplu, un
dispozitiv inteligent ar putea s comunice altor dispozitive c utilizatorul su are nevoie de asisten
n rezolvarea unei probleme, precum gsirea unei destinaii ( sau asistarea n utilizarea
calculatorului)
Un alt aspect al inteligenei ambientale privete sigurana i confidenialitatea utilizatorului,
aceasta putnd s reacioneze promt n cazul n care detecteaz o situaie n care viaa utilizatorului
este pus n pericol. Astfel, n cazul unui accident pe autostrad, soldat cu ranirea unor persoane,
poate s contacteze serviciile medicale pentru asistarea persoanelor rnite. Mai mult, deoarece se
bazeaz foarte mult pe informaiile obinute despre utilizator, este necesar ca informaiile
confideniale s fie folosite local de ctre dispozitiv i s nu fie partajate altor dispozitive.
Inteligena ambiental poate fi de asemenea folosit pentru motive economice i ecologice. Ca
de exemplu, cu ajutorul tehnologiilor cu care este echipat, dispozitivul poate s informeze
utilizatorul care este cel mai scurt i mai convenabil traseu spre o anumit destinaie, sau poate regla
utilizarea resurselor( precum aerul condiionat, iluminarea unei ncperi) n funcie de solicitarea i
necesitatea lor.

16

Ambient Intelligence for Task Integration on Android Devices

4. Algoritmi
4.1 Algoritmi genetici pentru implementarea problemei comis voiajorului
Problema comis voiajorului este definit astfel : Fie G = (V, E) un graf neorientat n care oricare
dou vrfuri diferite ale grafului sunt unite printr-o latur creia i este asociat un cost strict pozitiv.
Cerina este de a determina un ciclu care ncepe de la un nod aleatoriu al grafului, care trece exact o
dat prin toate celelalte noduri i care se ntoarce la nodul iniial, cu condiia ca ciclul sa aib un cost
minim. Costul unui ciclu este definit ca suma tuturor costurilor ataate laturilor ciclului[17].
n contextul aplicaiei, calcularea unui program ct mai optim al utilizatorului reprezint o
variant complex a problemei comis voiajorului, astfel ca locaiile unde se execut taskurile
reprezint nodurile grafului i se dorete calcularea unui traseu pentru parcurgerea cruia s fie
necesar ct mai puin timp. n plus fa de aceasta cerin, se adaug urmatoarele:
-

nodurile grafului au propriile lor costuri (reprezentate de duratele de execuie a taskurilor)


care pot s difere n funcie de momentul n care comis voiajorul (utilizatorul) ajunge la ele.
Ca exemplu, durata cumprturilor poate s difere n cazul n care acest task este primul
executat de ctre utilizator fa de cazul n care este executat ultimul.
Costul total al arcelor i al nodurilor nu trebuie sa depaeasca o anumita valoare. Pentru
acest scop se poate renuna la trecerea printr-un anumit punct al grafului.
Astfel, durata execuiei unui set de taskuri nu trebuie sub nicio form s se intercaleze cu
execuia programului fix, i se poate renuna la unele taskuri pentru aceasta. n cazul n care
programul fix nu este respectat, costul este penalizat proporional cu intercalarea.
Pentru trecerea prin anumite puncte ale grafului se ofer recompense, n funcie de
importana punctului,recompense care scad costul total. Astfel, alegerea taskului pentru
execuie n cazul n care trebuie respectat un program fix ia n considerare prioritatea
acestuia.

Pentru calcularea unui program ct mai optim sunt utilizai algoritmi genetici. Individul n acest
context este o structur format din setul de taskuri de executat i ora la care utilizatorul incepe s
execute acest set.
n etapa de iniializare, se creeaza un numr de indivizi cu setul de taskuri de lungime diferit
generat aleatoriu i cu ora de ncepere aleas aleatorie, astfel nct s respecte intervalul selectat de
utilizator.
n etapa de selecie, se calculeaz mai nti valoarea de fitness a fiecrui individ. Se dorete
obinerea unui individ cu fitnessul avnd o valoare ct mai mic, astfel ca : valoarea fitnessului este
constituita din durata total de execuie a taskurilor, la care se adaug penalizrile nerespectrii
17

VLAD COSTIN HERESCU

programului i se scad recompensele oferite pentru execuia fiecrui task. Se ordoneaz apoi
populaia de indivizi n ordine descresctoare dupa fitness i se aleg 40% din numrul total al
indivizilor pentru a face parte din generaia urmtoare a populaiei.
Penalizrile folosite sunt : fiecare minut care nu este n concordan cu intervalul selectat este
multiplicat cu 5 pentru primele 15 minute, cu 10 pentru urmtoarele 15 si cu 15 pentru restul.
Recompensele oferite sunt : 60 pentru un task cu prioritatea MINOR, 120 pentru un task cu
prioritatea AVERAGE, 480 pentru un task cu prioritatea MAJOR, 1500 pentru un task cu prioritatea
CRITICAL.
n etapa de combinare, se completeaz restul de 60% din populaia generaiei urmatoare astfel:
-

se aleg aleator cte 2 indivizi avnd rolul de parini , indiferent de fitness, pentru a fi creai
doi copii.
Se calculeaz ora de ncepere a fiecrui individ copil dup formula recombinrii reale liniare :
offspring = parent1 + Alpha * (parent2 - parent1)
unde Alpha este un factor de scalare ales aleator n intervalul [-d, 1+d]. Parametrii din
formula preiau valorile :
Ora ncepere copil = Ora ncepere Individ1 + Alpha *(Ora de ncepere Individ2 Ora de
ncepere Individ1),
iar Alpha are valorile 0.25 pentru primul copil si -0.25 pentru al doilea copil

Se calculeaz setul de taskuri ale indivizor copii astfel :


o
o

Se alege un task coninut de ambii prini


Dintre cele doua taskuri care urmeaz dup acesta dintre cei doi indivizi printe, se
determin care dureaz mai puin pentru a fi adugat la setul de taskuri ai copiilor.
Dac cel care dureaza mai putin exist deja n structura copilului, atunci este
adugat celalalt task.
Dac seturile de taskuri ale prinilor au dimensiuni diferite atunci : primul copil va
avea setul de taskuri completat cu taskuri din setul primului printe, pn cnd vor
avea aceeai dimensiune, iar al doilea copil va avea setul de taskuri completat cu
taskuri din setul celui de-al doilea printe, pn cnd vor avea aceeai dimensiune.

Se repet procedeul pn cnd populaia generaiei urmtoare are numrul de indivizi egal
cu populaia curent.

18

Ambient Intelligence for Task Integration on Android Devices

n etapa de mutaie, indivizii populaiei format din selecie i combinare pot suferi urmtoarele
mutaii, cu probabilitatea de 0.25 :
- Schimbarea aleatorie a orei de ncepere a execuiei taskului,
- Interschimbarea poziiilor a dou taskuri n setul de taskuri a individului
- Eliminarea un task din setul de taskuri a individului
- Adugarea unui task la setul de taskuri a individului
- nlocuirea unui task din setul de taskuri a individului cu unul ce nu se afl n setul de taskuri
Algoritmul se termin cnd se ajunge la un numr de iteraii egal cu 10 inmulit cu numrul de
taskuri, dac este depit un interval de timp, sau n cazul n care converge la un individ optim.

4.1.1 Testare algoritm


Pentru testarea algoritmului, au fost introduse n baza de date urmtoarele taskuri care trebuie
s fie executate: cumprturi( cu durata variabil si prioritate minor), abonament metrou ( cu
durata variabil si prioritate medie), proiect licen ( cu durata setat de 4 ore i prioritate major).
S-a considerat c utilizatorul ncepe execuia taskului din poziia curent a acestuia i la sfritul
execuiei acesta se intoarce napoi la poziia curent.
n cazul n care intervalul de execuie a taskurilor rmne cel implicit, de la ora 7 AM pn la 9
PM, algoritmul reuete s sugereze o ordine i momentele de execuie a taskurilor astfel nct
taskurile cumprturi si abonament metrou s fie executate n momente ale zilei n care durata
execuiei s fie cea minim i astfel durata total a execuiei taskurilor s fie minim.
n cazul n care intervalul de execuie este restrns la un numar mai mic de ore, algoritmul
sugereaz o ordine a acelor taskuri care merit s fie executate, din care reiese c implementarea
ine cont de prioritatea taskurilor, de distana lor relativ fa de utilizator i de respectarea
intervalului stabilit. Astfel, pentru un interval de la 12 PM pn la 6 PM, este sugerat pentru execuie
taskul proiect licen, pentru care durata total poate s ajung la 5 ore i 30 de minute ( 4 ore
execuia, 50 de minute deplasarea la facultate, 50 de minute napoi) . n cazul n care intervalul este
restrns i mai mult, n locul acestui task sunt sugerate celelalte doua taskuri cumprturi i
abonament metrou, pentru ca intervalul s fie respectat.
Eroarea cu care execuia taskurilor a depait intervalul specificat nu a fost mai mare de 15
minute, iar aceste cazuri implic execuia taskului proiect licen, pentru care prioritatea este
major.

4.2 Algoritmul de clusterizare KMeans


Algoritmul KMeans este un algoritm de clusterizare care partiioneaz un set de N puncte n K
clustere iar fiecare cluster are un punct reprezentativ,numit centroid, astfel c un punct aparine
clusterului avnd cel mai similar, apropiat centroid de punct.
Scopul acestui algoritm este de a reduce un numr mare de date la un set de date reprezentative
care s fie folosit ulterior n rezolvarea unei probleme, fiind astfel redus complexitatea problemei.
n aplicaie, contextul unui task adugat n baza de date este comparat cu contextele taskurile
deja executate de ctre utilizator. Se va considera c informaiile contextului cel mai similar vor fi
19

VLAD COSTIN HERESCU

aceleai i pentru taskul respectiv. Astfel, n cazul n care baza de date conine un numr foarte mare
de taskuri executate, o soluie avantajoas comparrii contextului taskului ce urmeaz s fie adugat
cu fiecare context, se bazeaz pe compararea numai cu un numr mic de contexte reprezentative.
Astfel, pentru determinarea duratei unui task, sunt clusterizate taskurile executate dupa trei
proprieti ale acestora, analog unor puncte ntr-un sistem tridimensional: locaia, titlul si momentul
de execuie a taskului.
Pentru ca noiuni precum similaritatea, deprtarea s fie inelese n acest context, se calculeaz
distana ntre doua taskuri folosind urmatoarea formul :

d(T1, T2) =

2 (1, 2)2 + 2 (1, 2)2 +


(1, 2)2

unde distanceDuration reprezint diferena ntre momentele de start ale celor dou taskuri
exprimat n minute, distanceTitle reprezint o form a distanei Levenshtein dintre titluri, iar
distantaLocation reprezint distana euclidian ntre locaiile unde se execut cele dou taskuri.
Este necesar ca distana dintre durate si distana dintre titluri s fie inmulite cu anumite ponderi
pentru ca cele trei distane s fie comparabile. Astfel, presupunnd c distanele maxime sunt : cea
dintre locaii de 15 km, cea dintre titluri de 30 de caractere, iar cea dintre momentele de start de
720 de minute, este necesar ca distana dintre titluri sa fie amplificat de 500 de ori iar cea dintre
momentele de start aproximativ de 14 ori.
Primul pas const n alegerea a K taskuri cu rol de centroizi ct mai ndepartai unul de celalalt.
Al doilea pas const n determinarea pentru fiecare task executat din baza de date, a celui mai
apropiat centroid, iar taskul este asignat clusterului acestuia. Se recalculeaz coordonatele fiecrui
centroid pe baza coordonatelor punctelor ce aparin clusterelor lor.
Astfel, noul moment de ncepere a unui centroid se calculeaz ca media artmetic a momentelor
de start ale tuturor punctelor clusterului respectivului centroid :
startTime(Centroidj) =

(1)+(2)++()
, pentru j = 1, K

iar coordonatele locaiei centroidului se calculeaz ca media aritmetic a coordonatelor tuturor


punctelor clusterului respectivului centroid :
latitude(Centroid) =

(1)+( 2)++()

longitude(Centroid) =

, pentru j = 1, K

(1)+(2)++()

, pentru j = 1,K

Dup acest pas, taskurile pot deveni mai apropiate de alte clustere dect fa de cele crora au fost
asignate. n acest caz, se repet algoritmul de la pasul 2, pn cnd taskurile nu ii mai schimb
centroizii crora au fost asignai, iar algoritmul se termin ( nu devin mai apropiate de alte clustere).
20

Ambient Intelligence for Task Integration on Android Devices

4.2.1 Determinare K
Provocarea n clusterizarea Kmeans este determinarea lui K pentru care clusterizarea s fie cea
corecta. O metod pentru determinarea lui K este metoda elbow care se bazeaz pe ideea c dac
se repet clusterizarea pentru o valoare K mai mare cu o unitate, nu se vor obine rezultate
considerabil mai bune.
Astfel, metoda elbow presupune etapele:
-

Iniializare K =1
Clusterizarea setului de taskuri
Calcularea variaiei taskurilor ntr-un cluster
Incrementarea lui K i reclusterizare pn cnd diferena variaiilor dintre doua etape
consecutive atinge un prag.

Metoda elbow se bazeaz exclusiv pe distana euclidian ntr-un sistem Euclidian, astfel c pot
aparea erori n determinarea numrului corect de taskuri din moment ce sunt implicate att distana
Levenstein ct i distana termporal. Astfel, pentru ca metoda elbow s nu se opreasc la un optim
local k, condiia pentru oprirea incrementrii numrului de centroizi este :
(() ( + 1) ) <

()
3

, unde W(k) reprezint variaia taskurilor pentru k clustere.

Pentru testare s-a folosit un set de 80 de taskuri. Toate taskurile au acelai titlu, se execut cte
40 ntr-o locaie i momentele de execuie variaz de la ora 8:00 pana la 19:00. Graficul din figura
K-means arat scderea variaiei n raport cu mrirea numrului de centroizi. Dei numrul de
centroizi de la care variaia nu mai scade drastic este 4, numrul de centroizi care verific condiia i
care d rezultate mai satisfctoare este 8.

(Fig K-means)

21

VLAD COSTIN HERESCU

4.2.2 Distana ntre titluri a dou taskuri


Distana ntre titluri a dou taskuri se bazeaz pe distana Levenshtein dintre dou iruri de
caractere. Distana Levenshtein reprezint numrul minim de adugri, tergeri, nlocuri de
caractere n primul ir pentru a fi obinut al doilea. Aceast metod nu poate fi ins aplicat direct
asupra irurilor celor dou titluri, din moment ce pot sa conin aceleai cuvinte ns n alt
ordine[18].
Astfel, se ia fiecare cuvnt din primul ir si se determin care este cel mai similar cuvnt din al
doilea ir pe baza distanei Levenshtein. n cazul n care distana dintre cuvntul din primul ir i cel
mai similar cuvnt din al doilea ir depaete un anumit prag, se consider c cele doua cuvinte au
sensuri diferite, nu sunt nrudite i distana lor este adugat la distana total dintre cele doua
titluri. Se repet procedeul pentru fiecare cuvnt din primul titlu.
Ulterior calculrii distanei dintre cele doua titluri, se verific si dac aceasta depaete un
anumit prag, pe baza ideii c unul dintre iruri poate avea cuvinte fr importan fa de cellalt,
care n mod normal nu ar trebui luate n considerare la calculul distanei. Astfel, dac pragul este
depit, se ia n considerare distana total calculat dintre titluri.

4.2.3 Testare Algoritm


-

Au fost folosite urmatoarele teste pentru clusterizare:


O locaie, 20 de taskuri, durata de ncepere variabil de la ora 8 AM la 7 PM
=> 4 clustere
2 locaii, acelai titlu, 80 de taskuri, durata de ncepere variabil de la ora 8 AM la 7 PM
=> 8 clustere
2 locaii, 2 titluri, 40 de taskuri ( cte 20 pentru fiecare locaie), durata de ncepere variabil
de la 8 AM la 7 PM => 7 clustere
3 locaii, 3 titluri, 60 de taskuri ( cte 30 pentru fiecare locaie) , durata de ncepere variabil
de la 8 AM la 7 PM => 11 clustere
3 locaii, 2 titluri, 100 de taskuri, durata de ncepere variabil de la 8 Am la 7PM => 11
clustere

22

Ambient Intelligence for Task Integration on Android Devices

5. Detalii implementare
5.1 Funcionaliti
Fereastra principal a aplicaiei pune la dispoziia utilizatorului mai multe opiuni:
- setarea programului fix al utilizatorului ce se repet n fiecare sptaman ( activitatea Set Fix
Schedule)
- adugarea unui task i ce implic acesta : locaia, durata, prioritatea, e.t.c. ( activitatea Add
Task)
- vizualizarea taskurilor adugate i modificarea proprietilor lor (View Tasks)
- vizualizarea taskurilor ce se pot executa n contextul actual ( View compatible tasks)
- detectarea dispozitivelor prin Bluetooth i nregistrarea informaiilor primate de la acestea (
Detect Devices)
- recomandarea orarului pentru un interval al zilei lund n considerare taskurile adugate i
programul fix al utilizatorului ( Suggest Schedule)
- vizualizarea taskului curent de executat ( View Current Task)

5.1.1 Setarea programului fix


Utilizatorul poate s specifice n aceast activitate programul sau sptmnal, fix, format din
taskurile pentru care sunt tiute locaia i momentul pentru execuie.
Pentru fiecare zi a sptmnii, se pot adauga sau terge taskuri sau li se pot modifica intervalul
n care acestea se petrec. Aceste modificri fcute n interfaa sunt salvate n baza de date.

5.1.2 Adugarea unui task


Utilizatorul poate s adauge n aceast activitate taskuri pentru care trebuie s specifice
contextul n care acesta poate s fie executat: titlul, locaia, alte dispozitive ale utilizatorului i
persoanele necesare pentru execuie, durata estimat de execuie a taskului i deadline-ul acestuia
plus alte caracteristici precum titlul taskului pentru ca acesta s fie recunoscut i prioritatea acestuia.
Activitatea dispune de o interfa inteligent astfel c pe masur ce utilizatorul completeaz
unele cmpuri ale interfeei, altele sunt completate automat de ctre entitatea inteligent a
aplicaiei, pe baza istoricului taskurilor excutate de ctre utilizator si pe baza cmpurilor deja
completate.

23

VLAD COSTIN HERESCU

Cmpurile care sunt completate de catre entitatea inteligenta sunt : locaia, dispozitivele i
persoanele necesare care se bazeaz pe titlul taskului introdus de ctre utilizator i prioritatea, care
se bazeaz pe titlul introdus, deadline i durat, n cazul n care acestea sunt completate.
De exemplu, pentru locaie, activitatea clusterizeaz apriori taskurile deja executate dupa titlu.
n momentul n care utilizatorul introduce titlul taskului, acesta este comparat cu titlurile centroizilor
obinui prin clusterizare. Se determin cu care dintre acestea titlul introdus este cel mai similar i n
cazul n care similaritatea depaete un anumit prag, se folosete locaia centroidului respectiv
pentru a completa locaia din interfaa grafic. Acelai procedeu este efectuat i pentru celelalte
cmpuri.
Pentru ca utilizatorul s seteze sau s vizualizeze locaia recomandat de entitatea inteligent,
acesta dispune de o harta obinut prin API-ul Google Map. Pentru uurin, n momentul
deschiderii activitii, harta afieaz automat locaia curent a utilizatorului determinat cu ajutorul
clasei LocationClient a bibliotecii Google Play Services.
Urmtoarea secven de cod descrie determinarea locaiei curente a utilizatorului:
public class AddTask implements com.google.android.gms.location.LocationListener,
GooglePlayServicesClient.ConnectionCallbacks{
/**
* used to get the user's location
*/
LocationClient mLocationClient;
/**
* used to get updates about the user's location
*/
LocationRequest locationRequest;
public void onCreate(Bundle savedInstanceState){
mLocationClient = new LocationClient(this, this, this);
locationRequest = new LocationRequest();
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationRequest.setInterval(5000);
locationRequest.setFastestInterval(1000);
locationRequest.setNumUpdates(1);
}
@Override
public void onConnected(Bundle arg0){
Location l = mLocationClient.getLastLocation();
if(l == null)
mLocationClient.requestLocationUpdates(locationRequest, this);
else
currentLocation = l;
}
@Override
public void onLocationChanged(Location arg0){ currentLocation = arg0; }
}

Utilizatorul poate de asemenea s caute o locaie pe hart specificnd n interfa cuvinte cheie
ce fac parte din adresa acesteia. Procedeul poate fi executat i n ordine invers, astfel c n
momentul n care utilizatorul selecteaz o locaie pe hart, n interfa este afiat adresa acesteia,
calculat cu ajutorul instanei Geocoder din biblioteca android.location

24

Ambient Intelligence for Task Integration on Android Devices

List<Address> addresses = null;


try {
addresses = (new Geocoder(this)).getFromLocationName(searchPattern, Integer.MAX_VALUE);
if(addresses != null)
{
Address closest = determineClosestAddress(addresses);
LatLng position = new LatLng(closest.getLatitude(), closest.getLongitude());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

n momentul n care este aleas locaia taskului pe hart ( direct de ctre utilizator, prin
cutarea unei adrese sau prin compararea titlului cu cele aflate n baza de date), pe hart apare un
marcaj albastru iar locaia este afiat n prim plan. Codul pentru aceast funcionalitate este :
location = Double.toString( position.latitude) + " " +
Double.toString(position.longitude);
map.clear();
map.moveCamera(CameraUpdateFactory.newLatLngZoom(position, 15));
map.addMarker(new MarkerOptions().position(positionCurrent).
icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher)));
map.addMarker(new MarkerOptions().position(position).
icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_action_location_place)));

O ultim funcionalitate a interfeei inteligente este reprezentat de cmpurile titlu i adresa


care au proprietatea de autocomplete. Astfel, adresele cutate de ctre utilizator pe harta i titlurile
taskurilor executate sunt extrase din baza de date a aplicaiei pentru a completa automat aceste
campuri n cazul n care se determin un ablon comun cu ce a tastat momentan utilizatorul.

5.1.3 Vizualizarea taskurilor introduse si modificarea proprietatilor


n aceast activitate este posibil vizualizarea tuturor taskurilor salvate de ctre utilizator i nc
neexecutate. De asemnea, utilizatorul are ca opiuni tergerea taskurilor sau modificarea
proprietailor acestora, caz n care este pornit activitatea de adaugare taskuri, ns avnd cmpurile
deja completate de catre utilizator. Dup ce utilizatorul efectueaza modificrile dorite, datele
cmpurilor sunt folosite pentru updatarea valorilor atributelor nregistrrii corespunzatoare din
tabelul TASKS .
Datele despre fiecare task sunt afiate n activitate n mod dinamic, prin intermediul codului
activitii i nu prin intermediul fiierului Xml. O secven de cod care exemplific aceast adugare
este urmtoarea :
private void addTaskToInterface(Task task) {
TextView titleView = new textView(this);
RelativeLayout.LayoutParams params_title_value =
new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
params_title_value.setMargins(100, 30, 100, 0);
titleValue.setText(task.getNameTask());
titleValue.setTextSize(30);
titleValue.setBackgroundColor(Color.rgb(193, 215, 222));
titleValue.setId( ++ numberOfView);
titleValue.setPadding(0, 5, 0, 5);

25

VLAD COSTIN HERESCU


titleValue.setTextColor(Color.BLUE);
titleValue.setGravity(Gravity.CENTER);
params_title_value.addRule(RelativeLayout.BELOW, numberOfView - 2);
titleValue.setLayoutParams(params_title_value);
layout.add(titleView);
. . . . . . . . . . . . . . . . . . . . . . . . . . .
}

5.1.4 Vizualizarea taskurilor ce se pot executa n contextul actual


Utilizatorul poate vizualiza n aceast activitate taskurile a caror condiii sunt ndeplinite de
ctre contextul curent pentru a fi executate i care au asociat starea TO DO n baza de date.
Pentru ca taskul s fie afiat, toate condiiile trebuie s fie respectate : deinerea dispozitivelor i
existena n apropierea utilizatorului a persoanelor necesare, proximitatea fa de locaia aleas,
nesuprapunerea execuiei taskului cu programul fix stabilit de utilizator.
O prim condiie a taskului privete proximitatea locaiei curente a utilizatorului fa de locaia
aleas. Astfel, este calculat distana dintre cele 2 locaii care nu trebuie sa depeasc un prag
pentru a fi indeplinit condiia.
A doua condiie de respectat este nesuprapunerea execuiei taskului cu programul fix al
utilizatorului. Pentru a verifica aceasta condiie, se calculeaz durata deplasrii din locaia curent
pn la locaia unde trebuie s fie executat taskul, durata propriu-zis de execuie i durata
deplasrii pn n locaia unde utilizatorul trebuie s respecte programul fix. Astfel, sunt adunate
cele trei valori determinate la timpul curent, pentru a fi ulterior comparate cu programul fix. Dac
este depit ora de ncepere a programului fix, taskul nu respect condiia pentru a fi executat.
n cazul n care pentru realizarea taskului sunt necesare anumite persoane, aplicaia detecteaz
cu ajutorul tehnologiei Bluetooth dac acestea se afl n preajm. Aplicaia detecteaz toate
dispozitivele aflate n proximitatea utilizatorului, le interogheaz pentru a afla adresele lor mac, pe
care le compar apoi cu adresele mac ale dispozitivelor persoanelor necesare taskului. Acelai
procedeu este aplicat i pentru detectarea dispozitivelor utilizatorului i n plus, cazul n care
dispozitivul este momentan nchis.
Taskurile sunt afiate n aceast activitate n ordinea descresctoare a prioritii.
Utilizatorul poate selecta un task pentru a fi executat. n cazul acesta, starea taskului din baza
de date se schimb din AMONG TO DO n CURRENT TASK. Interfaa este apoi actualizat pentru
a nu mai lua n considerare taskul respectiv.
Codul urmtor explic modul n care sunt verificate taskurile: clasa conine un set de checkere
pentru fiecare condiie, astfel c pentru fiecare task din setul de taskuri se parcurge setul de
checkere. Un checker primete ca parametri elementul de context din contextul curent si elementul
de context din contextul taskului verificat.
for(Task task : tasks)
{
isTaskCompatible = true;
for(ContextElementType elementType: checkers.keySet())
{
Compatibility checker = checkers.get(elementType);
if(checker.check(task.getScheduledContext().getContextElementsCollection

26

Ambient Intelligence for Task Integration on Android Devices

().get(elementType),
currentContext.getContextElementsCollection
().get(elementType), task) == false)
isTaskCompatible = false;
break;

}
}
if(isTaskCompatible == true)
addTaskToInterface(task) ;

5.1.5 Detectarea dispozitivelor prin Bluetooth i nregistrarea informaiilor primite


de la acestea
Aceast funcionalitate este utilizat pentru a stoca informaii care sunt ulterior necesare
pentru a verifica dac utilizatorul are dispozitivele necesare pentru execuia taskului sau dac
persoanele necesare sunt n preajma acestuia.
Astfel, activitatea detecteaz prin Bluetooth dispozitivele din proximitatea utilizatorului. Le
interogheaz ulterior pentru a afla adresele MAC i numele dispozitivelor. Datele sunt afiate n
interfa, iar utilizatorul le poate salva n baza de date, specificnd dac dispozitivul este al lui sau al
altei persoane. La urmatoarea scanare a dispozitivelor, nu vor mai fi afiate dispozitivele ale cror
informaii au fost salvate anterior n baza de date.
Tehnologia Bluetooth ascult asincron notificrile privind dispozitivele detectate timp de 12
secunde, astfel c detectarea tuturor dispozitivelor nu se va face instantaneu.
Pentru ca aplicaia s fie notificat n momentul n care este detectat cu Bluetooth un dispozitiv,
este
necesar
nregistrarea
unui
Broadcast
Receiver
cu
filtrul
asociat
BluetoothDevice.ACTION_FOUND.
Codul metodei onReceive este urmatorul :
@Override
public void onReceive(Context context, Intent intent) {

String action = intent.getAction();


if (BluetoothDevice.ACTION_FOUND.equals(action)) {
// Get the BluetoothDevice object from the Intent
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
if(checkIfExists(device.getAddress()) == false)
{
myActivy.getDeviceInfo().put(device.getAddress(), device.getName());
myActivy.addInfoMethod();
}
}

27

VLAD COSTIN HERESCU

5.1.6 Recomandarea orarului pentru un interval al zilei lund n considerare


taskurile adugate i programul fix al utilizatorului
Utilizatorului i sunt recomandate n aceasta activitate un set de taskuri ntr-o anumit ordine
astfel nct programul fix al utilizatorului s fie respectat. Taskurile luate n considerare i ordinea lor
se bazeaz pe obinerea unei valori ct mai optime ca rezultat al unei funcii obiectiv din domeniul
algoritmilor genetici. Aceast funcie obiectiv ia n considerare durata total a execuiei taskurilor n
ordinea respectiv, prioritile lor i nerespectarea intervalului selectat de ctre utilizator.
n interfaa grafic, utilizatorul poate selecta chiar el un anumit interval oarecare n care sa i fie
calculat programul zilei respective sau poate selecta un interval ntre perioadele n care are
programul fix. n interfa i sunt afiate ordinea execuiei taskurilor, durata de execuie a fiecruia i
durata de deplasare dintr-un loc precedent.
Pentru durata de deplasare, se consider c dac distana nu depaete un anumit prag,
deplasarea se poate face fr mijloc de transport, altfel, este necesar folosirea unuia. n cazul n
care este folosit un mijloc de transport, se considera c utilizatorul se deplaseaz un metru in 0.6
secunde, iar n carzul n care nu este folosit, atunci utilizatorul se deplaseaz un metru n 1.2
secunde.

5.1.7 Vizualizarea taskului curent de executat


Utilizatorul poate vizualiza n aceast activitate taskul selectat pentru a fi executat din activitatea
Show Compatible Tasks.
n interfa sunt afiate proprietile taskului selectate de ctre utilizator, un timer care indic
ct timp a mai rmas pn la executarea taskului i butoane pentru a se putea aduga minute sau
ore la durata estimat i pentru a informa aplicaia cnd a finalizat taskul.
Durata afiat de ctre timer la inceputul execuiei taskului este valoarea selectat de catre
utilizator n interfaa Add task, sau, n cazul n care utilizatorul nu a tiut durata la momentul
respectiv, alegnd opiunea Unknown duration, este valoarea calculat de entitatea inteligent. n
ultimul caz, locaia , titlul taskului i ora curent sunt date folosite pentru a determina care este cel
mai apropiat centroid din cei calculai prin clusterizare. Durata centroidului, calculat ca medie a
tuturor punctelor din clusterul su, este folosit apoi ca valoare a taskului curent de executat.
Durata ramas din execuia taskului este calculat ca diferen ntre durata estimat n
momentul alegerii acesteia pentru execuie i timpul trecut din acel moment.
Taskul este considerat a fi finalizat n momentul n care utilizatorul apas butonul Finalize. n
cazul n care timpul a expirat fr ca utilizatorul s fac acest lucru, la o ulterioar intrare n activitate
sunt afiate 10 minute pn la sfritul taskului. n momentul apsrii butonului Finalize , timpul
rmas din execuie este sczut din durata taskului salvat n baza de date.

28

Ambient Intelligence for Task Integration on Android Devices

5.2 Baza de date


Baza de date care stocheaz informaiile necesare funcionalitilor aplicaiei este format din
urmatoarele tabele : TASKS, DEVICES, SCHEDULE, DEVICES_TASKS. Structura acesteia este
urmatoarea

5.2.1 Tabela Tasks


Aceast tabel conine informaii privind taskurile adugate de ctre utilizator prin activitatea
Add Tasks. Conine urmatoarele cmpuri:
-

ID_TASK : reprezint cheia primar a tabelului i valoarea este id-ul taskului asociat unei
intrri n tabel.

TITLE : ir ce reprezint titlul taskului.

LOCATION : ir ce conine coordonatele locaiei alese de ctre utilizator, delimitate de


caracterul ,.

DEADLINE : ir ce reprezint deadline-ul taskului asociat de ctre utilizator. n cazul n care


nu se tie deadline-ul, are valaorea UNKNOWN.

PRIORITY : ir ce reprezint prioritatea taskului, putnd lua valorile : MINOR, AVERAGE,


MAJOR,
CRITICAL. n cazul n care nu se tie prioritatea, are valoarea UNKNOWN.
-

DURATION : ir ce reprezint durata taskului. n cazul n care nu este tiut durata, are
valoarea -1. Valoarea i este schimbat n momentul n care taskul este ales pentru a fi
executat, cu durata unuia dintre centroizii calculai de entitatea inteligent prin clusterizare.

29

VLAD COSTIN HERESCU

STATUS: ir ce reprezint statusul taskului. Poate avea valorile : AMONG_TO_DO, dac a fost
adugat n lista de taskuri, CURRENT_TASK, dac este taskul ce este executat la momentul
actual, EXECUTED, dac a fost finalizat.

BEGIN_TIME : ir ce reprezint momentul n care taskul a fost selectat pentru a fi executat.


Este de forma dd/MM/yyyy/hh/mm.

5.2.2 Tabela SCHEDULE


Aceast tabel conine informaii privind programul setat de ctre utilizator prin activitatea Set
fixed Schedule. Conine urmtoarele cmpuri:
-

ID_TASK : reprezint cheia primar a tabelului i valoarea este id-ul taskului asociat unei
intrri n tabel.
DAY_WEEK : ir ce specific n ce zi a sptmnii trebuie executat programul. Poate avea
valorile MONDAY, TUESDAY, WEDNESDAY, THURSADAY, FRIDAY.
- LOCATION : ir ce contine coordonatele locaiei alese de ctre utilizator, delimitate
de caracterul , .
START_HOUR : ir ce indic ora la care ncepe taskul.
START_MINUTE : ir ce indic minutul la care ncepe taskul.
END_HOUR
: ir ce indic ora la care se termin taskul.
END_MINUTE : ir ce indic minutul la care se termina taskul.

5.2.3 Tabela DEVICES


Aceast tabel conine informaii privind dispozitivele detectate cu Bluetooth n activitatea
Detect devices. Conine urmtoarele cmpuri:
-

ID_DEVICE : reprezint cheia primar a tabelului i valoarea este id-ul device-ului asociat
unei intrari n tabel.
MAC : ir ce reprezint adresa mac a dispozitivului detectat.
NAME_DEVICE : ir ce reprezint numele dispozitivului detectat.
NAME_OWNER : ir ce reprezint numele persoanei care deine dispozitivul. n cazul n care
este vorba despre utilizator, NAME_OWNER are valoarea My Device.

5.2.4 Tabela Task_Devices


Aceast tabel are rolul de a rezolva relaia de many to many ntre tabela Devices i tabela
Tasks: contextul unui task poate implica utilizarea mai multor dispozitive, iar un dispozitiv poate fi
necesar n mai multe taskuri. Conine urmtoarele cmpuri:
30

Ambient Intelligence for Task Integration on Android Devices

ID_TASK_DEVICE : reprezint cheia primar a tabelei


ID_TASK : reprezint cheia strain, corelaia cu cheia primar a tabelei Tasks
ID_DEVICE : reprezint cheie strain, corelaie cu cheia primar a tabelei Devices

5.2.5 Operaii DML Sqlite


Pentru a realiza operaii DML n cadrul unui tabel n sqlite, se utilizeaza clasa SQLiteOpenHelper.
Pentru inserare sau updatare de nregistrri, valorile sunt salvate ntr-o instan ContentValues, care
are structura unei liste de perechi cheie-valoare, unde cheia este reprezentat de numele atributului
nregistrrii.
Un exemplu de secven de cod pentru inserarea unei inregistrari n tabela Devices este
urmtorul :
ContentValues values = new ContentValues();
values.put(DeviceData.KEY_MAC, macAddress);
values.put(DeviceData.KEY_DEVICE, nameDevice);
values.put(DeviceData.KEY_OWNER, owner);
SQLiteDatabase db = this.getWritableDatabase();
db.insert(nameTable, null, content);
db.close();

5.3 Modularizare
Aplicaia este modularizat fiind prevzut pe lng activitile proprii cu urmtoarele module:
DatabaseOperation , ContextElements, Salesman, Check_Compatibility , Clustering.

Fig. Schema modularizare Aplicatie

31

VLAD COSTIN HERESCU

5.3.1 DatabaseOperation
Acest modul conine implementarea bazei de date a aplicaiei . Principala clas este
DataBaseHandler ce conine metodele ce implementeaz operaiile DDL i DML ale tabelelor:
- crearea tabelelor,
- adugarea, updatarea, tergerea unui task, a unui dispozitiv, a unui task din programul fix al
utilizatorului,
- extragerea tuturor informaiilor din cele trei tabele sau doar a unui set de nregistrri pe baza
unor criterii primite ca parametri.
Conine de asemenea cte o interfa pentru fiecare tabel, n care sunt specificate atributele
acestora : deviceData, fixedTasksData, tasksData.
Alte componente ale acestui modul sunt clase ce implementeaza asculttorii asociai butoanelor
din activiti care apeleaz operaiile DDL si DML ale bazei de date.

5.3.2 Clustering
Acest modul conine clasele ce clusterizeaz taskurile cu statusul Executed. Taskurile sunt nite
puncte n sisteme avnd mai multe dimensiuni.
-

KMeansDuration : sistemul are trei dimensiuni : n prima dimensiune este utilizat ca


distan diferena orelor de ncepe a taskurilor, n a doua dimensiune este utilizat distana
euclidian ntre locaiile taskurilor, iar n a treia dimensiune este utilizat distana
Levenshtein dintre titlurile taskurilor.
KMeansLocation , KMeansDevices, KMeansPeople : sistemul are o dimensiune n care este
utilizat distana Levenshtein dintre titlurile taskurilor.

Aceste clase implementeaz metodele interfeei KMeans:


-

void calculateKlusters() : apelat de ctre activiti pentru calcularea centroizilor.


Task detectCentroid( Task currentTask ) : primete ca parametru un task i returneaz
centroidul cel mai apropiat de acesta.
void chooseCentroid() : selecteaz taskul cel mai ndeprtat de centroizii cureni pentru a fi
considerat el nsui centroid.
calculateDistance(Task t1, Task t2): calculeaz distana dintre dou taskuri.
void calculateNewCentroizi() : calculeaz noile poziii ale centroizilor n funcie de valorile
punctelor aflate n clusterele lor.
boolean checkCentroiziNotChanged() : verific dac exist taskuri care i-au schimbat
centroizii.
float calculateError() : calculeaz eroarea clusterizrii ca suma ptratelor distanelor dintre
puncte i centroizi.

32

Ambient Intelligence for Task Integration on Android Devices

Modulul conine n plus i o clas n care sunt implementate metodele de calcul a distanelor
Levenshtein, distana euclidan i diferena dintre orele de nceput a taskurilor.

5.3.3 Travelling Salesman


Modulul conine clasele utilizate pentru implementarea algoritmului genetic care concepe
programul utilizatorului pentru o zi :
-

PopulationEvolution: conine implementarea propriu-zis a algoritmului, avnd cte o


metod pentru fiecare operaie a acestuia : iniializare, calcularea fitnessului, selecie,
crossover, mutaie. Acestea sunt apelate dintr-o metod principal pn cnd se
ndeplinete criteriul de finalizare.
Individual : reprezint structura individului utilizat n algoritm i care reprezint Soluia
problemei.
ComputationalMethods : calculeaz durata deplasrii ntre dou locaii i distana dintre
acestea. Conine de asemenea recompensele asociate fiecrui tip de prioritate.
ComparatorFitness : Implementeaz funcia compare a interfeei Comparator, pentru
sortarea indivizilor n etapa de selecie.
ConstantsPopulation : interfa ce conine constantele utilizate n implementarea
algoritmului precum pragul pentru mutaie, procentul ales pentru selecie,penalizrile
pentru ntrizere e.t.c.

5.3.4 ContextElements
Taskul este conceput ca fiind format dintr-un set de elemente de context. Modulul
ContextElements conine aceste elemente de context. Pentru ca valorile acestora s fie obinute
ntr-un mod facil i clar din clasa task, aceasta are ca membru o list de perechi cheie-valoare, avnd
drept chei valorile din enumeraia ContextElementType i ca valori urmtoarele clase :
-

DeadlineContext : are ca membru un ir ce memoreaz data setat de utilizator ca fiind


deadline-ului taskului.
DeviceContext : are ca membru o list unde sunt memorate dispozitivele necesare pentru
execuia taskului.
LocationContext : are doi membri cu valoarea Double unde sunt memorate coordonatele
locaiei i anume latitudinea i longitudinea.
PeopleContext : are ca membru o list unde sunt memorate dispozitivele necesare pentru
execuia taskului.
DurationContext : are ca membri durata propriu-zisa a taskului i durata de deplasare din
locaia curent pn n locaia unde trebuie s fie executat taskul.

33

VLAD COSTIN HERESCU

TemporalContext : are ca membru o list avnd ca elemente intervale ale zilei. n cazul
contextului curent, acestea sunt intervalele n care se desfaoar programul fix, iar n cazul
contextului taskului, reprezint intervalul n care este executat taskul, calculat pe baza
timpului curent, a duratei propriu-zise a execuiei taskului mpreun cu durata de deplasare
pn la locaia taskului i durata de deplasare pn la locaiile unde se desfasoar programul
fix al utilizatorului.

5.3.5 CheckCompatibility
Acest modul este folosit pentru afiarea taskurilor n activitatea View Compatible Tasks ale cror
contexte sunt n compatibilitate cu cel curent. Astfel, acesta conine urmtoarele clase ce
implementeaz metoda checkCompatibility a interfeei Checker. Metoda checkCompatibility
primete ca parametri dou elementele de context de acelasi tip, unul aparinnd contextului
curent, iar cellalt aparinnd contextului taskului de verificat. Rezultatul funciei este true dac
taskul poate fi executat sau false n caz negativ.
-

DeviceCompatibility : folosit pentru a verifica dac dispozitivele contextului taskului sunt


valabile i n contextul curent. Compar elementele de context de tip DeviceContext.
PeopleCompatibility : folosit pentru a verifica dac persoanele contextului taskului sunt
valabile i n contextul curent. Compar elementele de context de tip PeopleContext.
LocationCompatibility : folosit pentru a verifica dac locaia taskului este n proximitatea
locaiei curente. Compar elementele de context de tip LocationContext.
- TemporalCompatibility : folosit pentru a verifica dac durata taskului i momentul de
execuie sunt n compatibilitate cu programul fix al utilizatorului, dac se intercaleaz cu
acesta. Compar elementele de context de tip TemporalContext.

34

Ambient Intelligence for Task Integration on Android Devices

6. Descrierea aplicaiei
6.1 Meniu principal
La startarea aplicaiei, interfaa afieaz funciile disponibile, care apar n meniul principal.
Aceste funcii sunt urmtoarele:
- Adugarea unui nou task
- Vizualizarea i modificarea taskurilor nc neexcutate
- Vizualizarea taskurilor compatibile cu taskul curent
- Vizualizarea taskului curent de executat
- Setarea programului fix al utilizatorului
- Vizualizarea unui program pentru o zi sugerat de aplicaie
- Detectarea dispozitivelor prin Bluetooth .
Interfaa aplicaiei este prietenoas iar meniul principal este prezentat n figura 6.1

Fig. 6.1 Meniul principal al aplicaiei

n continuare sunt descrise detaliat funciile oferite de aplicaie.

35

VLAD COSTIN HERESCU

6.2 Adugarea unui task


Pentru adugarea unui task, utilizatorul trebuie s apese pe butonul Add a new task din
meniul principal. n urma accesrii acestei funcii, pe ecran apare fereastra urmtoare :

Fig. 6.2 Interfa adugare task

Utilizatorul poate s specifice titlul, locaia, dispozitivele i persoanele necesare, deadline-ul


prioritii i durata taskului. Pentru acestea, sunt oferite urmtoarele faciliti :
-

Asigurarea suportului pentru completarea titlului sau a locaiei cu ajutorul


funcionalitii autocomplete (vezi fig. 6.3)

36

Ambient Intelligence for Task Integration on Android Devices

Fig. 6.3 Adugarea titlului i locaiei

Pentru selecia locaiei, utilizatorul are urmtoarele alternative :


poate selecta de pe hart (prin navigare pe aceasta ) locaia dorit , sau
poate cuta adresa locaiei prin completarea cmpului corespunzator locaiei
(vezi figura 6.3 ) i apsarea butonlui Search.
Dac selecteaz locaia direct pe hart, n cmpul unde ar introduce locaia cutat este
scris adresa acesteia.
-

Locaia curent este marcat pe hart cu un roboel, iar cea cautat de utilizator cu un
pointer albastru (vezi figura 6.4 )

Fig. 6.4 Locaie curent i locaii taskuri

Pentru menionarea dispozitivelor, utilizatorul trebuie s apese butonul Devices i s


selecteze din lista afiat ulterior dispozitivele necesare :

Fig. 6.5 Alegere dispozitive

37

VLAD COSTIN HERESCU

Pentru menionarea persoanelor necesare execuiei taskului, utilizatorul trebuie s


apese pe butonul People i s selecteze din lista afiat persoanele necesare :

Fig. 6.6 Alegere persoane

Pentru specificarea prioritii taskului, utilizatorul trebuie s apese pe cmpul din


dreapta a textului Priority. Efectul acestei aciuni este afiarea unei liste cu valori
(Minor, Average, Major, Critical, Unknown) din care utilizatorul trebuie s aleag nivelul
prioritii. Valoarea implicit a prioritii este Minor (vezi figura 6.7 )

Fig. 6.7 Specificarea prioritii taskului

Pentru specificarea duratei, utilizatorul trebuie s apese pe cmpul din dreapta textului
Choose a duration. Efectul acestei aciuni este afiarea unei liste cu valori din care
utilizatorul trebuie sa aleag durata dorit (vezi figura 6.8 ).Valoarea implicit a duratei
este Unknown.

38

Ambient Intelligence for Task Integration on Android Devices

Fig. 5.8 Specificarea duratei taskului

Pentru salvarea datelor, utilizatorul trebuie s apese butonul Save Task . Dac informaiile
introduse sunt corecte, este afiat mesajul The data has been inserted. Dac datele
completate sunt insuficiente utilizatorul este avertizat n momentul ncercarii salvrii
datelor.

Fig. 6.9 Salvare task i mesaje aferente

6.3 Vizualizarea si modificarea taskurilor adaugate


Pentru modificarea sau tergerea unui task, utilizatorul trebuie s apese pe butonul View all
tasks din meniul principal. n fereastra aprut, utilizatorul poate vizualiza toate taskurile adugate
i nc neexecutate ct i datele completate pentru fiecare n fereastra Add Task .Informaiile
taskurilor sunt delimitate de o linie albastr orizontal (vezi figura 6.10 )

39

VLAD COSTIN HERESCU

Fig. 6.10 Detalii taskuri care nu au fost nc executate

Titlul este scris cu culoarea albastr i ncadrat ntr-un dreptunghi de culoare deschis.
Informaiile privind contextul n care poate fi executat taskul sunt afiate imediat sub
titlu :

Fig. 6.11 Detalii taskuri

Utilizatorul poate terge sau modifica taskul folosind butoanele ERASE TASK sau
Modify Task (vezi figura 6.10 )
o Apsarea butonului Erase task are ca efect tergerea datelor aferente taskului
respectiv din interfaa grafic.
o Apsarea butonului Modify task va conduce la deschiderea ferestrei
AddTask cu cmpurile deja completate ale taskului, n vederea modificrii
acestora.

40

Ambient Intelligence for Task Integration on Android Devices

Utilizatorul este informat n cazul n care nu sunt taskuri de executat, n fereastr fiind
afiat urmtorul mesaj:

Fig. 6.12 Mesaj lips taskuri de executat

6.4 Setarea programului fix


Pentru setarea programului fix al utilizatorului, utilizatorul trebuie s apese pe butonul Set
fixed Schedule din meniul principal. n fereastra aprut, utilizatorul poate vizualiza programul fix
pentru o zi. (vezi figura 6.13 )

Fig. 6.13 Interfa program fix

Trecerea de la programul unei zile la programul zilei urmtoare se realizeaz prin


utilizarea sagetilor care ncadreaz numele zilei curente.
Intervalul fiecrui task dintr-o zi este reprezentat de ora de ncepere a taskului i ora de
terminare a taskului.

Fig. 6.14 Interval execuie task

Pentru adugarea / tergerea unui task din baza de date, sunt utilizate butoanele Add
Task respectiv ERASE TASK din dreptul intervalului taskului respective {vezi figura
6.13)
41

VLAD COSTIN HERESCU

6.5 Vizualizarea taskurilor ce pot fi executate n contextul curent


Pentru vizualizarea taskurilor care pot fi executate n contextul curent, utilizatorul
trebuie sa apese butonul View compatible tasks din meniul principal. Modul de afiare a
taskurilor compatibile este similar cu cel al tuturor taskurilor (vezi figura 6.15).

Fig. 6.15 Interfa taskuri posibil de executat

pentru a informa aplicaia ce task este ales pentru a fi executat n momentul actual,
utilizatorul trebuie sa apese butonul Execute task

6.6 Detectarea dispozitivelor


Pentru vizualizarea dispozitivelor detectate cu tehnologia Bluetooth, utilizatorul trebuie s apese
butonul Detect devices din meniul principal. Informaiile despre dispozitivele detectate sunt
separate de o linie albastr (vezi figura 6.16).

42

Ambient Intelligence for Task Integration on Android Devices

Fig. 6.16 Interfa detectare dispozitive

Datele afiate despre fiecare dispozitiv sunt : numele setat de proprietatul acestuia i
adresa Mac
Pentru adugarea dispozitivului n baza de date ca aparinnd utilizatorului, acesta
trebuie sa apese butonul Add Device as mine. Orice este scris n cmpul din dreptul
textului Add owner este omis.
Pentru adugarea dispozitivului in baza de date ca aparinnd altei persoane, utilizatorul
trebuie s specifice n cmpul din dreptul textului Add owner numele acestuia si s
apese pe butonul Add Device with the added owner

Fig. 6.17 Adugare nregistrare task n baza de date

Dup ce este adugat n baza de date, interfaa este reactualizat i nu mai conine
dispozitivul respectiv.

43

VLAD COSTIN HERESCU

6.7 Vizualizarea unui program pentru o zi sugerat de aplicaie


Pentru vizualizarea programului recomandat de ctre entitatea inteligent, utilizatorul
trebuie s apese pe butonul Suggest Schedule din meniul principal.
- Pentru recomandarea programului, utilizatorul trebuie s seteze intervalul orar dorit i
s apese butonul Calculate Schedule (vezi figura 6.18).

Fig. 6.18 - stabilire interval

n cazul n care utilizatorul are n aceeasi zi un program fix, interfaa este schimbata
avnd si opiunea de a alege un interval prin butonul Show next Interval, care seteaz
automat urmtorul interval care nu se intercaleaz cu programul fix. (vezi figura 6.19).

Fig. 6.19 stabilire interval ntre programe

Dup apsarea butonului Calculate Schedule, se afieaz programul sugerat(vezi


figura 6.20):

44

Ambient Intelligence for Task Integration on Android Devices

Fig. 6.20 interfa program sugerat

Utilizatorul este informat cu privire la momentul n care trebuie s plece pentru


executarea taskurilor din poziia curenta, ora estimat la care s-ar intoarce n acelasi loc
i durata total

6.8 Afiarea taskului current


Pentru vizualizarea taskului curent pe care trebuie s l execute, utilizatorul trebuie s apese
butonul View current task din meniul principal.
-

este afiat titlul taskului, timpul rmas pn la execuia lui si date privind contextul n
care se desfoar taskul (vezi figura 6.21):

45

VLAD COSTIN HERESCU

Fig. 6.21 interfa task curent de executat

sunt puse la dispoziia utilizatorului butoane pentru gestionarea timpului. n cazul in care
durata a fost estimat greit, utilizatorul poate apasa pe butonul Add 10 minutes
pentru adugarea a 10 minute, sau Add one hour pentru adaugarea unei ore la
durata estimat.
dac utilizatorul apas butonul Task finished, taskul este considerat a fi terminat, iar
timpul rmas este sczut din durata total.

46

Ambient Intelligence for Task Integration on Android Devices

7. Concluzii
Task Scheduler este o o aplicaie implementat pe Android, care dispune de multe
functionaliti inteligente i care ofer o interfa prietenoas utilizatorului.
Interfaa prietenoas faciliteaz comunicarea dintre dispozitiv i utilizator, fiind redus
considerabil numrul de pai prin care utilizatorul obine sau introduce informaiile necesare
dispozitivului. De asemenea, interfaa grafic a unei activiti are componentele grafice dispuse ntrun mod n care utilizatorul percepe ct mai rapid rolul activitii i informaia afiat.
n ceea ce privete funcionalitile, acestea fac ca aplicaia s asiste utilizatorul n a-i organiza
programul, prin recomandarea unei ordini n care s execute taskurile zilnice astfel nct s
economiseasc ct mai mult timp posibil. Mai mult dect att, vizualizarea taskurilor posibile de
executat n contextul curent faciliteaz sarcina utilizatorului cu att mai mult cu ct programul
acestuia este foarte incrcat i prin urmare i este dificil s memoreze toate taskurile sau s decid
care taskuri pot fi executate.
Modul n care sunt utilizate tehnologiile i API-urile oferite de sistemul de operare Android
definete aplicaia ca fiind un sistem inteligent ambiental. Implementarea aplicaiei nu ar fi fost
posibil fr tehnologia Bluetooth pentru determinarea dispozitivelor din proximitatea utilizatorului
i fr GPS pentru determinarea poziiei curente a utilizatorului.
Una dintre viitoarele funcionaliti ale aplicaiei este partajarea informaiilor pe un server. n
acest fel, aplicaia ar dispune de informaiile mai multor utilizatori pentru clusterizare i nu s-ar mai
baza doar pe informaiile locale ale utilizatorului, grbind astfel procesul de obinere a datelor
necesare algoritmului K-Means. Un alt aspect pozitiv al acestui lucru este clusterizarea pe server,
astfel c aplicaia nu ar mai suferi de latena acestui proces care momentan este implementat local.
Provocarea n partajarea datelor pe un server ar fi pstrarea confidenialitii datelor utilizatorilor.
Alt funcionalitate privete calcularea programului utilizatorului. Momentan, acest calcul ia n
considerare ca execuie a unui task doar o posibil locaie a acestuia. n cazul n care taskul s-ar
putea executa n mai multe locaii, durata taskului poate sa difere considerabil i astfel aplicaia ar
putea recomanda un program mai eficient dect cel pe care l recomand n acest moment. Mai mult
dect att, aplicaia va trebui sa ia n considerare granularitatea duratei taskului. Acesta nu va trebui
s fie executat ntr-o etapa dac este foarte complex ci va fi executat n mai multe etape pe
parcursul mai multor zile.
Nu n ultimul rnd, aplicaia va dispune de un sistem de notificare prin care sa ntiineze
utilizatorul cnd sunt ndeplinite condiiile pentru a putea fi executat un task. De asemenea,
utilizatorul ar putea s transmit ntr-un mod mai facil aplicaiei cererile sale prin intermediul
microfonului.
Drept concluzie, aplicaia ofer funcionalitaile necesare pentru a putea fi utilizat i pentru a
asista utilizatorul n viaa de zi cu zi. Viitoare functionaliti vor optimiza aceast asistare.

47

VLAD COSTIN HERESCU

BIBLIOGRAFIE
[1]http://ro.wikipedia.org/wiki/Programare_orientat%C4%83_pe_obiecte
[2] Mark L. Murphy , The busy Coders Guide to Android Development versiunea 4.2, 2012, editura
CommonsWare, pg 3
[3] http://developer.android.com/training/basics/activity-lifecycle
[4]http://developer.android.com/guide/topics/manifest/manifest-intro.html
[5] http://developer.android.com/training/basics/firstapp/building-ui.html
[6]http://www.vogella.com/tutorials/AndroidBroadcastReceiver/article.html
[7] http://developer.android.com/guide/topics/connectivity/bluetooth.html
[8] http://examples.javacodegeeks.com/android/core/content/android-sharedpreferencesexample/
[9] http://www.androidhive.info/2011/11/android-sqlite-database-tutorial/
[10] Stuart Russell, Peter Norvig ,Artificial Intelligence A Modern Approach (Third Edition) capitolul
18
[11] http://en.wikipedia.org/wiki/K-means_clustering
[12] http://en.wikipedia.org/wiki/Determining_the_number_of_clusters_in_a_data_set
[13] http://web.stanford.edu/~hastie/Papers/gap.pdf : Estimating the number of clusters in a data
set via the gap statistic Robert Tibshirani, Guenther Walter, Trevor Hastie
[14] http://en.wikipedia.org/wiki/Genetic_algorithm
[15] Ducatel, Ken and Bogdanowicz, Marc and Scapolo, Fabiana and Leijten, Jos and Burgelman,
Jean-Claude, Scenarios for ambient intelligence in 2010, 2001
ftp://ftp.cordis.europa.eu/pub/ist/docs/istagscenarios2010.pdf
[16]http://en.wikipedia.org/wiki/Ambient_intelligence
[17]http://software.ucv.ro/~cmihaescu/ro/teaching/ACA/docs/PCV.pdf
[18]http://en.wikipedia.org/wiki/Levenshtein_distance

48

S-ar putea să vă placă și