G-Fox Erebor BridNet

Développement

 Introduction, notion d'agent

D'un point de vue purement informatique (d'après Jacques Ferber), la notion d'agent apparaît comme fortement liée à l'implémentation. En effet, un agent peut être défini comme un objet informatique (au sens des langages objets) dont le comportement est décrit par un "script" (fonction principale main), disposant de ses propres moyens de calcul, et qui peut se déplacer de places en places (une place pouvant être un site informatique distant du site originel de l'agent) pour communiquer avec d'autres agents. De par son "script", l'agent est capable de suivre un comportement de vie qu'on lui aura inculqué au moment de l'implémentation et qui lui permettra d'avoir comme principale caractéristique d'être entièrement autonome.

Fonctionnement des agents

Concrètement, un agent est une entité informatique qui :
  1. Se trouve dans un système informatique ouvert comprenant un ensemble d'applications, de réseaux et de systèmes hétérogènes.
  2. Peut communiquer avec d'autres agents.
  3. Est mu par un ensemble d'objectifs propres (agent intentionnel).
  4. Possède des ressources propres.
  5. Ne dispose que d'une représentation partielle des autres agents.
  6. Possède des compétences (services) qu'elle peut offrir aux autres agents.
  7. A un comportement tendant à satisfaire ses objectifs, en tenant compte d'une part des ressources et des compétences dont elle dispose, et d'autre part de ses propres représentations et des communications qu'elle reçoit.

Différence entre objet et agent

Si le concept d'agent distribué est très proche de celui de l'objet, il n'en est pas de même de l'agent comme entité intentionnelle. En effet les objets n'ont ni but de recherche de satisfaction et le mécanisme d'envoi de messages se résume à un simple appel de procédure. Il n'y a pas de langage de communication à proprement parler. Les mécanismes d'interaction sont donc à la charge du programmeur.

    La différence essentielle existante entre un objet et un agent est tout d'abord qu'un objet est défini par l'ensemble des services qu'il offre (ses méthodes) et qu'il ne peut refuser d'exécuter si un autre objet le lui demande. En revanche, les agents disposent d'objectifs leur donnant une autonomie de décision vis à vis des messages qu'ils reçoivent. Par ailleurs, ils établissent des interactions complexes faisant intervenir des communications de haut niveau.

    De fait, un agent peut être considéré comme un objet doté de capacité supplémentaires : recherches de satisfactions (intentions, pulsions) d'une part, et communication à base de langages plus évolués (actes de langages pour les agents cognitifs, propagation de stimuli pour des agents réactifs) d'autre part, ces deux notions étant intrinsèquement liées. Inversement , un objet peut être considéré comme un agent "dégénéré" devenu un simple exécutant, tout message étant considéré comme un requête.

Les systèmes multi-agents

Les systèmes multi-agents (SMA) mettent en œuvre un ensemble de concepts et de techniques permettant à des logiciels hétérogènes, ou à des parties de logiciels, appelés "agents" de coopérer suivant des modes complexes d'interactions. Ils apportent une solution nouvelle au concept même de modèle et de simulation dans les sciences de l'environnement, en proposant de représenter directement les individus, leurs comportements et leurs interactions sous la forme d'agents, et la quantité d'individus d'une espèce donnée sera le résultat de la confrontation (coopération, lutte, reproduction) des comportements de tous les individus représentés dans le système.

    L'intérêt de ces simulations est de pouvoir considérer aussi bien des paramètres quantitatifs (numériques) que qualitatifs (comportement individuels faisant éventuellement appel à des raisonnements stratégiques). Ce sont des constructions de "micro-mondes artificiels" dont il est possible de contrôler toutes les caractéristiques et de reproduire des séries d'expérimentations comme s'il s'agissait de situations de laboratoire. On se trouve donc en présence d'une modélisation analogique, semblable aux maquettes de format réduits utilisées en aéronautique ou en construction navale, la différence essentielle provenant du fait que le modèle réduit est exprimée sous la forme d'une entité informatique et non d'une structure physique. Ici, il s'agit d'étudier la dynamique d'un système multi-agent et de comparer cette dynamique avec celle d'un système réel.

La technologie des SMA s'est développée ces dernières années grâce à quatre formes de pression :

  1. Les limites de l'Intelligence Artificielle classique sur le plan de la structuration et de l'organisation des connaissances.
  2. La nécessité de trouver des techniques performantes de modélisation et de simulation dans le domaine des sciences du vivant au sens large du terme.
  3. La robotique où le développement de la miniaturisation en électronique permet de concevoir des robots disposant d'une certaine autonomie quant à la gestion de leur énergie et à leur capacité de décision.
  4. Le développement des systèmes distribués tout particulièrement : avec la généralisation des réseaux et des ordinateurs parallèles, il devient de plus en plus important de pouvoir faire coopérer plusieurs composants logiciels au sein d'environnements hétérogènes et distribués.

Moyens logiciels

Les moyens logiciels à notre disposition sont :
  • un environnement de type UNIX,
  • un logiciel regroupant un environnement de simulation et un langage orienté multi-agents : oRis.


oRis, un langage orienté multi-agents

   Nous allons voir comment une plate-forme d’évaluation de vulnérabilité des systèmes d’information peut être implémentée sous oRis.  oRis est dit langage orienté multi-agent : il s’agit d’une extension par rapport à la programmation orientée objets.

 Le cas d’oRis :

oRis propose une syntaxe proche de C++. Le mot clé class désigne un agent qui implémente une fonction imposée : void main (void). Elle est chargée de décrire le comportement de l’agent. Les agents sont instanciés dans la fonction oRis : void execute (void), cette fonction peut être considérée comme un site sur lequel résident les agents principaux de l’application. Des fonctions de communications synchrones et asynchrones sont définies dans le langage : les agents coopèrent.

    Une description efficace de chaque agent est relativement simple à obtenir, la pérennité de la programmation objet dans oRis permet héritage, composition, … accordant au développeur souplesse, évolutivité et réutilisabilité du code.

Diasite
powered by