• # Paradigme SMA

    Posté par . En réponse au journal Des paradigmes alternatifs. Évalué à 10.

    Je trouve ça un peu dommage de parler de système multi-agents (car c'est ça l'approche derrière le jeu de la vie, et derrière Jason) en se limitant à la problématique du contrôle interne de l'agent.

    En effet, et en particulier avec cet exemple, toute la difficulté dans la conception de ce programme ne s'est pas retrouvée dans la programmation de l'agent lui-même.
    La difficulté c'est d'avoir trouvé le bon comportement de l'agent de telle sorte que le système ait un comportement donné (plus ou moins spécifié ici).

    De manière plus générale, l'approche BDI est super pour décrire le comportement de l'agent, mais il faut déjà l'avoir trouvé avant ça !
    Il y a pleins de travaux sur comment, à partir d'un problème, on peut identifier les agents et trouver le « bon » comportement de chacun d'eux pour que le système est la fonctionnalité voulue, avec pleins de propriétés dites sefl-* à la clé (self-adaptative, self-organising, self-lol, self-mdr...).

    Donc pour retrouver la question de départ, en terme de paradigme de programmation alternatifs, je parlerais plutôt des systèmes multi-agents et de la difficulté de raconter une solution à un problème du point de vue d'un agent et ce de manière locale.

    Par exemple quand on regarde l'exemple du jeu de la vie, on voit que le comportement a été défini de façon purement locale, l'agent n'a aucune « conscience » (ce mot est à prendre avec des pincettes :) de la globalité du système !
    On connaît tous l'exemple des fourmis qui trouve un plus court chemin alors que leur comportement est raconté sous forme d'interaction locales (déposer de la phéromone quand on revient avec de la bouffe, et suivre la phéromone quand on a pas de bouffe).

    Bien sûr ces principes sont appliqués dans pleins d'autres domaines et amènent très souvent à des systèmes très résilients aux défaillances.

    Voilà, perso j'aime pas trop les BDI, pas à cause de l'approche elle-même, mais parce que à chaque fois c'est la même chose, on se focalise sur l'idée d'avoir un agent, qu'il est « intelligent », etc, mais on se pose jamais la question de savoir comment faire un système. Et en somme, c'est bien beau les BDI, mais c'est pas ça qui fera qu'on aura des systèmes super intelligents, adaptatifs, magiques, etc, ... (à mon avis :)

    Là où je bosse (je travaille sur l'aide au développement des systèmes multi-agents), on fait des systèmes multi-agent auto-organisateurs et le « guide » qui nous aide à les faire est basé sur la notion de coopération. Face à un problème, on a des moyens d'identifier des agents, et ensuite toute la difficulté est de trouver le comportement coopératif des agents. Et ça revient à trouver des situations (très locales, du point de vu de l'agent) dans lesquelles les agents peuvent se retrouver et que l'on définit en tant que concepteur comme étant non-coopératives (par rapport au problème à résoudre) et on donne à l'agent un comportement qui va « réparer » cette situation quand il la détecte !
    Ça marche et ça déchire :D

    Note : perso, j'en fais pas tant que ça de ces systèmes, mais en tant que « expert » (dans l'équipe de recherche où je suis) de la programmation, du génie du logiciel, et tout ces trucs qui sont souvent très formels, je suis complètement convaincu que c'est ce genre de systèmes qui va faire le futur :) (et on va tous se faire buter par Skynet, toussa).