Apprendre la stratégie de l adversaire



Documents pareils
Poker. A rendre pour le 25 avril

Corrigés des premiers exercices sur les classes

Cours 1 : Qu est-ce que la programmation?

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP1 : Initiation à Java et Eclipse

Baccalauréat ES Antilles Guyane 12 septembre 2014 Corrigé

Installer Joomla Pearson France Joomla! Le guide officiel Jennifer Marriott, Elin Waring

ASR1 TD7 : Un microprocesseur RISC 16 bits

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Probabilités. I - Expérience aléatoire. II - Evénements

Traitement de données

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

MATH ELEMENTS DU CALCUL DES PROBABILITES

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

Jeux mathématiques en maternelle. Activités clés. Jeu des maisons et des jardins (Yvette Denny PEMF)

Simulation centrée individus

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

COMPETENCES E P S et BASKET BALL au CYCLE 3. R.Reynaud CPC. LYON PART-DIEU mai 2003 en référence au document d'antoine Muguet

TP, première séquence d exercices.

Vous incarnez un surdoué en informatique qui utilise son ordinateur afin de pirater des comptes bancaires un peu partout dans le monde et s en mettre

Cours 1: Java et les objets

Conception des systèmes répartis

Java 7 Les fondamentaux du langage Java

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Probabilités conditionnelles Exercices corrigés

Apprentissage par renforcement (1a/3)

Gestion distribuée (par sockets) de banque en Java

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

TP Bases de données réparties

Temps forts départementaux. Le calcul au cycle 2 Technique opératoire La soustraction

Date : Tangram en carré page

Systeme d'exploitation

CONTENU MISE EN PLACE. 1. Placez le plateau de jeu au centre de la table.

Corrigé des exercices sur les références

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Théorie et Codage de l Information (IF01) exercices Paul Honeine Université de technologie de Troyes France

Joueur B Pierre Feuille Ciseaux Pierre (0,0) (-1,1) (1,-1) Feuille (1,-1) (0,0) (-1,1) Ciseaux (-1,1) (1,-1) (0.0)

Chapitre 4 Pierre, papier, ciseaux

Remote Method Invocation Les classes implémentant Serializable

CCI Génie Logiciel UFR - IMA. Objectifs du cours d'aujourd'hui. Génie Logiciel Validation par le test. Qu est-ce que tester un programme?

BACCALAURÉAT GÉNÉRAL SESSION 2012 OBLIGATOIRE MATHÉMATIQUES. Série S. Durée de l épreuve : 4 heures Coefficient : 7 ENSEIGNEMENT OBLIGATOIRE

Entraînement au concours ACM-ICPC

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

Eclipse atelier Java

Document d accompagnement. de la 1 re à la 8 e année. Exemples de tâches et corrigés. 1 re année Tâche Corrigé... 7 Tâche Corrigé...

ACTIVITÉ DE PROGRAMMATION

RMI le langage Java XII-1 JMF

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Le Data Mining au service du Scoring ou notation statistique des emprunteurs!

Remote Method Invocation (RMI)

Probabilités. Une urne contient 3 billes vertes et 5 billes rouges toutes indiscernables au toucher.

TD n o 8 - Domain Name System (DNS)

Un ordonnanceur stupide

CONCOURS DE L AGRÉGATION INTERNE «ÉCONOMIE ET GESTION» SESSION 2015 SECONDE ÉPREUVE

Canevas théoriques du projet sur le poker Partie A

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

Les activités de lutte. à l école primaire. - Inspections de l Education Nationale de Vichy 1 et 2 -

Le langage C. Séance n 4

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

L'intelligence d'affaires: la statistique dans nos vies de consommateurs

TP1 : Initiation à Java et Eclipse

1 Modélisation d être mauvais payeur

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Tp 1 correction. Structures de données (IF2)

Formats d images. 1 Introduction

Cryptologie. Algorithmes à clé publique. Jean-Marc Robert. Génie logiciel et des TI

Utilisation d objets : String et ArrayList

Utiliser Java sans BlueJ

MEGA ITSM Accelerator. Guide de démarrage

Premiers Pas en Programmation Objet : les Classes et les Objets

La base de données XML exist. A. Belaïd

Apprentissage incrémental par sélection de données dans un flux pour une application de sécurité routière

Programmation Orientée Objet Java

Travaux pratiques avec RapidMiner

Fiche n 1 : Téléverser une ressource dans la plateforme

Algorithmes d'apprentissage

RAPPORT DE CONCEPTION UML :

LES REPRESENTATIONS DES NOMBRES

Cours d initiation à la programmation en C++ Johann Cuenin

Généralités sur le Langage Java et éléments syntaxiques.

Excel 2007 Niveau 3 Page 1

TD/TP PAC - Programmation n 3

Manage Yourself. Rapport de planification. Projet de 4ème année informatique. Equipe :

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

Dossier projet isn 2015 par Victor Gregoire

Master Poly Trader. Manuel d utilisateur. Group IV Benoît Perroud Marius Erni Lionel Matthey David Wenger Lotfi Hussami

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

1 Recherche en table par balayage

Economie de l Incertain et des Incitations

Héritage presque multiple en Java (1/2)

Java au cœur de la base de données Oracle

Manipulation de données avec SAS Enterprise Guide et modélisation prédictive avec SAS Enterprise Miner

Principe d un test statistique

Pratique des options Grecs et stratégies de trading. F. Wellers

ÉPREUVE COMMUNE DE TIPE Partie D

Le bridge c'est quoi? Laval Du Breuil École de bridge Picatou, Québec

Transcription:

M1 Master d informatique 28/29 Apprentissage à Partir d Exemples janvier 29 Apprendre la stratégie de l adversaire 1 But Soit un jeu à deux joueurs quelconque. Supposons que l un des deux joueurs suive une stratégie simple (répétitive par exemple). Peut-on définir un joueur apprenant qui, en regardant les coups joués précédemment par son adversaire, serait capable de prédire à coup sûr, ou avec une bonne probabilité de succès, le prochain coup de son adversaire? Si la réponse est oui, on peut alors se poser d autres questions : par exemple, concernant les stratégies à deviner : Existe-t-il des stratégies non devinables? Certaines stratégies sont-elles plus dures à apprendre que d autres? Existe-t-il des stratégies difficiles à deviner? Concernant le mode opératoire du joueur qui doit deviner : Quel algorithme (ou famille d algorithmes) choisir? Quand faut-il apprendre, et quand faut-il utiliser ce que l on a appris? 2 Un premier jeu Le jeu que nous allons considérer est très simple, sa programmation ne pose aucun problème, ce qui permettra de se focaliser sur la programmation du joueur apprenant. Chifoumi, ou Ciseaux, Pierre, Feuille est un jeu à deux joueurs. Une partie se déroule en n manches, où une manche consiste pour chaque joueur à annoncer (simultanément) l un des trois mots Ciseaux, Pierre ou Feuille. Si les deux joueurs annoncent la même chose, la manche est nulle, personne ne marque de points. Les Ciseaux l emportent sur la Feuille (ils la coupent). La Pierre l emporte sur les Ciseaux (elle les brise). La Feuille l emporte sur la Pierre (elle l enveloppe). 3 Les implémentations de base Les indications, exemples, et implémentations décrites dans cette section sont fournies pour vous aider. Si vous préférez les définir différemment ou les modifier, libre à vous : le principal étant que vous puissiez évaluer la performance de votre joueur apprenant face à ses adversaires. 3.1 Récupérer les sources Les paquetages chifoumi, clavier et partie sont fournis en entier. Le paquetage joueurs contient la description de plusieurs types de joueurs (mais pas les joueurs utilisant les arbres de décision...).

Le programme premieressai.java contient un exemple d utilisation des classes. Ces paquetages sont disponibles sur la page du cours d APE sur le serveur du FIL (fichier sources.tgz) 3.2 Compiler un programme Lorsque vous utiliserez des classes de Weka, vous devrez indiquer au compilateur où trouver ces classes : javac -d classes -classpath /opt/weka-3-4-11/weka.jar -sourcepath sources sources/premieressai.java Pour l exécution, c est plus simple : java -cp classes premieressai 3.3 Les coups possibles Le paquetage chifoumi ne contient que la classe Chifoumi.java, qui définit les trois coups possibles et les méthodes permettant de les comparer entre eux, de les transformer (entiers ou chaîne)... 3.4 L arbitre La classe Partie sert à faire s affronter deux joueurs, leur demande de jouer, informe chacun du coup joué par l autre, et affiche les scores. Le programme principal suivant se contente donc de créer une partie, de définir les joueurs, et de lancer la compétitions : import partie.partie; import joueurs.*; public class competition{ } public static void main(string argv[]){ Joueur j1=new JoueurReplique(); Joueur j2=new Joueurj48(1); Partie p=new Partie(j1,j2); p.setverbosity(); p.play(1); } 3.5 Les joueurs 3.5.1 L interface On peut définir l interface Joueur minimale comme étant composée de deux méthodes : L une permettant d annoncer le coup choisi. L autre permettant d informer le joueur du coup joué par son adversaire. package joueurs; import chifoumi.*; public interface Joueur{ } public Chifoumi coupjoue(); public void memorise(chifoumi coupadverse); 2

3.5.2 Les adversaires On peut définir facilement plusieurs types de joueurs. Tout d abord les joueurs qui ne s occupent pas de leur adversaire : Le joueur aléatoire : il est impossible d apprendre sa stratégie. Le joueur préférentiel : il joue un coup plus souvent que d autre. Le joueur périodique : la succession des coups qu il joue est périodique : la période peut être plus ou moins longue. Le joueur markovien : la probabilité qu il joue un coup dépend du coup qu il a joué au coup précédent.... Les joueurs dont la stratégie dépend des coups joués par leur adversaire : Le joueur réplicant : il joue le coup joué au coup précédent par son adversaire. Le joueur réplicant-méchant : il joue le coup qui aurait battu le coup précédent de son adversaire. Le joueur statisticien : il joue le coup qui gagne contre le coup le plus souvent joué par son adversaire.... Certaines de ces stratégies vous sont fournies dans le paquetage joueur, les autres peuvent s en déduire facilement. D autres stratégies sont possibles, vous pouvez les définir, les programmer et les diffuser... 3.5.3 Le joueur apprenant Un premier joueur apprenant pourrait être défini de la manière suivante : Dans un premier temps, il joue au hasard (ou suivant une stratégie rigide), et observe le comportement de son adversaire. Une fois qu il a accumulé suffisamment d informations sur son adversaire, il essaie de comprendre sa stratégie. Une façon de comprendre le comportement de l adversaire, c est de construire un classifieur qui, étant donnés les n derniers coups de l adversaire, lui retourne le coup suivant. Pour cela, il découpe la séquence des k derniers coups de son adversaire en k n fenêtres de taille n + 1 : les n premières valeurs sont les coups connus, la dernière valeur est celle qu il faut deviner. Il range ses exemples dans un ensemble d apprentissage (classe Instances). Il construit un arbre de décision (par exemple). une fois qu il a son classifieur, il lui fournit en entrée les n derniers coups de son adversaire, et attend la réponse. Il joue alors le coup qui peut vaincre cette prédiction. En résumé, le premier joueur apprenant que vous allez définir : Contiendra un arbre de décision Maintiendra l historique complet des coups joués par son adversaire Dès que possible, il construira le classifieur. Il utilisera ce classifieur pour prévoir le coup de l adversaire. L arbre une fois construit est-il intangible? Quand et comment le modifier ou le reconstruire? Question 3.1 : Construisez un joueur apprenant basé sur un arbre de décision, contrôlez son efficacité contre divers adversaires. Affichez et interprétez l arbre qu il construit. 4 Evaluation du résultat On peut suivre l efficacité de l apprentissage contre un joueur donné en regardant l évolution du nombre (ou de la proportion) de parties gagnées, nulles, perdues : la classe Partie affiche ces résultats, qu on peut lire dans n importe quel logiciel de tracé de courbes (gnuplot, par exemple). 3

Les courbes suivantes vous donnent quelques exemples de comportement. 4 35 Aleatoire gagne Joueur aleatoire contre apprenant 3 25 2 15 1 5 1 2 3 4 5 6 7 8 9 1 Fig. 1 Aleatoire vs Apprenant : on ne peut rien apprendre 5 Un pas plus loin Et quand le joueur adverse décide de son coup, non seulement en fonction de ses coups précédents, mais aussi en fonction des coups du joueur apprenant? Est-il possible encore à celui-ci de jouer gagnant sur le long terme? Une première réponse consiste à dire que puisque c est comme ça, il va mémoriser non seulement les coups de son adversaire, mais aussi les siens. Question 5.1 : Construisez ce joueur. Est-il plus efficace, moins efficace? Existe-t-il des stratégies adverses qu il comprend mieux que son grand frère? 4

9 8 Periodique gagne Joueur repliquant mechant contre apprenant 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 1 Fig. 2 Periodique vs Apprenant : Quand l apprenant comprend, il ne perd plus jamais 3 25 Markovien gagne Joueur markovien contre apprenant 2 15 1 5 5 1 15 2 25 3 35 4 45 5 Fig. 3 Markovien vs Apprenant : l apprenant ne gagne pas toujours... 5

8 7 Repliquant gagne Joueur repliquant mechant contre apprenant 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 1 Fig. 4 Répliquant méchant vs Apprenant : l apprenant comprend le truc après 5 parties, mais perd encore parfois...mais après avoir joué 7 parties, il ne perd plus. 6