====== Sujets, 2024/2025 Automne ====== =====RC1. Kaggle Challenge ===== ^ Domaines | Machine Learning (IA) | ^ Librairies (proposées) | scikit-learn, keras, tensor-flow... | ^ Langages (proposé) | Python, autre | ^ Responsable du sujet | Rémy Cazabet | ^ Informations à voir | [[https://www.kaggle.com/competitions | Challenges Kaggle en cours]] || | || [[https://www.kaggle.com/competitions | Kaggle]] est le site web le plus connu de challenges en machine learning. En 2 mots: des entreprises proposent des challenges auxquels n'importe qui peut tenter de proposer une solution. La meilleure solution gagne. Mais là où Kaggle est particulièrement intéressant, c'est qu'il propose des tutoriels pour résoudre certains problèmes classiques, en utilisant différentes méthodes. Votre objectif: 1) Suivre un/des tutoriels pour résoudre un problème tout fait, 2)Choisir un challenge en cours et appliquer ce que vous avez appris. L'objectif ici est de plonger dans des aspects un peu technique, voire théorique, du machine learning. =====RC2-A. Exploration/Analyse de données de votes ===== ^ Domaines | Data Mining, Data viz, Site Web | | ^ Librairies | Dash, networkx... | | ^ Langages (proposé) | Python(+javascript?) | | ^ Responsable du sujet | Rémy Cazabet | | Dans ce sujet, je vous propose de vous intéresser aux données de votes, soit des députés français, via l'API de nosdeputes.fr (https://github.com/regardscitoyens/nosdeputes.fr/blob/master/doc/api.md), soit sur les données du parlement européen (http://www.itsyourparliament.eu/api/), voire sur les données aux états-unis. L'objectif sera 1)D'extraire un jeu de données propre facilement réutilisable, permettant de suivre les parcours de votes des députés 2)De produire un outil de visualisation/exploration de ces données 3)Si possible, de produire un "compas politique", permettant de positionner les partis/les députés les uns par rapport aux autres (réduction de dimension, etc.) =====RC2-B. Exploration/Analyse de données de décès ===== ^ Domaines | Data Science, Big Data, Data Viz, Site Web | | ^ Librairies | Dash (https://dash.plotly.com/tutorial), python, html/CSS | | ^ Langages (proposé) | python, javascript, html... | | ^ Responsable du sujet | Rémy Cazabet | | Depuis peu, l'état français fournir un jeu de données très intéressant, car il est détaillé au niveau de l'individu et de la commune: le registre des décès. Pour chaque personne décédé depuis 1970, on dispose ainsi de ses informations: nom, prénom, sexe, date et lieu de naissance (ville, pays), lieu de décès. Je propose de faire un outil pour explorer ce données, permettant par exemple de retracer la mobilité des personnes (est-ce que les personnes décédées en 2022 vivaient plus loin de leur lieu de naissance que les personnes décédées en 2012, 1992... ?), mais cela permet également de tracer des courbes indirectes de popularité des prénoms à la naissance dans certaines villes, etc. Je propose pour faire cet outil de découvrir le framework Dash (https://dash.plotly.com/tutorial), permettant de créer des webapp orienté analyses de données. Si le côté peu réjouissant des données sources sont un problème, on peut envisager des alternatives (mais il n'y a pas l'équivalent pour les naissances ou les mariages, a ma connaissance. Mais il y a beaucoup de données libres fournies par des villes ou l'état français). =====RC3. Webapp pour comparer les tarifs de location de voiture ===== ^ Domaines | Web, dataviz... | ^ Librairies (proposées) | Dash ou autre. | ^ Langages (proposé) | Python, javascript, html/css, etc. | ^ Responsable du sujet | Rémy Cazabet | ^ Informations à voir | | | || Aujourd'hui, de nombreuses entreprises proposent de la location de voiture, en particulier de nouveaux acteurs tels que citiz, bolt ou leo&Go, qui ont introduit des facturations a la minute et au km, sur des voitures en libre service. L'objectif est de concevoir un site web, un outil en ligne, permettant de saisir des informations de trajets (distance, temps), et d'être capable de comparer les tarifs de ces diverses solutions. Des graphiques pourront par exemple montrer quand est-ce qu'une solution devient plus intéressante qu'une autre, en fonction du temps de location ou de la distance. Il y a une partie algorithmique pour parvenir à recoder les prix correctement à partir des informations fournies sur les sites web des entreprises =====RC4-A. Large language models pour un assistant virtuel hybride ===== ^ Domaines | IA, ... | ^ Librairies (proposées) | LM Studio, LangChain, Haystack, etc. | ^ Langages (proposé) | Python | ^ Responsable du sujet | Rémy Cazabet | ^ Informations à voir | | | || Les LLM (Large Languages Models) sont maintenant assez facile à utiliser sur une machine personnelle, notamment en utilisant LM studio. Vous pouvez donc avoir un "chatGPT" personnalisé, qui tourne en local sur votre machine. Votre objectif sera de créer un assistant virtuel composé d'un système hybride, dont l'objectif sera de gérer votre boite mail/vos messages SMS/Whatsapp, etc. Le système est hybride dans le sense où il est composé d'une partie en code classique: interface avec une application, formattage, envoi de requête, etc., et que la parte LLM sert uniquement de "cerveau" à ce système hybride. Le LLM doit par exemple servir non pas uniquement à générer du texte, mais à prendre des décisions, telles que classer le message en spam ou non, répondre ou non, détecter s'il y a un demande de rendez-vous, voire ajouter le rendez-vous dans un agenda automatiquement. Ce genre d'interaction avec ce "cerveau central" LLM pourra se faire via des questions à choix multiple imposé (étant donné le mail de contenu [...], dois-je le classer en spam, répond par OUI/NON). Le projet est ouvert à une autre application utilisant ce même principe de système hybride (e.g., RPG en mode texte sur une carte et des règles de jeux imposées par un code classique, "personnalité artificielle" effectuant des recherches sur le web via des requêtes et stoquant les résultats dans une base de données et/ou alimentant un site web, etc. Note: ce projet est exploratoire et les résultats ne sont pas garantis :) =====RC4-B. Large language models pour un RPG textuel (ou pas que) ===== ^ Domaines | IA, ... | ^ Librairies (proposées) | LM Studio, LangChain, Haystack, etc. | ^ Langages (proposé) | Python | ^ Responsable du sujet | Rémy Cazabet | ^ Informations à voir | | | || Ce projet est similaire au précédent (LLM), mais l'objectif est plus ludique: créer un jeu de type RPG textuel. Le principe est de reproduire l'expérience des jeux de rôle de type D&D: il existe un scénario prédéfini, avec des lieux, des salles, des objets et des PNJ. Mais le joueur est libre de faire ce qu'il veut dans cet environnement, par exemple décider de saisir un coffre au sol et le jeter sur un adversaire, en le décrivant textuellement au LLM. Le LLM doit donc se comporter comme le maître du jeu: il décide ce qui est possible ou non, décide combien de points de vie un personnage perd par telle action, réagis aux imprévus.. Mais il doit aussi intéragir avec un code classique pour gérer ce qui ne doit pas pouvoir être sujet à des hallucinations: nombre de points de vie des personnages, tirage de dés, respect des salles du donjon et des étapes du scnénario, etc. Il est possible pour un grand groupe d'ajouter une représentation visuelle simple (donjon 2D isométrique + boite de dialogue pour les interactions). =====RC5. Y: Simulateur de réseau social par LLM ===== ^ Domaines | IA, analyse de réseaux sociaux | ^ Librairies (proposées) | | ^ Langages (proposé) | Python | ^ Responsable du sujet | Rémy Cazabet | ^ Informations à voir | | | || Dans le cadre d'un projet de recherche, nous avons conçu un simulatuer de réseaux sociaux basé sur des LLM appelé "Y social" (https://ysocialtwin.github.io). Le principe est que des IA de type chatGPT (LLM) intéragissent sur un réseau similaire à X/Twitter, sur des thématiques déterminées, avec des personnalités configurables. Leur comportement (follow, retweet, comment) est également configurable. Votre objectif sera d'explorer les possibilités offertes par cet outil, par exemple en créant une simulation d'un réseau social pendant les élections aux états-unis, en observant le rôle d'acteurs perturbateurs: troll, manipulation d'opinion... Par exemple, vous simulerez une discussion entre un petit groupe de personnes ayant des opinions et des personnalités différentes, puis analyserez l'évolution du débat avec des outils classique d'analyse de réseaux sociaux: analyse de sentiments, mesures de polarization, de diversité d'opinion, évolution du réseau d'intéraction... ===== AM1. Deep learning et image : classification et génération d'images ===== ^ Domaines | Image Processing / Deep Learning(IA) / Interaction | ^ Techniques et langages | Python / PyQt | ^ Responsable du sujet | Alexandre Meyer | ^ Niveau de difficulté | intermédiaire | L'objectif de ce projet est d'explorer les possibilités qu'offre les réseaux de neurones à traiter des images. Il y a deux grandes pistes qui peuvent être explorées. D'abord la classification d'images qui cherche à reconnaitre un objets à partir de sa photo, c'est à dire à lui donner un label : le nom de la personne, le type d'objet, un caractère pour la reconnaissance d'écriture, des informations sur des images satallitaires ou médicales, etc. Le deuxième aspect est l'édition ou la génération de nouvelles images. Un réseau peut apprendre à modifier, voir à générer une nouvelle image après avoir "appris" sur une base d'images du même type. Par exemple, les auto-encoders sont une classe d'algorithme basée sur les réseaux de neurones profonds qui transforment un jeu de données (des images pour nous) en une représentation latente (cachée) que l'on nomme un code. Ils sont composés d'un encodeur qui produit le code et d'un décodeur qui repasse du code à la données d'origine (l'image). Une piste pour ce sujet serait de construire cet auto-encoder sur une classe d'images puis d'offrir à l'utilisateur des curseurs pour éditer le code tout en lui montrant l'image décodé. En allant plus loin, il est également envisageable d'explorer les GAN (Generative Adversarial Network) pour produire une nouvelle image ... Le domaine est vaste. [[https://towardsdatascience.com/gans-vs-autoencoders-comparison-of-deep-generative-models-985cf15936ea|GANs vs. Autoencoders: Comparison of Deep Generative Models]] [[https://medium.com/@jonathan_hui/gan-some-cool-applications-of-gans-4c9ecca35900|GAN — Some cool applications of GANs.]] ===== AM2. Jeu vidéo sous Unity en réseau associé à un test de Turing ===== ^ Domaines | Animation/Interaction/Jeu vidéo | ^ Techniques et langages | C# / Unity | ^ Responsable du sujet | Alexandre Meyer | ^ Difficulté | Raisonnable / Intermédiaire | L'objectif de ce sujet est de développer un jeu vidéo sous Unity se jouant en réseau. A la fin de la partie, le(s) joueur(s) humain(s) indique s'ils avoir jouer avec un autre humain ou avec une machine. Le jeu peut être simple. Ce n'est pas forcément un jeu de plateau. Cela peut-être un Mario plateau ou un Bomberman ou une mini-course de voiture ou un FPS :-) L'humain pilote Mario en 2D avec des plateforme, un autre humain ou une IA pilote les monstres. Le réseau est important car chaque joueur doit être dans une salle différente. Il faudra juste pouvoir proposer un algorithme pour faire jouer l'ordinateur. Vous allez découvrir Unity, la programmation d'un jeu vidéo, les échanges réseaux, l'"IA", etc. Il existe de nombreux codes pour faire du réseau en Unity. ===== AM3. Problèmes inverses : simulation et reconstruction 3D ===== ^ Domaines | Image Processing, simulation | ^ Techniques et langages | Python | ^ Responsable du sujet | Alexandre Meyer | ^ Difficulté | Sujet progressif | Sujet mélangeant simulation, rendu 3D, optimisation, framework de calcul, etc. Il existe plusieurs frameworks de calcul proposant une manière de paralléliser et d'optimiser efficacement. Typiquement les framework de Deep learning ou Taishi propose un cadre efficace de calcul où un algorithme est représenté par un arbre de calcul où chaque noeud est différentiable. De plus ces framework permettent facilement de paralléliser du code pour profiter d'un GPU par exemple. De plus, ces frameworks facilitent l'optimisation grâce au fait que chaque noeud comporte du code inversible. Ne prenez pas peur, tout ceci est transparent quand vous écrivez le code. Par exemple, avec Taishi, le code se réalise en python avec quelques balises pour aider au paralélisme. Ce sujet propose de réaliser deux parties. Une partie réalisant le calcul d'une image à partir soit d'un fluide, soit d'un nuage de points représentant un objet. Et une partie autour du problème inverse qui va chercher à guider la simulation de fluide vers une cible (une forme particulière ou une vidéo), où guider le nuage de points vers l'apparence d'un objet. Une manière de représenter la fumée est dans un tableau 3D (grille régulière) stockant des mesures physiques (densité de fumée, vitesse, etc.) dans chaque case (voxel). Les étapes de simulation sont assez simple, du pseudo code sera donné. La prise en main de Taishi permettra d'accélérer les calculs, sans compléxifier le code. Pour la partie inverse, le modèle sera initialisé au hasard : on remplira aléatoirement l'espace de fumée ou on placera les points aléatoirement. Une fonction d'erreur (du code) est à définir. Par exemple, l'affichage de la simulation produit une image. L'erreur sera calculée avec la différence entre cette image et une image cible. L'image cible peut être une image d'une vidéo de fumée ou une image formant un motif particulier ou l'image d'un objet. L'optimisation cherchera à modifier les forces appliquées à chaque voxel pour que la fumée tende vers la cible. On commencera par des choses de très simples et le problème sera complexifié au fur et à mesure. https://www.taichi-lang.org/ https://fr.wikipedia.org/wiki/D%C3%A9rivation_automatique#:~:text=En%20math%C3%A9matique%20et%20en%20calcul,fonction%20par%20un%20programme%20informatique. https://github.com/OutofAi/2D-Gaussian-Splatting ===== AM4. Animation physique et optimisation de la morphologie de créatures animées ===== ^ Domaine | Algorithme évolutionniste, simulation physqiue, méta heuristiques, optimisation, moteur physique | ^ Langage | C++ ou python avec BulletPhysics; Ou C# avec Unity; etc. | ^ Responsable du sujet | Fabien Rico et Alexandre Meyer | ^ Information à voir || | [[http://jvf.free.fr/550_Articles_LinuxMag/GLMF_076_034_041.pdf]] || | [[https://www.youtube.com/watch?v=JBgG_VSP7f8]] || | [[https://www.youtube.com/watch?v=m4E9sj9vH1I]] || Les algorithmes évolutionnistes ou génétiques sont des méta-heuristique d'optimisation c'est à dire des méthodes globales pour résoudre des problèmes de toutes sorte qu'il faut adapté à un problème particulier. Comme leur nom l'indique, ils sont basés sur le concepts d'évolution. On génère une famille aléatoire d'individu dont on conserve les plus performant, que l'on mélange pour générer une nouvelle famille ... Une idée classique de ce choix de projet est d'appliquer ces algorithmes évolutionnistes à un problème de génération de forme de créatures en cherchant à ce que ces créatures réalisent une tâche le mieux possible : par exemple la locomotion. Vous prendrez en main un moteur physique. L'algorithme évolutioniste proposera une série de créatures avec des morphologies différentes encodées par une séquence de "gènes" (un code). La simulation physique donnera une distance de déplacement que l'algo cherchera à maximiser. L'implémentation peut se faire en C++ ou en python avec le moteur BulletPhysics; mais également en C# avec Unity. ===== AM5. Modélisation, Rendu, Animation de nuages ou de la surface de l'eau ===== ^ Domaine | Synthèse d'images | ^ Langage | C++ (ou C# avec Unity) | ^ Responsable du sujet | Alexandre Meyer | ^ Information à voir || | https://tel.archives-ouvertes.fr/tel-00319974/file/defense.pdf || | || | || Les nuages ou l'eau font partis des éléments à modéliser, afficher et animer dans une scène d'extérieure en synthèse d'images. Ce projet se propose d'explorer certains aspects des nuages ou de la surface de l'eau : leur formation, leur mouvement, leur interaction avec la lumière. La réalisation pourra se faire en C++ avec gkit (ou autre code en C++), mais pourra également se réaliser en C# sous Unity. ===== SA1. Modélisation distribuée d’un jeu stratégique - Exemple du tactical RPG ===== ^ Domaine | Intelligence Artificielle| ^Langage (proposé) | C++, java | ^ Responsable du sujet | Samir AKNINE ^ A voir | https://perso.liris.cnrs.fr/samir.aknine/L3/Battle%20Simulation%20Distributed%20AI%20-%20Vid%c3%a9o%20pr%c3%a9sentation.mp4 | L’objectif de ce projet est de proposer une modélisation distribuée d’un jeu stratégique. Nous prendrons comme exemple le tactical RPG. Nous considérerons des personnages qui évoluent sur un environnement dynamique. Les personnages appartiennent à plusieurs groupes. Les personnages peuvent se déplacer en même temps selon des règles préétablies. Nous implémenterons une méthode de résolution distribuée avec des entités autonomes dotée de comportements intelligents. Nous commencerons par définir des stratégies de résolution simples dans lesquelles les personnages effectuent des déplacements uniquement sur la base de leur perception. Dans une deuxième étape, nous définirons des stratégies de résolution plus fines permettant aux personnages de construire des stratégies de jeu collectives en interagissant avec leur voisinage. Plusieurs exemples de jeux ont été déjà implémentés par les étudiants. Nous pourrons mettre a disposition leur code. Des exemples de développements se trouvent a cette adresse : https://perso.liris.cnrs.fr/samir.aknine/L3/ ===== SA2. Partage dynamique d’énergie verte entre des ilots autonomes et des véhicules connectés===== ^ Domaine | Intelligence Artificielle| ^Langage (proposé) | C++, java | ^ Responsable du sujet | Samir AKNINE | Plusieurs projets urbains innovants d’ilots autonomes tels que le projet du groupe Bouygues-construction pour la gestion intelligente de l’énergie traitent du problème du partage dynamique de l’énergie avec son réseau de communication énergétique et un système de stockage par des batteries de nouvelle génération directement installées dans les bâtiments. Ce projet vise à équiper les foyers avec de nouveaux dispositifs intelligents pour éprouver des solutions originales pour les futurs réseaux de distribution. Il cible l’ouverture des réseaux et l’exploitation automatique des îlots. L’évolution actuelle de ces ilots est renforcée grâce au développement de nouvelles batteries de stockage à fort potentiel et à faibles coûts, et au transfert intelligent de l’énergie entre les ilots avec un câblage interne indépendamment des systèmes de distribution classiques. Ce transfert permet d’envisager une adaptation de la consommation de manière locale, i.e., à l’échelle d’un quartier, en réduisant les coûts et les pertes du transport de l’énergie. Pour accompagner le développement de ce projet, une solution pour la gestion du surplus d’énergie s’est inscrite en direction des véhicules autonomes solution de stockage et d’usage intelligent de l’énergie renouvelable. Ce modèle de fonctionnement requière l’installation de bornes de rechargement communicantes au niveau des ilots autonomes permettant aux résidents et aux non-résidents de l’ilot d’accéder au surplus d’énergie produite dans ces ilots moyennant une participation financière mais avec un coup d’achat de cette énergie relativement inférieur à celui appliqué par les fournisseurs standards. La gestion de l’énergie doit ainsi être reformulée comme un problème de planification où l’énergie fournie est considérée comme une ressource partagée et intermittente dont l’usage doit être régulé et optimisé par ce nouveau système intelligent. L’objectif de ce projet est ainsi d’implémenter une méthode de résolution qui permet aux véhicules de se recharger auprès des bornes intelligentes et de contrôler dynamiquement les interactions entre les véhicules autonomes et les bornes. Les étudiants peuvent se baser sur une premiere implementation deja realisee sur projet pour développer les nouveaux mécanismes. Des exemples de développements se trouvent a cette adresse : https://perso.liris.cnrs.fr/samir.aknine/L3/ ===== SA3. Livraison de marchandises ===== Domaine Intelligence Artificielle Langage (proposé) C++, java Responsable du sujet Samir AKNINE L’objectif de ce travail est de proposer un planner automatique pour la livraison intelligente de marchandise. Nous allons considérer un ensemble de véhicules de livraison chacun ayant des propriétés spécifiques (ex. poids maximum à transporter, niveau d’autonomie, …). Chaque véhicule possède une liste de tâches à accomplir dans la journée. Il doit planifier l’ordre d’exécution de ses tâches de manière dynamique et parer à tout événement pouvons se produire dans son environnement (ex. blocage ponctuel d’une voie). Nous proposerons une modélisation distribuée dans laquelle chaque véhicule possède des connaissances de son environnement et peut interagir avec les autres véhicules et l’infrastructure. Il décide individuellement de ses actions et peut adapter ses comportements de manière dynamique. Nous implémenterons et testerons un ensemble de mécanismes pour garantir cette interaction et adaptation aux événements imprévus. Une première implémentation de ce travail peut etre mise a disposition des étudiants. Des exemples de développements se trouvent a cette adresse : https://perso.liris.cnrs.fr/samir.aknine/L3/ ===== SA4. Gestion intelligente de parkings dans un centre urbain ===== ^ Domaine | Intelligence Artificielle| ^Langage (proposé) | C++, java | ^ Responsable du sujet | Samir AKNINE | L’objectif de ce projet est de proposer une méthode distribuée pour l’affectation des places de stationnement à des véhicules intelligents. Le rôle de l’étudiant est d’implémenter l’ensemble des comportements nécessaires aux véhicules pour interagir avec les parkings et négocier le tarif de stationnement qui est décidé dynamiquement en tenant compte d’un ensemble d’informations, telles que la durée du stationnement, le profil de l’usager, le taux d’occupation du parking, le créneau horaire, etc. Un travail d’implémentation a été déjà mené sur ce projet. Les étudiants peuvent se baser sur ces développements pour implémenter les nouveaux mécanismes. Des exemples de développements se trouvent a cette adresse : https://perso.liris.cnrs.fr/samir.aknine/L3/ ===== SA5. Véhicule autonome : Gestion automatique de la traversée d’une intersection intelligente ===== Domaine Intelligence Artificielle Langage (proposé) C++, java Responsable du sujet Samir AKNINE Les récentes évolutions technologiques des dernières années ont permis d’améliorer le niveau d’équipement des véhicules rendus de plus en plus connectés, voire autonomes, ce qui permet de proposer de nouvelles réponses aux problèmes du trafic urbain. Les véhicules sont, à présent, capables de communiquer et de se coordonner. Avec notre projet, nous proposons une approche de régulation du trafic s’appuyant sur des méthodes distribuées pour améliorer les conditions de mobilité des véhicules. Dans le cadre ce travail, nous implémenterons la méthode de régulation que nous avons définie à l’échelle de l’intersection tirant parti des capacités de communication des véhicules, et dans laquelle les véhicules autonomes négocient leur droit de passage dans chaque intersection. Cette négociation s’effectue en utilisant des mécanismes prédéfinis en s’appuyant sur les données de mobilité de chaque véhicule et en permettant ainsi de prendre en compte différents critères pour la prise de décision locale, comme l’état général du trafic, la localisation d’éventuelles congestions, ou encore la circulation des bus, les trajets programmés par les véhicules, etc. L'étudiant peut avoir acces a une premiere implementation deja realisee. Des exemples de développements se trouvent a cette adresse : https://perso.liris.cnrs.fr/samir.aknine/L3/ ===== SA6. Modélisation distribuée d’une variante d'un jeu stratégique (Échecs / Dames / Shogi / Taquin) ===== ^ Domaine | Intelligence Artificielle| ^Langage (proposé) | C++, java | ^ Responsable du sujet | Samir AKNINE | L’objectif de ce projet est de proposer une modélisation distribuée d’un jeu stratégique. Nous prendrons comme exemple une variante le jeu d’échés ou de dames. Dans ce jeu, les pièces peuvent se coordonner et communiquer pour mettre en œuvre des stratégies collectives. Elles peuvent effectuer différents mouvements parallèles selon des règles prédéfinies et exhiber différents comportements (tels que des attaques de groupes simultanées). Nous testerons différentes règles de jeu et implémenterons les stratégies collectives. Un travail d'implémentation a été réalisé préalablement sur ce projet. Les étudiants pourront s'ils le souhaitent réutiliser le code existant. Des exemples de développements se trouvent a cette adresse : https://perso.liris.cnrs.fr/samir.aknine/L3/ ===== SA7. Sites marchands intelligents pour le commerce électronique ===== ^ Domaine | Intelligence Artificielle| ^Langage (proposé) | C++, java | ^ Responsable du sujet | Samir AKNINE | Nous utiliserons des modèles de négociation automatique pour la mise en place de sites marchands intelligents. Chaque site dit "vendeur" propose plusieurs items ou produits avec des indications sur les propriétés des items (ex. prix min,...). Un utilisateur peut spécifier, à un site dit "acheteur", l’item qu’il recherche, ses propriétés ainsi que les contraintes et les préférences associées à cet item. Le site acheteur se chargera alors de mener les négociations automatiques avec les sites vendeurs proposant cet item. Le travail demandé consiste à modéliser les différents comportements de négociation automatique pour la vente et l’achat des items. Nous définirons les protocoles d’interactions et de négociation correspondants. Nous implémenterons et testerons l'ensemble des mécanismes à proposer. Un système a été développé sur ce sujet. Nous pouvons mettre a disposition des étudiants le code associé. Des exemples de développements se trouvent a cette adresse : https://perso.liris.cnrs.fr/samir.aknine/L3/ ===== CC1. Analyse de l'Alimentation et de son Impact sur la Santé (L'aile ou la cuisse?) ===== ^ Domaine | Machine Learning, python, application web| ^Langage (proposé) | Python | ^ Responsable du sujet | Célestin Coquidé | Ce projet explore la relation entre alimentation et santé dans notre société, illustrée par la célèbre citation de Jean Anthelme Brillat-Savarin : "Dis-moi ce que tu manges, je te dirai ce que tu es." La nutrition joue un rôle central dans notre bien-être, et ce projet propose d'étudier cette corrélation en utilisant deux bases de données : Open Food Facts (https://fr.openfoodfacts.org/) et FooDB (https://foodb.ca/). Open Food Facts fournit des informations nutritionnelles détaillées (apports journaliers, nutriscore, etc.) sur des produits alimentaires industriels vendus dans le monde entier. FooDB, quant à elle, contient des données sur un large éventail d'ingrédients et d'aliments bruts, incluant leur composition en macro et micro-nutriments. Ce projet peut donner lieu à une application web avec laquelle un utilisateur peut interagir pour améliorer les qualités nutritives d'une recette par exemple. Objectifs : * Visualisation des données nutritionnelles par catégories d'aliments. * Analyse statistique de la distribution des produits selon leur source nutritive. * Prédiction du nutriscore pour des recettes maison. * Comparaison entre différents patrimoines culinaires (cuisine européenne, méditerranéenne, végétarienne, etc.). * Évaluation de la qualité nutritionnelle de diverses recettes et proposition de recettes alternatives plus saines. ===== CC2. Prédiction des Prix des Cartes à Collectionner Magic: The Gathering ===== ^ Domaine | Machine Learning, python, application web| ^Langage (proposé) | Python, html, javascript | ^ Responsable du sujet | Célestin Coquidé | Ce projet se concentre sur le développement d'un outil de prédiction des prix pour les cartes à collectionner issues des Trading Card Games (TCG). À partir d'une base de données complète contenant les prix des cartes, l'objectif est d'analyser les tendances de marché pour anticiper la valeur future des cartes. La base de données MTGJSON (https://mtgjson.com/) fournit des informations détaillées sur les prix journaliers des cartes du jeu Magic: The Gathering, un des TCG les plus anciens et populaires. Ces données incluent les prix de vente actuels sur diverses plateformes (par exemple : CardMarket, CardKingdom…). Objectifs : * Analyse des tendances de prix : Identifier les tendances à court et long terme dans les fluctuations des prix des cartes. * Prédiction de prix : Développer des modèles pour prédire les variations de prix des cartes en fonction de divers facteurs. * Corrélation avec les sorties d'extensions : Étudier l'impact des nouvelles extensions ou éditions sur les prix des cartes existantes. * Évaluation de la rareté : Analyser comment la rareté d'une carte (édition limitée, carte promotionnelle, etc.) influence son prix au fil du temps. * Analyse de la demande : Explorer la relation entre la popularité des cartes (tournois, méta-jeux) et leur prix. ===== CC3. Exploration du jeu de données ORBITAAL pour l'analyse des transactions Bitcoin ===== ^ Domaine | Big data, visualisation de données| ^Langage (proposé) | Python(networkx, pyspark, seaborn) | ^ Responsable du sujet | Célestin Coquidé | Ce projet s'inscrit dans une thématique d'analyse de données massives (big data) dans le cadre des transactions Bitcoin. ORBITAAL (https://zenodo.org/records/12581515) est un jeu de données complet qui décrit toutes les transactions Bitcoin réalisées entre janvier 2009 et janvier 2021, exprimées à la fois en Bitcoin et en dollar. Dans le cadre de ce projet, deux représentations de graphes peuvent être explorées : des snapshots construits sur différentes résolutions temporelles et un Stream graph décrivant les transactions avec la résolution temporelle la plus fine. Objectifs : * Caractérisation des acteurs importants (riches, centraux…) et leur évolution dans le temps * Visualisation de transactions et suivi de Bitcoin provenant d'activités illégales * Détections de communautés d'utilisateurs Bitcoin * Simulation de crises économiques et impacts sur les acteurs Bitcoin