Quand l’implémentation fait le modèle

15/06/2018

Problèmes résolus

Une erreur d’inattention

Je disais dans le billet précédent que je rencontrais quelques soucis par rapport aux différences (qui ne devaient pas exister) entre les sorties du modèle Python3 et Vensim. Le problème venait simplement du fait que le modèle affiché par défaut dans la version Vensim n’était pas directement le scénario de base de World3 (que je vais désormais abréger W3), à savoir le scénario 1, aussi appelé « standard run », « Business as usual » ou encore « BAU », mais un scénario dit expérimental. Trois scénarios, sous formes de datasets, sont inclus dans l’implémentation Vensim : experimental (je ne sais pas encore à quoi il correspond), SCEN06 (qui doit correspondre au scénario 6) et Current celui que je devais sélectionner. J’avoue, c’est un peu idiot de ma part. Tous les autres scénarios sont disponibles sous forme de fichiers .cin que je n’ai pas exploités.

Les 11 scénarios1 sont disponibles dans l’implémentation Modelica, que vous pouvez d’ailleurs, de même que pour implémentation Vensim, tester gratuitement dans le logiciel libre OpenModelica.

Il est bon de noter que la différence de précision n’a en fait rien à voir avec un écart, et il semble même qu’elle n’a aucun effet ! Les valeurs données par Vensim sont uniquement des arrondis des valeurs données par Python, les courbes se recouvrent désormais parfaitement.

Les courbes de population des implémentations Python et Vensim se recouvrent maintenant parfaitement.
Les courbes de population des implémentations Python et Vensim se recouvrent maintenant parfaitement.

Python : attention !

J’ai également corrigé un petit défaut, du à la modification manuelle du modèle sorti par PySD. Une des joies du Python, c’est qu’il est possible de ne pas se soucier des types des variables… Ou presque. Avec numpy (utilisé par PySD), et dans le cadre d’une modélisation par DS, il se peut que vos variables numériques ne se convertissent pas d’une étape à la suivante, d’un entier int vers un nombre décimal float. En ce qui me concerne, cette erreur a fait que la variable Perceived Food Ratio prenait la valeur 1 les deux premières demi-années (le pas de base de la simulation Vensim). La variable se stabilisait ensuite, mais ça reste une petite imprécision.

Veillez à rajouter un point à vos valeurs entières, quand vous savez qu’il s’agit de nombres décimaux. (Par exemple : 1.)

Quand l’implémentation fait preuve d’imprécisions

Les W3 implémentés dans Modelica, Stella et Vensim sont identiques 2. Les différences de valeurs obtenues entre l’implémentation Modelica et Stella sont expliquées dans la documentation de la première.

The results obtained are not exactly the same as those shown in the book Limits to Growth: The 30-Year Update due to the integration algorithm in use. Most Modelica simulation environments uses by default a variable-step / variable-order DASSL algorithm, whereas STELLA, just like the older Dynamo software, uses by default a fixed-step Euler algorithm with a step size of 1 time unit.

A second even more important difference is that my Modelica code treats all variables as real-valued floating-point numbers, whereas the STELLA model treated some variables (e.g., population) as integers, whereas it treated other variables as fixed-point variables with only two significant digits after the comma. This led to a quite noticeable quantization error.

Source

Ces imprécisions, d’une implémentation à l’autre, sont inhérentes à la DS et c’est pour cela qu’il faut garder en tête que les analyses qualitatives (entre autres, les topologies des courbes) sont les plus pertinentes sur ce genre de modèle.

J’ai pu comparer la sortie avec celle de l’implémentation Stella (l’implémentation originale) : les courbes générées par Stella recouvrent celles de Python et de Vensim. Très bonne nouvelle !

Petite vidéo en attendant le prochain billet

Pour ceux qui ne l’auraient pas déjà vus, je vous conseille cette excellente vidéo de Game Spectrum qui fait le rapprochement entre sa passion pour les jeux-vidéo et l’effondrement.


  1. Description de W3 sur le blog de JM. Jancovici

  2. à vérifier