Outils pour utilisateurs

Outils du site


Panneau latéral

Accueil

Select other language :


Apprentissage

Enseignements

Enseignements Département Informatique SI5 et Master IFI

Enseignements Département Bâtiment Polytech'Nice

Autres Formations française et étrangère

Activités administratives, Ingénierie et Innovation Pédagogiques

Apprentissage Département Informatique SI5/Master 2 ingénierie informatique EUR DS4H


Recherche

Valorisation de la Recherche

Dépôts Logiciels à l’Agence de Protection des Programme (APP)

Valorisation des résultats de recherche et transfert

Diffusion de la Culture scientifique et Technologique

Communications de presse

Séminaire ENSI Tunis

Pédagogie Innovante

Relations industrielles et socio-économique

Organisation de Manifestations

  • Conférence sur les FabLabs, Alexandre Schneider, Professeur Agrégé en Génie Mécanique, Université de Reims Champagne-Ardenne Web
  • Journées UbiMob'14 Site Web

Animation de la Recherche

U-Santé

Privé

Outils

Sources d'Informations

cours:plim:projet16_17:gr3:gr3

SmartRoad

Présentation du projet

  • Nom 1 : Thibault Ober
  • Créneau : PM
  • Nom 2 : Lucas Sauvage
  • Créneau : AM
  • Nom du Projet : SmartRoad

Un scénario d'illustration du Projet


Bob est un automobiliste lambda qui en a assez de perdre du temps dans les embouteillages. Bob ne quitte jamais le travail à la même heure, il ne se souvient donc jamais si la route sera embouteillée.

Bob décide de télécharger notre application pour éviter ces bouchons. Lors de sa première utilisation, Bob indique à l’application qu’il va prendre sa voiture pour effectuer son trajet quotidien. Bob roule ensuite comme à son habitude et arrive à destination. Une fois arrivé, il indique à l’application qu’il est bien arrivé à son point final.

Bob répète la même opération plusieurs fois afin que l’application collecte plusieurs fois les données. Au bout de x trajets, l’application commence à informer Bob du temps qu’il va mettre pour rentrer si il part maintenant. Bob peut également consulter des anciens relevés de ces trajets afin d'y retrouver les pires et meilleurs horaires de chaque jour.

L'application :

Application récupérant des informations sur le trajet quotidien de ses utilisateurs. Celle-ci déterminera le temps moyen du trajet de l'utilisateur. Plus précisément, l'idée est de pouvoir informer l'utilisateur dans combien de temps il sera chez lui s'il part maintenant (à cet horaire précisément). L'utilisateur a également la possibilité de consulter un résumé des anciens relevés de ces trajets.

Matériel disponible

  • LG G4
    • Caractéristiques techniques :
    • Android 6.0, Google Maps
  • Sony Xperia M2

Ressouces utilisées dans le Projet

Liste des capteurs mais aussi Data collectés par le Mobile, utilisés pour le projet :

  • GPS et réseau mobile pour obtenir la position de l'utilisateur

Listes des SDK et API pour l'accès à ces informations :

Le projet est-il faisable ? Oui, tous nos appareils sont équipés d’un GPS qui nous permettra de géolocaliser l’utilisateur à des intervalles de temps régulier. L’utilisateur n’a pas besoin d’avoir une connexion à internet permanente. En effet, les données collectées seront transmise au serveur à la fin du parcours.

Algorithme

L’idée dans un premier temps était de réaliser des statistiques sur les différents trajets de Bob au fil des mois afin d’extraire les horaires à éviter ou même les portions de trajets qui posent problèmes. Réaliser de simples statistiques ne nécessitent aucun algorithme d’apprentissage il s’agit d’attribuer à chaque trajet une plage horaire et de faire la moyenne des plages horaires pour connaître la meilleure heure de départ pour un jour donné.

Nous avons donc décidé de faire évoluer le projet pour tenir compte de cette problématique d’apprentissage. L’idée est connaissant :

  • Le jour
  • L’heure de départ
  • Le numéro du checkpoint qu’il vient d’atteindre
  • Le temps mis pour atteindre ce checkpoint

Nous allons calculer l’heure d’arrivée en fonction des précédents relevés réalisées.

Suite à notre discussion avec Mme DARTIGUES-PALLEZ, nous avons décidé de partir sur un algorithme SVM, algorithme qui semble être le plus approprié à notre projet.

Algorithme SVM (machines à vecteurs de support) :

  • Traitement du signal et de la mesure
    • Échantillonnage : Coordonnées GPS
    • Filtrage : Création de checkpoints parmis les coordonnées
    • Calcul de la mesure : Calcul des vitesses moyennes et des temps de trajet
  • Reconnaissance d’activité
    • Supervisé
    • Métrique : GPS

Pourquoi utiliser SVM ?

Contrairement à des algorithmes de clustering non supervisé, SVM permet de déterminer quel est le meilleur découpage de l'espace en fonction des données qui sont déjà classifiées/labélisées en amont.

KMEAN par exemple reçoit des données et les découpe en calculant les K meilleurs centroides. Une donnée appartiendra alors à un groupe seulement en fonction de sa réciprocité envers un centroide, ce qui peut amener de nombreuses erreurs selon la répartition des groupes.

Si en revanche nous savons déjà à quel type de groupe apparient une donnée (cf: bon trajet/mauvais trajet), SVM utilisera ces informations pour déterminer quelle est la meilleure fonction qui découpe ces différents groupes. Dans notre programme nous savons identifier de bons et de mauvais trajet en fonction de la durée du trajet et de sa différence à la médiane de tous les trajets. Nous avons définis 7 groupes, comme un bison futé, chaque groupe est représenté par un entier dans l'intervalle [-3;3]

  • -3 : durée < 50%
  • -2 : 50% < durée < 70%
  • -1 : 70% < durée < 90%
  • 0 : 90% < durée < 110%
  • 1 : 110% < durée < 130%
  • 2 : 130% < durée < 150%
  • 3 : 150% < durée

Ainsi nous améliorons la précision de l'algorithme d'apprentissage. KMEAN ne fonctionne pas de cette manière on se contente de lui donner des données qu'il va classifier en k groupes distincts. Si nous ne sommes pas sûrs de la répartition de nos échantillons dans un repère à n dimensions où une dimension peut par exemple correspondre au jour de la semaine KMEAN peut s'avérer désastreux.

Si nous prenons comme exemple la répartition de points en 2 groupes distincts (jaune/mauve). KMEAN calculera les centroides et rapprochera des points qui dans notre cas n'appartiennent pas à la même classe.

SVM quant à lui découpera l'espace en préservant les groupes du mieux qu'il peut.

Dernier avantage de SVM, il permet de classifier des points mêmes en ayant des coordonnées manquantes ce qui correspond à notre problématique car certains checkpoints n'ont pas encore été atteints or nous voulons une prédiction quant à l'heure d'arrivée.

Code, installation et explications


Voir les deux README.md sur nos repesitorys github :

cours/plim/projet16_17/gr3/gr3.txt · Dernière modification: 2017/02/17 17:59 par lsauvage