Puissance 4 intelligent I3 Algorithmique



Documents pareils
Tableau et enregistrement en Pascal et Première version du jeu du puissance 4 I3 - Algorithmique et programmation

Architecture des Systèmes d Information Architecture des Systèmes d Information

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

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

Poker. A rendre pour le 25 avril

Les Cartes et leur Valeur

Décision Markovienne appliquée à un jeu de stop ou encore : Pickomino (Heckmeck Am Bratwurmeck)

Statistiques Descriptives à une dimension

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

La classification automatique de données quantitatives

Plus courts chemins, programmation dynamique

Algorithme. Table des matières

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Rappels sur les suites - Algorithme

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Programmation Objet - Cours II

Feuille TD n 1 Exercices d algorithmique éléments de correction

Ce rêve est devenu réalité.

Leçon N 4 : Statistiques à deux variables

Excel Avancé. Plan. Outils de résolution. Interactivité dans les feuilles. Outils de simulation. La valeur cible Le solveur

Algorithmique avec Algobox

MATÉRIEL. 30 tuiles Édifice à la couleur des joueurs (6 par couleur) 1 plateau de jeu Bruxelles

Les clients puissance cube

1 planche Cour du Roi, pour poser les cartes Audience. 5 pions Château, pour indiquer votre emplacement autour de la Cour

Conception et Développement d un moteur d intelligence artificielle pour un jeu d échecs multiplateformes

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Probabilités Loi binomiale Exercices corrigés

Savoir-faire. Décompte Champs Pâturages. -1 point 1 point 2. 2 points. 3 points. 4 points Céréales * Légumes *

Initiation à LabView : Les exemples d applications :

Les nombres entiers. Durée suggérée: 3 semaines

Activité 11 : Nuage de points ou diagramme de dispersion

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

Intelligence Artificielle Distribuée. Dossier technique. IAD TeamZ

Consigne : je remplis le tableau en tenant compte des informations de la ligne supérieure et de la colonne de gauche (droite pour les gauchers)

Quick Tower. Blocs verticaux nus Page 123. Quick Point. Plaques pour Quick Tower Page 124. Präge Fix. Makro Grip. Quick Point. Quick Tower.

Voyez la réponse à cette question dans ce chapitre.

Adama MBODJI MBODJ.SYSTEM

Cours d Informatique

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)

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

Dimensionnement d une roue autonome pour une implantation sur un fauteuil roulant

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

SOMMAIRE. 1. Préambule Le calendrier Trajectoire d un objet lancé Régression linéaire...9

Cours de Master Recherche


ARBRES BINAIRES DE RECHERCHE

Continuité et dérivabilité d une fonction

Exercices du Cours de la programmation linéaire donné par le Dr. Ali DERBALA

Indicateur i 20. Manuel d utilisation

Fonctions de plusieurs variables

STAGE IREM 0- Premiers pas en Python

Chap 8 - TEMPS & RELATIVITE RESTREINTE

Les arbres binaires de recherche

Algorithmique avec Algobox

Algorithmique et structures de données I

Matériel. . 9 cartes Personnage

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique

Note de cours. Introduction à Excel 2007

RÉALISATION DE GRAPHIQUES AVEC OPENOFFICE.ORG 2.3

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34

Optimisation Discrète

CORRECTION EXERCICES ALGORITHME 1

Contents. 1 Introduction Objectifs des systèmes bonus-malus Système bonus-malus à classes Système bonus-malus : Principes

Cours de Recherche Opérationnelle IUT d Orsay. Nicolas M. THIÉRY. address: Nicolas.Thiery@u-psud.fr URL:

RESEAU TRES HAUT DEBIT EN FIBRE OPTIQUE - DOSSIER TECHNIQUE FTTH

Correction TD algorithmique

Programmation linéaire

LA FICHE TECHNIQUE Comment établir une fiche technique à la fois concise et précise. Document à l'usage des régisseurs.

Master Exploration Informatique des données Data Mining & Business Intelligence. Evelyne CHARIFOU Priscillia CASSANDRA

II. REVOD Plongée à l ordinateur. Septembre Plan de l exposé

Organigramme / Algorigramme Dossier élève 1 SI

Extraction d informations stratégiques par Analyse en Composantes Principales

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

L'analyse des données à l usage des non mathématiciens

Actuariat I ACT2121. septième séance. Arthur Charpentier. Automne charpentier.arthur@uqam.ca. http ://freakonometrics.blog.free.

Baccalauréat L spécialité, Métropole et Réunion, 19 juin 2009 Corrigé.

Les devoirs en Première STMG

Ys - Règle Française. Le Plateau. Ys et plus...

Nouvelles propositions pour la résolution exacte du sac à dos multi-objectif unidimensionnel en variables binaires

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

3 Charges électriques

Master IAD Module PS. Reconnaissance de la parole (suite) Alignement temporel et Programmation dynamique. Gaël RICHARD Février 2008

TP3 Intégration de pratiques agiles. 1. User Stories (1) Scénario d intégration agile. En direct-live du château

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

LES CONTENUS ET LES OPTIONS MOINS DE 14 ANS MOINS DE 16 ANS

TP 2 Réseaux. Adresses IP, routage et sous-réseaux

Calculabilité Cours 3 : Problèmes non-calculables.

GENERALITES Sélection du fichier... 7 TRANSFERT DES ECRITURES... 8

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

Application de K-means à la définition du nombre de VM optimal dans un cloud

Calculs conditionnels Calculs conditionnels imbriqués Somme conditionnelle Nombre conditionnel Fonctions Recherche...

Chap III : Les tableaux

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Compter à Babylone. L écriture des nombres

B B A C U C C U C G 2 E 0 B 0

avec des nombres entiers

Transcription:

Puissance 4 intelligent I3 Algorithmique Nicol Delestre Puissance 4. v2.0 1 / 29

Plan 1 Force brute 2 Analyse 3 Conception préliminaire 4 Conception détaillée 5 Développement 6 Conclusion Puissance 4. v2.0 2 / 29

Force brute La recherche de solution en force brute (ou recherche exhaustive) est l une des méthodes utilisée en informatique pour faire jouer des ordinateurs Elle utilise trois algorithmes Un générateur de coup qui pour une position et un joueur donnés est capable de lister l ensemble des coups possibles Une fonction d évaluation qui pour une position et un joueur donnés est capable de calculer qui a l avantage Une algorithme de sélection de coup qui pour une position et un joueur donnés est capable de calculer le meilleur coup pour ce joueur. L algorithme le plus connu est celui du MinMax. Position Joueur calculermeilleurcoup Coup Position Joueur générercoups Coups Position Joueur évaluer Entier Puissance 4. v2.0 3 / 29

L algorithme min-max 1 / 6 Principe La fonction d évaluation retourne un entier (ou un réel) tel que : le signe indique qui a l avantage (positif pour celui pour qui on calcule le meilleur coup, négatif pour l autre) la valeur absolue indique l importance de cet avantage Pour avoir l avantage, il faut maximiser son score On considère que l adversaire joue au mieux, c est-à-dire qu il essaye de maximiser son score, c est-à-dire minimiser celui pour qui on cherche à calculer le meilleur coup Puissance 4. v2.0 4 / 29

L algorithme min-max 2 / 6 Principe : générateur de coups et fonction d évaluation Coup du joueur (ordinateur) Coup adversaire Position P P 11 P 12 P 13 P 21 P 22 P 23 P 24 P 25 P 26 P 27 P 31 P 32 P 33 P 34 P 35 P 36 P 37 P 38 P 39 P 310 P 311 P 312 P 313 P 314 P 315 P 316 + P 41 P 42 P 43 P 44 P 45 P 46 P 47 P 48 P 49 P 410 P 411 P 414 P 415 P 416 P 417 P 418 P 419 P 420 P 421 P 422 P 423 P 424 P 425 P 426 P 427 P 428 P 429 P 430 P 431 P 432 3-4 5 6 2-3 0-4 5 10 3 5 - -6 0 6-2 -7 3 2 5-4 -1 0 1 3-8 8 2 0 Puissance 4. v2.0 5 / 29

L algorithme min-max 3 / 6 Remonter des scores (min, max) Coup du joueur (ordinateur) MAX Coup adversaire MIN Position P P 11 P 12 P 13-3 2 0 P 21 P 22 P 23 P 24 P 25 P 26 P 27 2-3 + 6 2 0 0 P 31-4 P 32 2 P 33-3 P 34-4 3 P 35 P 36 + P 37 P 38 P 39 5-6 P 310 P 311-7 2 P 312-4 P 313 P 314-1 0 P 315 P 316-8 0 + P 41 P 42 P 43 P 44 P 45 P 46 P 47 P 48 P 49 P 410 P 411 P 414 P 415 P 416 P 417 P 418 P 419 P 420 P 421 P 422 P 423 P 424 P 425 P 426 P 427 P 428 P 429 P 430 P 431 P 432 3-4 5 6 2-3 0-4 5 10 3 5 - -6 0 6-2 -7 3 2 5-4 -1 0 1 3-8 8 2 0 Puissance 4. v2.0 6 / 29

L algorithme min-max 4 / 6 Choix du coup Coup du joueur (ordinateur) MAX Coup adversaire MIN Position P P 11 P 12 P 13-3 2 0 P 21 P 22 P 23 P 24 P 25 P 26 P 27 2-3 + 6 2 0 0 P 31-4 P 32 2 P 33-3 P 34-4 3 P 35 P 36 + P 37 P 38 P 39 5-6 P 310 P 311-7 2 P 312-4 P 313 P 314-1 0 P 315 P 316-8 0 + P 41 P 42 P 43 P 44 P 45 P 46 P 47 P 48 P 49 P 410 P 411 P 414 P 415 P 416 P 417 P 418 P 419 P 420 P 421 P 422 P 423 P 424 P 425 P 426 P 427 P 428 P 429 P 430 P 431 P 432 3-4 5 6 2-3 0-4 5 10 3 5 - -6 0 6-2 -7 3 2 5-4 -1 0 1 3-8 8 2 0 Puissance 4. v2.0 7 / 29

L algorithme min-max 5 / 6 Synthèse Le sous-programme de choix d un coup a besoin : d un générateur de coups d un calcul de score d un coup Le sous-programme de calcul de score a besoin : d une fonction d évaluation de l algorithme min-max Le sous-programme min-max a besoin : d une générateur de coups d un calcul de score d un coup Puissance 4. v2.0 8 / 29

L algorithme min-max 6 / 6 Analyse descendante Position Joueur obtenirmeuilleurcoup Coup Position Joueur scoreduncoup Joueur Coup Entier Position Joueur Joueur minmax Entier Position Coup coupgagnant Position Joueur Booléen evaluer Entier Position Joueur obtenircoups Possibles Coups Position jeufini Booléen Position Joueur score Puissance 4. v2.0 9 / 29

Force brute pour le puissance 4 Générateur de coups Il suffit de répertorier toutes les colonnes du plateau qui ne sont p totalement remplies Fonction d évaluation (version très simple) Faire la somme du nombre de pions alignés multipliée par un coefficient pour chaque joueur : 1 pour un alignement d un pion 5 pour un alignement de deux pions 50 pour un alignements de trois pions 1000 pour un alignements de quatre pions Faire la différence des scores des deux joueurs Puissance 4. v2.0 10 / 29

Les types de données et leurs opérations 1 / 2 Nous avions les types : Pion qui est jaune ou rouge Contenu d une ce d un plateau qui est soit vide soit remplie par un pion qui est un ensemble de ce organisé en colonnes et lignes EtatPartie l état finale de la partie (partie gagnée ou partie nulle) Auxquels on ajoute Coups qui un ensemble de coups, avec un coup qui est le numéro d une colonne du plateau Puissance 4. v2.0 11 / 29

Les types de données et leurs opérations 2 / 2 Opérations de Coups obtenir un ensemble de coups vide (coups) Sortie : Coups obtenir le nb de coups (nb) Entrée : Coups Sortie : ajouter un coups (ajouter) Entrée : Coups, Sortie : Coups obtenir le ième coups (ieme) Entrée : Coups, Sortie : Puissance 4. v2.0 12 / 29

Analyse descendante (rappel) 1 / 3 faire une partie Afficher ObtenirCoup ObtenirCoup faireunepartie EtatPartie Pion vider plateautotalementrempli Booléen Pion jouer coupgagnant Booléen Puissance 4. v2.0 13 / 29

Analyse descendante (rappel) 2 / 3 coup gagnant coupgagnant Booléen 0..NB_LIGNES hauteur Ligne nbpionsalignes Verticalement Ligne nbpionsalignes Horizontalement Ligne nbpionsalignes Dialgonalement Ligne nbpionsalignes Dialgonalement GaucheADroite Ligne nbpionsalignes Dialgonalement DroiteAGauche Puissance 4. v2.0 14 / 29

Analyse descendante (rappel) 3 / 3 totalementrempli plateautotalement Rempli Booléen hauteur 0..NB_LIGNES Puissance 4. v2.0 15 / 29

Nouvelle analyse descendante pour l IA obtenircoup Pion obtenircoup Entier Pion scoreduncoup Pion Pion Pion minmax Entier coupgagnant Pion Booléen evaluer Entier obtenircoups Possibles Coups plateautotalement Rempli Booléen Pion score Ligne nbpionsalignes Verticalement 1..4 scorealignement Ligne nbpionsalignes Horizontalement Ligne nbpionsalignes Diagonalement Puissance 4. v2.0 16 / 29

Conception préliminaire, nouvelles fonctions / procédures 1 / 2 Opérations de Coups fonction coups () : Coups fonction nb (cps : Coups) : procédure ajouter (E/S cps : Coups,E col : ) fonction ieme (cps : Coups, ieme : ) : précondition(s) 0 < ieme et ieme nb(cps) Puissance 4. v2.0 17 / 29

Conception préliminaire, nouvelles fonctions / procédures 2 / 2 Opérations pour faire jouer l ordinateur au puissance 4 (IA) fonction obtenircoup (un : plateau, joueur : Pion, profondeur : ) : précondition(s) non plateautotalementrempli(un) fonction obtenircoupspossibles (un : plateau) : Coups fonction scoreduncoup (un : plateau, joueurref,joueurcourant : Pion, uncoup :, profondeur : ) : Entier fonction minmax (un : plateau, joueurref,joueurcourant : Pion, profondeur : ) : Entier fonction evaluer (un : plateau, joueurref : Pion) : Entier fonction score (un : plateau, joueur : Pion) : Entier Puissance 4. v2.0 18 / 29

Conception détaillée - Coups 1 / 2 Type Coups Type Coups = Structure lescoups : Tableau[1..NB COLONNES] de nbcoups : finstructure Opérations du type Coups fonction coups () : Coups Déclaration resultat : Coups debut resultat.nbcoups 0 retourner resultat fin fonction nb (cps : Coups) : debut retourner cps.nbcoups fin Puissance 4. v2.0 19 / 29

Conception détaillée - Coups 2 / 2 Opérations du type Coups (suite) procédure ajoutercoup (E/S cps : Coups,E cp : ) debut cps.nbcoups cps.nbcoups+1 cps.lescoups[cps.nbcoups] cp fin fonction ieme (cps : Coups, i : ) : précondition(s) 0 < ieme et ieme nb(cps) debut retourner cps.lescoups[i] fin Puissance 4. v2.0 20 / 29

Conception détaillée - IA 1 / 6 obtenircoup fonction obtenircoup (un :, joueur : Pion, profondeur : ) : Déclaration resultat :, cps : Coups, score,meilleurscore : Entier, i : debut cps obtenircoupspossibles(un) resultat ieme(cps,1) meilleurscore scoreduncoup(un,resultat,joueur,joueur,profondeur) pour i 2 à nb(cps) faire score scoreduncoup(un,ieme(cps,i),joueur,joueur,profondeur) si score>meilleurscore alors resultat ieme(cps,i) meilleurscore score finsi finpour retourner resultat fin Puissance 4. v2.0 21 / 29

Conception détaillée - IA 2 / 6 obtenircoupspossibles fonction obtenircoupspossibles (un : ) : Coups précondition(s) non plateautotalementrempli(un) Déclaration i : resultat : Coups debut resultat coups() pour i 1 à NB COLONNES faire si hauteur(un,i)<nb LIGNES alors ajouter(resultat,i) finsi finpour retourner resultat fin Puissance 4. v2.0 22 / 29

Conception détaillée - IA 3 / 6 scoreduncoup fonction scoreduncoup (un :, uncoup :, joueurref,joueurcourant : Pion, profondeur : ) : Entier debut jouer(un,uncoup,joueurcourant) si plateautotalementrempli(un) ou coupgagnant(un,uncoup) ou profondeur=0 alors retourner evaluer(un,joueurref) sinon retourner minmax(un,joueurref,autrejoueur(joueurcourant),profondeur-1) finsi fin Puissance 4. v2.0 23 / 29

Conception détaillée - IA 4 / 6 minmax fonction minmax (un :, joueurref,joueurcourant : Pion, profondeur : ) : Entier Déclaration resultat : Entier, cps : Coups, score : Entier, i : debut cps obtenircoupspossibles(un) resultat scoreduncoup(un,ieme(cps,1),joueurref,joueurcourant,profondeur) pour i 2 à nb(cps) faire score scoreduncoup(un,ieme(cps,i),joueurref,joueurcourant,profondeur) si joueurcourant=joueurref alors resultat max(resultat,score) sinon resultat min(resultat,score) finsi finpour retourner resultat fin Puissance 4. v2.0 24 / 29

Conception détaillée - IA 5 / 6 evaluer fonction evaluer (un :, joueurref : Pion) : Entier debut retourner score(un,joueurref)-score(un,autrejoueur(joueurref)) fin score fonction scorealignement (nbpionsalignes : 1..4) : Entier Déclaration resultat : Entier debut c où nbpionsalignes vaut 1: resultat 1 2: resultat 5 3: resultat 50 4: resultat 1000 finc retourner resultat fin Puissance 4. v2.0 25 / 29

Conception détaillée - IA 6 / 6 score fonction score (un :, joueur : Pion) : Entier Déclaration resultat : Entier, i :, j : Ligne debut resultat 0 pour i 1 à NB COLONNES faire pour j 1 à NB LIGNES faire si contenuce(un,i,j)=joueurref alors resultat resultat+ scorealignement(nbpionsalignesverticalement(un,i,j)) resultat resultat+ scorealignement(nbpionsaligneshorizontalement(un,i,j)) resultat resultat+ scorealignement(nbpionsalignesdiagonalementgaucheadroite(un,i,j)) resultat resultat+ scorealignement(nbpionsalignesdiagonalementdroiteagauche(un,i,j)) finsi finpour finpour retourner resultat fin Puissance 4. v2.0 26 / 29

Développement en Pcal 1 / 2 Ancien diagramme d unités - Texte et graphique Puissance 4. v2.0 27 / 29

Développement en Pcal 2 / 2 Nouveau diagramme d unités - Texte et graphique Puissance 4. v2.0 28 / 29

Conclusion Conclusion Sans la méthodologie du cycle en V : Il aurait été difficile d atteindre le résultat Il aurait été impossible de séparer le travail Ce qu il reste à faire pour avoir un bon programme Compléter la documentation du code Finir les tests unitaires Améliorer : la fonction d évaluation (prendre en compte qu une suite de pions non entourés compte plus qu une suite de pions entourés) les performances : élagage de l arbre de récursion (algorithme α β) Puissance 4. v2.0 29 / 29