La détection des pannes est un des élément les plus cruciaux pour
chacun des agents lorsqu'il s'agit de manipuler son environnement. La
détection des pannes et le contrôle des performances d'un agent permet
d'éviter les problèmes de dead-lock (boucle infinie basée
sur l'attente d'une condition non réalisable) et d'éviter les
stratégies non optimales. Un contrôle régulier et
relativement simple de l'environnement suffit à résoudre ces
problèmes. Mais dans la problématique des systèmes
multi-agents, la détection et le contrôle des pannes repose sur un
mécanisme plus complexe. Une panne peut être de plusieurs natures: un
agent oublie d'indiquer aux autres qu'il a terminé une action dont les
autres ont besoin, un agent oublie d'exécuter une action dont les
autres agents attendent le résultat, un agent oublie de demander à un
autre agent d'exécuter une action dont il attend le résultat, un agent
réussit de manière inattendue une action considérée comme impossible
mais les autres ne prennent pas en considération cette réussite et se
comportent de manière non optimale, un agent décide d'effectuer une
action qu'un autre agent entame au même moment mais tous les deux
renoncent à la continuer croyant que l'autre s'en chargera, etc.
Milind TAMBE décrit dans [#!tambe-1997b!#] quelques
unes de ces problématiques appliquées à la simulation militaire.
La détection des pannes est un problème qu'on peut en partie résoudre
par une analyse constante du système et par la mesure de ses
performances (un agent du système peut être dédié à la détection des
pannes). En revanche, la prédiction des pannes est structurellement
difficile. En effet, une panne est par nature un échec non prédictible.
Ainsi, un système multi-agents aura tout intérêt à être muni d'un
système performant de récupération d'échecs et de pannes. Notamment,
la granularité du traitement des pannes est un paramètre à prendre en
compte: selon la gravité de la panne, un agent tente de la
résoudre seul ou il décide que le système tout entier est
concerné et doit être
mis au courant de la nature de la panne et des remèdes à y apporter.
D'une manière générale et à condition que le coût de la communication
soit inférieur au bénéfice, lorsqu'un agent du système est incapable
d'exécuter sa part du plan global, il est de sa responsabilité
d'avertir le reste du système de la nature de l'échec rencontré et
ainsi d'initier un processus de recouvrement concerté. Si le coût de
l'annonce d'un échec est important, les agents d'un système doivent
prendre eux-mêmes en charge la surveillance des actions des membres de
leur système.
Le recouvrement implique à la fois une réévaluation totale ou
partielle des plans engagés, mais aussi une réponse, soit par le
contournement du problème (adoption d'une solution annexe), soit par
une nouvelle tentative d'exécution du plan. On trouve dans
[#!tambe-1997b!#] un exemple de mécanisme de recouvrement de pannes:
Milind TAMBE définit des « opérateurs » d'équipe, qui
sont des actions jointes dans lesquelles chacun des agents du système
joue un rôle précis (par exemple, l'opérateur engager opposant
trouve sa place dans le cas d'une simulation de combat aérien).
Chacun de ces opérateurs est régulièrement évalué: chaque agent engagé
dans un opérateur détermine grâce à une heuristique critique s'il est
possible de l'achever. Si ce n'est pas le cas et que la raison est
l'échec d'un des rôles (typiquement dans le cas de la simulation de
combat aérien, un hélicoptère abattu), alors l'agent évaluateur prend
en charge ce rôle s'il en est capable et communique ce changement.
S'il en est incapable, il attend qu'un autre agent le fasse pour lui
(et potentiellement, détruit l'opérateur si aucun n'en est capable).
Dans [#!parker-1998!#], Lynne E. PARKER définit la méthode ALLIANCE, une méthode alternative. Chacun de ses agents passe en revue les comportements possibles et estime le désir qu'il a d'adopter chaque comportement (en se basant sur les informations reçues de ses récepteurs, de la communication avec les autres agents, des aspects inhibiteurs de son propre comportement ainsi que de ses motivations et buts). Le désir de chacun de ces comportements possibles augmente en fonction du temps et lorsque ce désir dépasse un certain seuil, le comportement est activé. Dans le cas où un agent est en charge d'un comportement (ce qui est déterminé par la communication ou par l'observation de son comportement), le désir de l'agent de voir ce comportement activé croît beaucoup plus lentement. Ainsi, si l'agent est incapable d'accomplir le comportement sélectionné, l'agent finira par activer ce comportement. Ce mécanisme est appelé l'impatience et permet une résolution émergente de pannes dans un système multi-agents.