Fungus en quelques mots

Brouillon

Fungus est un prototype de `framework' multiagent pour simuler des systèmes complexes.

Introduction

Systèmes complexes

On peut voir un système complexe comme une population d'éléments avec des attributs bien définis. Ces éléments sont plus ou moins en interactions les uns les autres. Si bien qu'on ne peut pas réduire le système à la somme de ses éléments. De plus, si ces éléments ont des interactions non-linéaires, il se peut que l'on ait une émergence d'un comportement global non décrit dans le comportement des individus.

Trop souvent, ce comportement global ne peut pas être étudié de façon analytique. Le seul moyen d'étude que l'on ait à notre disposition est la simulation.

D'où Fungus

Fungus se présente sous la forme d'une bibliothèque Java qui offre la possibilité de construire des simulateurs pour un grand nombre de systèmes complexes. Cela va du simple pendule à un ecosystème complet en passant par les sociétés d'insectes.

Fungus est:

  • modulaire
  • extensible

Fungus peut être lancé dans un interface graphique (voir figure 3). De plus, Fungus possède un langage de script Mycelium afin de construire les simulations plus rapidement.

Bibliothèque

Agents

Les simulations de Fungus sont des systèmes multi-agents. Le concepteur de le simulation doit définir les caractéristiques de chaque éléments (appelés agents), puis mettre ceux-ci en relation.

Alors que dans de nombreuses simulations, on sépare les éléments «actifs» (agents) des éléments «passif» (environnement), Fungus considère tous les éléments de la simulation comme des agents.
[A little image]
Figure 1: Tout est agent dans Fungus
Les agents s'échangent de l'information via des canaux de communication. Ces canaux ne sont pas forcement parfait et peuvent déformer l'information. Par exemple, si deux agents sont loins, il se peut qu'il y ait une perte d'information lorsqu'ils communiquent...

Tout considérer comme des agents permet de distribuer facilement la simulation sur différentes machines. Fungus est conçu dans cette optique et permet de réaliser les calculs sur plusieurs machines reliées en réseaux. Les agents ne savent pas sur quelle machine ils se trouvent, tout comme il ne sait pas où se trouve les autres agents avec qui ils communiquent.

Services

Le systèmes s'appuie sur un ensemble de services. Les agents ou l'infrastructure délègue une partie de leurs traitements aux services.
[A little image]
Figure 2: Structure générale du système Fungus.
Ces services sont indépendants et peuvent être remplacés par d'autres au chargement. Par exemple, si une machine ne possède pas de réseau, on peut choisir un service réseau qui émulerait celui-ci.

Mycelium

<?xml version="1.0"?>
<!DOCTYPE mycelium SYSTEM "mycelium.dtd">

<!-- An example of the mycelium language -->
<mycelium>
 <meta name="author" contents="Valvassori Moïse"/>

 <definition>
   <scheme>
   (define (f x) 
     (if (zero? x) 1 
       (* x (f (- x 1)))))
  </scheme>
  <agentclass name="Tst">
   <initialisation>
    <variable name="msg">"Hello"</variable>
    (if (not (eq? #!null (mget! param 'msg)))
     (set! msg (mget! param 'msg)))
   </initialisation>
   <behavior>
    (display "Myc:")
    (display msg)
    (newline)
    (sleep (make-quantity 1 "s"))
    </behavior>
  </agentclass>
 </definition>

 <simulation>
  <agent type="Tst"/>
  <repeat times="(f 3)">
   <agent type="Tst">
    <parameter name="msg">Bonjour</parameter>
   </agent>
  </repeat>
 </simulation>
</mycelium>


[]
Figure 3: L'interface graphique de Fungus.

Latest News
Warning: main(http://sourceforge.net/export/projnews.php?group_id=57560&limit=5&flat=1&show_summaries=0) [function.main]: failed to open stream: Network is unreachable in /mnt/102/sda/3/5/valvassori/unix/fungus/overview.php3 on line 159

Warning: main() [function.include]: Failed opening 'http://sourceforge.net/export/projnews.php?group_id=57560&limit=5&flat=1&show_summaries=0' for inclusion (include_path='/mnt/102/sda/3/5/valvassori/include:.:/usr/php4/lib/php') in /mnt/102/sda/3/5/valvassori/unix/fungus/overview.php3 on line 159


Warning: main(http://sourceforge.net/export/projhtml.php?group_id=57560&mode=full&no_table=1) [function.main]: failed to open stream: Network is unreachable in /mnt/102/sda/3/5/valvassori/unix/fungus/overview.php3 on line 161

Warning: main() [function.include]: Failed opening 'http://sourceforge.net/export/projhtml.php?group_id=57560&mode=full&no_table=1' for inclusion (include_path='/mnt/102/sda/3/5/valvassori/include:.:/usr/php4/lib/php') in /mnt/102/sda/3/5/valvassori/unix/fungus/overview.php3 on line 161