[Next] [Previous] [Up] [Top] [Contents] [Index]
Pour tester le langage de simulation pour la simulation discrète des systèmes dynamiques (voir la section 6-2.2 "Un langage de simulation pour la simulation discrète des systèmes dynamiques" [p. 244]) nous avons repris un modèle tiré de Allan et Stahel (1983). Il représente un modèle "a priori" sur la guerre en Afghanistan avec une attention spéciale portée à la question de savoir si (et sous quelles conditions) la guérilla peut survivre. Etant donné qu'il n'existait que très peu de données sur ce conflit en 1981-82, les paramètres sont des estimations fondées sur des données empiriques que l'on possède sur d'autres conflits estimés comparables. Pour estimer la problématique "la guérilla peut-elle survivre", le modèle doit a priori estimer les chances de la guérilla de façon pessimiste. La structure de base du modèle est reproduite dans la figure ci-dessous qui montre les niveaux les plus importants du système. Les flux entre eux sont représentés à l'aide des flèches.
Dans notre langage de simulation numérique discrète d'événements, les niveaux doivent être bien différenciés des flux à cause de l'algorithme de calcul. Le modèle ci-dessus présente ce type de structure. Par contre, la manière de définir les objets de simulation (en termes traditionnels: les équations et les paramètres) reste très souple. C'est le modéliseur qui décide s'il préfère un modèle très compact ou très désagrégé avec beaucoup de variables. Ici, nous avons choisi de travailler avec relativement beaucoup d'objets par rapport au modèle d'origine. L'idée derrière ce choix est qu'il sera plus simple de les manipuler avec d'autres mécanismes, par exemple des systèmes d'inférence ou des simulations orientées objets. Voici les "équations" qui définissent le modèle:
; --- guerilla (def-level ?guerilla sbs (*gen*) ini (155000) eq (+ ?guerilla ?guer-gains (- ?guer-losses))) (def-flow ?guer-gains sbs (*gen*) ini (0) eq (* ?guer-gain-r ?guer-pot)) (def-parm ?guer-gain-r sbs (*gen*) ini (0.01)) (def-flow ?guer-losses sbs (*gen*) ini (0) eq (* ?guer-loss-r ?guerilla (+ ?ussr ?afgh))) (def-parm ?guer-loss-r sbs (*gen*) ini (0.00000035)) ; -- potential guerilla (def-level ?guer-pot sbs (*gen*) ini (1470000) eq (- ?guer-pot ?guer-gains)) ; -- rest of population (def-level ?rest-pop sbs (*gen*) ini (10850000) eq (- ?rest-pop ?army-recruits ?genocide ?refugees)) (def-parm ?army-recruits sbs (*gen*) ini (1500)) (def-flow ?genocide sbs (*gen*) ini (0) eq (* 0.0011 ?rest-pop)) (def-flow ?refugees sbs (*gen*) ini (0) eq (+ 120803)) ; -- ussr army (def-level ?ussr sbs (*gen*) ini (0) eq (+ ?ussr ?ussr-flow (- ?ussr-losses))) (def-flow ?ussr-flow sbs (*gen*) ini (0) eq (- ?ussr-objective ?ussr)) (def-parm ?ussr-objective sbs (*gen*) ini (85000)) (def-flow ?ussr-losses sbs (*gen*) ini (0) eq (* 0.003 ?guerilla)) ; -- afghanistan (def-level ?afgh sbs (*gen*) ini (35000) eq (+ ?afgh ?army-recruits (- ?afgh-losses))) (def-flow ?afgh-losses sbs (*gen*) ini (0) eq (* 0.006 ?guerilla)) ; -- observations (def-obs ?guer-tot-losses sbs (*gen*) ini (0) eq (+ ?guer-tot-losses ?guer-losses)) (def-obs ?ussr-tot-losses sbs (*gen*) ini (0) eq (+ ?ussr-tot-losses ?ussr-losses)) (def-obs ?afgh-tot-losses sbs (*gen*) ini (0) eq (+ ?afgh-tot-losses ?afgh-losses))
Voici les résultats d'une simulation:
==> (sim-plot *gen* 72) a = ?GUERILLA min: 167801.25 max: 252302.585649685 b = ?GUER-POT min: 712937.31430302 max: 1455300. c = ?REST-POP min: 1552781.45434478 max: 1.0715762e7 d = ?USSR min: 84243.092243051 max: 84535. e = ?AFGH min: 35570. max: 43998.9650902446 f = ?GUER-GAINS min: 7201.38701316182 max: 14700. g = ?GUER-LOSSES min: 1898.75 max: 10938.1432205581 h = ?GENOCIDE min: 1844.62198396161 max: 11935. i = ?REFUGEES min: 120803 max: 120803 j = ?USSR-FLOW min: 465. max: 85000 k = ?USSR-LOSSES min: 465. max: 756.907756949056 l = ?AFGH-LOSSES min: 930. max: 1513.81551389811 m = ?GUER-TOT-LOSSES min: 1898.75 max: 712241.155119586 n = ?USSR-TOT-LOSSES min: 465. max: 49500.5174548777 o = ?AFGH-TOT-LOSSES min: 930. max: 99001.0349097554 STEP 1: ** ea * g d * STEP 2: ** e a* g d ** STEP 3: * * e a * g d ** STEP 4: * * e a* dg ** STEP 5: * * e a * d g ** STEP 6: * * e * d g * * STEP 7: * * e da* g * * STEP 8: * * e d a* g * * [ ................ ] STEP 66: * ** d a * ge * STEP 67: * ** da * g e * STEP 68: *** ad * g e * STEP 69: ** a d * g e * STEP 70: ** a * g e* STEP 71: * a * d g *
Le résultat de ce modèle était que la guérilla survivra (lettre a ci-dessus). Cela a été confirmé par l'histoire. Voici quelques valeurs de deux variables importantes d'observation, les pertes totales de la guérilla et des soviétiques.
==> (list-sim *gen* ?guer-tot-losses ?ussr-tot-losses) SIM-I> LIST OF SIMULATION BASE *GEN* OBJECTS ?GUER-TOT-*?USSR-TOT-* MAX : 712241.155 49500.517 MIN : 1898.750 465.000 STEP 0: 1898.750 465.000 STEP 1: 8952.569 968.404 STEP 2: 16349.533 1494.305 STEP 3: 24069.475 2041.238 STEP 4: 32091.955 2607.801 STEP 5: 40397.181 3192.659 ......... STEP 61: 619066.486 43208.591 STEP 62: 628657.773 43861.449 STEP 63: 638188.840 44509.182 STEP 64: 647659.400 45151.735 STEP 65: 657069.196 45789.055 STEP 66: 666418.003 46421.093 STEP 67: 675705.623 47047.802 STEP 68: 684931.887 47669.138 STEP 69: 694096.644 48285.061 STEP 70: 703199.769 48895.533 STEP 71: 712241.155 49500.517
Comparons ces résultats avec les résultats obtenus dans la simulation continue originale de Allan et Stahel. Avec leur méthode de calcul, ils arrivent après 72 cycles à 712'000 pertes pour la guérilla et à 49'000 pertes pour les Soviétiques. Notre modèle arrive à ces chiffres un cycle plus tôt, ce qui est un résultat excellent.
[Next] [Previous] [Up] [Top] [Contents] [Index]
Generated with Harlequin WebMaker