Tuto IA de base

Résolu/Fermé
valgoku Messages postés 187 Date d'inscription lundi 17 avril 2006 Statut Membre Dernière intervention 22 janvier 2013 - 25 nov. 2010 à 14:17
 Pitou3 - 3 janv. 2011 à 19:27
Bonjour,

J'aimerai commencer la programmation IA en C++, sauf que je n'ai aucune idée où commencer !
Donc j'ai regardé un peu les autres topics et aucun ne répond réellement à la question.
Auriez-vous des tutos permettant de comprendre l'IA, et d'apprendre le mécanisme et l'algo IA ?
Mon but n'est pas de créer CS ou d'autres jeux encore, mais pour par la suite y arriver, j'aimerai vraiment prendre les bases !
Math ? Algo ?

Merci pour vos réponses !


A voir également:

4 réponses

Salut,

Commence par lire cet excellent article : "Introduction aux techniques de base
pour l'intelligence artificielle" : https://damien-guichard.developpez.com/tutoriels/algo/introduction-techniques-IA/
Ensuite pour la programmation à C++ va sur le portail dédié à C++ tu y trouvera tout ce dont tu as besoin : https://cpp.developpez.com/
3
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
25 nov. 2010 à 14:37
Bonjour,

Déjà, la première étape, c'est de savoir dans quel environnement doit évoluer ton agent.
Programmer une IA pour Counter-Strike, pour reprendre ton exemple, n'est pas du tout la même chose que programmer une IA pour Civilization, pour un robot ou pour un jeu d'échecs.

Programmer une IA, ce n'est pas créer une entité intelligente qui saura s'adapter au jeu dans lequel on la place ;) Un jour, peut-être, mais on n'y est pas encore !

Donc, première chose à faire, définir l'environnement.
Savoir quels sont les paramètres d'entrée à prendre en compte, quels sont les actions possibles.

Ensuite, une IA doit avoir un but. En général, on utilise un algorithme qui permet de donner un "score" à une situation (c'est-à-dire à l'ensemble des paramètres de l'environnement), et le but de l'IA sera de maximiser (ou minimiser) ce score.
Pour simplifier, à CS, si j'ai un ennemi en face, le score de la situation sera meilleur si j'ai sa tête dans le viseur, et encore meilleur s'il est mort :p

Je ne peux pas vraiment développer plus, d'une part parce que je n'ai pas le temps, et d'autre part parce que n'ayant jamais vraiment mis en pratique cela en dehors d'un ou deux TP à l'école, je n'ai que la théorie (de base) et pas de recul à t'offrir... Mais je pense que c'est déjà une base de démarrage.

Xavier
2
valgoku Messages postés 187 Date d'inscription lundi 17 avril 2006 Statut Membre Dernière intervention 22 janvier 2013 47
25 nov. 2010 à 14:51
Voilà un début de réponse ! :)

Pour tout te dire, je n'ai pas encore choisi mon "environnement".
On va dire que mon but ultime serait de comprendre le mécanisme de l'IA de CS, mais ca c'est encore très loin et je ne veux pas commencer à direct essayer de comprendre ca.

Je souhaite commencer avec les bases, avec par exemple le dev d'un mini jeu, tout simple. Genre min-max. Et encore, c'est déjà bien loin !

L'algo, pas de problème, après je ne sais pas par quoi commencer comme TP.

Merci pour ta réponse Xavier en tout cas !!

Je pensais à commencer à m'entraîner en faisant des algorithmes de recherches dans des tableaux, des algorithmes de formules mathématiques, et d'autres encore, pour m'habituer à la logique mathématique. Qu'en pensez vous ?
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
25 nov. 2010 à 15:36
Alors, une idée de TP que j'ai eu à faire en cours :
Un robot (virtuel) rectangulaire, qui possède deux capteurs de présence à l'avant (droite / gauche).
Il possède également deux roues motrices, à droite et à gauche, et deux roues libres (façon caddie) devant et derrière. Il peut donc avancer / reculer en activant ses deux roues motrices en même temps, et tourner en en activant qu'une seule.

Le robot est placé dans un environnement fermé parsemé d'obstacles. Son but, c'est d'atteindre un point précis de la pièce, dont il connaît la position, sans se cogner.

Voilà voilà :) Bon courage !
0
valgoku Messages postés 187 Date d'inscription lundi 17 avril 2006 Statut Membre Dernière intervention 22 janvier 2013 47
25 nov. 2010 à 15:46
AHHH je retrouve l'humour des vrais programmeurs ^^ J'aime ^^
0
Salut, tu parlais d'un système de score, mais comment le coder?
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
3 janv. 2011 à 10:28
Le coder n'est pas le problème, le plus difficile est de le définir.
En fait, il faut définir le degré de satisfaction que l'agent peut retirer de son environnement (ou de son état propre).
Tu définis donc plein de paramètres, par exemple, pour un agent qui doit se nourrir :
- faim (F)
- soif (S)
- proximité d'un puits (P)
- proximité de gibier (G)

Tu leur attribues une échelle de valeur, par exemple de 0 à 10 pour chacun.

Tu définis une formule qui donne le "score" de la situation en cours :
Score = P + G - F - S

Le but de l'agent sera de maximiser à tout moment ce score, ce qui revient donc à dire qu'il va éviter de s'éloigner des sources de sustentation, et qu'il va manger / boire le plus possible.
Cette règle de décision peut se moduler, plutôt que de maximiser le score il peut se contenter de le maintenir au dessus d'un certain seuil, ou de privilégier la soif sur la faim... Bref il y a énormément de chose à décider avant de passer au codage.

Ensuite, le codage est tout bête... Calculer le score, ce ne sont que des opérations élémentaires, même si tu peux mettre ce que tu veux dans la formule, des racines carrées, des sinus ou autre. Mais on en revient toujours à la même chose, ça commence par la définition.

Xavier
0
Y a pas d'IA dans CS !
0
valgoku Messages postés 187 Date d'inscription lundi 17 avril 2006 Statut Membre Dernière intervention 22 janvier 2013 47
25 nov. 2010 à 14:44
Alors , d'une c'était un exemple, et de deux, pas d'IA ? et alors avec les bots c'est quoi ? et les otages ? c'est quoi si c'est pas de l'IA ?
0