M1 INFO et MIAGE

Liste des sujets de TER 2019

Le TER (Travail d’Étude et de Recherche) est un stage sous la direction d’un encadrant universitaire ou industriel qui s’effectue par groupe de 2 à 4 étudiants (ingénierie) ou seul (recherche). Il sanctionne la fin du Master 1 et s’étend sur environ 3-4 mois (2 jours par semaine).

  1. Extension WebAudio pour Firefox
  2. Scanner 3D
  3. Robot explorateur
  4. Flotilles de robots
  5. Bras Robot pour jeu de plateau
  6. Localisation des éléments d’un jeu de plateau
  7. Création d’une mini ferme de calcul basées sur des Raspberry Pi 2
  8. Utilisation de la programmation par contraintes pour la détermination des paramètres de modèles dynamiques
  9. Generation automatique de texte
  10. Utilisation du cloud pour du calcul haute performance
  11. Apprentissage de stratégies statiques
  12. Cabane à oiseaux connectée
  13. Défi orthographique
  14. Ordonnancement sous contraintes
  15. Optimisation multiobjectif pour l’ordonnancement
  16. Front de Pareto en programmation par contraintes
  17. Intégration de méthodes d’optimisation dans PlanetOptim
  18. Exploration exhaustive du Redi Cube
  19. ∆-Debugger de solveur de satisfiabilité en logique propositionnelle
  20. Diagnostic et théranostic par des méthodes de machine learning appliquées à des données métabolomiques
  21. Couplage optimisé dans les modèles pour l’écologie
  22. Exploitation de la faille de débordement de buffer ou de pile
  23. Adaptation d’un plugin audio instrument virtuel VSTi de C++ vers WebAudio
  24. Web Sémantique et IHM : conception automatisée de jeux de plateau distribués sur Table interactive – smartphones et tablettes
  25. Développement de techniques d’interactions dans 7wonders et études expérimentales
  26. Deep Learning for Solving Network Problems
  27. Comparaison expérimentale de plateformes de data stream
  28. Promotion de la santé dans les clubs sportifs
  29. Conception de Robot MicroMouse
  30. Application web pour le rétro gaming
  31. Réalisation d’un environnement pour les TP de sécurité
  32. Simulateur d’automates cellulaires non-uniformes
  33. Découpage de graphe pour accélérer la recherche de chemins
  34. Signatures d’image sur GPU
  35. Development of a management tool for computer games
  36. Prédiction du nombre d’appels du call center IZICAP

Extension WebAudio pour Firefox

  • Nombre d’étudiants souhaité : entre 2 et 4.
  • Encadrant : Michel Buffa.

Firefox va supprimer une partie importante pour WebAudio de ses devtools (console de debug). Michel Buffa est en contact avec les devs de Firefox qui sont d’accord pour vous aider à transformer ce qui existait en extension. Les extensions sont maintenant codées en RUST, plus en JS.
Il s’agit d’une opportunité rare de travailler avec les développeurs d’une application avec presque 300 millions d’utilisateurs.

Scanner 3D

Dans ce TER on s’intéresse à la création d’un scanner 3D. Pour cela, on modélisera une plateforme rotative sur laquelle sera déposé l’objet à scanner. Un Arduino contrôlera le moteur pour la rotation du plateau et un appareil photo ou une webcam afin de photographier sous plusieurs angles l’objet à scanner.

Robot explorateur

Ce TER s’inscrit dans un projet de robot explorateur capable de détecter et éviter des obstacles. Une première version. L’objectif ici est d’implémenter une version de l’algorithme [A](https://fr.wikipedia.org/wiki/Algorithme_A) sur Arduino. La difficulté vient du manque de mémoire disponible sur un Arduino.

Flotilles de robots

Ce TER s’inscrit dans un projet de robot explorateur capable de détecter et éviter des obstacles. Une première version avec des senseurs à ultrasons a été réalisée. L’objectif ici est de réaliser une flottille de robots explorateurs afin d’effectuer une carte de l’espace exploré. Ce TER a plusieurs objectifs, à savoir :

  • L’étude des techniques existantes pour l’exploration d’un espace.
  • La mise en place d’un protocole efficace de communication entre les différents robots.
  • Conception d’un châssis pour les robots en plexiglas ou modélisation et impression 3D.

Bras Robot pour jeu de plateau

Ce TER s’inscrit dans un projet de jeu de plateau physique multi-joueurs en ligne ou contre une IA. Par exemple, vous jouez avec le vrai jeu de Takenoko contre votre IA. Il faut pouvoir déplacer les éléments du jeu pour l’IA, c’est pourquoi vous utiliserez un bras robotique. Ce TER a plusieurs objectifs, à savoir :

  • L’étude des caractéristiques et des librairies disponibles pour l’utilisation des bras robotiques en général et en particulier pour le Joy-It ROBOT02.
  • Développer une librairie de commande du bras de robot Joy-It ROBOT02, ou améliorer une librairie existante.
  • Mettre en œuvre quelques mouvements dans un jeu réel, en fixant les emplacements ou en utilisant une librairie de reconnaissance pour les éléments d’un jeu.

Localisation des éléments d’un jeu de plateau

Ce TER s’inscrit dans un projet de jeu de plateau physique multi-joueurs en ligne ou contre une IA. Par exemple, vous jouez avec le vrai jeu de Takenoko contre votre IA. Il faut pouvoir localiser les éléments du jeu pour qu’ils puissent être manipuler par l’IA. Ce TER a plusieurs objectifs, à savoir :

  • L’étude des techniques et des librairies disponibles pour la localisation d’éléments sur un plateau de jeu.
  • Développer une librairie de localisation d’élément, ou améliorer / adapter une librairie existante.
  • Mettre en œuvre le suivi des éléments d’un jeu lors d’une partie entre humains ou entre humains et IA dotée d’un bras robotique.

Création d’une mini ferme de calcul basées sur des Raspberry Pi 2

En 2015, un étudiant du Master Informatique a créé une mini ferme de calcul de Raspberry Pi 2 contenant une vingtaine de Raspberry Pi 2 rangés dans un rack en bois et en aggloméré. L’une des difficultés était de faire courir les câbles d’alimentation dans le rack. Le but de ce projet est donc d’améliorer le rack grâce à l’impression 3D et à la découpe Laser. Le nouveau rack devrait être mieux conçu : plus compact ; mieux aéré ; plus élégant.

Utilisation de la programmation par contraintes pour la détermination des paramètres de modèles dynamiques

  • Nombre d’étudiants souhaité : 1.
  • Encadrants : Jean-Paul Comet et Marie Pelleau.
  • Prérequis : savoir coder en OCaml et connaître la logique de Hoare est un plus.

Ce TER a pour but d’utiliser la programmation par contraintes dans le cadre de la recherche de paramètres lors de la modélisation d’un réseau génétique. Un réseau génétique peut être vu comme un graphe étiqueté dont les sommets sont les gènes et les arcs les interactions signées entre gènes. Lorsqu’on cherche à comprendre le fonctionnement d’un réseau génétique, la modélisation est nécessaire car les expériences sont trop coûteuses et parfois impossibles. Mais le goulot d’étranglement de l’étape de modélisation est de manière récurrente la détermination des paramètres qui gouvernent la dynamique du modèle. Nous avons depuis plusieurs années développé une approche basée sur la logique de Hoare, initialement dédiée à la question de la correction des programmes impératifs. L’idée est de considérer une trace observée du système biologique comme une succession d’étapes élémentaires assimilable à un programme impératif, puis d’utiliser le calcul de la plus faible condition de la logique de Hoare pour calculer les contraintes sur les paramètres du modèle afin qu’il soit compatible avec la trace observée. On utilisera le solveur continu-discret AbSolute pour trouver les solutions du problème. Ce problème étant compliqué de part sa nature, il faudra aussi envisager de développer et d’implanter des heuristiques de recherche au sein du solveur afin d’aider la détermination de certaines solutions.

Generation automatique de texte

Ce projet a pour objectif la mise en œuvre de techniques pour engendrer automatiquement du texte sous contraintes.
On reprogrammera une technique existante et on la testera sur de nombreux problemes, puis on essaiera d’introduire des contraintes de plus en plus complexes pour donner de plus en plus de sens au texte

Utilisation du cloud pour du calcul haute performance

  • Nombre d’étudiants souhaité : 1.
  • Encadrant : Jean-Charles Régin.
  • Prérequis : bien programmer en java pour éviter autant que possible l’utilisation de librairies annexes.

Le cloud est souvent utilisé pour heberger des serveurs. Dans le cas présent on souhaite l’utiliser pour faire du calcul intensif, ce que propose de plus en plus les fournisseurs de cloud computing, comme Google avec les Google compute engine. Néanmoins, entre la « theorie » et la pratique il y a souvent une grande différence. L’objectif de ce TER est la mise en place d’une solution (autrement dit d’un ensemble d’outils en Java) permettant d’executer un programme Java sur une machine sur le cloud et de communiquer avec cette machine.

Apprentissage de stratégies statiques

  • Nombre d’étudiants souhaité : 1.
  • Encadrant : Jean-Charles Régin.
  • Prérequis : bien programmer en java ; un interet en programmation par contraintes est un plus.

De nombreuses methodes de resolution de problemes d’optimization combinatoires utilisent des methodes dynamiques, telle que la selection de variables ayant le plus d’impact.

L’idee est d’essayer de voir si on ne pourrait pas remplacer ces strategies dynamiques par des strategies statiques. Cela signifie qu’au lieu d’avoir une evaluation permanent des variables par rapport à un critère, on fait des precalculs puis on détermine un ordre de choix de variable a priori qui n’est plus remis en cause.

Cabane à oiseaux connectée

  • Nombre d’étudiants souhaité : entre 2 et 4.
  • Encadrant : Gaetan Rey.

Le but de ce projet est d’instrumenter une grande cabane à oiseaux, à l’aide d’une plateforme de type Raspberry Pi et de capteurs pour transformer cette grande cabane en bois en un objet connecté offrant différents services.

Cette cabane à vocation à rester toute l’année à l’extérieur à proximité (20 mètres) d’une habitation. On pourra donc connecter la plateforme au Wifi de la box de la maison. La liste des services et des capteurs n’est pas définie et pourra intégrer des idées provenant des étudiants. Actuellement les idées prévues sont :

  • Intégration d’une caméra pour une vision par-dessus pour visualiser tout ce qui est dans le plateau.
  • Utilisation de cette vidéo pour détecter l’absence de nourriture pour les oiseaux.
  • Intégration d’une ou plusieurs caméra latérale (au niveau de poteaux) pour observer les oiseaux.
  • Conception d’une interface permettant de visualiser en temps réel une ou plusieurs caméras.
  • Ajout de fonction d’enregistrement d’images, de séquences vidéo avec possibilité de synchronisation des différents flux.
  • Détection du type d’oiseaux ou à minima possibilité d’explorer une base de données des espèces pour identifier les espèces présentes.
  • Mise en place de statistiques (nombres d’oiseaux, fréquences, heures de passages, …) avec possibilités d’exports des données et de visualisation de celle-ci au format graphique.
  • Une modélisation de coques de protection des capteurs pourra être envisagée pour impression en 3D.

Deux types de plateformes sont envisagées pour être utilisée dans ce projet. Soit une plateforme à base de Raspberry Pi (accompagner de capteur Grove), soit une plateforme à base de Phidget.

Défi orthographique

  • Nombre d’étudiants souhaité : entre 2 et 4.
  • Encadrant : Serge Miranda.

S’approprier sa langue est un enjeu humain, culturel et citoyen. Son apprentissage peut être soutenu par l’utilisation d’outils. Le Conseil départemental 06 et le rectorat de Nice souhaitent s’associer autour d’une manifestation visant à promouvoir la réflexion linguistique des élèves chez les élèves de 6ème. Cela se manifestera au final par un “défi orthographique” qui se déroulera en présence d’un ensemble d’acteurs et de partenaires.

Le projet a deux niveaux :

  • 3 mois sur une application web de correction de dictées (avec IPR Littérature ) avec un “defi orthographique” les 23 et 24 Mai (concours pedagogique) à Villeneuve Loubet (200 élèves de collège).
  • Stage de 3 mois en suivi par le CG06 dans le cadre de la diffusion IA en collège sur utilisation d’outils de Deep Learning, par exemple Tensor Flow, pour l’aide pédagogique à partir de milliers de dictées pour aiguiller les élèves sur des exercices adaptés.

Ordonnancement sous contraintes

  • Nombre d’étudiants souhaité : 1.
  • Encadrant : Arnaud Malapert.
  • Prérequis : programmer en c++ ; un intérêt en programmation par contraintes.

Ce travail porte sur l’étude d’un problème d’ordonnancement de tâches sur des machines parallèles avec des contraintes de qualification des machines. Une machine perd sa qualification pour une famille de tâche si cela fait trop longtemps qu’elle n’a pas exécuté une tâche de cette famille.

L’objectif de ce TER est de continuer les travaux en cours sur ce sujet, notamment en développant des contraintes dédiées pour aider à la résolution du problème.

Optimisation multiobjectif pour l’ordonnancement

  • Nombre d’étudiants souhaité : 1.
  • Encadrant : Arnaud Malapert.
  • Prérequis : bien programmer en java ; un intérêt en programmation par contraintes.

Le but de ce TER est d’étudier des problèmes d’optimisation multiobjectif sur un réseau de contraintes temporelles de type PERT/CPM. L’optimisation multiobjectif a été très peu étudiée dans ces réseaux et tout reste donc à faire. Par contre, le problème d’ordonnancement est facile et très étudié. Beaucoup de variantes sont polynomiales.

Les méthodes PERT/CPM ou diagrammes de Gantt sont fréquemment utilisées dans l’industrie. Il existe de nombreux logiciels pour appliquer ces méthodes, par exemple Microsoft Project.

Front de Pareto en programmation par contraintes

  • Nombre d’étudiants souhaité : 1.
  • Encadrant : Arnaud Malapert.
  • Prérequis : bien programmer en java ; un intérêt en programmation par contraintes.

Ce travail porte sur la construction du front de Pareto en programmation par contraintes. En bref, le front de Pareto correspond à l’ensemble des solutions non dominées d’un problème multiobjectif.

L’objectif de ce TER est de développer des contraintes globales et des stratégies de recherche pour la construction du front de Pareto. La contrainte globale doit filtrer les solutions dominées alors que les stratégies de recherche doivent permettre de trouver efficacement des solutions non dominées.

Intégration de méthodes d’optimisation dans PlanetOptim

Ce travail porte sur l’intégration de méthodes d’optimisation développées par les encadrants dans le logiciel PlanetOptim développé par l’entreprise Milanamos à Sophia Antipolis.

L’objectif est de concevoir les requêtes que l’application PlanetOptim développé en Python sur une base MongoDB doit envoyer à une base de données orientée graphe Neo4j. Cette communication passera par une queue de message RabbitMQ.

Exploration exhaustive du Redi Cube

Il existe de nombreuses variantes du Rubik’s Cube, dont la complexité peut être évaluée via une exploration exhaustive de tous les mélanges possibles et de la manière de passer de l’un à l’autre. Un exemple parlant est celui du Rubik’s Cube, pour lequel il est connu que le « Nombre de Dieu » est 20, ce qui signifie que tout mélange peut être résolu via une combinaison d’au plus 20 mouvements.

Le but de ce projet sera de mener une étude similaire sur une variante récente du Rubik’s Cube, le Redi Cube, pour laquelle le nombre de Dieu n’est, à ma connaissance, pas encore connu. En plus de l’aspect « exploration exhaustive », on pourra s’intéresser à des aspects annexes, comme la recherche de méthodes pour résoudre le Redi Cube, la création d’une interface graphique pour faciliter l’utilisation, etc.

∆-Debugger de solveur de satisfiabilité en logique propositionnelle

L’écriture de solveur de satisfiabilité, qu’importe la logique, est une tâche extrêmement compliquée. Le développement peut donc impliquer des bugs très difficile à découvrir.

Une manière de déboguer automatiquement un solveur est de réaliser ce que l’on appelle un débogage delta. Une seule hypothèse est effectuée : nous connaissons à l’avance le résultat attendu sur un jeu de tests t.

Nous lançons donc le solveur bogué sur le test t. Seulement, le solveur ne renvoie pas le résultat attendu. Nous pouvons donc simplifier le test t, en supprimant certaines parties par exemple, afin d’obtenir un test t’ qui a moins de chance de déclencher le bug dans le solveur. Si ce coup-ci le solveur répond correctement, alors le plus petit problème qui déclenche le bug est t, sinon nous avons trouvé un nouveau problème t’, plus petit, qui déclenche le bug. Nous pouvons donc considéré que t = t’ et recommencer ainsi toute la procédure. Cette procédure boucle tant que nous pouvons supprimer des parties dans t et que le solveur répond toujours de manière incorrecte.

  • Références:
    • [Zel01] Andreas Zeller. Automated debugging : Are we close. IEEE Computer, 34(11) :26–31, 2001.
    • [Zel05] Andreas Zeller. Why Programs Fail : A Guide to Systematic Debugging. Morgan Kauf- mann Publishers Inc., San Francisco, CA, USA, 2005.

Diagnostic et théranostic par des méthodes de machine learning appliquées à des données métabolomiques

  • Nombre d’étudiants souhaité : 1.
  • Encadrant : Michel Barlaud
  • Prérequis : bonne maîtrise des techniques d’apprentissage supervisées (SVM, LASSO, etc) ; programmation Matlab ; des connaissances en optimisation convexe sont un plus.

Avec sa plateforme de spectrométrie de masse et sa forte interface avec des cliniciens, le laboratoire TIRO étudie des méthodes innovantes de métabolomique notamment pour le dépistage, diagnostic et théragnostic dans le domaine de différents cancers (sein, rein, thyroïde et gliome). La métabolomique est une approche nouvelle et émergente qui consiste à analyser les petites molécules (métabolites) contenus dans un échantillon de tissu ou de fluide biologique. Chaque analyse fournit de grosses quantités de données qu’il faut traiter pour dériver des signatures pertinentes permettant une prise en charge personnalisée des patients ou une meilleure compréhension des mécanismes biologiques sous-jacents.

Dans ce stage, nous proposons d’analyser les données de métabolomique issues de patients grâce à des techniques les plus récentes en Machine Learning (classification supervisée avec sélection de biomarqueurs avec des approches d’optimisation convexe), développées au laboratoire I3S et à Nice. Ils seront intégrés dans les méthodes de traitement de données de métabolomique mis en place par le laboratoire TIRO pour des finalités en médecine et toxicologie. Le stage se déroulera au laboratoire TIRO (Faculté de Médecine) en interface avec le laboratoire I3S.

Couplage optimisé dans les modèles pour l’écologie

  • Nombre d’étudiants souhaité : 1.
  • Encadrant : Cinzia Di Giusto.
  • Prérequis : bien programmer en java ; un intérêt en programmation par contraintes.

Un écosystème est un système intégrant des agents biotiques et abiotiques qui interagissent entre eux. Nous modélisons les écosystèmes comme un ensemble d’agents et un ensemble de règles de réécriture qui expriment les conditions d’apparition et disparition des agents.

La similarité entre deux écosystèmes peut être définie au niveau de la syntaxe comme un problème d’optimisation . Elle est basée sur des contraintes qui mettent en relation les agents et les règles des deux systèmes. La fonction objectif majore le nombre d’éléments appariés et pénalise ceux qui ne correspondent pas parfaitement. Des coefficients sont utilisés pour pondérer les préférences et diriger la recherche des correspondances.

Au cours du stage l’étudiant devra:

  • Modéliser la fonction de gain dans l’outil d’optimisation de son choix;
  • Implémenter un traducteur automatique pour générer les fonctions de gain à partir de la spécification des écosystèmes;
  • Tester son implémentation sur les modèles à nos disposition, pour étudier les limites de la méthode proposée.

Exploitation de la faille de débordement de buffer ou de pile

  • Nombre d’étudiants souhaité : 1.
  • Encadrant : Sid Touati.
  • Prérequis : programmation C, programmation assembleur x86, compilateur gcc.
  • Référence : Aleph One, “Smashing The Stack For Fun And Profit”.

Lorsqu’un programme contient un bug de type “débordement de pile ou de buffer” (stack overflow), il est théoriquement possible de lui faire exécuter un code malicieux. Cela se fait en fournissant un jeu de données corrompues à l’entrée de ce programme. Ces données corrompues contiennent un code malicieux, qui sera stocké sur la pile d’exécution du programme (pile de fonction).

Ensuite, en déroutant le flot d’exécution du programme à la fin d’une fonction (grâce à l’instruction RET), il est possible de faire brancher brancher le programme vers un code malicieux stocké sur la pile. Les codes attaqués peuvent être de différentes natures. Bien sûr, le cas le plus dangereux est l’exploitation de failles dans des primitives ou commandes système. Mais aussi, ce qui est plus commun, est d’exploiter des failles dans des applications moins critiques, mais largement diffusées (navigateurs web, serveurs web, ou toute autre application). Ces failles de type “stack overflow” sont connues depuis plusieurs décennies, et continuent d’exister dans plusieurs applications actuelles. Il existe des sites web qui recensent ces failles, que les pirates essayent d’exploiter rapidement avant qu’un patch ne vienne corriger le bug. Parfois, des failles ne sont pas rendues publique pour éviter qu’elles ne soient exploitées, ou pour justement les exploiter en toute discrétion (et ne pas inciter à les colmater).

Le but de ce TER est de comprendre le mécanisme bas niveau qui permet d’exploiter un bug informatique de type débordement de buffer ou pile. Idéalement l’étudiant devrait l’expérimenter sur sa machine avec des codes exemples simples, et montrer qu’il arrive à “pirater” un code bugué. Ce TER est destiné à un étudiant intéressé par les aspects d’informatique bas niveau (système d’exploitation, compilation, programmation assembleur, programmation C).

Adaptation d’un plugin audio instrument virtuel VSTi de C++ vers WebAudio

  • Nombre d’étudiants souhaité : entre 2 et 4.
  • Encadrant : Michel Buffa.

L’objectif de ce TER est d’adaptater un plugin audio instrument virtuel VSTi écrit en C++ vers le format WebAudioModule (WebAssembly) pour l’intégrer dans logiciels hôte/séquencer en ligne basés Web. Le standard WebAudioModules, propose de cross compiler les plugins “standards” du monde natif (VST, etc.) de C++ vers du WebAssembly + création de GUI photo-réaliste à l’aide de WebComponents, par exemple, ceux de WebAudio Controls.

Le plugin original que nous proposons de transposer vers le Web est un “instrument virtuel” au format VSTi : revitar2[1], qui est open source et qui semble être assez simple pour un projet étudiant. La vidéo de la version originale ici Le source est disponible ici voir aussi sur github. Le projet est intéressant car il met en oeuvre des technologies émergeantes comme WebAssembly et WebComponents. Vous aurez le support des auteurs du framework WebAudioModules, et de MichelBuffa, expert WebAudio et WebComponents.

Le plugin sera intégré dans un logiciel “host” AmpedStudio.com et dans l’outil “dynamic pedalboard” développé par Michel Buffa et son équipe (voir la vidéo).

Web Sémantique et IHM : conception automatisée de jeux de plateau distribués sur Table interactive – smartphones et tablettes

Des étudiants du parcours IHM ont développé plusieurs jeux de plateau multi-devices permettant de jouer autour d’une table interactive, chaque joueur ayant une tablette ou un smartphone en sa possession pour réaliser certaines tâches (étapes du jeu). La conception de ces jeux fixe la répartition des tâches à réaliser dans le jeu entre la table et/ou les tablettes. Cette répartition se fait à travers un ensemble de règles.

L’objectif de ce TER est de générer les conceptions possibles respectant un ensemble variable de règles de répartition à partir d’un arbre de tâches annoté par la nature publique ou secrète des données manipulées dans les tâches. Les différentes conceptions doivent être visualisables sous forme de graphes, d’arbres, etc. Les étudiants testeront leur solution à partir des arbres de taches de jeux déjà développés.

Les étudiants utiliseront l’outil Corese. Le langage RDF permet de décrire les tâches annotées. Sparql est un langage de requêtes qui permet d’interroger du RDF. Le moteur de règles permet de faire les déductions. La visualisation se fait par transformation de règles vers la librairie D3.js, la visualisation arborescente et la visualisation graphe sont déjà intégrées à Corese.

Développement de techniques d’interactions dans 7wonders et études expérimentales

Le travail s’inscrit dans des travaux de recherche étudiant la conception et la réalisation de systèmes interactifs répartis sur plusieurs dispositifs. Ici ces systèmes sont des jeux de plateaux comme 7wonders et les dispositifs sont une table (tactile et tangible) et des tablettes (une par joueur). La conception, s’intéressant plus particulièrement à la répartition des actions du jeu entre la table et/ou les tablettes ainsi que les transitions entre ces actions, se base sur la théorie de la territorialité pour les tables interactives [Scott 2010].

À partir d’une version de 7wonders développée en javascript (clients et serveur), le travail consiste à étudier les transitions des actions faites sur la table ou une tablette vers l’autre dispositif. Le groupe doit donc analyser le jeu pour proposer les situations où les transitions sont le plus cruciales. Il faut aussi développer les mécanismes d’initialisation des situations et des modalités de transitions et de répartition choisies, ainsi que plusieurs techniques d’interactions (et de répartitions) pour les actions concernées. La réalisation et l’interprétation d’expérimentations (avec des utilisateurs) sont l’objectif principal de ce sujet.

[Scott 2010] Stacey Scott and Seelagh Carpendale. 2010. Theory of Tabletop Territoriality. In C. Müller-Tomfelde (Ed.) Tabletops - Horizontal Interactive Displays, pages 375-406. Springer, Heidelberg (2010)

Deep Learning for Solving Network Problems

In the last years, Deep Reinforcement Learning [1] have obtained ground-breaking results at solving highly complex tasks, such as beating AlphaGo world champion or achieving state of the art results at video games (Atari, Doom).

In the current Internet and future networks such as 5G, NP problems arise when, for example, we try to smartly route the integral video flows and choose the processing locations where they will be transformed, in order to maximize users’ perceived video quality and/or minimize energy consumption [6]. Such problems are usually tackled with heuristic methods providing only approximated solutions.

A few years ago, Dai et al. [2] has shown the interest of Deep RL to learn heuristic algorithms to solve some classical NP-hard problems on graphs by combining RL with graph embedding (GE) [3], [4], a kind of representation learning applied to graphs. GE obtains a more compacted and lower dimensional graph representation where the RL scheme can solve easier the optimization problem.

In this TER, we want to assess how much we can gain if we adopt this RL+GE architecture to solve classic but complex network problems, as the integer capacitated routing problem. A close problem has been recently addressed by Valadasrki et al [5] by using solely RL, pointing out how the huge size of the native data representations of the problem supposes a challenge to efficiently solve it with ML tools.

Goal: The goal of the TER is to evaluate how much we can “improve” the deep RL schema used to solve the routing problem in [5] by adding a GE approach [3].

  • Phase 1: Getting familiar with the problem, envisioned solution and existing codes (GE and RL algorithms).
  • Phase 2: Integration of GE within the existing deep RL code used to solve a network routing problem.
  • Phase 3: Assessment of the gain with GE with respect to the original results.

Expected Skills

  • Languages:
    • Python language absolutely
    • Deep Learning libraries (like TensorFlow, Keras, rllab, OpenAI Gym) appreciated
  • Theory:
    • Machine Learning, Data Science, particularly Neural Networks theory very recommendable
    • Classical optimisation theory (Linear Programming, Dual Optimisation, Gradient Optimisation, Combinatorial Optimization) appreciated
  • Technology:
    • Computer networking notions are welcome, but they are not absolutely necessary.

References

  1. V. Mnih et al.. Asynchronous Methods for Deep Reinforcement Learning. Int. Conf. On Machine Learning (ICML), 2016.
  2. H. Dai, E. B. Khalil, Y. Zhang, B. Dilkina and L. Song. Learning Combinatorial Optimization Algorithms over Graphs. Conf. On Neural Information Processing Systems (NIPS), Dec. 2017.
  3. W. L. Hamilton, R. Ying and J. Leskovec. Representation Learning on Graphs: Methods and Applications. arXiv:1709.05584, Apr. 2018.
  4. H. Cai, V. W. Zheng and K. Chen-Chuan Chang. A Comprehensive Survey of Graph Embedding: Problems, Techniques and Applications. IEEE Transactions on Knowledge and Data Engineering 30 (2018): 1616-1637.
  5. A. Valadarsky, M. Schapira, D. Shahaf, & A. Tamar., Learning To Route with Deep RL, 1st Conference on Neural Information Processing Systems (NIPS 2017), Long Beach, CA, USA.
  6. TensorFlow Guide​, the TensorFlow’s official documentation.
  7. R. Aparicio-Pardo and L. Sassatelli. A Green Video Control Plane with Fixed-Mobile Convergence and Cloud-RAN. Internation Teletraffic Congress, Sep. 2018.

Comparaison expérimentale de plateformes de data stream

  • Nombre d’étudiants souhaité : entre 2 et 4.
  • Encadrants :Fabrice Huet et Alessio Pagliari.
  • Prérequis : connaissances en Java et en shell Unix indispensables.

Depuis quelques années l’analyse des données représente un besoin énorme des entreprises qui essaient d’extraire le plus rapidement et le plus efficacement possible des informations à forte valeur ajoutée. Il y a en général deux approches. La première consiste à faire une analyse détaillée mais couteuse sur un gros volume de données, typiquement toutes les 24h. La deuxième consiste à analyser les données au vol lorsqu’elles arrivent dans le système. On parle dans ce cas de data-streams. Il existe de nombreux systèmes pour traiter ces données. Les plus célèbres sont par exemple Apache Storm, Apache Heron ou Spark Streaming. Le but de ce travail est de comparer expérimentalement plusieurs plateformes. Pour cela, il faudra

  • designer plusieurs benchmarks représentant des applications typiques
  • les implémenter sur chacune des plateformes choisies
  • effectuer des expérimentations à large échelle sur un cluster de dizaines de machines.

Technologies abordées : clusters, middleware de data stream (Storm, Heron, Spark Streaming…).

Promotion de la santé dans les clubs sportifs

La demande porte sur l’analyse et la mise à disposition de résultats issus de questionnaires remplis par des dirigeants, entraîneurs et pratiquants de clubs sportifs afin d’évaluer leur perception de la prise en compte de la santé dans les activités de leur club. A ce jour, nous ne disposons pas encore de données ce qui nécessite de réfléchir à la manière de générer des données synthétiques.

Des questionnaires auxquels répondent trois types de personnes (pratiquants, entraîneurs, et dirigeants) d’un même club. Les questions sont regroupées dans 4 dimensions (sociale, organisationnelle, économique, environnementale) et portent sur 3 niveaux (micro-, meso-, macro-). Les objectifs sont les suivants :

  1. Concevoir le calcul de score
  2. Analyser les données
    • Permettre de croiser les résultats entre pratiquants et entraineurs.
    • Permettre de croiser les résultats entre pratiquants, entraineurs et dirigeants.
  3. Présenter les résultats individuels et par club.
  4. Permettre à un club de se situer parmi les autres clubs répondant, en utilisant une infographie visuelle simple sur un score global, mais également par type de club. Classification à réaliser :
    • par dimension (sociale, organisationnelle, économique, environnementale) et
    • par niveau (micro-, méso-, macro-).
  5. Créer automatiquement une fiche imprimable par club et pour le score de toutes les personnes ayant encodé, qui permettrait à l’utilisateur de pouvoir évaluer son club par rapport aux autres.

Conception de Robot MicroMouse

  • Nombre d’étudiants souhaité : entre 2 et 4.
  • Encadrant : Enrico Formenti.

Connue par le nom de MicroMouse est une compétition oú plusieurs participants mettent en défi des robots portant le nom de MicroMouse. Il s’agit d’un robot mobile ayant une forme rappelant une souris. La mission du robot est de trouver, d’une manière autonome, le bon chemin au seint d’un labyrinthe afin de le résoudre; en cas d’une multitude de solutions, le robot doit trouver la meilleure solution qui équivaut au plus court chemin. La conception du robot doit se réaliser en 3 parties principales:

  • Réalisation de la partie motrice du robot: Il s’agit de réaliser le corps du robot contenant panneau connectant un moteur à des roues.
  • Réalisation de la partie “ordinateur” du robot: D’après mes recherches, ceci peut être réalisable en utilisant un microcontrolleur tel qu’un Arduino, ou un Raspberry PI. Ce controlleur s’occupera d’effectuer les calculs necessaires pour decider des mouvement du robots puis les transmet au moteur sours forme d’instruction (forward, backward, turn-right, turn-left, stop).

Le labyrinthe: Il s’agit tout simplement d’une version physique, exacte, d’un labyrinthe (tableau de valeurs) sur lequel l’ordinateur applique ses algorithmes de recherche.

Ce projet aura comme but d’introduire la conception de robots ainsi que d’approfondir mes connaissances sur les algorithmes de recherche, leur application.

Application web pour le rétro gaming

  • Nombre d’étudiants souhaité : entre 2 et 4.
  • Encadrant : Michel Buffa.

Un hobby à la mode est le “rétro gaming”. Je me suis construit pendant les vacances de Noël une mini console de rétro gaming, à l’aide d’un raspberry Pi 3B+, d’un joli boitier type Super Nintendo Mini, de manettes USB et BlueTooth, et de RetroPie, une distribution Linux pour Pi spécialement faite pour le rétro gaming. Cette distribution permet d’ajouter facilement des jeux sur le Raspberry sous forme de “fichiers de roms”, et un logiciel front-end, Emulation Station, permet de naviguer parmi les consoles de jeux et ordinateurs émulées, puis de choisir un jeu avant de le lancer. Emulation Station utilise pour cela un fichier gamelist.xml présent dans chaque dossier contenant des roms. Par exemple, le dossier “snes” contient des roms (parfois plus d’une centaine) et le fichier gamelist.xml contiendra la description textuelle des jeux, l’année de sortie, et des liens relatifs vers des images de la boite, du titre du jeu, et une vidéo de “preview” du jeu. Quand on se promène d’un jeu à l’autre on a ainsi une très belle présentation.

On arrive au sujet du projet : comment sont obtenues ces métadonnées sur les jeux ? La réponse est “à l’aide d’un logiciel appelé ‘scraper’”, en ligne de commande, qui permet d’analyser le fichier gamelist.xml existant, les fichiers de roms présents, et qui va ensuite chercher dans diverses sources de données sur le Web les images, vidéos, descriptions manquantes.
Soucis : il existe de nombreuses sources de données, et parfois le logiciel se trompe en récupérant les images et vidéo, il prend un jeu dont le nom est presque pareil, ou bien le même jeu, mais pour un autre système etc.

Alors comment font les gens ? Ils utilisent des logiciels avec une belle GUI, qui utilisent les APIs de ces sources de données, et utilisent rarement les outils lignes de commande. Ce sont des logiciels natifs pour windows. Le plus connu est skraper pour WIndows. Il n’en existe aucun pour Mac ou pour Linux.

Sujet du projet : puisque la ligne de commande marche directement sur le Pi, pourquoi ne pas proposer une WebApp qui serait servie directement par le Pi, et qui lancerait la commande du scraper, et afficherait les résultats? On allume le Pi, par ftp on dépose des roms dans les bons répertoire, puis on ouvre http://192.168.1.16/scraper (on suppose que l’ip est l’adresse du pi, et que le serveur HTTP développé dans le projet tourne et répond à l’URL /scraper). Et hop, on a une interface web permettant de choisir les répertoire à rescanner, les sources de données et aussi de régler les différents paramètre du scraper (l’outil qu’on va utiliser est installé en standard, c’est skyscraper voir son github. Le projet consistera donc à développer en technologie Web un serveur front end au-dessus de skyscraper, pour faciliter les tâches de récupération de médias et génération du fichier gamelist.xml à distance. Le fichier gamelist.xml est mis à jour par le scraper, vous n’aurez pas à créer de XML, juste à visualiser les résultats pour qu’on puisse vérifier que tout s’est bien passé. On peut imaginer également que votre appli permette d’uploader des roms, ce sera optionnel.

Technologies : soit RetroPie vient déjà avec un serveur HTTP, on essaiera de l’utiliser, soit on pourra installer un serveur léger type NodeJS ou autre. Pas de base de données, mais pas mal de travail d’interfaçage avec des commandes unix, parser les résultats etc…

Démonstration de l’existant dans le bureau de Mr Buffa. Un Pi avec une image prête à l’emploi pleine de jeux sera mise à votre disposition (cool !)

Vidéo de ce à quoi ressemble le front end existant pour le choix des jeux : vidéo youtube

Réalisation d’un environnement pour les TP de sécurité

  • Nombre d’étudiants souhaité : entre 2 et 4.
  • Encadrant : Bruno Martin.

Installer une machine sous linux avec un gestionnaire de machines virtuelles (VMware ou VirtualBox). Ce gestionnaire de machines virtuelles hébergera un hyperviseur (de type XenServer). Le serveur Xen hébergera lui-même plusieurs VM et 2 réseaux virtualisés:

  • une passerelle qui sert de serveur dns, serveur dhcp, firewall
  • 3 VM:
    • une qui servira de mini-serveur de services
    • une qui servira de client
    • une distribution d’audit de sécurité Le but est de faire fonctionner le tout avec a minima 2 rôles:
  • un rôle administrateur (qui a tous les droits)
  • un rôle étudiant (qui ne pourra modifier ni les réseaux, ni la passerelle mais qui aura les droits d’administrateur sur les 3 VM

Ce que vous apprendrez: gérer un hyperviseur ; mettre en place un serveur dns, un serveur dhcp et des règles de firewall ; utiliser une distribution d’audit de sécurité

Il s’agit de moderniser une installation existante.

Simulateur d’automates cellulaires non-uniformes

Les automates cellulaires sont des systèmes dynamiques discrets composés d’un ensemble de cellules disposés régulièrement sur une grille. Celles-ci se trouvent à tout moment dans un certain état. A chaque étape de temps, l’état des cellules est mis à jour en fonction d’une règle locale qui fait intervenir leur voisinage. Ce TER a plusieurs objectif :

  • Réaliser un simulateur pour la dynamique des automates cellulaires (classiques et non-uniformes),
  • Implémenter un certain nombre d’algorithmes de décision en lien avec eux.

Découpage de graphe pour accélérer la recherche de chemins

  • Nombre d’étudiants souhaité : 1.
  • Encadrant : Jean-Charles Régin.
  • Prérequis : il est indispensable de savoir bien programmer en Java.

Ce projet a pour objectif la mise en œuvre de techniques de découpage de graphes pour accélérer la recherche de plus courts chemins. Les algorithme de Dijkstra, de Bellman-Ford, A* et connectionScan seront étudiés et implémentés. Puis le graphe sera découpé en région afin de les accélérer.

Signatures d’image sur GPU

  • Nombre d’étudiants souhaité : 1.
  • Encadrant : Fabrice Huet.

le point de depart du sujet de TER, c’est les deux algos présentés ici qui permettent d’extraire des signatures.

Il faudrait les implémenter sur GPU et évaluer la performance par rapport à une version CPU (en Java, C…). Si les résultats sont intéressants, on passerait à la deuxième étape du projet qui consiste à trouver les images “similaires”, c’est à dire dont les signatures sont proches. De base la distance de Hamming fait le job mais il y a sans doute mieux. Encore une fois, l’idée sera de voir ce qu’on peut faire sur un GPU.

Enfin, si on a le temps, on passera à la dernière phase, la recherche de d’images similaires dans une énorme base. Avec n images si on s’y prend comme un manche on a O(n^2) comparaisons à faire, mais y’a des trucs vraiment sympa pour limiter l’espace de recherche. Une idée est de faire un pré-traitement des signatures pour regrouper celles qui sont proches et ainsi ne faire la comparaison qu’entre elles. Nom de code : Locality Sensitive Hashing.

Development of a management tool for computer games

  • Nombre d’étudiants souhaité : 1.
  • Encadrant : Jean-Charles Régin.
  • Prérequis : il est indispensable de savoir programmer en Java.

The purpose of this project is to develop a tool that allows two game programs to automatically compete against each other. Each player’s program will be provided as an.jar file. An API describing the needs of each game to transmit a move or to receive should be proposed and implemented. A series of tests checking the validity of the moves will also be defined. The variation of the Oware game as proposed in the AI game programming course will be used as tests. The possibility of communicating between the machines, without going through a computer centralizing the two.jar files, will eventually be studied in a second step

Prédiction du nombre d’appels du call center IZICAP

Izicap, créée en 2013, est une startup innovante basée à l’Arénas dont l’objectif est de créer un outil pour conseiller les commerçants de TPE ou PME dans leur stratégie marketing en dématérialisant les cartes de fidélité. Pour mieux aider leurs clients IZICAP a installé un Call Center. Le nombre d’appels dans ce call center varie en fonction du jour et des tranches horaires. La société est intéressée à créer une algorithme de prédiction pour pouvoir mieux optimiser les ressources dans ce centre.

Les activités confiés à l’étudiant seront les suivantes :

  • Etat de l’art : Faire une étude comparée de quelques framework de machine learning (R, Python, …)
  • Avec les données d’appels transformés et traités par les étudiants M2 MBDS, utiliser des algorithmes de machine learning du marché pour prédire les appels par tranche horaire d’une journée afin de mieux prévoir les effectifs au centre d’appel.
  • Technologies : Python, R, Androïd, SQL