Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 77 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
77
Dung lượng
809,76 KB
Nội dung
Institut de la Francophonie pour l’Informatique Institut National des Sciences Appliquées de Rennes Société Avel Vor Technologies MÉMOIRE DE FIN D’ÉTUDES MASTER D’INFORMATIQUE Mise en œuvre d’un système d’apprentissage par renforcement pour la gestion automatique des voiles sur un bateau propulsion hybride voile-moteur NGUYEN Le-Vinh Responsables de stage : Pierre-Yves GLORENNEC Ce stage a été réalisé au sein du Département informatique de l’Institut National des Sciences Appliquées de Rennes INSA de Rennes Hanoï, septembre 2007 Remerciements Je tiens remercier tout particulièrement Pierre-Yves GLORENNEC pour m’avoir encadré pendant ces cinq mois Je le remercie de son contact chaleureux, ses conseils et encouragements, son soutien permanent et la liberté de recherche qu’il bien voulu me laisser Mes plus sincères remerciements vont également tous les professeurs et les personnels de l’Institut de la Francophonie pour l’Informatique (IFI) pour m’avoir donne des cours de très bonne qualité et pour leur soutien tout au long de mes études l’IFI Un grand merci aux autres stagiaires au Département informatique de l’INSA de Rennes pour une ambiance de travail particulièrement favorable Je remercie chaleureusement mes camarades de la promotion XI pour leur amitié sans faille et je leur souhaite bonne chance pour la soutenance Merci enfin mes parents, ma femme et mes amis pour leur soutien et leur encouragement tout l’instant i Résumé Le travail du stage est réalisé dans le cadre du projet Grand Largue et sous la direction de la société Avel-Vor Technologie Grand Largue, c’est un vaste projet proposant par Pôle Mer Bretagne avec Avel-Vor Technologie, le porteur du projet, travaille sur les problèmes d’optimisation dans le monde maritime qui fournit des applications utilisant la logique floue et l’apprentissage automatique pour le projet Dans le cadre du projet, nous étudions et proposons des solutions utilisant des algorithmes d’apprentissage par renforcement pour piloter automatiquement un voilier afin d’améliorer les performances La première étape du projet, nous faisons des études des connaissances maritimes, de la logique floue, de l’algorithme d’apprentissage par renforcement et nous concevons un Système de Pilote Automatique Intelligent La partie principale de notre travail concerne un Système de Pilote Automatique Intelligent (SPAI) C’est un système intelligent qui peut donner des décisions pour piloter automatiquement le bateau Il peut contrơler la gỵte du bateau, utiliser systématiquement la polaire de vitesse pour profiter l’énergie du vent Pour construire ce système, nous utilisons une méthode d’optimisation utilisant les Système d’Inférence Floue (SIF) Les SIF sont composés d’une collection de règles qui ont la forme générale : Si telle situation alors telle conclusion La table de règles est établie par des " experts " Nous avons utilisé le QFUZZ [3] pour construire un algorithme d’optimisation d’une SIF dans ce contexte du projet La méthode utilise des algorithmes d’apprentissage par renforcement qui sont présentés dans le chapitre 10 du livre [3] Afin d’estimer l’e cacité de la solution, nous l’avons testé sur un système de simulation et les résultats obtenus sont optimistes Actuellement, dans la condition réelle, il y a beaucoup de variables de milieu Notre simulateur tient en compte seulement des variables principales comme : le vent réel, l’accélération du bateau, la polaire de vitesse du bateau, l’oscillation du bateau, et le changement aléatoire du vent réel Il est nécessaire d’avoir plus de temps pour tester le système sur un bateau en conditions réelles A partir des résultats obtenus, nous trouvons que le SIF est une bonne direction La méthode QFUZZ a obtenu des résultats acceptables Mots-clés : logique floue, système d’inférence floue, pilote automatique, apprentissage automatique, apprentis-sage par renforcement ii Abstract This work of the internship is carried out within the scope of the Grand Largue project and under the direction of the company Avel-VOR Technology Grand Largue is a vast project proposing by Pôle Mer Bretagne with Avel-VOR Technology, the carrier of the project, works on the problems of optimization in the maritime world which provides applications using fuzzy logic and machine learning for the project Within the scope of the project, we study and propose solutions using the reinforcement learning algorithms to sail automatically a ship and to improve its performances The first stage of the project, we study the maritime knowledge, fuzzy logic, reinforcement learning algorithms and we design a Intelligent Autopilot System The main part of our work relates to an Intelligent Autopilot System It is an intelligent system which can give decisions to control the boat automatically It can control systematically the list of boat to use the polar speed for benefit energy of the wind To build this system, we use an optimization method using the fuzzy inference system (SIF) The SIF are composed of a collection of rules which have the general form : If such situation then such conclusion The rules table is drawn up by "experts" We used the QFUZZ [3] to build an optimization algorithm of a SIF in this context of the project The method uses reinforcement learning algorithms which are presented in the chapter 10 of the book [3] To estimate the e ect of the solution, we tested it on a simulation system and the results obtained are opti-mistic Under the real condition, there are many variables of environment Our simulator considers only basic variables like : real wind, the acceleration of the boat, the speed polar of the boat, the oscillation of the boat, and random change of the real wind It is necessary to have more time to test the system on a boat in real conditions From the results obtained, we found that the SIF is a good direction Method QFUZZ obtained acceptable results Keywords : fuzzy logic, fuzzy inference system, autopilot, machine learning, reinforcement learning iii Table des matières Résumé Abstract Introduction 1.1 Problématique 1.2 Motivation et objectifs du stage 1.3 Environnement de travail 1.4 Contribution 1.5 Plan du document Etat de l’art 2.1 Travaux Relatifs 2.1.1 2.1.2 2.1.3 2.2 Produits existants 2.2.1 2.3 Introduction de navigation 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 2.4 Pilote automatique et pilote automatique intelligent 2.4.1 2.4.2 2.4.3 2.4.4 2.5 Systèmes d’inférence floue 2.5.1 iv 2.5.2 Sous-en 2.5.3 Partition 2.5.4 Valeur d 2.5.5 Calcul d 2.5.6 Un exem 2.6 Apprentissage par renforcement 2.6.1 Q-Learn 2.6.2 Q-FUZ 2.6.3 Q-Learn 2.7 Conclusion Solution proposée 3.1 Schéma global 3.1.1 Présent 3.1.2 Compos 3.2 Le pilote automatique intelligent 3.3 Modes du pilote automatique 3.3.1 Mode V 3.3.2 Mode C 3.3.3 Mode V Programme de Pilote Automatique Intelligent 4.1 Conception du SPAI 4.2 Conception architecturale 4.2.1 Diagram 4.2.2 Diagram 4.2.3 Diagram 4.2.4 Diagram 4.2.5 Architec 4.3 Conception détaillée 4.3.1 Module 4.3.2 Diagram 4.3.3 Diagram 4.4 Module de PAI 4.4.1 Diagram 4.4.2 Diagram 4.4.3 Algorithm 4.5 Module de décodage et d’encodage v 4.5.1 Diagram 4.5.2 Diagram 4.5.3 Diagramme d’activité d’envoi d’une consigne 4.6 Module de stockage des données 51 51 Résultat 53 Conclusions et perspectives 55 Bibliographie 56 vi Table des figures 1.1 Hiérarchie de commande et architecture de l’agence de pilote 2.1 Hiérarchie de commande et architecture de l’agence de pilote de X-Pilot 2.2 Architecture de réseau basé le CAN de X-Pilot 2.3 Architecture d’implementation de X-Pilot 2.4 Fonction d’appartenance pour l’accélération 2.5 Fonction d’appartenance pour la vitesse 2.6 Fonction d’appartenance pour le TWA 2.7 Les majeures parties d’un voilier : A - le cap, B - la voile, C - gouvernail 10 2.8 Les trois comportements de navigation di érents 11 2.9 Relation des trois types de vent réel, de vent de vitesse et de vent apparent 12 2.10 Calcul deu vent réel 12 2.11 Polaire de vitesse du bateau génois, et du bateau spi de 13 kilo nœuds 14 2.12 Un exemple de VMG 15 2.13 Exploitation de la polaire de vitesse pour le prés 18 2.14 Exploitation de la polaire de vitesse pour le portant 20 2.15 Les di érentes actions en fonction du TWA de la route suivre 22 2.16 Fonctions d’appartenance pour le poids et la quantité d’eau 24 2.17 Modèle standard représentant l’apprentissage par renforcement 26 2.18 Architecture de Q-FUZ 27 3.1 Schéma global 29 3.2 Composition interne du PAI 30 3.3 Module de décodage et d’encodage 31 3.4 Module de dialogue humain-machine 31 3.5 Utilisation du SIF pour donner la décision 32 3.6 Diagramme de fonctionnement du mode vent réel 33 3.7 Diagramme de fonctionnement du mode cap fixe 35 3.8 Diagramme de fonctionnement du mode VMG 36 4.1 Diagramme de collaboration entre les modules 38 4.2 Diagramme de cas d’utilisation 39 vii 4.3 Diagramme de déploiement 41 4.4 Diagramme de pacquages 41 4.5 Architecture des interfaces 43 4.6 Diagramme de classes d’interface graphique 44 4.7 Diagramme d’état-transitions du module d’interface 45 4.8 Diagramme de classes du module de PAI 46 4.9 Diagramme d’activité général du système 47 4.10 Algorithme de choix de la consigne 48 4.11 Diagramme de classes de des modules de décodage et d’encodage 49 4.12 Diagramme d’activité du module de décodage et d’encodage 50 4.13 Activité d’envoi d’une consigne 51 4.14 Diagramme de classes du module de stockages des données 51 5.1 Comparaison entre les trois algorithmes de pilote : (a) position/temps des pilotes, (b) vitesses moyennes des pilotes La vitesse moyenne du pilote = 105% celle du pilote La vitesse moyenne du pilote = 105 % celle du pilote 53 5.2 Les étapes d’amélioration du pilot automatique intelligent 54 4.3 Conception détaillée 4.2.5 Architecture des interfaces SPAI I nform at ions Fig 4.5 – Architecture des interfaces 4.3 Conception détaillée 4.3.1 Module d’interface graphique L’interface graphique nous permet de contrôler le bateau en voyant les informations courantes du bateau, la consigne proposée par le pilote intelligent et en conduisant manuellement le bateau A partir de cette interface graphique, on peut aussi installer le mode de pilote automatiquement qui barre automatique le bateau basé sur des consignes du pilote intelligent Il contient trois sous-fenêtres : Information, Pilote et Apprentissage 4.3.2 Diagramme de classes SPAI SPAI est la classe principale du logiciel Quand cette classe est crée, en même temps, toutes les trois classes information, pilote et apprentissage sont crées creat crée la fenêtre principale du logiciel Elle charge chacun des autres modules et ouvre la fenêtre d’informa-tion help ouvre la fenêtre d’aide main la fonction principale de l’application Information creat crée la fenêtre d’information et tout de suite, les fonctions update et showData sont appelées pour a cher toutes les informations importantes changeMode change le mode (stratégie) du pilote automatique 4.3 Conception détaillée Fig 4.6 – Diagramme de classes d’interface graphique showData quand les valeurs de données sont changées, cette fonction est appelée pour re-a cher des informa-tions update met jour des données Les données que l’on voit sur cette fenêtre sont des valeurs temps réel donc cette fonction est appelée périodiquement Pilote La classe Pilote est le cœur du logiciel On l’utilise pour calculer les consignes partir de l’état du bateau et des paramètres du milieu creat crée la fenêtre de pilote En même temps, les fonctions calculateData, calculateConsigne et showData sont appelées calculateData partir des données d’entrée que l’on voit dans la fenêtre d’information, elle calcule des variables intermédiaires comme Mcap, Mvitesse, Acc, calculateConsigne partir des variables intermédiaires, cette fonction pour calcule la Consigne de vitesse et la consigne de gỵte showData après calculer des variables intermédiaires et la consigne, on utilise la fonction showData pour les a cher sur la fenêtre Ces variables (intermédiaires et de la consigne) sont valeurs temps réel donc cette fonction est appelée aussi périodiquement update met jour des données d’entrée 4.4 Module de PAI enterConsigne on utilise cette fonction pour entrer la consigne du barreur et tout de suite, la fonction sendCon-signe est appelée pour envoyer la consigne la Centrale de navigation sendConsigne envoie le consigne la Centrale de navigation La Centrale utilise cette consigne pour contrôler le bateau setIsSteerAutomatic utilise le mode de pilote automatique Le logiciel utilise la consigne du pilote intelligent pour barrer directement le bateau isSteerAutomatic vérifie si le mode de pilote automatique est vrai Apprentissage Un expert utilise cette fenêtre pour changer les valeurs de paramètres d’apprentissage creat crée la fenêtre d’apprentissage update met jour des valeurs de paramètres d’apprentissage getValuesDefault utilise les valeurs défauts saveRules stocke les règles obtenus sous le fichier sif.dat 4.3.3 Diagramme d’état-transitions Charger/Sauvegarder univers Calcul de la consigne Enregistrement de règles Fig 4.7 – Diagramme d’état-transitions du module d’interface Le diagramme d’état-transition du module d’interface (figure 4.7, page 45) décrit des états de l’interface sous l’action de l’utilisateur 4.4 Module de PAI 4.4.1 Diagramme de classes Agent readRules charge des règles dans le fichier sif.dat la mémoire interne Cette fonction est appelée dans la fonction constructeur de la classe Au début, ce ne sont pas les règles optimales On utilise la fonction learning pour les améliorer de temps en temps getRules retourne l’ensemble de règles courantes 4.4 Module de PAI Fig 4.8 – Diagramme de classes du module de PAI writeReles écrit l’ensemble de règles courantes sous le fichier rules.dat learning fait le processus d’apprentissage partir des nouvelles données obtenues On peut utiliser deux modes : apprentissage automatique et apprentissage demandé En mode d’apprentissage automatique, cette classe fonctionne comme un agent En mode d’apprentissage demandé, elle fonctionne quand l’utilisateur le demande Afin d’améliorer les règles, on doit utiliser des connaissances intermédiaires On utilise la fonction readCon-naissance pour les charger les connaissances et la fonction /textitwriteConnaissance pour les écrire sous le fichier connaissance.dat SIFFloue SIF obtient la valeur qui est estimée par les inférences floues Pilote changeConsigne calcule la nouvelle consigne partir des informations courantes getAccmoyenne calcule les valeurs moyennes partir des données d’entrée getAngleCible retourne l’angle cible getVitesseCible retourne la vitesse cible getVitesseMoyenne retourne la vitesse moyenne 4.4 Module de PAI 4.4.2 Diagramme d’activité général Copie règles (tampon dur -> tampon courant) Mode manuel Nouvel ordre = pilote auto ? PoiteurRegles = tempon dur oui Mode auto non non Nouvel ordre = mode manuel ? Nouvel ordre = apprentissage ? oui Fig 4.9 – Diagramme d’activité général du système 4.5 Module de décodage et d’encodage 4.4.3 Algorithme de choix de la consigne Calcul des varibles intermédiaires Calcul de la consigne de gỵte Calcul de la consigne de vitesse Gỵte = bonne ? non oui Proposer la consigne de vitesse Proposer la consigne de gỵte Fig 4.10 – Algorithme de choix de la consigne 4.5 Module de décodage et d’encodage Le module de décodage et d’encodage est le port de communication entre le PC Pilote et le BATEAU Il a deux classes principales : Decoder et Encoder 4.5.1 Diagramme de classes Decoder getData chaque fois que la Centrale de navigation envoie un trame NMEA, on utilise cette fonction pour le décoder en forme de données structurées En général, après recevoir un trame NMEA, son format est une chne textuelle comme la chne suivante : $IIVWT,xxx,a,xx.x,N,xx.x,M,,*ss(CR)(LF) True wind speed in knots From port [L] or from starboard [R] True wind angle 180 4.5 Module de décodage et d’encodage Fig 4.11 – Diagramme de classes de des modules de décodage et d’encodage Cette fonction utilise la classe Parser pour en extraire des informations nécessaires comme la vitesse du vent, la force du vent, la direction du cap, la gỵte, Encoder sendConsigne on utilise cette fonction pour encoder une consigne numérique du barreur en forme de trame NMEA et elle utilise la classe NMEAClient pour envoyer cette donnée sur le BUS Série La Centrale de naviga-tion le va recevoir et contrôler le bateau suivant la consigne 4.5 Module de décodage et d’encodage 4.5.2 Diagramme d’activité du module de décodage et d’encodage Initialisation non Connexion ? oui Consigne envoyer ? Paquet reỗu ? non non oui Envoyer la consigne oui Traiter le paquet Fig 4.12 – Diagramme d’activité du module de décodage et d’encodage 4.6 Module de stockage des données 4.5.3 Diagramme d’activité d’envoi d’une consigne Empaqueter la consigne Attendre dans une second Envoyer le message Envoi a réussi ? non oui Fig 4.13 – Activité d’envoi d’une consigne 4.6 Module de stockage des données Ce module est utilisé pour stocker l’état courant du bateau et du milieu dans la mémoire et les autres classes peuvent les consulter quand ils veulent StockageDonnees Fig 4.14 – Diagramme de classes du module de stockages des données getCurrentStatus on utilise cette fonction pour obtenir l’état du bateau n’importe quel temps C’est une donnée structurée qui contient toutes les informations comme l’angle, la force du vent réel, la gỵte, le cap, la direction, la vitesse du bateau, getData cette fonction retourne une série des états passés du bateau Dans les cas particuliers, le module Appren-tissage a besoin des états passés pour faire des calculs statistiques writeTrace cette fonction est utilisée pour écrire toutes les données d’état du bateau sous le fichier traces.dat 4.6 Module de stockage des données Trace write écrit des traces sous le fichier traces.dat read lit des données passées du fichier traces.dat Chapitre Résultat Afin d’évaluer l’e cacité du système on compare les résultats entre les pilotes intelligents sur le simulateur de Cédric[4] : pilote - utilise le meilleur VMG, pilote - utilise le meilleur VMG et le SIF (de Cédric) et pilote - utilise le meilleur VMG et le Q-Learning flou On a obtenu : 7000 6000 5000 Position 4000 3000 2000 1000 893 670 447 224 Fig 5.1 – Comparaison entre les trois algorithmes de pilote : (a) position /temps des pilotes, (b) vitesses moyennes des pilotes La vitesse moyenne du pilote = 105% celle du pilote La vitesse moyenne du pilote = 105 % celle du pilote Initialement, le pilote et le pilote utilisent les mêmes règles de SIF (voir tableau 5.1) Les résultats indiquent que le pilote est le meilleur et qu’il améliore ses règles (voir tableau 5.2) et franchit le pilote partir du seconde 900 Dans un autre exemple (figure 5.2), on utilise la mờme faỗon pour les teste par trois étapes pendant 30000 secondes Dans la première étape, le pilote n’est pas toujours le meilleur Par contre, le pilote est amélioré dans la seconde étape et il est très stable dans la troisième étape 53 54 AngC VitC n Acc N Z P Tab 5.1 – Tableau de règles initiales du SIF Vitesse moyenne 0 00 Te mps Fig 5.2 – Les étapes d’amélioration du pilot automatique intelligent AngC VitC n Acc N Z P Tab 5.2 – Tableau de règles améliorées du SIF Chapitre Conclusions et perspectives Contribution du stage Nous avons présenté notre travail sur la recherche des systèmes d’inférence floue, des algorithmes renforce-ment flou, la proposition d’une solution du système de pilote automatique intelligent (SPAI) et la réalisation de ce système au niveau démonstratif Il s’agit donc deux travaux dans ce stage Pour la solution du système de pilote automatique intelligent, nous avons proposé une utilisation de l’algo-rithme Q-Learning flou dans la phase d’apprentissage et de SIF dans la phase de choix des décisions qui sont présentés dans [3] Nous avons ajouté un changement dans la phase d’apprentissage comme un facteur de muta-tion pour trouver des actions mutantes avantageux Nous avons proposé l’architecture globale d’un SPAI et ses conceptions détaillées Pour construire le programme démonstratif, logiciel complet a été développé Il observe complètement la solution proposée et a marché très bien dans l’environnement de test Nous avons implémenté l’algorithme de pilote automatique et l’avons testé sur le simulation de Cédric Les résultats sont acceptables mais dans quelques cas pas très stables Limites des résultats Notre solution est testée seulement sur l’environnement de simulation Nous n’avons pas eu l’occasion pour le tester dans l’environnement réel De plus, le simulateur de Cédric ne nous permet pas de tester le fonctionnement de contrơle de gỵte Perspectives A partir des limites de nos travaux, nous proposons d’appliquer les algorithmes d’apprentissage par ren-forcement utilisant le modèle statistique Le simulateur est un outil très important dans la phase de test Nous proposons de compléter le simulateur de Cédric et d’ajouter le fonctionnement de calcul de gỵte de bateau Il est nécessaire de tester le SPAI sur ce simulateur avant de tester dans l’environnement réel 55 Bibliographie [1] Pieter Adriaans From Knowledge-Based to Skill-Based Systems : Sailing as a Machine Learning Challenge, in Proceedings of the ECML/PKDD 2003, Dubrovnik 2003 [2] Van Aartrijk, Martijn, L., Claudio P Tagliola and Pieter W Adriaans AI on the Ocean : the Robosail project, in ECAI 2002, Frank van Harmelen ed., pg 653-657, IOS Press 2002 [3] Pierre Yves Glorennec Algorithmes d’apprentissage pour systèmes d’inférence floue, Manuel de référence Editions Hermès, Paris, 1999 [4] Cédric FLEURY Pilote automatique intelligent Rapport de stage, INSA de Rennes, Rennes, octobre 2006 [5] A Tiano, A Zirilli, C Yang, C Xiao A neural autopilot for sailing yacht EEE MEDCOM 2001 Mediter-ranean Conference [6] RoboSail Systems BV website http ://www.robosail.com [7] Le website de NKE http ://www.nke.fr [8] Bruno Bouzy Apprentissage par renforcement (1a) Cours de d’apprentissage automatique, septembre 2005 [9] Bruno Bouzy Apprentissage par renforcement (3) Cours de d’apprentissage automatique, septembre 2005 [10] Frédérick Garcia Apprentissage par renforcement septembre 2004 [11] David FILLIAT Chapitre 7, Robotique Mobile Ecole Nationale Supérieure de Techniques Avancées ( ENSTA), octobre 2005 [12] Marc-Michel Corsini Apprentissage par Renforcement (Brouillon) Université Victor Segalen, 2002 56 ... Apprentissage par renforcement Fig 2.17 – Modèle standard représentant l’apprentissage par renforcement En résumé, le problème de l’apprentissage par renforcement pour un agent se définit en utilisant... des applications utilisant la logique floue et l’apprentissage automatique pour le projet Le travail du stage est mise en ouvre d? ?un système d’apprentissage par renforcement pour la gestion automatique. .. le vent apparent, le vent réel, et le vent de vitesse Prenons un après midi d’été, sans vent, faites un tour sur un bateau moteur Vous sentirez sur vos joues un « vent », c’est le vent de la vitesse