1 Force brute. 2 Analyse. 3 Conception préliminaire. 4 Conception détaillée. 5 Développement. 6 Conclusion. Architecture des Systèmes d Information

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

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

Poker. A rendre pour le 25 avril

Resolution limit in community detection

Les Cartes et leur Valeur

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

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

Statistiques Descriptives à une dimension

Plus courts chemins, programmation dynamique

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

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

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

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

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

ARBRES BINAIRES DE RECHERCHE

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

Cours de Master Recherche

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

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

La classification automatique de données quantitatives

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

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

t 100. = 8 ; le pourcentage de réduction est : 8 % 1 t Le pourcentage d'évolution (appelé aussi taux d'évolution) est le nombre :

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

Matériel. . 9 cartes Personnage

Arbres binaires de décision

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

Arbres binaires de recherche

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

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

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

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

Les clients puissance cube

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

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

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

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)

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

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

TP3 : Manipulation et implantation de systèmes de fichiers 1

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

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

TP : Gestion d une image au format PGM

Indicateur i 20. Manuel d utilisation

Les structures de données. Rajae El Ouazzani

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

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

Les arbres binaires de recherche

Règlement du TGE. (Edité et validé le 13 Février 2015 par le Président, Hervé DACHARY)

Algorithmique et structures de données I

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

Correction du baccalauréat STMG Polynésie 17 juin 2014

MATHÉMATIQUES FINANCIÈRES

Burkina Faso Profil pays EPT 2014

Chapitre 3. Les distributions à deux variables

U102 Devoir sur les suites (TST2S)

Site Web de paris sportifs

UML et les Bases de Données

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

Intelligence Artificielle Distribuée. Dossier technique. IAD TeamZ

a) b)

INF601 : Algorithme et Structure de données

Optimisation Discrète

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

Assistant d e tablissement de Tableaux

Ce rêve est devenu réalité.

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

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2)

Programmation linéaire

Correction TD algorithmique

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

SOFI Gestion+ Version 5.4. Echanges de données informatiques Spicers Sofi gestion+ Groupements. SOFI Informatique. Actualisé le

Probabilité. Table des matières. 1 Loi de probabilité Conditions préalables Définitions Loi équirépartie...

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

Les devoirs en Première STMG

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

Initiation à LabView : Les exemples d applications :

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

Représentation d un entier en base b

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

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

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

Algorithmes d'apprentissage

Compter à Babylone. L écriture des nombres

FOCUS Evolution. Lisez-Moi. Version FE 7.0.t

Excel avancé. Frédéric Gava (MCF)

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Ateliers de formation Internet. epub : netlinking et Adwords

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

avec des nombres entiers

Construction d un cercle tangent à deux cercles donnés.

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Fiche pédagogique : ma famille et moi

LES TYPES DE DONNÉES DU LANGAGE PASCAL

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

Transcription:

Plan Puissance 4 intelligent I3 Algorithmique Nicol Delestre 1 Force brute 2 Analyse 3 Conception préliminaire 4 Conception détaillée 5 Développement 6 Conclusion Puissance 4. v2.0 1 / 29 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. 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 3 / 29 Puissance 4. v2.0 4 / 29

L algorithme min-max 2 / 6 L algorithme min-max 3 / 6 Principe : générateur de coups et fonction d évaluation Remonter des scores (min, max)!"# $ $ $ Puissance 4. v2.0 5 / 29 Puissance 4. v2.0 6 / 29 L algorithme min-max 4 / 6 L algorithme min-max 5 / 6 Choix du coup!" $# $# # $# # 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 7 / 29 Puissance 4. v2.0 8 / 29

L algorithme min-max 6 / 6 Force brute pour le puissance 4 Analyse descendante 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 9 / 29 Puissance 4. v2.0 10 / 29 Les types de données et leurs opérations 1 / 2 Les types de données et leurs opérations 2 / 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 Plateau qui est un ensemble de ce organisé en colonnes et lignes EtatPartie l état ale 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 Opérations de Coups obtenir un ensemble de coups vide (coups) Sortie : Coups obtenir le nb de coups (nb) Entrée : Coups Sortie : Naturel ajouter un coups (ajouter) Entrée : Coups, Colonne Sortie : Coups obtenir le ième coups (ieme) Entrée : Coups, Naturel Sortie : Colonne Puissance 4. v2.0 11 / 29 Puissance 4. v2.0 12 / 29

Analyse descendante (rappel) 1 / 3 Analyse descendante (rappel) 2 / 3 faire une partie coup gagnant!" Puissance 4. v2.0 13 / 29 Puissance 4. v2.0 14 / 29 Analyse descendante (rappel) 3 / 3 Nouvelle analyse descendante pour l IA obtenircoup totalementrempli %!! "##$ Puissance 4. v2.0 15 / 29 Puissance 4. v2.0 16 / 29

Conception préliminaire, nouvelles fonctions / procédures 1 / 2 Conception préliminaire, nouvelles fonctions / procédures 2 / 2 Opérations de Coups fonction coups () : Coups fonction nb (cps : Coups) : Naturel procédure ajouter (E/S cps : Coups,E col : Colonne) fonction ieme (cps : Coups, ieme : Naturel) : Colonne précondition(s) 0 < ieme et ieme nb(cps) Opérations pour faire jouer l ordinateur au puissance 4 (IA) fonction obtenircoup (unplateau : plateau, joueur : Pion, profondeur : Naturel) : Colonne précondition(s) non plateautotalementrempli(unplateau) fonction obtenircoupspossibles (unplateau : plateau) : Coups fonction scoreduncoup (unplateau : plateau, joueurref,joueurcourant : Pion, uncoup : Colonne, profondeur : Naturel) : Entier fonction minmax (unplateau : plateau, joueurref,joueurcourant : Pion, profondeur : Naturel) : Entier fonction evaluer (unplateau : plateau, joueurref : Pion) : Entier fonction score (unplateau : plateau, joueur : Pion) : Entier Puissance 4. v2.0 17 / 29 Puissance 4. v2.0 18 / 29 Conception détaillée - Coups 1 / 2 Conception détaillée - Coups 2 / 2 Type Coups Type Coups = Structure lescoups : Tableau[1..NB COLONNES] de Colonne nbcoups : Naturel structure Opérations du type Coups fonction coups () : Coups Déclaration resultat : Coups resultat.nbcoups 0 fonction nb (cps : Coups) : Naturel retourner cps.nbcoups Opérations du type Coups (suite) procédure ajoutercoup (E/S cps : Coups,E cp : Colonne) cps.nbcoups cps.nbcoups+1 cps.lescoups[cps.nbcoups] cp fonction ieme (cps : Coups, i : Naturel) : Colonne précondition(s) 0 < ieme et ieme nb(cps) retourner cps.lescoups[i] Puissance 4. v2.0 19 / 29 Puissance 4. v2.0 20 / 29

Conception détaillée - IA 1 / 6 Conception détaillée - IA 2 / 6 obtenircoup fonction obtenircoup (unplateau : Plateau, joueur : Pion, profondeur : Naturel) : Colonne Déclaration resultat : Colonne, cps : Coups, score,meilleurscore : Entier, i : Naturel cps obtenircoupspossibles(unplateau) resultat ieme(cps,1) meilleurscore scoreduncoup(unplateau,resultat,joueur,joueur,profondeur) pour i 2 à nb(cps) faire score scoreduncoup(unplateau,ieme(cps,i),joueur,joueur,profondeur) si score>meilleurscore alors resultat ieme(cps,i) meilleurscore score si pour obtenircoupspossibles fonction obtenircoupspossibles (unplateau : Plateau) : Coups précondition(s) non plateautotalementrempli(unplateau) Déclaration i : Naturel resultat : Coups resultat coups() pour i 1 à NB COLONNES faire si hauteurcolonne(unplateau,i)<nb LIGNES alors ajouter(resultat,i) si pour Puissance 4. v2.0 21 / 29 Puissance 4. v2.0 22 / 29 Conception détaillée - IA 3 / 6 Conception détaillée - IA 4 / 6 scoreduncoup fonction scoreduncoup (unplateau : Plateau, uncoup : Colonne, joueurref,joueurcourant : Pion, profondeur : Naturel) : Entier jouer(unplateau,uncoup,joueurcourant) si plateautotalementrempli(unplateau) ou coupgagnant(unplateau,uncoup) ou profondeur=0 alors retourner evaluer(unplateau,joueurref) sinon retourner minmax(unplateau,joueurref,autrejoueur(joueurcourant),profondeur-1) si minmax fonction minmax (unplateau : Plateau, joueurref,joueurcourant : Pion, profondeur : Naturel) : Entier Déclaration resultat : Entier, cps : Coups, score : Entier, i : Naturel cps obtenircoupspossibles(unplateau) resultat scoreduncoup(unplateau,ieme(cps,1),joueurref,joueurcourant,profondeur) pour i 2 à nb(cps) faire score scoreduncoup(unplateau,ieme(cps,i),joueurref,joueurcourant,profondeur) si joueurcourant=joueurref alors resultat max(resultat,score) sinon resultat min(resultat,score) si pour Puissance 4. v2.0 23 / 29 Puissance 4. v2.0 24 / 29

Conception détaillée - IA 5 / 6 evaluer fonction evaluer (unplateau : Plateau, joueurref : Pion) : Entier retourner score(unplateau,joueurref)-score(unplateau,autrejoueur(joueurref)) score fonction scorealignement (nbpionsalignes : 1..4) : Entier Déclaration resultat : Entier c où nbpionsalignes vaut 1: resultat 1 2: resultat 5 3: resultat 50 4: resultat 1000 c Puissance 4. v2.0 25 / 29 Développement en Pcal 1 / 2 Conception détaillée - IA 6 / 6 score fonction score (unplateau : Plateau, joueur : Pion) : Entier Déclaration resultat : Entier, i : Colonne, j : Ligne resultat 0 pour i 1 à NB COLONNES faire pour j 1 à NB LIGNES faire si contenuce(unplateau,i,j)=joueurref alors resultat resultat+ scorealignement(nbpionsalignesverticalement(unplateau,i,j)) resultat resultat+ scorealignement(nbpionsaligneshorizontalement(unplateau,i,j)) resultat resultat+ scorealignement(nbpionsalignesdiagonalementgaucheadroite(unplateau,i,j)) resultat resultat+ scorealignement(nbpionsalignesdiagonalementdroiteagauche(unplateau,i,j)) si pour pour Puissance 4. v2.0 26 / 29 Développement en Pcal 2 / 2 Ancien diagramme d unités - Texte et graphique Nouveau diagramme d unités - Texte et graphique Puissance 4. v2.0 27 / 29 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