chapitre 6 Le décideur, son organisation et son environnement
Syntaxe: (def-<type> ?<nom> sbs ( <base de simulation> ... ) ini ( <initialisation-val> ... ) eq <équation> Exemple: (def-flow ?guerilla sbs (afgh-model) ini (155000) eq (+ ?guerilla ?guerilla-gains ?guerilla-losses))Il faut donc donner un nom à chaque objet. Ce symbole doit être précédé par un "?". (ex: ?guerilla) Ensuite chaque objet doit faire partie d'au moins une base de simulation (ex: afgh-model). Une valeur d'initialisation est nécessaire si on utilise cette variable pour en calculer d'autres (ex: 155000). Si l'on a besoin d'entrer une série de nombres, c'est également possible. L'équation, précédée par le mot clé "eq" est une simple expression "Scheme"*3 qui doit nécessairement retourner une valeur numérique lorsqu'elle est exécutée. Dans le cas le plus simple, il s'agit d'une expression mathématique qui fait référence à d'autres objets de simulation. Toutefois, il est possible de faire n'importe quoi avant de retourner une valeur, comme d'appeler par exemple un système de simulation orientée objets. Voici un exemple d'une équation un peu plus sophistiquée:
  ;; create a temporary variable guerilla-count   
  (let ((guerilla-count (+ ?guerilla ?guerilla-gains ?guerilla-losses)) 
    (if ;; if the guerilla count is very low 
        (< guerilla-count 100)  
        ;; then print a message and return zero 
        (begin 
           (writeln "?Guerilla too low, set to 0!!) 
           0) 
        ;; else return this value (which will be set to ?guerilla) 
        guerilla-count) 
Dans cette expression, on fait un petit calcul intermédiaire pour voir si un niveau tombe au-delà d'une limite. Si c'est le cas, on imprime un message et on met ce niveau à zéro. Au lieu de simplement jouer sur des valeurs numériques, on peut très bien utiliser ces expressions pour changer le comportement du modèle, par exemple modifier le paramètre qui règle le flux de "?guerilla-gains", l'augmentation des effectifs de la guérilla.Cet petit exemple met en évidence la puissance conceptuelle d'une simulation discrète. Il devient très facile de changer le comportement du modèle en cours de route sans le recompiler. A noter également que tout changement de paramètres a un effet clair et immédiat sur le système dans le cycle suivant. Dans des modèles continus, les effets de lissage rendent très difficile ce genre d'opération. Afin de montrer qu'on ne perd pas énormément de précision avec un modèle discret par rapport à un modèle continu simple, voici un test:
 
 
Generated with WebMaker