Aller au menu - Aller au contenu
Inscris-toi au e-camp "Héberge ton jeu Facebook sur Azure" de Microsoft vendredi 25 mai à 13h30 !

Intelligence Artificiel

Modéliser la conscience collective d'une communauté

Pour accéder à cette section
Connectez-vous !
connexion_rpx

Résolu Le problème de ce sujet a été résolu

Page 1  2  Suivante
Auteur Message
1 visiteur sur ce sujet (1 Anonyme)
Page 1  2  Suivante
Hors ligne jordan # Posté le 23/07/2007 à 15:32:33
Développeur professionnel
Avatar
Flux RSS

Ville : Couternon
Pays : France métropolitaine
Études : Université de Dijon

Ce topic s'adresse principalement aux zéros qui possèdent des connaissances en Intelligence Artificiel. Merci d'y répondre seulement si vous apportez quelque chose de constructif : idée, point de vue, schéma, exemple, image, lien web...

Bonjour à tous,

Généralité



Le Projet / Le But



Je suis en train de travailler sur un jeu et je suis chargé de définir un modèle d'intelligence artificiel en charge de la conscience collective d'une communauté à part entière du Jeu.

Je crée ce topic afin de faire participer les zéros à cette réflexion pour avoir des avis qui portent sur la réalisation d'un modèle : les meilleurs technologies et algorithmes à employer, le langage de programmation à choisir...

Le travail a réalisé est une sorte d'étude réfléchie qui doit présenter le meilleur modèle accompagné d'exemples, de morceaux de codes, de schémas pour programmer cette IA virtuelle...

L'IA



Citation : http://fr.wikipedia.org/wiki/IA
L'intelligence artificielle (terme créé par John McCarthy), souvent abrégée avec le sigle IA, est définie par l’un de ses créateurs, Marvin Lee Minsky, comme « la construction de programmes informatiques qui s’adonnent à des tâches qui sont, pour l’instant, accomplies de façon plus satisfaisante par des êtres humains car elles demandent des processus mentaux de haut niveau tels que : l’apprentissage perceptuel, l’organisation de la mémoire et le raisonnement critique ».

Le problème de l'IA c'est qu'il y a beaucoup à dire et à lire à son sujet. A commencer d'abord par le fait que l'on qualifie de plus en plus d'IA des systèmes qui ne le sont pas vraiment. Le terme générique d'IA est bien pratique pour englober à peu près tout ce qui va devoir prendre une décision un peu plus compliquée que «Si le compteur de points de vie du joueur passe sous zéro alors Game Over».

Le fruit de mes recherches



Introduction



L'IA que je cherche à modéliser porte donc sur la gestion d'une communauté. J'ai donc focalisé mes recherches sur les jeux vidéo. De nos jours, il semble exister deux formes d'IA : les solutions dites classiques et les solutions dites adaptives.

L'application principale de l'IA dans les jeux est souvent liée au déplacement des acteurs, que ce soit les ennemis, ou le personnage du joueur lui-même. L'objectif est simple : trouver le chemin le plus efficace entre la position actuelle et le point d'arrivée.

En général, on cherchera le trajet le plus court, sans traverser ni murs ni autre acteur. Certains jeux posent plus de problèmes que d'autres, comme les jeux de stratégie, par exemple, qui doivent déplacer des groupes d'individus. On imagine mal des dizaines de PNJs empruntés le même chemin au même instant. La recherche de chemin est un point critique de jouabilité. En effet, un système de déplacement foireux mettra à terre n'importe quel concept, si bien pensé soit-il.

Un autre point critique dans les jeux de stratégie réside souvent dans la gestion des ressources : sur quels critères décider de l'objectif suivant lorsque la source est épuisée ? Là aussi, un système mal pensé peut détruire la jouabilité.

Simuler la communication des acteurs d'un jeu entre eux ou avec le joueur peut également se révéler critique. Donner l'illusion de la personnalité et de l'intelligence à un acteur (tactiques, stratégies...) ou d'un comportement collectif à une troupe relève du domaine de l'IA.

Solution Classique



Dans la famille des solutions classiques, nous avons les automates à état fini. On appelle ces systèmes automates car ils n'ont aucune autonomie décisionnelle, ils ne font que suivre un chemin logique.

Pour le joueur, l'inconvénient de ce type de solution est sa prédictibilité. En effet, devant une situation donnée, la décision du système est toujours la même. L'utilisation de la logique floue (fuzzy logic) permet d'utiliser des opérations logiques sur des valeurs imprécises donnant accès à des comportements moins tranchés et donc plus naturels.

Pour répondre aux besoins de décisions stratégiques, on utilise généralement des systèmes experts. Des règles fixées par le programme permettent de définir un ensemble de stratégies servant de base à la prise de décision en fonction des situations du jeu. La conception des règles est une étape critique. En effet, face à des situations non prévues ou ambiguës, le système peut être amené à prendre des décisions totalement inadaptées. Ici aussi, l'utilisation de la logique floue permet de prendre des décisions plus adaptées face à des situations imprévues et surtout d'avoir des comportements plus humains.

Enfin, l'idée que plusieurs personnes travaillent mieux qu'une seule a donné naissance aux techniques multi agents. Un agent est un petit bout de programme plus ou moins autonome. Il participe au fonctionnement du système ou bien gère un acteur simple. Parmi ces techniques, le système de tableau noir (blackboard) décrit un problème sur tableau virtuel et chaque agent en résout une partie en posant sur le tableau une solution ou un nouveau sous problème.

Solution Adaptive



Les solutions adaptatives sont complémentaires des solutions classiques, puisqu’elles tentent de remédier au problème principal de ces dernières qui n'utilisent que les solutions prévues par leur programme. Ces agents sont capables d'interroger leur environnement. Ils savent se situer, car ils possèdent un «système perceptif», et ils peuvent prendre des décisions en fonction de la situation. Un système capable de s'adapter à l'imprévu doit donc trouver ou inventer une solution «par lui-même», que ce soit par «auto préapprentissage» ou par «pseudo déduction».

Parmi celles-ci, les réseaux de neurones tiennent une place importante dans les jeux de stratégies car ils permettent de prendre des décisions en tenant compte d'un grand nombre d'informations et de situations différentes. Les réseaux de neurones peuvent être entraînés en dehors du temps de jeu pour apprendre les stratégies convenant au jeu (déplacements, attaques, reconnaissance de forme...) le moteur simulera des parties «contre lui-même» de façon à apprendre un maximum de situations et savoir y répondre efficacement.

Les systèmes «multi agents situés» ont naturellement leur place dans le domaine du jeu puisqu'il s'agit de simuler des populations d'individus. Pour obtenir un système assez simple à mettre en oeuvre et suffisamment puissant pour simuler de façon crédible les déplacement de troupes, on programme de simples individus ne connaissant que leur points d'arrivée et ne communiquant que leur position et les points d'ancrage pour leurs voisins.

L'inconvénient des systèmes adaptatifs et d'apprentissage est de savoir définir l'espace d'apprentissage et ses limites d'une part et l'incertitude du résultat des solutions qui se basent sur l'apprentissage. En effet, l'émergence de comportements est par définition peu prédictible, c'est ce qui en fait la puissance et l'intérêt.

Bilan



  • Solution Classique
    • Automate à état : Simple à mettre en place mais adapté à des systèmes légers.
    • Systèmes experts : Spécialisé mais reposant trop sur des schémas prédéfinis.
    • Logique Floue : Seulement utile pour apporter de l'imprévisibilité artificiel.
    • Multi-Agent : Trop complexe à mettre en place
  • Solution Adaptive
    • Approche Cognitive : Aspect intéressant vers lequel je compte me diriger
    • Réseaux de Neurones : J'en comprends le principe mais j'ai aucune idée de la façon de l'implémenter
    • Multi-Agent-Situés : Impossible de mettre la main sur un exemple

Vers un Début de Solution



Introduction



Après tout, une communauté peut être réaliser suivant un modèle d'approche cognitive : Perception, Langage, Mémoire, Raisonnement, Décision, Mouvement, Jugement moral. On peut en déduire un semblant de cahier des charges et attribuer à chaque fonction ses compétences. On peut hiérarchiser la relation entre les différents départements de cette manière :

Image utilisateur

Cahier des Charges des départements


  • Perception
    • Division du Renseignement
      • Appréhender son environnement
      • Localiser les lieux stratégiques
      • Collecter des informations sur les positions ennemies régulièrement
      • Surveiller son propre domaine

    • Division d'excitation
      • Agents extérieurs : attaque, danger immédiat, cas inconnus ou imprévus
      • Temporisation (individu arrivé sur un lieu, ressource épuisée, ...)

  • Raisonnement
    • Division de déduction
      • Déduire des intentions
      • Anticiper des stratégies
      • Emettre des hypothèses et proposer des solutions

    • Division d'objectifs
      • Etablir des objectifs à court termes
      • Envisager des objectifs à moyen termes
      • Avoir une but à long termes (survivre et pas forcément dominer le monde !!!)

  • Décision
    • Ce département prend une ou plusieurs décisions en fonction de ce qui ressort du raisonnement, des antécédents (mémoire de ses erreurs) et des caractéristiques de l'IA (cf. Jugement)
  • Langage
    • Sorte de commandement, ce département s'assure de la répartition des taches à chaque acteur spécialisé de la communauté
    • Log les choix de l'IA pour débug
  • Mouvement
    • Division de Cartographie
      • Position des individus (amis ou ennemis)
      • Localisation des lieux de ressources (inépuisées)

    • Division de Mouvement
      • Donne des ordres de mouvements à un ou à un groupe d'individus précis

    • Division de Synchro
      • Synchronise l'ensemble
      • Gère les patrouilles
  • Mémoire
    • Elle archive toutes les données utiles.
  • Jugement
    • Division Emotivité
      • Faire éprouver à l'IA les sentiments les plus importantes : colère, pitié, qui affectent ses décisions...

    • Division Comportemental
      • Attribuer à l'IA des comportements types : assasins, collectionneurs, défensif, qui affectent ses décisions...

Les questions



  • Division du Renseignement : Au début de l'application, la population irait au hasard visiter le terrain. On pourrait imaginer ensuite une carte 2D où l'on répertorierait les endroits explorés avec les dates. Si un secteur n'a pas été exploré depuis un certains temps, on enverrait une patrouille. Au fur et à mesure que la population augmenterait, elle irait explorer de plus en plus loin. Par rapport au reste du terrain, on irait voir plus souvent les zones considérés comme abirtant des populations ennemies. FACILE
  • Division d'excitation : Ce sont des entrées extérieurs donc qui sont motivés par des faits extérieurs humains, pas vraiment d'IA la dedans FACILE
  • Division de déduction : Gràce à la mémoire, on pourrait facilement identifier les intentions d'un ennemi, prévoir des actions, et même anticiper. Après la question, c'est comment implémenter une solution artificielle pour qu'elle puisse comprendre une stratégie adverse. MOYEN
  • Division d'objectifs : Voilà une vraie question, comment faire pour que l'IA se donne elle-même des objectifs et qu'elles tentent d'y répondre ? DIFFICILE
  • Décision : Comment faire la liaison entre le raisonnement et la prise de décision ? Comment choisir telle ou telle solution ? Comment implémenter un algorithme pour que les caractéristiques de la division Jugement façonne la décision finale de ce département ? DIFFICILE
  • Langage : On découpe la population en unités spécialisés et on leur fournit du travail en fontion des décisions prises que l'on décode. D'ailleurs, je me demande si ce département ne devrait pas assurer la communication entre les unités et le commandement (l'API), "j'ai fini", "ya rien à faire ici" FACILE
  • Mouvement : S'occupe du travail d'archivage de la carte, autorise les déplacements et est chargé de déterminer le meilleur chemin à prendre (plus rapide, moins risqués...), synchronise les actions au besoin MOYEN
  • Jugement : Comment implémenter ce département qui conditionne les résultats de celui des Décisions ? DIFFICILE
Bref, si vous avez des réponses aux questions énoncées le long de ce topic, ou si vous avez des éléments de réponse, des algorithmes à conseiller pour tel ou tel aspect, des exemples pertinents de telles ou telles méthodes, des suggestions sur le modèle vers lequel je me tournes, n'hésitez pas, postez !
Remerciement particulier à Delphiki.
Publicité # Posté le 23/07/2007 à 15:32:33

Hors ligne saphir # Posté le 23/07/2007 à 23:27:13
Le soft c hard
Avatar

Cette réponse a aidé l'auteur du sujet Cette réponse a aidé l'auteur du sujet
Salut,
dés que j'ai vu Intelligence artificielle j'ai tout de suite cliqué sur le topic. Ton analyse est très pertinante. Je n'aurais pas envisagé le problème sous cette forme mais ton schéma peut tout à fait marcher. Il me semble par contre que tu néglige un peu la partie données. L'aspect mémoire est aussi un peu négligé même si je sens que tu as compris à quel point il est important. Dans la mémoire pour être efficace il faut ordonner les données et aussi les selectionner (ce qui est bien plus dur :-° ). Dans ton cas tu vas aborder une aproche haut-bas : c'est-à-dire un processus qui va controler differents agents et qui va recevoir des données de ces derniers. Je vais faire des recheches et je posterai a nouveau. Si tu veux rentre mon adresse MSN dans tes contactes car je suis interressé par ton projet(je code en C++).

Liens utiles :




 
Hors ligne ErGo_404 # Posté le 24/07/2007 à 17:21:32
Why so Serious
Avatar

Études : ESIEE Engineering Paris

Citation
Décision : Comment faire la liaison entre le raisonnement et la prise de décision ? Comment choisir telle ou telle solution ? Comment implémenter un algorithme pour que les caractéristiques de la division Jugement façonne la décision finale de ce département ?

Tu peux faire choisir la decision selon les caracteristiques du personnage.
Si elle est faible elle n'ira pas attaquer son ennemi (sauf si elle est "héroique" ;) ) et battra en retraite. Tu peux donc définir un niveau de danger pour chaque action (ou faire évaluer ce niveau de danger par le personnage lui même) et selon ce niveau le personnage fera ou non l'action.
Exemple ton bonhomme a appris qu'il peut tuer un ennemi et que l'ennemi peut le tuer. Si ton bonhomme a sa santé au max et que l'autre non et qu'il a une chance de le tuer il le fait. Si au contraire la probabilité pour qu'il meure est trop élevée il ne le fait pas.

Tu peux faire apprendre a ton bonhomme tout un tas de choses mais il faut lui donner des regles de bases comme "vivre" ou "manger" ou "dormir", et il prendra les décisions en essayant de respecter le maximum de lois de base.
C'est un peu comme les trois lois d'asimov si tu connais, les robots peuvent tout faire mais ils doivent respecter ces 3 lois (dans un ordre préférentiel, pour éviter les conflits entre lois ;) ).
Définis donc d'abord les lois de base des bonshommes et ensuite fais en suite que leurs décisions soient axées sur ces lois tout autant que sur leurs acquis.

dans tous les cas ton projet est bien complexe et je te souhaite beaucoup de chance pour arriver a son terme :)

Nouveau ! Live Wallpaper pour Android à télécharger ! Le QR code pour la retrouver est mon avatar!
 
Hors ligne grobs # Posté le 26/07/2007 à 15:14:48
Vivre c'est apprendre...
Avatar

J'ai dévoré ce topic avec joie :)

Effectivement, comme le dit saphir, la réflexion que tu mennes sur ce sujet est très intéressante. L'IA est une chose fascinante pour les chercheurs en la matière et à une autre échelle, je vois que tu t'y intéresses.

Au cours de ce topic, tu énumère méthodiquement les différents aspects à traiter de l'IA en leur donnant des niveaux de difficulté. A vrai dire, pour moi la véritable difficulté n'est pas forcément les "divisions" comme tu les appelles à proprement parlé, mais plutôt de faire en sorte que la corrélation entre ces mêmes divisions soit pertinente. En effet on peut distinguer des aspects concrets et d'autres qui le sont un peu moins de ce qu'est l'intelligence (qui est définitivement assez indéfinissable à mon goût), mais chaque aspect dépend d'un autre. C'est cette idée de dépendance qui est la plus complexe. D'ailleurs, je viens de remettre la main sur un article montrant l'expérience (aussi folle qu'elle puisse être) faite par IBM à savoir la simulation d'un cerveau de souris.
LA solution à mon sens de toute cette mission impossible qu'est l'IA est la physique quantique (non-matheux s'abstenir :p ).

Pour ne pas sortir de trop de ton sujet, je serais toi, je travaillerai sur une division à la fois, tout en gardant bien en tête l'idée de corrélation entre les "modules" précédemment citée.

Sinon, si tu t'intéresse à tout ça, fais quelques recherches sur les réseaux de neurones, c'est TRÈS intéressant ;)

@++
Édité le 26/07/2007 à 15:20:32 par grobs

Image utilisateur
Programmeur PHP - (x)HTML - CSS - SQL - C - ADA - JS - XML - Shell
 
Hors ligne jordan # Posté le 26/07/2007 à 17:40:17
Développeur professionnel
Avatar
Flux RSS

Ville : Couternon
Pays : France métropolitaine
Études : Université de Dijon

Citation : saphir
dés que j'ai vu Intelligence artificielle j'ai tout de suite cliqué sur le topic.

Citation : grobs
J'ai dévoré ce topic avec joie :)

Merci à tous les deux et merci aux trois qui ont répondus ;)

Citation : saphir
Ton analyse est très pertinante. Je n'aurais pas envisagé le problème sous cette forme mais ton schéma peut tout à fait marcher.

Je l'espère bien, reste à trouver des éléments pour relier l'ensemble et construire chaque aspect de mon modèle.

Citation : saphir
Il me semble par contre que tu néglige un peu la partie données. L'aspect mémoire est aussi un peu négligé même si je sens que tu as compris à quel point il est important. Dans la mémoire pour être efficace il faut ordonner les données et aussi les selectionner (ce qui est bien plus dur :-° ).

Il y aura certainement une BDD associée à l'application où elle pourra y stocker tous ce que l'on pourra avoir besoin. On réfléchira à ce moment là, comment stoker toutes ces données de la meilleur façon.

Citation : saphir
Dans ton cas tu vas aborder une aproche haut-bas : c'est-à-dire un processus qui va controler differents agents et qui va recevoir des données de ces derniers. Je vais faire des recheches et je posterai a nouveau. Si tu veux rentre mon adresse MSN dans tes contactes car je suis interressé par ton projet(je code en C++).

Je t'ai ajouté, et j'attends la suite de tes recherches avec impatience.

Citation : ErGo_404
Citation
Décision : Comment faire la liaison entre le raisonnement et la prise de décision ? Comment choisir telle ou telle solution ? Comment implémenter un algorithme pour que les caractéristiques de la division Jugement façonne la décision finale de ce département ?

Tu peux faire choisir la decision selon les caracteristiques du personnage.
Si elle est faible elle n'ira pas attaquer son ennemi (sauf si elle est "héroique" ;) ) et battra en retraite. Tu peux donc définir un niveau de danger pour chaque action (ou faire évaluer ce niveau de danger par le personnage lui même) et selon ce niveau le personnage fera ou non l'action.
Exemple ton bonhomme a appris qu'il peut tuer un ennemi et que l'ennemi peut le tuer. Si ton bonhomme a sa santé au max et que l'autre non et qu'il a une chance de le tuer il le fait. Si au contraire la probabilité pour qu'il meure est trop élevée il ne le fait pas.

Tu peux faire apprendre a ton bonhomme tout un tas de choses mais il faut lui donner des regles de bases comme "vivre" ou "manger" ou "dormir", et il prendra les décisions en essayant de respecter le maximum de lois de base.
C'est un peu comme les trois lois d'asimov si tu connais, les robots peuvent tout faire mais ils doivent respecter ces 3 lois (dans un ordre préférentiel, pour éviter les conflits entre lois ;) ).
Définis donc d'abord les lois de base des bonshommes et ensuite fais en suite que leurs décisions soient axées sur ces lois tout autant que sur leurs acquis.


C'est un point de vue qui mérite de s'y arreter, je vais voir si je peux en faire quelque chose. Par contre le début me semble hors sujet, je controle la communauté entière, pas vraiment tel ou tel individu qui de toutes façons ne prendra pas la décision de lui même.

Citation : grobs
Au cours de ce topic, tu énumère méthodiquement les différents aspects à traiter de l'IA en leur donnant des niveaux de difficulté. A vrai dire, pour moi la véritable difficulté n'est pas forcément les "divisions" comme tu les appelles à proprement parlé, mais plutôt de faire en sorte que la corrélation entre ces mêmes divisions soit pertinente.

Certes, c'est aussi ce que je cherche à régler.

Citation : grobs
En effet on peut distinguer des aspects concrets et d'autres qui le sont un peu moins de ce qu'est l'intelligence, mais chaque aspect dépend d'un autre. C'est cette idée de dépendance qui est la plus complexe.

Tous problème a une solution, j'essaye de m'en convaincre en tout cas. :-°


Citation : grobs
LA solution à mon sens de toute cette mission impossible qu'est l'IA est la physique quantique (non-matheux s'abstenir :p ).

Ce n'est pas encore pour maintenant.

Citation : grobs
fais quelques recherches sur les réseaux de neurones

Les réseaux de neuronnes sont très intéressant et seraient le top MAIS je ne trouve pas d'exemple de réseau de neuronnes qui sont exploité en tant qu'aide à la décision. Si tu as un exemple je suis prenneur (même s'il est de ta conception). D'autant plus que les réseaux de neuronnes ne peuvent traiter que des cas linéaire. Il faut donc parfois en combiner afin de ne pas avoir des résultats douteux, chose qui est complexe mettre en place et dont je ne maitrise pas toutes les subtilités.
Hors ligne grobs # Posté le 27/07/2007 à 00:06:57
Vivre c'est apprendre...
Avatar

Le coup de la physique quantique n'était qu'une blague bien sûr ;)
En fait, ce qui m'inquiète un peu dans ton projet c'est que, en admettant que tu arrives (par je ne sais quels moyens) à recréer une intelligence parfaite avec de superbes capacités intellectuelles etc (on peut rêver non ?), j'ai bien peur de paraître un peu terre à terre mais le problème des capacités machine (ou serveur si c'est un jeu en réseau), car le calcul de "et maintenant que fais-je ?" de 200 personnages en même temps, ça risque d'être lourd.
Bien sûr, j'imagine que tu y as déjà pensé et que tu as décidé d'ommettre tous les personnages en dehors d'un certain rayon d'activité et de leur faire reprendre vie dès que l'on s'en approche ;)

Image utilisateur
Programmeur PHP - (x)HTML - CSS - SQL - C - ADA - JS - XML - Shell
 
Hors ligne jordan # Posté le 27/07/2007 à 11:33:37
Développeur professionnel
Avatar
Flux RSS

Ville : Couternon
Pays : France métropolitaine
Études : Université de Dijon

Citation : grobs
Le coup de la physique quantique n'était qu'une blague bien sûr ;)

J'ai lu des trucs qui faisait un rapport entre la physique quantique et l'IA, donc ça ne m'a pas surpris.

Citation : grobs
En fait, ce qui m'inquiète un peu dans ton projet c'est que, en admettant que tu arrives (par je ne sais quels moyens)

Grace à une détermination sans faille et une équipe de codeur professionnel derrière :P

Citation : grobs
à recréer une intelligence parfaite avec de superbes capacités intellectuelles etc (on peut rêver non ?),

On tachera que ça sorte du domaine du reve.

Citation : grobs
j'ai bien peur de paraître un peu terre à terre mais le problème des capacités machine (ou serveur si c'est un jeu en réseau),

Guère de contrainte de ce coté là.

Citation : grobs
car le calcul de "et maintenant que fais-je ?" de 200 personnages en même temps, ça risque d'être lourd.

200 personnes pour une communauté, c'est assez léger, on tournera plus vers 100 000...

Citation : grobs
Bien sûr, j'imagine que tu y as déjà pensé et que tu as décidé d'ommettre tous les personnages en dehors d'un certain rayon d'activité et de leur faire reprendre vie dès que l'on s'en approche ;)

C'est à peu près ça. En fait, tout simplement, si un joueur décide d'attaquer une unité de mon IA, ça excitera mon département Perception et on avisera en fonction. Ca ne me dérange absolument pas que certains unités ne fassent rien, au contraire si jamais l'IA a besoin de celles-ci, elle pourra s'en servir immédiatemment (car la mémoire indiquera les unités en attente d'ordre). D'autre part, la seul chose qui est en temps réel est le cerveau de mon IA qui agit pour le bonheur de ma communauté. Les déplacements se résumeraient (atuellement) à des lignes dans la BDD qui sont gérées par un autre serveur. Bref, l'IA ne prend que des décisions ce qui fait qu'elle réfléchira pas tant que ça au final.
Édité le 27/07/2007 à 11:36:52 par jordan
Hors ligne Le_bredin # Posté le 27/07/2007 à 12:33:26
Volem rien foutre al païs !
Avatar

Je suis assez fasciné par l'intelligence artificielle (j'aurais bien envie de bosser là dedans plus tard) mais il faut quand même un sacré niveau en programmation et les idées bien claires pour en coder une, surtout qu'il faut tout coder avant de pouvoir vraiment tester.

Pourrais tu nous donner des renseignements supplémentaires sur les interactions qu'ont les personnages de ton IA avec leur environnement, et comment ils évoluent ? Ils doivent collecter des ressources, construire des bâtiments, s'entrainer pour accomplir des tâches spécialisées ? Comment se fait l'augmentation de la population ? Et qui a défini ces règles, puisqu'apparemment tu ne dois t'occuper que de l'IA ?


Pour les objectifs à court terme à donner à ta population, ce ne devrait pas être un gros problème. Ta population pourrait avoir pour but, en dehors de toute menace, tout simplement d'augmenter en nombre, et d'augmenter le nombre de ressources dont elle dispose. Et dès qu'un adversaire ou que quelque chose vient troubler le calme habituel, la stratégie pourrait changer (évaluation de la menace, puis réponse adaptée). Et si ta population se sent à l'étroit dans son petit terrain, elle pourrait lorgner sur le voisin et déclarer elle même la guerre.

En tout cas ton projet m'intéresse, je vais le suivre de près.
 
Hors ligne jordan # Posté le 01/08/2007 à 14:45:40
Développeur professionnel
Avatar
Flux RSS

Ville : Couternon
Pays : France métropolitaine
Études : Université de Dijon

Citation : Le_bredin
Je suis assez fasciné par l'intelligence artificielle (j'aurais bien envie de bosser là dedans plus tard)

Tu t'y intéresse déjà ? Car j'ai une question. On parle des réseaux de neuronnes, mais la plupart du temps, on en utiliser qu'un seul neuronne (notamment pour la reconnaissance de caractère) ! Pourquoi ?

Citation : Le_bredin
mais il faut quand même un sacré niveau en programmation et les idées bien claires pour en coder une, surtout qu'il faut tout coder avant de pouvoir vraiment tester.

Le niveau, on l'a. Je cherche juste à établir un modèle afin de préparer l'orientation du code.

Citation : Le_bredin
Pourrais tu nous donner des renseignements supplémentaires sur les interactions qu'ont les personnages de ton IA avec leur environnement, et comment ils évoluent ?

Pas vraiment, je ne connais pas tous les aspects du jeu, je dois faire quelque chose de général.

Citation : Le_bredin
Ils doivent collecter des ressources, construire des bâtiments, s'entrainer pour accomplir des tâches spécialisées ?

Oui la communauté devra collecter des ressources, constuire "des batiments". Je ne pense pas qu'il y aura d'entraiment. Mais il est possible qu'il y ait un système de vétérans.

Citation : Le_bredin
Comment se fait l'augmentation de la population ?

En fonction des besoins de l'API.

Citation : Le_bredin
Et qui a défini ces règles, puisqu'apparemment tu ne dois t'occuper que de l'IA ?

Un autre membre du projet qui est à l'origine du projet.

Citation : Le_bredin
Pour les objectifs à court terme à donner à ta population, ce ne devrait pas être un gros problème. Ta population pourrait avoir pour but, en dehors de toute menace, tout simplement d'augmenter en nombre, et d'augmenter le nombre de ressources dont elle dispose.

Certes.

Citation : Le_bredin
Et dès qu'un adversaire ou que quelque chose vient troubler le calme habituel, la stratégie pourrait changer (évaluation de la menace, puis réponse adaptée). Et si ta population se sent à l'étroit dans son petit terrain, elle pourrait lorgner sur le voisin et déclarer elle même la guerre.

Faut trouver un moyen d'implémenter ça.

Citation : Le_bredin
En tout cas ton projet m'intéresse, je vais le suivre de près.

Contacte moi par MP.

Je pense que je ne suis pas loin du résultat final. Faut que je commence à tester des codes pour relier mes départements.
Hors ligne SpotZup # Posté le 01/08/2007 à 23:31:59
Go n7
Avatar

Études : ENSEEIHT

Et bin dis donc, je suis sûr que toutes ces réflexions pourraient faire l'objet d'un superbe tutoriel généraliste sur l'intelligence artificielle. Sans entrer dans la programmation, mais juste en donnant des pistes et des conseils: ton post super bien construit s'y pretterait presque, ça serait bien qu'un mec calé comme vous y songe un jour.

Pour ce qui est de votre idée, je trouve ça super aussi et je vais moi aussi suivre avec attention la tournure des choses. Je me pose juste quelques questions. En fait est-ce que ton boulot c'est de tout mettre sur papier, une sorte de méthodologie ou d'algorithme, mais sans programmation ou est-ce que tu dois aussi penser à la façon dont cela va être codé ? Je sais pas comment exprimmer ce que je veux dire.. Est-ce que des tests sont effectués concrètement en console ou attendez vous le résultat final ? J'imagine mal comment un truc d'une telle ampleur puisse être mis en place et comment tous ceux qui s'en occupent peuvent synchroniser leurs efforts.

Mais bon, j'apporte rien au sujet avec mes questions et je vous retarde peut etre un peu, donc t'es pas pas obligés de répondre. Dans ce dernier cas, désolé d'avoir participé au sujet sans rien y avoir apporté, je pense pas que je puisse vous avancer vu l'état ou vous en êtes.
Édité le 01/08/2007 à 23:32:57 par SpotZup

>> ENSEEIHT 2012 (Bureau Des Arts) <<
 
Hors ligne jordan # Posté le 02/08/2007 à 13:46:59
Développeur professionnel
Avatar
Flux RSS

Ville : Couternon
Pays : France métropolitaine
Études : Université de Dijon

Citation : SpotZup
Et bin dis donc, je suis sûr que toutes ces réflexions pourraient faire l'objet d'un superbe tutoriel généraliste sur l'intelligence artificielle. Sans entrer dans la programmation, mais juste en donnant des pistes et des conseils: ton post super bien construit s'y prêterait presque, ça serait bien qu'un mec calé comme vous y songe un jour.

C'est un sujet vaste et énormément délicat, je verrai si je peux apporter quelque chose à la communauté. Le soucis principal est que ce sujet passionne les chercheurs et évolue rapidement.

Citation : SpotZup
Pour ce qui est de votre idée, je trouve ça super aussi et je vais moi aussi suivre avec attention la tournure des choses.

Merci, et je trouve ça drôle que tu vouvoies.

Citation : SpotZup
Je me pose juste quelques questions. En fait est-ce que ton boulot c'est de tout mettre sur papier, une sorte de méthodologie ou d'algorithme, mais sans programmation ou est-ce que tu dois aussi penser à la façon dont cela va être codé ?

Mon but premier est de poser les choses à plat "sur papier" ou assimilé. Néanmoins, dans la mesure où je dois apporter une solution réalisable, j'ai besoin de coder des éléments de manière à prévoir et orienter un minimum le code, et également tester la faisabilité de morceau de ma solution.

Citation : SpotZup
Est-ce que des tests sont effectués concrètement en console ou attendez vous le résultat final ?

En général, quand on réalise quelque chose, on teste morceau par morceau et pas tout d'un coup histoire de s'assurer que l'ensemble s'emboîte bien et de pouvoir debugger rapidement. Car si mon neurone me ressort quelque chose de stupide et que ce résultat est renvoyé immédiatement dans un réseau de neurone plus complexe qui traite la reconnaissance, va trouver l'erreur.

L’IA sera associée à une class de debug complète qui fournira des schémas, des graphiques, des tableaux de données en temps réels de façon à suivre les décisions de l’IA. Ca permettra de détecter rapidement des comportements imprévus et suspects. Cette class permettra aussi de montrer au joueur qu’il ne joue pas contre un vulgaire arbre décisionnel de if else, if else mais contre une architecture novatrice dans un jeu on-line par navigateur qui s'adaptera aux compotements des joueurs.

Citation : SpotZup
J'imagine mal comment un truc d'une telle ampleur puisse être mis en place et comment tous ceux qui s'en occupent peuvent synchroniser leurs efforts.

Là pour le coup, on est 2. Si tu as un cahier des charges bien ficelé, ce n'est pas compliqué de créer le code correspondant (et donc synchroniser).
Hors ligne meteoreteam # Posté le 02/08/2007 à 16:50:59
GNU sur Linux
Avatar

Études : ENIB (Ecole Nationale d'Ingénieurs de Brest) - Bretagne

Salut

Je ne sais pas si mon post va t'être très utile, mais voilà:

Si j'ai bien tout compris sur la finalité, ce que tu veux, c'est te rapprocher le plus possible d'un comportement humain ( mais si c'est pas ça, la suite ne risque pas d'être très utile :( ).

Donc voilà mon point de vue, ce qui m'interpelle c'est le fait que l'API augmente le nombre de personnage suivant ses besoins.

Voilà ce que je te propose (juste une suggestion, c'est toi le Boss :p ), pourquoi ne pas faire augmenter le nombre de personnage de trois par jour (ou plus/moins), et faire varier ce nombre de personnages par jours suivant les événements extérieurs (par exemples, il n'y plus de ressource, ce qui implique un personnage par jours).


En espérant que ce post ne te fasse pas perdre ton temps, car il n'apporte rien de bien spécifique à l'IA.

GNU sur Linux !
 
Hors ligne jordan # Posté le 02/08/2007 à 17:44:44
Développeur professionnel
Avatar
Flux RSS

Ville : Couternon
Pays : France métropolitaine
Études : Université de Dijon

Citation : meteoreteam
Si j'ai bien tout compris sur la finalité, ce que tu veux, c'est te rapprocher le plus possible d'un comportement humain

Humain n'est peut être pas le meilleur mot dans la mesure où il est restrictif. L'essentiel est d'avoir une communauté avec un comportement rationnel et logique.

Citation : meteoreteam
Donc voilà mon point de vue, ce qui m'interpelle c'est le fait que l'API augmente le nombre de personnage suivant ses besoins.

C'est effectivement quelque chose auquel je n'avais pas pensé : suivant la population des comportements doivent être proscrits. C'est vrai qu'il est absurde de créer des unités que quand on en a besoin alors que dans la réalité, ce n'est parfois pas possible. Néanmoins, mon étude porte sur des unités robotiques.

---------------------------------------

PS : Je pars en vacances du 3 août au 7 août 2007 (sans ordinateur).

PS² : Sinon, le délai entre vos posts et mes réponses est volontaire de manière à laisser décanter tout ça, dans ma tête, la vôtre et dans celles des personnes qui lisent ce qui pourrait susciter une réponse ou un édit pertinent.
Hors ligne Drain_You # Posté le 02/08/2007 à 21:15:19
Magic Pie
Avatar

Études : EFREI

Hmm

Désolé, je n'ai aucune notion d'intelligence artificielle. Mais je pense cependant que modéliser une communauté est, informatiquement, impossible. Pourquoi ? Parcque le cerveau est unique, et l'informatique est justement le contraire d'un cerveau, dans le sens ou tout est déjà programmé à l'avance. Il suffit de voir qu'un ordinateur est incapable de faire un rand() comme un humain. Tout est déjà prévu à l'avance, tandis que chez l'humain, c'est au jour le jour, en quelques sortes. Alors, pour modéliser une communauté entière, je pense que la meilleure solution consiste à utiliser les statistiques. Utiliser des mots comme "raisonnement" ou encore "deduction" en parlant d'un composant informatique, ça n'a pas de sens.

J'applaudis l'initiative de ce topic, vraiment très bon.
Hors ligne SpotZup # Posté le 03/08/2007 à 15:36:51
Go n7
Avatar

Études : ENSEEIHT

jordan, en fait je vouvoie votre équipe à l'origine du projet, et je tutoies quand je m'adresse directement à toi, mais je reconnais que mon message prettait à confusion.

Je poste juste pour répondre à Drain_You. Bien que l'objectif soit de ressembler à un comportement humain, je pense que dans un premier temps ils peuvent se limiter à un comportement de communauté "animale", dont l'espèce importe peu. Ca sera donc une suite de réactions plus ou moins logiques, car il est vrai que le raisonement humain peut-être très bizarre.. Je sais pas: un animal à soif ? il va boire (facile à programmer), un humain à soif ? Bin non, celui-ci a la flemme, ou attends qu'on lui emmène, on n'y pense pas car amoureux, ou ne veut pas boire telle boisson car trop sucrée a son gout, ou que sa recette n'est pas open source. Je pense qu'il est plus intéressant d'essayer de se rapprocher d'un raisonement rationnel et instinctif, surtout dans le cas d'un jeu vidéo d'action, ou il serait bête d'essayer d'inclure la totalité de l'infinité des comportements humains possibles, tout simplement car c'est iconcevable, même dans le futur si on a pas de restriction en taille de mémoire vive pour le programme.

Quant à ta compraison entre le cerveau humain et artificiel, je suis pas si persuadé qu'ils n'aient aucun liens. Le rand() n'existe pas plus chez nous que chez les ordis, tout comme toutes nos réactions et nos pensées sont le résultat d'actions chimiques plutôt qu'électriques. Et puis on est aussi un peu programmés à l'avance: Si on te marche sur le pieds, tu t'énerves. Si on t'apprend que ta copine est en danger, tu files la sauver. Bien sûr tout ça est "idéal", ça se passerait peut-être pas comme ça à cause de la complexité de notre cerveau, mais c'est juste que le programme est déja en version 2007.8 ^^
Édité le 03/08/2007 à 15:37:11 par SpotZup

>> ENSEEIHT 2012 (Bureau Des Arts) <<
 
Hors ligne anonyme # Posté le 03/08/2007 à 19:16:23

Hello

Il doit y avoir effectivement un sacré travail mais je crois que le plus gros est la recherche de l'aboutissement

est modéliser une communauté implique un enchainement d'action

Par ce que si je réagis en fesant l'action A par rapport a une Action B
Mon voisin Réagira peut être en fesant l'action C par rapport a l'Action B

Tout comme ( EXEMPLE ) un meurtrier qui tue des personnes
ce qu'il fait est pertinent pour lui mais ne le serra pas pour nous

alors soit tu crée une société parfaite
soit tu crée une société ou un jour tout le monde se tappera dessus

Non ?
Hors ligne shuss # Posté le 03/08/2007 à 21:30:31
Avatar

Modéliser une communauté en modélisant chacun de ses membres me parait assez lourd. Il va falloir gérer la mémoire de chacun séparément, tout en considérant qu'ils communiquent, donc que la mémoire d'un membre est sensiblement proche de la mémoire d'un autre membre (ils échangent leurs connaissances). Pour rationaliser un peut tout ça, je pense qu'il faudrait que chaque membre ait une très petite quantité de mémoire à lui tout seul, un plus grosse quantité étant commune au groupe, et ainsi de suite : en gros, ce sont des poupée gigognes, ce que l'un a appris (et qui peut être généralisable à tout le monde) est directement transféré dans la mémoire de la famille lorsqu'il rentre chez lui, puis dans la mémoire du village un peu plus tard, puis dans la mémoire de la nation ... Ca permettrait d'éviter les doublons : on connaît tous (ou presque ?) le théorème de Pythagore, mais dans le cadre d'une modélisation de notre communauté, on peut supposer que cette connaissance est globale à la communauté.

Ensuite, ton schéma me paraît sur certains points incomplet. Déjà, tu passez de la perception au raisonnement. Je pense que ça devrait être une phase d'analyse et d'interprétation. Après tout, nous ne voyons jamais une tas de couleur, mais bien les objets qu'on identifie inconsciemment. Le raisonnement remplace la décision : la décision n'est pas un acte, c'est juste le résultat du raisonnement. La mémoire n'est pas remplie sur ton schéma. Je pense que les flèches qui partent de la mémoire devraient être double : ce que j'analyse s'inscrit dans ma mémoire, et ce que je raisonne s'inscrit aussi dans ma mémoire pour éviter de devoir faire le même raisonnement.

Après, tu l'a dit, il faut définir des "buts" pour que cette communauté ne soit pas inerte. Je pense qu'un but est désigné par ce qui nous fait du bien, et ce qui nous fait du mal. On peut mettre des échelles de bien sur chaque évènement. Lorsque je gagne une guerre, ça me fait 10 de bien. Lorsqu'un bâtiment s'effondre, ça me faire 3 de mal ... Bref, la communauté cherche le bien, et évite le mal (comme nous, quoi !).

Pour la mémoire, je pense que la forme la plus fidèle de mémoire serait un style de mémoire par référence : chaque élément de la mémoire est directement relié à tous les autres éléments qu'il rappellent ... Là encore, c'est comme nous. Sinon, je vois mal comment géré la mémoire pour qu'elle soit accessible lorsqu'on en a besoin ...

Enfin, le raisonnement est une suite de prédiction. J'ai un évènement (on m'attaque). Je puise sur les évènements qui y ressemble (les attaques antérieures). Je regarde ce que je (ou mes amis) avaient faits. Si rien semble concluant (à chaque fois beaucoup de mal), je regarde un peu plus loin dans ma mémoire (je continue mes prédictions), jusqu'à trouver une solution convenable (un mal inférieur à 3 par exemple), sinon, j'essaie autre chose (J'imagine qu'il aura déjà fallu donné quelques notions aux membre, comme se défendre quand on se fait attaquer, notions qu'ils perdront s'ils trouvent mieux ...).



Voilà quelques idées en l'air ! Je te souhaite bonne chance, j'imagine que la création d'une IA (surtout que là elle est déjà plutôt compliquée) est un travail fastidieux.
Hors ligne erik-sp # Posté le 04/08/2007 à 11:25:15

Je propose une solution simple a votre probleme... utiliser les fourmis comme modeles &#58;&#41;

Elles ont des comportements souvents un peux incomprehensives, mais les humains le sont encore plus, et donc pour commencer, ca pourrait etre plus simple.

suffirait de faire deux "modes", un a l'exterieur, sur une parcelle de foret avec une 10enes de colonies, et l'autre en vue 2D, qui representera le nid ( malheuresement ceux ci peuvent aller jusqu'a 12metres pour des especes courrantes francaises, mais on peut simplifier ).

De plus, la fourmis est plus "communautaire" que l'homme, elle vit juste pour faire avancer sa communauté, et donc on peut plus facilement lui mettre des objectifs.

Ainsi, la fourmiliere se developera petit a petit, on pourra voir des esseimenages et autres, pour faire naitre d'autres communautés, les parties de "chasse", les guerres entres fourmis, etc....

Surtout, l'avantage, c'est que vous pouvez commencer par modeliser l'IA d'une espece de fourmis... mais il en existe 12 000 especes, donc vous pourrez ensuite ettofer votre comunaute en integrant d'autres especes de fourmis.

Ainsi vous pourrez commencer par faire des lasius Niger ( petite fourmis que l'on trouve partout ), puis faire des Myrmica Rubra ( fourmi rousse qui pique ) en passans par des Messors et Pheidoles !

Un petit lien pour montrer vite fait l'inteligence comunitaire des fourmis :
http://www.futura-sciences.com/fr/sinformer/actualites/news/t/homme/d/en-cas-de-panique-suivez-la-fourmi_12545/


Sinon, si tu veux plus de details, sois tu peut aller sur ce forum ( dedie a l'elevage de fourmis ):
http://www.akolab.com/fourmis/forum/index.php?sid=e2f2a9e2ed22c6152392a40e76cccc9a

Sois tu me contact en MP, je pourrais te renseigner, et faire les experiences que tu desire avec ma colonie ( L. Flavus, va voir partie photo du forum akolab pour voire leur tete &#94;&#94; ).


Voila, j'espere avoir aide &#94;&#94;
Édité le 04/08/2007 à 11:30:52 par erik-sp
Hors ligne Brouznouf # Posté le 12/08/2007 à 06:02:34

Études : EISTI

J'ai déjà réaliser une ia dans le cadre d'un jeu cependant vu que c'était un jeu de plateau qui possède des caracteristiques speciales (pour ce que ca interesse, le jeu est asynchrone et a information complete et parfaite) j'ai utilisé un type d'ia qui ne repondra pas à tes attentes. Mais je me suis tout de même interéssé au autres types d'IA. Je pense qu'il faudrait que tu cherches ce qui concerne les algorithmes génétiques et les reseaux bayesiens, je pense que en etudiant cela beaucoup de tes problemes seront deja resolu.

L'algorithme génétique agit justemenet sur une evolution de communauté, quant aux reseaux bayesiens c'est ce qui permet de prendre des decisions et cela repose sur un schéma d'arbre de probabilité : en gros plein de probabilité conditionnel.

Je te cache pas que cela requiert un certain niveau de math (tout d'abord en probabilité) et aussi en algorithme (arbre).

Enfin bref bonne chance.

PS : Si jamais ce que j'ai fais t'interesse : http://hisroyalmadness1.free.fr/brouznouf/rapport.pdf

La ChouCrouTe C'est Bon !
 
Hors ligne iNaKoll # Posté le 14/08/2007 à 01:14:58
Grosso merdo
Avatar

Ville : Paris
Pays : France métropolitaine

Bonsoir !

Je m'intéresse aussi de très prêt à l'intelligence artificielle, ton projet me semble sacrément ambitieux !
L'idée d'un algorithme de colonie de fourmi me semble intéressante pour ton projet.
erik-sp > J'ai comme l'impression que tu n'as jamais entendu parler des algorithmes de colonie de fourmi, mais tu as sans aucun doute mis le doigt sur quelque chose d'intéressant : Algorithme de colonies de fourmis (Wikipédia).

Citation : Wikipedia

1. une fourmi (appelée « éclaireuse ») parcourt plus ou moins au hasard l’environnement autour de la colonie ;
2. si celle-ci découvre une source de nourriture, elle rentre plus ou moins directement au nid, en laissant sur son chemin une piste de phéromones ;
3. ces phéromones étant attractives, les fourmis passant à proximité vont avoir tendance à suivre, de façon plus ou moins directe, cette piste ;
4. en revenant au nid, ces mêmes fourmis vont renforcer la piste ;
5. si deux pistes sont possibles pour atteindre la même source de nourriture, celle étant la plus courte sera, dans le même temps, parcourue par plus de fourmis que la longue piste ;
6. la piste courte sera donc de plus en plus renforcée, et donc de plus en plus attractive ;
7. la longue piste, elle, finira par disparaître, les phéromones étant volatiles ;
8. à terme, l’ensemble des fourmis a donc déterminé et « choisi » la piste la plus courte.



jordan > Pour ton projet, je te propose l'ébauche suivante :

Perception -> Division du Renseignement
- Appréhender son environnement :
Grâce à des phéromones de types différents, les ouvrières et les guerrières sont à même d'explorer l'environnement à la recherche de ressources ou d'ennemis. L'intelligence centrale (décision et raisonnement) est susceptible d'agir sur les actions de la colonie en déterminant une tendance pour les seuils de réponse des fourmis (voir wikipedia partie sur les fourmis : http://fr.wikipedia.org/wiki/Intelligence_collective ).

- Localiser les lieux stratégiques
Les ressources sont localisées de manière autonome par les ouvrières. Le problème stratégique est de protéger les ressources, les ouvrières acheminant la ressource et le nid (base). La encore les phéromones permettent de déterminer l'importance des zones considérées. La proportion de guerrières peut-être déterminée par la quantité de phéromones sur une zone donnée. Cependant afin de permettre a l'IA centrale de déterminer des stratégies évoluée, il est nécessaire de construire plusieurs graphes. Celui "des chemins les plus fréquentés" (qui peut être déterminé par la concentration de phéromones des ouvrières), ainsi qu'un graphe topologique, plus difficile à déterminer (je n'ai pas encore d'idée sur la question :). Le graphe topologique permettrait de connaitre le nombre de passages (ou d'arcs) dont il faut interdire l'accès pour contrôler une zone donnée. Ainsi, l'IA centrale serait capable par exemple de déterminer un endroit idéal pour l'installation d'une nouvelle base. Un avant poste militaire devant être particulièrement protégé serait alors placé sur une zone "facile à défendre" ayant par exemple un seul accès, une zone protégée par des obstacles naturels.

- Collecter des informations sur les positions ennemies régulièrement
- Surveiller son propre domaine
Ces deux problèmes peuvent être abordé d'une manière similaire :
L'IA centrale détermine la zone du nid qui doit être protégée. Elle dépose des phéromones de type A sur la carte suivant l'importance des zones. Les phéromones de type A ne s'évaporent pas et attirent les fourmis guerrières. Les fourmis guerrières déposent à leur tour des phéromones de type B sur leur passage. Les phéromones de type B s'évaporent. Les phéromones de type B permettent de signaler aux guerrières que la zone à récemment été parcouru par d'autres guerrières. A concentration égale de phéromones de type A, une zone marquée B aura une probabilité inférieure d'être choisie par une guerrière car elle sait que la zone à été contrôlée récemment.

Mouvement -> Une partie des mouvements peut-être géré de manière autonome par les fourmis grâce au phéromones
Mémoire -> Une partie de la mémoire est stocké sur l'environnement : les phéromones.


Tout ceci est le fruit de ma longue réflexion du "weekend sans SDZ" (maintenace du site:)
J'espère que mes idées ont fait avancer le Schmilblick !

Pour information, je programme aussi en c++ et je suis en ce moment même (comme par hasard) en train d'essayer d'implémenter une colonie de fourmis simple (= nid/ouvrières/ressources/ plus court chemin..). J'avoue avoir un peu de mal pour l'instant (en même temps j'aurais peut-être pas dû essayer d'utiliser boost graph :-° ).


"La constante de couplage est fonction d'une certaine valeur constante que prend le champ scalaire des dilatations dans le vide quantique."
Image utilisateur
 
Hors ligne jordan # Posté le 15/08/2007 à 20:56:03
Développeur professionnel
Avatar
Flux RSS

Ville : Couternon
Pays : France métropolitaine
Études : Université de Dijon

Citation : Drain_You
Désolé, je n'ai aucune notion d'intelligence artificielle. Mais je pense cependant que modéliser une communauté est, informatiquement, impossible.

Je ne vois pas pourquoi l'intelligence serait purement biologique.

Citation : Drain_You
Alors, pour modéliser une communauté entière, je pense que la meilleure solution consiste à utiliser les statistiques.

Développe ton idée. Tu penses aux réseaux bayesiens ?

Citation : Drain_You
Utiliser des mots comme "raisonnement" ou encore "deduction" en parlant d'un composant informatique, ça n'a pas de sens.

Matériellement c'est vrai, après dans la réalité, je ne suis pas d'accord. Chaque composant répond à des lois simples de physiques. Pourtant une fois l'ensemble assemblé, des comportements intelligents (déduction) existe. Prenons le moteur Google. Si tu tapes 2+3 comme recherche, il t'indiquera 5. Derrière ce cache un code intelligent qui fait une déduction en fonction de ce que tu as tapés.

Citation : Drain_You
J'applaudis l'initiative de ce topic, vraiment très bon.

Est-ce ironique ? (compte tenu du reste de ton post)

Citation : SpotZup
Je poste juste pour répondre à Drain_You. Bien que l'objectif soit de ressembler à un comportement humain, je pense que dans un premier temps ils peuvent se limiter à un comportement de communauté "animale", dont l'espèce importe peu.

Exactement.

Citation : SpotZup
Ca sera donc une suite de réactions plus ou moins logiques, car il est vrai que le raisonement humain peut-être très bizarre.. Je sais pas: un animal à soif ? il va boire (facile à programmer), un humain à soif ? Bin non, celui-ci a la flemme, ou attends qu'on lui emmène, on n'y pense pas car amoureux, ou ne veut pas boire telle boisson car trop sucrée a son gout, ou que sa recette n'est pas open source.

C'est le genre de réflexion qu'il faudrait mener pour une communauté humaine (ou dite supérieurement intelligente) genre pour les SIMS :p

Citation : SpotZup
Je pense qu'il est plus intéressant d'essayer de se rapprocher d'un raisonement rationnel et instinctif, surtout dans le cas d'un jeu vidéo d'action, ou il serait bête d'essayer d'inclure la totalité de l'infinité des comportements humains possibles, tout simplement car c'est iconcevable, même dans le futur si on a pas de restriction en taille de mémoire vive pour le programme.

Dans le futur, on fera peut être du Bio-Informatique, qui sait ^^

Citation : xa4ke
Par ce que si je réagis en fesant l'action A par rapport a une Action B
Mon voisin Réagira peut être en fesant l'action C par rapport a l'Action B

C'est de la logique floue.

Citation : xa4ke
alors soit tu crée une société parfaite
soit tu crée une société ou un jour tout le monde se tappera dessus

:lol: Amusant comme vision des choses, vu que je souhaite réaliser une IA commune, normalement, elle ne devrait pas se détruire elle-même. Au pire, elle fera des erreurs de stratégies qui conduiront à la perte de ses membres, mais ils ne s'entretueront pas.

Citation : shuss
Modéliser une communauté en modélisant chacun de ses membres me parait assez lourd. Il va falloir gérer la mémoire de chacun séparément, tout en considérant qu'ils communiquent, donc que la mémoire d'un membre est sensiblement proche de la mémoire d'un autre membre (ils échangent leurs connaissances). Pour rationaliser un peut tout ça, je pense qu'il faudrait que chaque membre ait une très petite quantité de mémoire à lui tout seul, un plus grosse quantité étant commune au groupe, et ainsi de suite : en gros, ce sont des poupée gigognes, ce que l'un a appris (et qui peut être généralisable à tout le monde) est directement transféré dans la mémoire de la famille lorsqu'il rentre chez lui, puis dans la mémoire du village un peu plus tard, puis dans la mémoire de la nation ... Ca permettrait d'éviter les doublons : on connaît tous (ou presque ?) le théorème de Pythagore, mais dans le cadre d'une modélisation de notre communauté, on peut supposer que cette connaissance est globale à la communauté.

C'est un aspect très captivant mais qui ne répond pas aux attendes de mon API. En effet, le but est de réaliser une communauté dans sa globalité. Chaque membre en tant que tel ne nous intéresse pas : son seul but est de travailler pour la communauté auquel il appartient (comme un automate). Ce que tu dis néanmoins, n'est pas dénoué de sens et pourrait être pris en considération dans d'autres modèles.

Citation : shuss
Ensuite, ton schéma me paraît sur certains points incomplet. Déjà, tu passez de la perception au raisonnement. Je pense que ça devrait être une phase d'analyse et d'interprétation. Après tout, nous ne voyons jamais une tas de couleur, mais bien les objets qu'on identifie inconsciemment.

Pour moi, la perception est vraiment le B.A.Ba de l'API qui se contente d'identifier chaque couleur (pour suivre ton exemple). Il se résumerait surtout aux 5 sens que l'on possède par exemple.

Citation : shuss
Le raisonnement remplace la décision : la décision n'est pas un acte, c'est juste le résultat du raisonnement.

Le raisonnement tacherait de faire le liens entre chaque stimulations pour comprendre/voir les objets (toujours pour suivre ton exemple). Il reconnaît et y propose des réponses adaptées. Selon mon point de vue, c'est la décision qui tachera de choisir le meilleur choix final.

Citation : shuss
La mémoire n'est pas remplie sur ton schéma. Je pense que les flèches qui partent de la mémoire devraient être double : ce que j'analyse s'inscrit dans ma mémoire, et ce que je raisonne s'inscrit aussi dans ma mémoire pour éviter de devoir faire le même raisonnement.

Oui, je suis totalement d'accord, j'ai ajouté ça dans mon modèle local.

Citation : shuss
Après, tu l'a dit, il faut définir des "buts" pour que cette communauté ne soit pas inerte. Je pense qu'un but est désigné par ce qui nous fait du bien, et ce qui nous fait du mal. On peut mettre des échelles de bien sur chaque évènement. Lorsque je gagne une guerre, ça me fait 10 de bien. Lorsqu'un bâtiment s'effondre, ça me faire 3 de mal ... Bref, la communauté cherche le bien, et évite le mal (comme nous, quoi !).

Je trouve ça original, trop peut être. :euh: C'est bien la première fois que j'entends parler de ce genre de chose. Dans les jeux vidéos, ils utilisent en général un autre moyen beaucoup plus simple : le ratio et l'estimation de gain.

Citation : shuss
Pour la mémoire, je pense que la forme la plus fidèle de mémoire serait un style de mémoire par référence : chaque élément de la mémoire est directement relié à tous les autres éléments qu'il rappellent ...

L'éternel remarque sur le fait que notre mémoire est associative. Si me proposes un exemple de code représentant ta mémoire par référence, peut être que je l'envisagerai, car je vois mal comment réaliser ce que tu proposes.

Citation : erik-sp
Je propose une solution simple a votre probleme... utiliser les fourmis comme modeles.

:-° Tu l'air d'être passionné par les fourmis, ... malheureusement trop. Tu t'emballes. Des aspects peuvent être utilisés, mais je ne cherche pas à monter un élevage de fourmis virtuelles.

Citation : Brouznouf
Je pense qu'il faudrait que tu cherches ce qui concerne les algorithmes génétiques et les reseaux bayesiens, je pense que en etudiant cela beaucoup de tes problemes seront deja resolu.

Effectivement, je vais m'en servir pour certains aspects. Vis à vis des réseaux bayesiens, je n'en avais pas entendu parlé jusqu'alors, en tout cas pas sous ce nom là.

Citation : Brouznouf
L'algorithme génétique agit justemenet sur une evolution de communauté, quant aux reseaux bayesiens c'est ce qui permet de prendre des decisions et cela repose sur un schéma d'arbre de probabilité : en gros plein de probabilité conditionnel.

On sera obligé d'en mettre de toute manière, c'est une "technologie" souvent associée aux Systèmes Experts. Mais j'ai peur que se soient des tueurs de jeu. L'IA finirait pas conserver une population parfaite quitte à privilégier un seul modèle d'unité.

Citation : Brouznouf
J'ai lu avec intention tes travaux. C'est sympas, un peu bizzare comme jeu, mais fun quand même.

Citation : iNaKoll
Pour ton projet, je te propose l'ébauche suivante :

[...]

C'est pertinent comme comportement. C'est une piste que je vais suivre qui semble plus imprévisible (tout en restant pertinente) que un bon vieux pathfinding.

Vis à vis des unités autonomes, j'ai un soucis : c'est la manière de résoudre la visibilité de chacun des membres de la communauté. A chaque déplacement, il faut vérifier que dans le périmètre X, il n'y aurait pas quelque chose d'intéressant (ennemi, chemin phéromones, allié, nouvelle ressource), j'ai peur que ce soit lourd.
Hors ligne iNaKoll # Posté le 20/08/2007 à 01:31:50
Grosso merdo
Avatar

Ville : Paris
Pays : France métropolitaine

Je reviens d'un court séjour en Bretagne ( :-° ), et je vois que personne n'a essayé de faire avancer le Schmilblick pendant mon absence !
Citation : jordan
Vis à vis des unités autonomes, j'ai un soucis : c'est la manière de résoudre la visibilité de chacun des membres de la communauté. A chaque déplacement, il faut vérifier que dans le périmètre X, il n'y aurait pas quelque chose d'intéressant (ennemi, chemin phéromones, allié, nouvelle ressource), j'ai peur que ce soit lourd.


C'est pour cette raison qu'il faut utiliser les algorithmes les plus performants.. Si l'on veut pouvoir simuler le comportement d'un grand nombre d'unités (~10 000/~100 000) il faut être capable de récupérer rapidement les données à proximité d'une unité.
Dans mon projet de simulation, j'ai pensé que je pourrais utiliser Boost::graph pour ses adjacency-graph afin d'itérer rapidement sur les noeuds adjacents d'un noeud quelconque d'un graphe. Je me suis aperçu que boost-graph n'était pas si facile à utiliser pour un néophyte :-° . Si jamais tu trouves une solution plus abordable et/ou plus efficace je suis preneur !
Je pense que pour ce genre de problème où l'on doit simuler un grand nombre d'unités, les algorithmes de colonies de fourmis sont les moins gourmands en ressources. En effet, arrêtez moi si je me trompe, mais je crois que beaucoup d'intelligences artificielles "traditionnelles" nécessites un grand nombre d'itérations avant de proposer une solution convenable. Si ce nombre d'itérations est supérieur au nombre d'unités simulées, c'est qu'à mon avis un algorithme de colonies de fourmis serait plus rapide . (Je raconte peut-être n'importe quoi n'hésitez pas à me contredire :P)

static Schmilblick<IA>::iterator fourmis, ++fourmis; :-°

"La constante de couplage est fonction d'une certaine valeur constante que prend le champ scalaire des dilatations dans le vide quantique."
Image utilisateur
 
Hors ligne maxima # Posté le 05/09/2007 à 19:12:26
C’est pas faux.
Avatar

Études : Lycée du Parc - Lyon

L'IA..interessant...

oula je comprend rien a ce sujet :p

OKi je sort ==>[]

Avant de sortir je voudrai dire que c'est un sujet fasinant, mais trop dure et incompréhensible pour moi :-° :lol:

oki oki je suis sortie la [//]
Hors ligne minirop # Posté le 05/09/2007 à 20:14:01
I can't face the Dark w/o you!
Avatar
Groupe : Anciens

Ville : Reims
Pays : France métropolitaine
Études : SUPINFO China à Tianjin

je ne ferme pas car c'est un post intéressant.
maxima > +5% pour flood et +5% pour déterrage inutile.

Mes figurines :pirate: - Mes Manga - vive la contrefaçon \o/ - lecteur audio en console - Bot IRC fait avec Qt - Envoyez des formulaires HTML avec Qt
"O Zozor, Zozor! wherefore art thou Zozor? Deny thy father and refuse thy name; Or, if thou wilt not, be but sworn my love, And I'll no longer be a Zero."
"To conquer thee and thy blood for glore, Art thou my afeared and reluctant whore."
 
Hors ligne Guillawme # Posté le 06/09/2007 à 17:35:55
Avatar
Flux RSS

Études : Paris 6 - Université Pierre et Marie Curie (Jussieu)

heureusement que tu n'as pas fermé (et aussi que ça a été déterré, sinon je n'aurai pas trouvé ce sujet...)

ce passage (en rouge) du premier message de jordan me fait penser aux algorithmes génétiques (qui ont déjà été mentionnés dans le sujet d'ailleurs) :
Citation : jordan
Mouvement : S'occupe du travail d'archivage de la carte, autorise les déplacements et est chargé de déterminer le meilleur chemin à prendre (plus rapide, moins risqués...)


j'avais lu ceci sur le sujet : http://khayyam.developpez.com/articles/algo/genetic/
ça explique quelques concepts intéressants, mais malheureusement il n'y a pas une seule ligne de code :(
Édité le 06/09/2007 à 17:37:25 par Guillawme

zCorrecteur à votre service
 
Hors ligne ibizaman # Posté le 22/07/2008 à 22:47:05
Est-ce que vous savez pourquoi
Avatar

Études : FSA ULB

Bonjour,

Une grosse limitation de l'informatique par rapport à la biologie est, je crois, qu'en informatique toutes les réflexions des individus sont gérées par un seul processeur (ou presque) : en biologie, chaque individu pense individuellement ce qui permet à un individu de penser à quelque chose de compliqué sans que le reste du monde n'en soit handicapé!
Je me demande s'il ne serait pas intéressant de coder un tel programme d'intelligence artificiel en Erlang pour son côté serveur-clients (il y a sûrement d'autres langages qui font la même chose au mieux mais je ne m'y connais pas trop ^^ ) pour inciter à penser individuellement (même s'il y a un but commun : vivre). Sinon je pense qu'on se rapproche de l'utopie, du communisme en fait : quelqu'un pense pour nous. Or ce n'est pas vraiment la réalité. Donc tout dépend de ce que l'on veut recréer.

Une autre question que je me posais est : comment stocker le monde pour parvenir à recréer un système de perception comme on le connait : nous on ne doit pas interroger une base de donnée sur l'ensemble des coordonnées de la terre pour savoir celles qui sont dans notre vision ou pas, cela se fait "naturellement". Je pense que là aussi il y a une grosse limitation de l'informatique puisque ça pompe aussi des ressources!

Donc
-> penser individuellement
-> perception naturelle

Ceci dit, ce sont juste des réflexions, je ne m'y connait pas du tout ^^

A mort Word, vive latex
 
Hors ligne Zeraw # Posté le 22/07/2008 à 22:56:34
Code is poetry
Avatar
Groupe : Bannis

Purée regardez les dates ! Le dernier message date de septembre 2007 :-°

Image utilisateur Image utilisateur


"Blessed are the young, for they shall inherit the national debt.."
-- Hebert Hoover
 
Hors ligne berli888 # Posté le 22/07/2008 à 23:55:08
Celsius Online
Avatar

Ville : Noisiel
Pays : France métropolitaine
Études : SUPINFO Île-de-France à Paris

Jordan, ton projet est toujours en cours ?

Image utilisateur
 
Hors ligne wgmpgp # Posté le 23/07/2008 à 00:06:48
Rotoclap true fan
Avatar
Groupe : Bannis

Études : EPITA

Citation : Marmotte42
Purée regardez les dates ! Le dernier message date de septembre 2007 :-°

Et alors ? Le sujet est intéressant, la réponse qui up le topic aussi, je vois pas de problèmes.
 
Hors ligne proairgun # Posté le 23/07/2008 à 00:12:16
je panse donc j'essuie
Avatar
Groupe : Bannis

Citation : grobs
J'ai dévoré ce topic avec joie :)

LA solution à mon sens de toute cette mission impossible qu'est l'IA est la physique quantique (non-matheux s'abstenir :p ).



la, va falloir que tu m'explique le lien car si la physique quantique a un lien avec l'IA c'est juste a cause des methodes et des algorithmes extremement adapté aux ordinateurs quantique mais a part ca ...
 

Retour au forum "Discussions générales" ou à la liste des forums

Pour accéder à cette section
Connectez-vous !
connexion_rpx