MTProd > Dev4all > Articles > Programmation > Intelligence artificielle > L'erreur est humaine > 1 Première partie
Rechercher29 Personnes en-ligne

L'erreur est humaine

1  Première partie

Selon l'expression latine bien connue, l'erreur est dans la nature de l'homme.
La machine, rigoureuse et efficace n'en commet jamais.
La distinction 'moi homme, toi machine' est tellement ancrée dans les m?urs qu'imaginer qu'il puisse en être autrement est l'expression de la démence pour nombre de nos concitoyens.
Oublions les bogues et autres anomalies logicielles, pour nous intéresser aux 'vraies' erreurs : celles qui nous ont fait perdre successivement aux morpions, aux dames, puis aux échecs.
Les ordinateurs sont susceptibles de jouer - donc de perdre - à différents jeux de société.
Le plus souvent, ils perdent car cela s'avère être la solution optimale pour une raison élémentaire de convivialité: notre amour-propre (niveau de difficulté).
Lorsque le temps d'une partie nous affrontons, par l'intermédiaire de services spécialisés, un adversaire - masqué à nos yeux - rien ne permet alors d'en déterminer la nature, parfois informatique.
La machine deviendrait-elle humaine (sous entendu 'intelligente') ? Arggh ! L'intelligence est cette faculté cognitive qui permet à tout un chacun (ou presque) de collecter des données, de les mémoriser, de les associer, de les analyser et d'adopter une réponse à leurs stimulations.
L'objet de l'intelligence 'artificielle' est donc de reproduire 'artificiellement' ce comportement au sein d'un logiciel.
Les enjeux sont doubles : d'une part doter le programme d'une capacité d'appréciation et d'une logique adaptée, voire en mesure de s'adapter, d'autre part simuler un comportement humain pour des nécessités de divertissement (jeux de simulation).



1.1  La représentation des données

A titre d'exemple, nous mémorisons les images par concept.
D'une photo montrée brièvement la semaine passée, nous ne nous souvenons plus que des caractéristiques principales ou incongrues: un homme avec un chapeau de paille et des chaussettes roses.
Les traits du visage sont complètement oubliés, à tel point que, croisant l'individu dans la rue, nous ne serions en mesure de le reconnaître.
La première étape consiste donc à organiser et à structurer les données pertinentes collectées.
Dans le cade de notre exemple - un morpion - la nature du plateau de jeu, les pions n'influent pas sur l'analyse, seule leur disposition et appartenance importe.
Nous opterons pour un plateau de 100 cases (10 par 10) et pour le marquage suivant :

  • 1 pion allié

  • 1 pion adverse


La victoire est obtenue par la constitution d'une ligne de 5 pions alliés.
L'objectif est de simuler le comportement d'un joueur qu'il gagne ou perde.




1.2  L'évaluation

A chaque coup, l'état en cours est représenté sous la forme d'un tableau de valeurs 0, 1 et -1.
Puis les diverses possibilités sont envisagées.
De multiples méthodes peuvent alors être utilisées : reconnaissance suite à la mémorisation, analyse statistique ou systémique, valorisation, etc.
L'ensemble des principes sera abordé dans le cadre de cette série, mais pour commencer, nous nous intéresserons à la valorisation : la plus simple à mettre en ?uvre.
Elle consiste à donner une note à chaque case vide (0) selon la nature et l'ordonnancement des pions situés dans un rayon de 5 cases.
La valeur affectée est le maximum de la somme des produits (pion*'poids') dans chaque direction.
Le 'poids' est un coefficient qui diminue avec l'éloignement, donnant ainsi plus d'importance aux pions à proximité.
Le calcul n'est opéré pour chaque direction que si une ligne peut être effectuée dans la direction choisie (le jeu est limité au plateau).




1.3  L'action

La décision concernant la case à jouer est déterminée par la meilleure note en valeur absolue (sinon seuls les coups alliés seraient pris en charge).
L'objet est d'empêcher l'adversaire de jouer une case particulièrement stratégique, et si possible d'améliorer l'étendue de ses possibilités.
Le processus doit ensuite être itéré autant de fois que nécessaire.
La représentation du plateau et la valeur associée à chaque case peuvent être consultées à chaque étape pour suivre l'évolution numérique du processus.




1.4  Java...

L'implémentation de cette première approche est effectuée en Java.
Trois classes sont définies à cet effet : Plateau, Jeu et Joueur.
Jeu est l'amorce de l'application et se limite à la création de l'affichage d'une nouvelle instance de Plateau.
Plateau comporte l'ensemble des cases à jouer sous la forme de JButton et quelques commandes connexes permettant de placer des pions, d'effacer le plateau et de provoquer le calcul d'un coup par l'ordinateur.
Le corps de l'application (la simulation du joueur) est concentré dans la classe Joueur.
Elle comporte un constructeur permettant d'associer une marque au joueur considéré : un 'O' ou un 'X'.
A noter, que d'autres joueurs peuvent être créés : il suffit d'associer un signe et un nouveau JButton à ce dernier.
Les directions sont décrites sous la forme de vecteurs dont les valeurs sont stockées dans 'vrx' et 'vry'.
Huit vecteurs sont mémorisés correspondant respectivement au sommet d'une ligne partant d'une case quelconque et allant 'en haut à gauche' (-4,-4), en 'haut' (0,-4)...
dans le sens des aiguilles d'une montre.
La représentation du plateau est stockée dans 'rep' et les valeurs calculées dans 'val'.
La méthode qui effectue la représentation se nomme 'modelise', celle qui détermine - avec plus ou moins de succès - le pion à jouer s'appelle 'decide'.
La méthode 'joue' se limite donc à l'appel successif de l'une, puis de l'autre.
Les conditions de victoire sont vérifiées par la méthode 'victoire'.
Elle valorise chaque pion joué en lui affectant le nombre de pions de la plus grande ligne auquel il appartient.
Lorsque la valeur 5 ou -5 est décelée, l'un ou l'autre des belligérants a gagné.
La partie est alors terminée.
Préalablement au commencement d'une partie, vous pouvez placer - aux fins d'études - une situation.
Le premier bouton, initialement noté 'O', change d'état lorsque l'on clique dessus.
Les valeurs 'O', 'X', ' ' se succèdent.
Lorsque la valeur choisie est sélectionnée, vous pouvez l'affecter à n'importe quelle case du plateau.
Une fois la situation initiale établie, vous pouvez faire jouer 'X' ou 'O' avec le bouton du même nom.




1.5  L'erreur

Le principe d'évaluation est valide dans le cadre de modèle simple.
Dès que la situation devient un peu complexe (plus d'une vingtaine de pions) ou lors de l'emploi de configuration particulière, le procédé induit une réponse erronée.
Les raisons sont principalement liées au mode d'évaluation qui ne privilégie pas davantage les situations 'ouvertes'.
Ainsi, deux ensembles de trois pions placés en ligne provoquent les mêmes valeurs à la case située à une case de l'alignement (une case vide entre) qu'il y ait ou non un pion adverse à l'autre extrémité de la ligne.
L'évaluation ne porte que sur le coup en cours et n'effectue pas de projection sur les coups à venir (particulièrement intéressant pour les ensembles de trois pions), La base expérimentale étant établie, nous ne tarderons pas à établir un modèle beaucoup plus convaincant...





 Sommaire 

 Accés rapide

1  Première partie

La représentation des données

L'évaluation

L'action

Java...

L'erreur

Voir le sommaire complet

 Liens utiles

  • Publier un article
  • Envoyer cette page
  • Ecrire à l'auteur

  •  Mini-Chat

    Miuka (21h15): Coin coin de 2014
    Miuka (21h15): Des gens qui ont migré sur le forum Clickteam ou ailleurs ?
    Strike (09h45): Salut les vieux !
    Hikarion (12h46): Salut les djeunz
    Hikarion (13h38): A qui profite le scandale ?
    Hikarion (13h44): le chat irc est toujours actif ?
    Exodraw2020 (00h31): Houlala ça fait 15ans que je n'avais pas mis les pieds ici ! :
    Exodraw2020 (22h31): Dev4all 2021 ! : ) on y crois !
    Exodraw2020 (22h32): Je viens de publier et présenter mon jeu DaddHunter
    Exodraw2020 (22h33): rangé dans la catégorie jeu d'action aventure, du coup Action

    Votre message



     Archives

     Dev4all Newsletter

    Restez à jour avec la newsletter mensuelle !

    Votre e-mail


    1805 abonnés

     Recommander Dev4all

    Recommandez Dev4all à un ami. Cela fera grandir notre communauté !

    E-mails de vos amis




    [ Accueil | S'inscrire | Mon Dev4all | Communauté | Téléchargements | Articles | Forums | Chat ]

    [ A propos de Dev4all | Aide | La charte Dev4all | Contact ]

    © 2000-2022 MTProd. Tous droits réservés.
    L'utilisation de Dev4all implique l'acceptation et le respect de la charte Dev4all.