====== GeoLearner ===== ===== Information principale ===== Le but principal de cette application est de suivre les changements de position GPS de l'utilisateur quand il bouge. A partir de ces données nous allons reconnaitre les trajets de l'utilisateur. === Membres de l'équipe === * Ameni Merai * Yoann Boutin * Damien Palagi === Equipements === * IDE : Visual Studio Community 2015 * Hardware : Nokia Lumia 735 + Nokia Lumia 530 ===== Processus ===== === Scénario enregistrement de données === * L'utilisateur installe notre application et la lance pour la première fois. * L'application lui propose de commencer à suivre sa position grâce au GPS. {{:projets:plim:20152016:wp_ss_20151121_0001.jpg?200|}} * Après avoir appuyé sur "Start", nous commençons à enregistrer les déplacements de l'utilisateur grâce à ses coordonnées GPS. {{:projets:plim:20152016:wp_ss_20151121_0002.jpg?200|}} {{:projets:plim:20152016:wp_ss_20151121_0003.jpg?200|}} * Nous sauvegardons tous les changements de position au sein de l'application. * Une fois une première vague de données établies lorsque l'utilisateur aura appuyé sur le bouton "Stop", nous établissons des clusters de données à analyser. * Après analyse, le cluster est ajouté à la liste des trajets à visualiser. === Scénario visualisation des trajets === * L'utilisateur appuie sur le bouton "Visualize". * L'utilisateur arrive sur une autre page où est affiché la carte ainsi que la liste des différents trajets (clusters). {{:projets:plim:20152016:wp_ss_20151121_0004.jpg?200|}} * Il peut alors renommer ses trajets en appuyant sur le bouton "Renommer" de chaque trajet, mais il peut également appuyer sur un trajet afin de l'afficher sur la carte. {{:projets:plim:20152016:wp_ss_20151121_0005.jpg?200|}} {{:projets:plim:20152016:wp_ss_20151121_0006.jpg?200|}} * L'utilisateur pourra revenir sur l'écran d'accueil en appuyant sur le bouton de retour du téléphone. ===== Fonctionnement de l'algorithme HAC ===== L’algorithme de classification ascendante hiérarchique (CAH) est une méthode de classification automatique de données qui a pour but de repartir ces données dans un certain nombre de classes(clusters).\\ La classification ascendante hiérarchique est faite en **4** grandes étapes : - Préparation des données - Choix de l’indice de **dissimilarité** entre les individus : c’est la distance entre individus dans une classe. - Choix de l’indice **d’agrégation** : c’est la distance entre les individus appartenant à des classes différentes. Pour calculer cet indice, on utilise deux stratégies : stratégie du saut minimum ou //__single linkage__// (On regroupe les 2 éléments présentant la plus petite distance entre éléments des deux classes.) et stratégie du saut maximum ou du diamètre ou //__complète linkage__// (On regroupe les 2 éléments présentant la plus grande distance entre éléments des deux classes). - Choix de la partition finale : On définit un ensemble de classes de l'ensemble des individus tel que toute classe soit non vide, deux classes distinctes sont disjointes et tout individu appartient à une classe.\\ Initialement, chaque individu forme une classe (pour n individus on a n classes). A chaque itération, on calcule les distances entre les éléments d’une classe, et on les compare à l’indice de dissimilarité. Par la suite, on regroupe les classes deux à deux. Puis on fusionne celles qui sont les plus proches, selon l’indice d’agrégation, en remplaçant les deux classes regroupées par la nouvelle.\\ Contrairement au K-MEANS, le nombre de classes obtenus grâce au CAH n’est pas connu à l’avance. Il dépend de nombre d’éléments, de l’indice de dissimilarité et de l’indice d’agrégation. ===== Problèmes rencontrés ===== * Lorsque nous lançons l'enregistrement des données GPS nous voulions au départ lancer une tâche de fond afin de continuer l'enregistrement des données, même dans le cas ou l'utilisateur quitterai l’application. Malheureusement il se trouve que sur les applications Windows 8.1 il n'est plus possible de créer une tâche de fond d'enregistrement de données GPS (cf : [[https://social.msdn.microsoft.com/Forums/windowsapps/en-US/a3752d73-ea97-473a-9a6e-63c5012a4856/wp81-background-tasks-geofencing-geoposition-tracking]], première réponse). De ce fait nous avons décidé de bloquer le verrouillage automatique de l'écran pendant l'enregistrement de données afin de les récupérer tant que le téléphone est déverrouillé. * Au départ pour nos calculs de cluster nous utilisions une fonction de calcul de distance entre deux points qui était proposé dans l'algorithme de clustering HAC mais qui n'était pas bonne. Nous avons donc créé notre propre classe qui utilise la fonction //Haversine// qui permet de calculer la distance entre deux points en utilisant leur longitude et latitude. ===== Projet et explication de lancement ===== == Détails sur le lancement de l'application : == - Télécharger le .zip dans la partie suivante puis le dézipper. - Ouvrir la solution PLIM-GPS.sln sous Visual Studio puis la lancer avec ce dernier. == Fichier == {{:projets:plim:20152016:plim-gps.rar|}}