Διαχείριση Δικτύων (ΕΠ 17) Εαρινό Εξάµηνο 2014-2015 Εργασία Εξαµήνου, Ηµεροµηνία Παράδοσης: Ηµέρα Εξέτασης Μαθήµατος (25/6/2015) Οµαδική εργασία (2 ατόµων) Σε αυτή την εργασία καλείστε να υλοποιήσετε ένα Application (Web ή Desktop) σε γλώσσα προγραμματισμού της επιλογής σας. Πιο αναλυτικά, το πρόγραμμα που θα υλοποιήσετε θα πρέπει να: 1. Επεξεργάζεται τα δεδομένα των datasets 2. Οπτικοποιεί την πληροφορία των δεδομένων 3. Αναλύει τα γεωγραφικά δεδομένα των χρηστών από το datasets 4. Εξάγει συμπεράσματα από το προηγούμενο βήμα Access Points. Η κάθε γραμμή περιέχει τα ακόλουθα χαρακτηριστικά χωρισμένα με κόμμα που μέτρησε ο χρήστης σε μια χρονική στιγμή: User, το όνομα του χρήστη που έκανε τη μέτρηση (user anonymization) SSID του Access Point BSSID του Access Point (Mac address) RSSI του Access Point εκείνη τη στιγμή Frequency Latitude AP Longitude AP Battery. H κάθε γραμμή περιέχει τα ακόλουθα χαρακτηριστικά χωρισμένα με κόμμα που μέτρησε ο χρήστης σε μια χρονική στιγμή: User, το όνομα του χρήστη που έκανε τη μέτρηση(user anonymization) Level το μπαταρίας Plugged, 0 αν δεν είναι φορτίζεται, 1 αν φορτίζεται μέσω ρεύματος, 2αν φορτίζεται μέσω USB GPS. Η κάθε γραμμή περιέχει τα ακόλουθα χαρακτηριστικά χωρισμένα με κόμμα που μέτρησε ο χρήστης σε μια χρονική στιγμή: User, το όνομα του χρήστη που έκανε τη μέτρηση(user anonymization) Latitude χρήστη Longitude χρήστη Base Stations. H κάθε γραμμή περιέχει τα ακόλουθα χαρακτηριστικά χωρισμένα με κόμμα:
User, το όνομα του χρήστη που έκανε τη μέτρηση(user anonymization) Operator Mcc Mnc Cid Lac Latitude, του Base station Longitude, του Base station Ζητούμενα της εργασίας 1. Επεξεργασία των δεδομένων Στο πρώτο ερώτημα καλείστε να βρείτε την ακριβή γεωγραφική τοποθεσία των Access Points. Θα παρατηρήσετε από το dataset, ότι ένα Access Point με το ίδιο BSSID μπορεί να έχει παραπάνω από μια εγγραφές με διαφορετικό ζευγάρι latitude- longitude και RSSI. Αυτό συμβαίνει διότι ένα Access Point μετρήθηκε από περισσότερους από έναν χρήστες, σε διαφορετικό χρόνο και γεωγραφική τοποθεσία. Συγκεκριμένα, θα πάρετε όλες τις εγγραφές που αντιστοιχούν στο ίδιο Access Point, δηλαδή με το ίδιο BSSID ανεξαρτήτου χρήστη, RSSI, latitude, longitude και timestamp και θα βρείτε το εκτιμώμενο/μέσο σημείο (estimated point) για αυτό. Η παραπάνω διαδικασία θα πραγματοποιηθεί για όλα τα Access Points που το BSSID βρέθηκε παραπάνω από δύο φορές μέσα στο δείγμα των δεδομένων. Εκείνα που βρέθηκαν μια φορά από τις μετρήσεις των χρηστών θα ληφθούν υπόψιν. Για την εύρεση του εκτιμώμενου/μέσου σημείου θα χρησιμοποιήσετε τον αλγόριθμο C που θα τον βρείτε στην αναφορά [1]. Αναλυτικά ο αλγόριθμος που θα υλοποιήσετε είναι ο εξής: Convert Lat 1 and Lon 1 from degrees to radians. lat 1 = lat 1 * PI/180 lon 1 = lon 1 * PI/180 Convert dbm to mw (RSSI/ 10) w 1 = 1mW 10 and totalweight = w 1 + w 2 +... + w n Calculate the weighted latitude and longitude. lat = (lat 1 *w 1 + lat 2 *w 2 +... + lat n *w n )/totalweight lon = (lon 1 *w 1 + lon 2 *w 2 +... + lon n *w n )/totalweight Αφού κάνετε την παραπάνω διαδικασία, και βρείτε το ακριβές γεωγραφικό σημείο για κάθε Access Point, θα χρησιμοποιήσετε αυτή την πληροφορία στα παρακάτω ερωτήματα.
2. Οπτικοποίηση των δεδομένων Στο δεύτερο ερώτημα, ο χρήστης που πλοηγείται στην εφαρμογή σας, θα έχει τη δυνατότητα να επιλέξει α) ένα χρονικό περιθώριο (όπως μήνα, βδομάδα ή μέρα) και β) έναν χρήστη από το dataset. Αφού τα επιλέξει, θα πρέπει να γίνουν plot σε χάρτη(βλέπε την Παρατήρηση 1) τα εξής: 1) Τα Access Points που έχει καταγράψει ο χρήστης με το χρονικό περιθώριο που επιλέχθηκε παραπάνω. Παραδείγματος χάρη να εμφανίζονται με μορφή stickers τα Access Points με ένα μέσο RSSI εάν τα έχει βρεθεί παραπάνω από μία φορά και τη συχνότητα στην οποία εκπέμπουν. 2) Τη διαδρομή που έκανε ο χρήστης μέσα σε αυτό το χρονικό περιθώριο. Εδώ θέλουμε να ενώσετε τα σημεία της διαδρομής του χρήστη (π.χ. google maps - polyline). 3) Ένα διάγραμμα level/χρόνου μπαταρίας που να παρουσιάζει τη μεταβολή της μπαταρίας στο χρόνο διάστημα που επιλέξαμε. 4) Τα Cells στα οποία συνδέθηκε ο χρήστης μέσα στο χρονικό περιθώριο που επιλέξαμε. Εδώ θέλουμε να μας δείξετε με ένα sticker τα χαρακτηριστικά του Base Station. Παρατήρηση: Αν ο χρήστης που έκανε την καταγραφή δεν χρησιμοποιούσε κάποιο service(web, Mail, VoIP, etc), τότε το API του Android απλά επέστρεφε ένα Base Station χωρίς latitude και longitude(no Service). Άρα στο τελευταίο ερώτημα πρέπει να οπτικοποιήσετε εκείνα τα Base stations που έχουν γεωγραφική πληροφορία και προέρχονται από τον χρήστη που επιλέξατε παραπάνω. 3. Ανάλυση δεδομένων 1) O χρήστης θα έχει τη δυνατότητα να επιλέξει α) ένα χρονικό περιθώριο (όπως μήνα, βδομάδα ή ημέρα) και β) έναν οποιοδήποτε χρήστη από το dataset. Αφού τα επιλέξει, θα του εμφανίζονται σε χάρτη τα stay points του χρήστη που διάλεξε. Τα stay points είναι συστάδες σημείων που ορίζουν μικρές περιοχές για τις οποίες ο χρήστης έμεινε για κάποιο χρονικό διάστημα. Εξαλείφοντας έτσι τα σημεία που βρισκόταν εν κινήσει. Ένα stay point περιγράφεται από τις συντεταγμένες του κεντροειδούς σημείου της συστάδας, καθώς και τον χρόνο άφιξης και αποχώρησης του χρήστη από αυτό. Συγκεκριμένα ένα stay point ορίζεται από μια σειρά σημείων P 1 εώς P n. Εάν ισχύουν οι παρακάτω περιορισμοί: Χωρική_Απόσταση (P s,p e ) < D max Χρονική_Διαφορά (P s,p e ) > T min Και για κάθε σημείο μέσα στο stay point θα πρέπει να ισχύει: Χρονική_Διαφορά (P k,p k+1 ) < T max k [s,e-1] Οι παράμετροι D max, T min και T max θα δίνονται από τη γραφική διεπαφή. Ακολουθεί ο ψευδοκώδικας για τον αλγόριθμο του ερωτήματος.
2) Στο δεύτερο υπο- ερώτημα, ο χρήστης θα έχει τη δυνατότητα να επιλέξει α) ένα χρονικό περιθώριο και αφού το κάνει αυτό θα πρέπει να εκτελεστεί η διαδικασία του παραπάνω υπο- ερωτήματος για όλους τους χρήστες. Από τα stay points όλων των χρηστών για αυτό το διάστημα καλείστε να εφαρμόσετε ένα δεύτερο επίπεδο συσταδοποίησης ώστε να υπολογιστούν τα points of interest. Ένα point of interest περιγράφεται από τις συντεταγμένες του κεντροειδούς σημείου της συστάδας, καθώς και από τις ελάχιστες και μέγιστες συντεταγμένες των σημείων του. Συνεπώς τα points of interest μπορoύν να απεικονιστούν με ένα παραλληλόγραμμο στο χάρτη. Για τον υπολογισμό των points of interest καλείστε να εφαρμόσετε τον αλγόριθμο συσταδοποίησης DBSCAN (βλέπε την ανφορά [3]). Οι παράμετροι του οποίου θα πρέπει να δίνονται από τη γραφική διεπαφή. Μπορείτε να χρησιμοποιήσετε έτοιμες υλοποιήσεις του αλγορίθμου DBSCAN. Παρατήρηση: Περισσότερες πληροφορίες για τον πρώτο αλγόριθμο βρίσκονται σε αυτό το άρθρο [2], ενώ πληροφορίες για τον δεύτερο αλγόριθμο μπορείτε να βρείτε εδώ [3].
4. Εξαγωγή Συμπερασμάτων 1) Να δημιουργήσετε ένα Bar Diagram που να δείχνει τον αριθμό των χρηστών που βρέθηκαν με χαμηλό ποσοστό μπαταρίας (< 15 %) ανά ώρα για όλες τις ημέρες. 2) Επιλέξτε για μια συγκεκριμένη διαδρομή σε συνέχεια από το ερώτημα 2. 2) για κάποιο χρήστη και εμφανίστε με χρονική σειρά τα σημεία πρόσβασης στο δίκτυο που θα μπορούσε να συνδεθεί ώστε να ελαχιστοποιήσει την κατανάλωση μπαταρίας του τερματικού του. (Έχοντας ως παραδοχή ότι ο χρήστης μπορεί να συνδεθεί σε όλα τα Αccess Points που έχει καταγράψει) 3) Να δημιουργήσετε Bar Diagram που να δείχνει πόσους χρήστες διαθέτει η κάθε εταιρία κινητής τηλεφωνίας που βρίσκεται στο dataset. 4) Στα point of interest που υπολογίστηκαν στο ερώτημα 3. 2), έστω ότι χρειάζεται να προσθέσετε δύο καινούργια Access Points μόνο μέσα σε αυτήν την περιοχή. Που θα τα τοποθετούσατε και σε ποιά συχνότητα έτσι ώστε να περιορίσετε την παρεμβολή; (Για το ερώτημα αυτό μπορείτε να δώσετε είτε υλοποίηση(bonus 10%) είτε απλή επεξήγηση(υποχρεωτικό) στο README σας) Παρατήρηση 1. Στο δεύτερο ερώτημα θα χρειαστεί να χρησιμοποιήσετε χάρτη για να τοποθετήσετε τη γεωγραφική πληροφορία (latitude, longitude) για τα δεδομένα. Για αυτή την αναπαράσταση, σας προτείνουμε να χρησιμοποιήσετε είτε το API του Google maps (https://developers.google.com/maps) είτε το API του Open Street Maps (http://wiki.openstreetmap.org/wiki/openlayers). Παρατήρηση 2. Για να δημιουργήσετε τα διαγράμματα για το δεύτερο αλλά και για το τέταρτο ερώτημα μπορείτε να χρησιμοποιήσετε όποια βιβλιοθήκη θέλετε. Προτείνεται αυτή: http://www.chartjs.org/ Παρατήρηση 3. Καλείστε να δώσετε τον πηγαίο κώδικα για την εργασία σας και ένα αρχείο README που να επεξηγεί τα βήματα που ακολουθήσατε σε κάθε ερώτημα. Το README πρέπει να είναι σε μορφή PDF. Επίσης θα πρέπει να στείλετε ένα τουλάχιστον screenshot από κάθε ερώτημα.
ΑΝΑΦΟΡΕΣ [1] http://www.geomidpoint.com/calculation.html [2] http://www.idiap.ch/~gatica/publications/montoliugatica- mum10.pdf [3] http://en.wikipedia.org/wiki/dbscan [4] https://developers.google.com/maps [5] http://wiki.openstreetmap.org/wiki/openlayers [6] http://www.chartjs.org/ [7] http://en.wikipedia.org/wiki/list_of_wlan_channels