RECHERCHER :
COMMUNAUTE MP
Identifiez vous ...
Devenir Membre
J'ai oublié mon MDP
DOMAINE MP
Bavardages
Langages Généraux
Langages Web
Langages DotNet
Autres langages
Dev. Jeux Video
Sécurité
Sys. Exploitation
Graphismes
Logiciels
Réseaux
Bases de données
Méthodologies
Emplois High-tech
Aide juridique
Articles juridiques
FORUM
Index des forums
Ajouter un sujet
Rechercher sujet
Contact Responsable
Devenir modérateur
CHAT MP IRC
Votre pseudo ...
Srv: irc.moteurprog.com
Chan: #MoteurProg
PARTICIPER
Plus de 3500 emplois.
Rechercher un job
Déposez votre CV
Emplois High-tech

Visiteur MP

 Comment définir une décision ?

Forum : INTELLIGENCE ARTIFICIELLE ( IA )
Sous Catégorie : Aucune
Type du sujet : Sujet Normale
FAQ : FAQ INTELLIGENCE ARTIFICIELLE ( IA )

SUIVI DES SUJETS PAR MAIL

SUIVI PAR MAIL INACTIF

RESOLUTION DU SUJET SUJET NON RESOLU
BLOQUAGE DU SUJET SUJET ACTIF
APPARTENANCE A LA FAQ N'APPARTIENT PAS A LA FAQ


PAGES : [1] [2] [3] [4]

POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

FORUM INTELLIGENCE ARTIFICIELLE ( IA )

PREMIERE PAGE

PAGE PRECEDENTE

Page précedente

Page suivante

PAGE SUIVANTE

DERNIERE PAGE
pac
Co-Administrateur
Superviseur :
- Méthodologie.
Modérateur :
- Delphi
Chef de projet(s) :
- Jeu Awalé
- EcoSystem
- MySudoku

Avatar de pac
Inscrit : 08/04/2004
Messages : 6570
Message
#104593
Posté le 08/07/06 à 18:02
Salut tout le monde.
Je réfléchis sur le moyen le plus pratique, simple, évolutif et efficace pour faire prendre une décision à une mini IA qui aurait l'intelligence d'un insecte.

En gros, en entrée il y aurait une matrice de ce qui entoure l'animal (tableau des objets (animaux, végétaux, eau ...) proches de l'animal et en sortie l'animal donnerait le choix qu'il fait (aller vers un objet pour chasser, se reproduire, boire... ou fuir un objet pour ne pas être mangé...).

Il faudrait que la méthode soit simple et évolutive, donc si l'animal choisit n'importe quoi ce n'est pas grave. Car par la suite, il y a une sélection naturelle qui éliminera ceux qui font des mauvais choix et garde ceux qui font les bon choix (comme un algo génétique).

J'ai pensé au principe des réseaux neuronaux en utilisant un réseau qui n'aurrait pas forcément appris. Mais j'ai peur qu'il soit difficile de lui faire faire des choses proches pour des environnements proches. Par exemple, il ne faudrait pas quand une proie est à (-5;-5) il la poursuive et si elle se trouve à (-4;-6) il parte à l'opposé. Il faut que les réponses soient homogènes.

Qu'en pensez-vous ?

PS : ce sujet n'est pas destiné à troller sur la viabilité ou non d'une IA ou à lancer n'importe quel autre troll, il a pour but de mettre en commun la réflexion de différentes personnes afin de trouver une réponse à un problème.
__________________________
Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
N'oubliez pas le Tag [Résolu]Image.

Initiez-vous à Delphi avec Turbo Delphi Explorer, au C ou au C++ avec Code::Blocks et C# avec Visual C# 2005 Express.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE ALLER VOIR SON SITE

Publicité
Inscrit : X
Messages : X
Message
#Aucun

HAUT DE PAGE

  

pac
Co-Administrateur
Superviseur :
- Méthodologie.
Modérateur :
- Delphi
Chef de projet(s) :
- Jeu Awalé
- EcoSystem
- MySudoku

Avatar de pac
Inscrit : 08/04/2004
Messages : 6570
Message
#105187
Posté le 16/07/06 à 10:19
Salut, je fais un petit compte rendu de mes investigations et réflexions.

Je pense qu'il n'est pas possible d'utiliser un réseau neuronal "non appris" comme algo de prise de décision. Le problème étant qu'un réseau neuronal prend en entrée des valeurs numériques et que le nombre d'entrée est fixe.
En entrée, j'ai à la place un tableau (à 2 dimensions) de liste d'objets. Chacune des listes possédant entre 0 et n objets de différents types.
Il faudrait que l'algo puisse prendre en compte un nombre différent d'objets ainsi que leur type et leurs champs.
Un réseau neuronal n'est, je pense, pas adapté pour ce genre de problématique.

Rappel de la problématique : trouver un algo qui simulera une décision. Cette décision peut être aberrante, là n'est pas le problème. Il faut que l'algo puisse prendre en entrée un nombre d'objets indéterminé et ressortir une action (parmi une liste exhaustive). L'algo doit être homogène. Deux entrées différentes fort proches doivent donner 2 sorties proches. Et l'algo doit être évolutif, c'est à dire, qu'il peut changer ses décisions en fonctions de paramètres.

Je suis en train de faire des recherches sur les Systèmes Experts. Ne connaissant encore rien sur le sujet, je veux en apprendre suffisamment pour savoir s'il répondent à ma problématique ou pas. Il se peut que oui, mais c'est pas encore sûr. Il faudrait que j'ai une base de connaissance, ceci est encore envisageable. Mais une question est : est ce que le système reste homogène si évoluent sensiblement ?
C'est à dire, est ce que la réponse du système va être complètement différente si la base de connaissance change fort peu ?
Il faut que la réponse soit non mais je ne sais pas si c'est le cas ou non encore.

L'autre problème est de mettre en place la base de règles. Je ne peux pas dans mon projet coder en dur les règles car elles doivent être évolutives et trouver leur équilibre par l'expérience.

Bon, je me dis que peut-être je confonds un peu ces bases dans les systèmes experts. Je continue mon investigation et mes réflexions sur le sujet.

Si quelqu'un a une idée ou une information qui pourrait m'aider dans cette recherche, je suis bien sûr preneur. Smiley
__________________________
Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
N'oubliez pas le Tag [Résolu]Image.

Initiez-vous à Delphi avec Turbo Delphi Explorer, au C ou au C++ avec Code::Blocks et C# avec Visual C# 2005 Express.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE ALLER VOIR SON SITE

pac
Co-Administrateur
Superviseur :
- Méthodologie.
Modérateur :
- Delphi
Chef de projet(s) :
- Jeu Awalé
- EcoSystem
- MySudoku

Avatar de pac
Inscrit : 08/04/2004
Messages : 6570
Message
#105216
Posté le 16/07/06 à 23:59
Je continue à mettre l'état d'avancement de ma réflexion et recherche dans le domaine.

Je pense que le mieux serrait de diviser le problème en un ensemble de sous problèmes.

Rappellons les faits : nous avons en entrée une liste d'objets positionnés autour de l'objet qui doit prendre une décision parmi une liste d'actions possibles.

Traiter d'un bloc un nombre non défini d'objets est trop complexe à mettre en oeuvre, l'idée est de décomposer la liste en somme d'unité ne comprennant qu'un objet.

Pour chaque objet de la liste, le système décide d'une action suivant les valeurs de ses champs ainsi que de la nature de l'objet et les valeurs de ses champs.
L'action serrait pondérée en fonction par exemple de la différence de valeurs de champs commun ou de la distance entre les objets. Cette pondération permet de définir une pseudo logique floue (on pourrait faire une logique floue plus évoluée mais ça n'aurrait pas trop d'intérêt pour commencer).

Puis on somme l'ensemble des décisions avec leur poids et l'action la plus forte est celle qui est prise au final.

Le défaut d'un tel système est le fait qu'on doit supposer que les interactions entre 2 objets sont indépendantes des interactions d'autres objets. Cette approximation peut-elle faire prendre des décisions abérantes ou non homogènes ? Je ne sais pas encore, l'expérience nous le dira.

La prise d'une décision simple (avec un seul objet en entrée) pourrait être du type système expert avec la base de règles pouvant changer afin de donner le principe d'évolution du système. Mais c'est encore en réflexion.
__________________________
Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
N'oubliez pas le Tag [Résolu]Image.

Initiez-vous à Delphi avec Turbo Delphi Explorer, au C ou au C++ avec Code::Blocks et C# avec Visual C# 2005 Express.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE ALLER VOIR SON SITE

Czayfaboo
Co-Administrateur
Superviseur :
- Langages Dot.
Modérateur :
- CSharp (C#)
Chef de projet(s) :
- ID3.NET Library
- MoteurProg Work.

Avatar de Czayfaboo
Inscrit : 05/01/2005
Messages : 2876
Message
#105232
Posté le 17/07/06 à 11:16
Oui mais si tu pondères tes objets, tu influes donc sur le choix de ton IA et sa décision sera forcément la meilleure et pas une décision aléatoire car (d'après ce que j'ai compris) tu veux donner des valeurs finales représentant chaque objet et ton IA (d'insecte) choisirait la valeur la plus approprié et pas une valeur au hasard... il ne s'agit donc plus d'une IA qui apprend à prendre une décision mais d'une IA qui sait quelle est la bonne décision à prendre en fonction des données de son environnement sans qu'elle ait eu à l'apprendre.

Je verrais cela plutôt d'une autre manière :
- on a une IA au centre
- autour, des objets, de natures différentes tels que de la nourriture (bénéfique), une arbre (neutre), ou un prédateur (dangereux).
- l'insecte choisit d'aller sur telle ou telle case l'environnant (la case immédiate je dirais, car il doit être forcer d'y passer : il ne peut pas se téléporter).
- cet insecte sait ce qu'il y a sur la case (représentation numérique et unique de l'objet) mais ne sait pas quels effets cet objet peut avoir sur lui
- il se déplace sur la case et l'objet entre action avec lui ou vice versa (je pense qu'on peut considérer comme pré-programmé la nature de certains objets naturels qui ne nous interesse pas ici)
- si la case était bénéfique pour lui (il a pu manger par exemple, ce qui lui a redonner de la force ou je ne sais quoi), il retient la valeur numérique associée à cette case dans sa liste de valeur positive
- si la case était dangereuse pour lui, voir mortel (il est mort : un prédateur l'a bouffé), il retient la valeur associée à cette case dans sa liste de valeur négative pour lui
- si la case était neutre, il n'a pas besoin de retenir la valeur

... et on recommence avec les autres cases environnantes (il peu décider alors de revenir en arrière). Si l'insecte meurt : il recommence au point de départ mais en conservant ses connaissances de l'environnement.

Chaque choix suivant sera déterminé par la valeur de la case et les valeurs contenues dans les 2 listes de l'insecte (+ ou -). A partir de là, il effectuera des choix de plus en plus raisonnés et aura appris à faire ces choix (avec tout de même un tout petit algo que nous aurons eu à coder).
__________________________
Sujet résolu ? Pensez à mettre le tag Image
Un problème en C# ? Vérifiez celui-ci n'est pas déjà résolu dans la FAQ et que le sujet n'est pas traité parmis les tutoriaux ou les articles avant de poster dans le forum C#.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Czayfaboo
Co-Administrateur
Superviseur :
- Langages Dot.
Modérateur :
- CSharp (C#)
Chef de projet(s) :
- ID3.NET Library
- MoteurProg Work.

Avatar de Czayfaboo
Inscrit : 05/01/2005
Messages : 2876
Message
#105411
Posté le 19/07/06 à 21:02
PS : En fait le plus complexe ne serait donc pas de le faire se décider à se déplacer à tel ou tel endroit mais plutôt de paramétrer correctement son environnement pour que même son environnement puisse interagir entre lui-même (ex : c'est une mouche qu'on veut balader mais il y a une grenouille (qui veut bouffer la mouche) et de l'eau dans l'environnement... il faudrait que la grenouille sache que l'eau est + pour elle, et que la mouche sache que l'eau et la grenouille sont dangereuses pour elle... donc pas évident ensuite de trouver des descriptions d'objets appropriées...).

Et en fait, en analysant le problème de cet manière, j'ai l'impression que ce genre d'IA existe déjà et depuis un bon moment... rien que dans les jeux par exemple, l'IA va choisir d'aller dans telle ou telle direction parce qu'elle sait qu'il n'est pas bon par exemple d'en prendre une autre en fonction des actions du joueurs... y'a pleins de jeux comme çà...
__________________________
Sujet résolu ? Pensez à mettre le tag Image
Un problème en C# ? Vérifiez celui-ci n'est pas déjà résolu dans la FAQ et que le sujet n'est pas traité parmis les tutoriaux ou les articles avant de poster dans le forum C#.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

loacast
Membre actif
Inscrit : 19/11/2004
Messages : 116
Message
#105419
Posté le 19/07/06 à 23:03
Czayfaboo dit :
Et en fait, en analysant le problème de cet manière, j'ai l'impression que ce genre d'IA existe déjà et depuis un bon moment... rien que dans les jeux par exemple, l'IA va choisir d'aller dans telle ou telle direction parce qu'elle sait qu'il n'est pas bon par exemple d'en prendre une autre en fonction des actions du joueurs... y'a pleins de jeux comme çà...


Arrêtons le délire, la plupart des IA que tu as pu voir dans les jeux n'en sont pas ... ce sont juste des scripts propres à chaque map. On trouve biensûr des exeption avec notemment un jeu qui va sortir (je ne me souviens plu le nom mais ça se passe autour de shernobil ... pardon pour l'orthographe). Dans ce jeu, chaque ennemi analyse une situation de combat en fonction des ennemis, des armes et éventuellement de l'environnement. Ainsi, ce n'est plus du script mais il réelle analyse en temps réel.

Mais il semblerait que tu n'es pas bien saisie ce dont pac parle et c'est totalement différent des IA que l'on peut trouver dans les jeux actuels, ça se rapprocherait plutôt du jeu créatures (qui est unique en son genre) et dont tout le principe du jeu se base sur l'IA.
En fait, il n'est pas question de dire à l'IA : là c'est dangereux, là ça ne l'est pas, ça c'est comestible et ça non. Tout l'intérêt est de réaliser un environnement dans lequel l'insecte évolu et lui même, en fonction des aléas de ces déplacements et tentives, décide qu'est-ce qu'il doit faire et ne pas faire pour survivre.

C'est quand même pas la même chose. En tout cas c'est une bonne idée mais pas forcément évident à mettre en place. Bonne chance pac, tu en auras besoin.
__________________________
Writing-Pad

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Czayfaboo
Co-Administrateur
Superviseur :
- Langages Dot.
Modérateur :
- CSharp (C#)
Chef de projet(s) :
- ID3.NET Library
- MoteurProg Work.

Avatar de Czayfaboo
Inscrit : 05/01/2005
Messages : 2876
Message
#105420
Posté le 19/07/06 à 23:27
Si, j'ai bien lu le sujet de Pac... mais je l'aborde d'une manière différente de celle de Pac...

Je considère que pour que l'IA puisse choisir (c-a-d, prendre une décision) de se déplacer, et pour qu'elle puisse choisir de manière évolutive (elle ne connait pas forcément la nature de l'objet appartenant à telle ou telle case) où se déplacer, il faut qu'il y ait une sorte de mesure (c'est bien obligé) qui lui indique la valeur de son déplacement (t'as bien fait d'aller ici, t'aurais pas du, t'es morte...). Elle retient cette valeur en fonction d'un descriptif exact de l'objet qu'elle a rencontré sur la case et lorsqu'elle retombera sur cet objet, elle saura si elle a interêt ou non d'y aller...
Au bout du compte, on aurait une IA qui aurait appris à "connaître" des objets et leurs effets sur elle et cette connaissance lui permettrait de décider d'aller dans telle ou telle direction, sur telle ou telle case en fonction des objets d'un l'environnement donné.
... ce qui répond à la problématique soulevée par Pac.
__________________________
Sujet résolu ? Pensez à mettre le tag Image
Un problème en C# ? Vérifiez celui-ci n'est pas déjà résolu dans la FAQ et que le sujet n'est pas traité parmis les tutoriaux ou les articles avant de poster dans le forum C#.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Alp
Superviseur :
- Système d'ex.
- Méthodologie.
- C & C++
Modérateur :
- Bavardages
Chef de projet(s) :
- My SDL Lib

Avatar de Alp
Inscrit : 24/06/2004
Messages : 2571
Message
#105430
Posté le 20/07/06 à 09:34
En effet, j'trouve que l'idée de Czayfaboo est pas mal... En tout cas elle répond à la problématique de pac.

pac > en effet les réseaux neuronaux ne sont pas applicables ici, enfin dans le contexte que tu nous as défini...

Pour ma part, j'ai quelque chose à proposer, se rapprochant de Czayfaboo :
Comme tu l'as dit pac, tu définis certaines choses au début.
Je pensais à définir des priorités pour la mouche(ouais j'aime bien l'évolution de la mouche dans un zoo). Si tu gères la faim etc ... la décision, pour ne pas être stupide(ca serait bête), doit prendre en compte la faim. Même les mouches "savent" que lorsqu'elles ont faim elles doivent manger, sinon elles meurent. C'est l'instinct. Ton insecte doit obligatoirement répondre à son instinct. Son instinct c'est donc se préserver(faim, sommeil ...).
Forcément, donc, si la mouche a très faim, elle ira à la case ou il y a de la nourriture la plus proche.. Si elle veut dormir(ca dort les mouches?) elle essayera forcément de se mettre loin d'un prédateur. Et de manière générale elle devra rester loin des prédateurs.
Il doit y avoir d'autres règles de ce genre,mais on va pas en faire la liste exhaustive non plus.
Donc la bête devra obéir à ces règles, pour être un minimum réaliste.
Ensuite, tu lui passes ton tableau, et en fonction des règles, tu "calcules" pour chaque possibilité la "bienfaisance" de la décision. Une sorte de pondération, comme tu l'as dit, pac.

Ca c'est une IA non évolutive, qui n'apprend rien, mais qui prend des décisions "réalistes".
Celle de Czayfaboo est évolutive, elle apprend ce qui lui fait du bien, etc.
Mais en même temps, quand les insectes naissent, ils savent ce qu'ils doivent manger, ou pas?
__________________________
Be C++
Mon Blog (C++, Intelligence Artificielle, Prolog)

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Professor X
Membre du club
Avatar de Professor X
Inscrit : 01/04/2005
Messages : 318
Message
#105602
Posté le 22/07/06 à 09:44
Je définirai la décision comme une démarche qui est défini pour atteindre un but.
Le but étant de répondre à des besoins. Donc pour débuter, on doit identifier les besoins, les moyen d'identifier ses besoin, les mécanismes disponibles (les actions qui peuvent être fait par la bestiole) et enfin des mécanisme de conditionnement.

je ne crois pas que cela exclus les réseaux de neurones, mais je ne crois pas que l'on puisse s'appuyer sur une seule approche. J'ai réfléchi sur une idée semblable et au coeur d'une telle machine, il faudrait un espèce de gestionnaire de besoin, qui ferait une distribution des problèmes en résoudre en fonction du caractère critique des besoins. Ce qui représenterai la boucle principale, ce noyau communiquerai avec un système de sélection d'algorythme de résolution (qui lui-même aurait besoin d'un mécanisme de conditionnement) et enfin la couche des fonctions de résolution.

Bref, je dirai que l'expérience, c'est l'art de choisir le bon mécanisme pour résoudre un problème qui empêche l'atteinte à une équilibre.

Je crois que ce modèle est celui que j'ai trouvé comme le plus modelisable:

http://fr.wikipedia.org/wiki/Behaviorisme

pour ce qui est des besoins, voici ce qui a été identifié pour l'être humain:

http://fr.wikipedia.org/wiki/Pyramide_des_besoins

Le degré d'évolution détermine le nombre d'étage de la pyramide. Smiley

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

pac
Co-Administrateur
Superviseur :
- Méthodologie.
Modérateur :
- Delphi
Chef de projet(s) :
- Jeu Awalé
- EcoSystem
- MySudoku

Avatar de pac
Inscrit : 08/04/2004
Messages : 6570
Message
#105609
Posté le 22/07/06 à 12:07
Les idées de Czayfaboo ne sont pas mauvaises, elles se basent sur le "que doit-on faire ?" et non pas sur le "comment le faire ?".
En fait, c'est une réfléxion sur comment fonctionne le cerveau et pourquoi il prend telle ou telle décision grâce à un apprentissage par récompense (avec des récompenses négatives quand c'est une mauvaise décision).

Ma démarche est un peu différente, je ne désire pas faire un animal qui apprenne en fonction de son environnement. J'ai choisi de faire un animal dont son intelligence n'évoluera pas tout le long de sa vie.
L'intelligence se ferra grâce à une sélection naturelle. Les animaux qui meurent vite se reproduiront moins (ou pas) vite que ceux qui restent en vie longtemps. Et donneront leur "type de réflexion" à leurs enfants. Il se peut aussi que les enfants aient un mix des "type de réflexion" de leur 2 parents. Ce point n'est pas encore décidé.
L'évolution de l'intelligence se ferrait donc grâce au principe d'algorithme génétique mais codé comme la sélection naturelle du monde réel.

Pour la prise de décision, je pense utiliser un système expert sans avoir à découper en fonction de chaque élément environnant l'animal et les recomposant avec une moyenne pondérée, mais il faut que je fouine plus sur les systèmes experts.

PS : pour ceux qui désirent savoir quels types d'IA sont utilisés dans quels jeux :
http://animatlab.lip6.fr/papers/Joystick_Dossier_IA_2002.pdf
__________________________
Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
N'oubliez pas le Tag [Résolu]Image.

Initiez-vous à Delphi avec Turbo Delphi Explorer, au C ou au C++ avec Code::Blocks et C# avec Visual C# 2005 Express.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE ALLER VOIR SON SITE
POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

PREMIERE PAGE

PAGE PRECEDENTE Page précédente

Page suivante

PAGE SUIVANTE DERNIERE PAGE

FORUM INTELLIGENCE ARTIFICIELLE ( IA )



    PAGES : [1] [2] [3] [4]



.: Site Web développé par Julien Pichot et l'équipe MPWG avec www.evolvia-web.com :.