Atelier Magis

 

Juste Raimbault

Sébastien Rey Coyrehourcq

Grenoble

03/2022

Simuler / Explorer / OpenMOLE

Simuler

Simulation en géographie

1950

1980

Hägerstrand, Marble, Pitts, etc.

 

Pumain, Sanders, etc.

Guermond, Langlois, etc.

Chamussy, Le Berre, Uvietta, etc.

 

Forrester

pionniers

charnière

1970

Wilson

Batty

Ackerman, Chorley, Hagget, Berry, etc .

Prigogine, Allen,

Sanglier, Haken, etc..

conceptual

technical

1990

Couclelis,

Tobler,etc.

Epstein, Doran, etc.

Influences répétées du projet systémique (Von Bertallanfy et cie.)

open systems, retro-action, self-organization, equifinality, bifurcation, etc.

[Pouvreau 2013]

Agent Based Modelling

[Rey-Coyrehourcq 2015]

Cellular
Automata

Non Linear Dynamical
Systems

France

Modèles dynamiques

Systèmes dynamiques

Automates
Cellulaires

Modèles multi-agent

jeu de la vie

fourmis

proie prédateur

Couplage possible de ces trois approches

Modèle multi-agents

Echangent des messages

Réflechissent ...

Bougent et perçoivent

Evoluent dans un environnement

Agissent sur l'environnement

(plus ou moins ...)

[Ferber 1999, Drogoul 2009]

ville

fourmis

moustique

individu

arbre

[Drogoul Treuil 2008]

Modèle multi-agents

Un méta-modèle plus qu'un modèle

flexibilité de représentation & emboitement d'échelle !

KISS

KIDS

Stylisé

Particulier

[Sanders & Banos 2011, 2013, Banos 2013]

Une variété de pratiques

peu de règles

beaucoup de règles

espace simplifié

espace réaliste

Exemples SMA

GAMA (gaml)

Netlogo (logo)

plateformes SMA
ou java/scala

6 exemples

KISS

KIDS

Stylisé

Particulier

MicMac

& une grande diversité de besoins en calculs : Grille & HPC !

"épidémiologie"

MicMac

[Banos et al. 2015]

agents = personnes & avion & villes ; couplage avec ODE
4 stratégies à explorer
2 objectifs à minimiser (écon. vs épi.)

pas de données

Question : Quel est la combinaison de stratégies (quarantaine, évitement, responsabilisation ind., protection ind.) qui permet de limiter à la fois les pertes économiques, et la diffusion de l'épidémie dans un tel système ?

~ 5/10 minutes d'exécution
1 simulation par CPU

KISS

KIDS

Stylisé

Particulier

M03

épidémiologie

MicMac

Mo

[Maneerat et al. 2017]

3

agents = moustiques & nids
résolution inf. 1m
exécution : + 12 heures

+ 50 paramètres
1 simulation = 1 cpu
16 Go Ram
DOE :
LHS sur grille EGI
500000 sim, ~20 ans calculs

Objectif : Comprendre et lutter contre l'émergence et la diffusion de la Dengue dans les milieux urbains

Moma

Mode

Momos

Micro

Macro

[Misslin 2017]

résolution 30m,
ville entière

 

[Daudé et al. 2017]

[Cebeillac et al. 2017]

résolution inf. 1m, quartier 10km²

paysage synthétique
 

agent: individu mobile avec agenda

résolution 30m,
ville entière

 

données: twitter

modèle
surrogate

exploration

exploration

indice env.
 

2011 & 2019

ou ?

comment ?

quand ?

KISS

KIDS

Stylisé

Particulier

5AD

géo. santé

MicMac

M03

5Ad

[Cottineau et al. 2020, à paraitre]

~ 25 minutes d'exécution
~ 3 Go ram par simulation
1 core, mais multithreading possible
test :
100.000 execution
calibrage: 200.000 executions

 

% personnes en bonne santé

agents: personnes / 8.16 M agents mobiles, en interaction
espace: IDF à 1km x 1km

données: nombreuses, et à différentes dates (NPPS, CSP 18 catégories, OD, baromètre santé, etc.)

mesure d'inégalité entre les extrême des groupe d'éducation à sexe et âge égal

1 modèle changement d'opinion
5 paramètres

3 objectifs à minimiser
4 scénarii de mobilité (random, données, etc.)

Etudier l'effet de la segregation sociale dans l'évolution des comportements de santé sur une journée type de 24h.

Question :  Arrive-t-on à reproduire de façon cohérente les données et l'inégalité de comportement de santé en fonction des groupes sociaux ?

KISS

KIDS

Stylisé

Particulier

SimpopLocal

MicMac

archéologie

5AD

M03

SimpopLocal

[Schmitt 2014, Schmitt et al. 2015]

Question : La production et la diffusion de l'innovation
est il un mécanisme nécessaire pour produire une hiérarchisation crédible du système de peuplement en 4000 ans au néolithique ?

agents: villes & innovations
7 paramètres libres
4 mécanismes
très peu de données en entrée/sorties

1 loi empirique à reproduire

Espace

système de peuplements

SimpopLocal

1 simulation = 1 coeur
1 Go Ram
~ 5/10
minutes d'exécution
500 millions de simulation
eq. 20 ans de calculs
4000 cpu EGI Biomed

Calibration

Analyse de sensibilité

NSGA 2 - Ilôts

CP-Profile

1 simulation = 1 coeur
1 Go Ram
~ 1/2
minutes d'exécution
eq. 12 ans calcul par profil
15 jours de calculs (profil x 6)
4000 cpu EGI Biomed

[Schmitt et al. 2015]

[Reuillon et al. 2015]

réécriture modèle

1 objectif : f = max(01,02,03)

3 objectifs : (temps, forme, taille)

obj. f est impossible si 0 innovations

KISS

KIDS

Stylisé

Particulier

SimpopLocal

MicMac

ATP

5AD

M03

archéologie

Rin ATP

1 simulation = 1 coeur
1 Go Ram
~ 20
minutes d'exécution

... campagne en cours ...

Objectif : Simuler pour mieux comprendre les règles de  circulation des archéomatériaux (craies) depuis les carrières jusqu'aux sites de construction, en Normandie, entre le 11ème - 15ème siècle

agents: carrières et sites
espace :



données : très peu, fait stylisés & ordre de grandeurs
observable : volume par type de matériaux par type de batiments

processus

ordre de grandeurs

acteurs / objets

modèle(s)

simulation(s)

interdisciplinarité

KISS

KIDS

Stylisé

Particulier

SimpopLocal

MicMac

ATP

5AD

M03

ESCAPE

risques & santé

Escape

Objectif : Le projet ESCAPE a pour objectif de développer un système d’aide à la modélisation et à la simulation d’évacuation de villes afin d’évaluer des scénarios de gestion de crise.

[Daudé et al. 2019]

2016

Trois démonstrateurs :

Rouen (risque tech),

Hanoï et val d’Authion (risque nat)

agents: automobiles, bus, piétons, organisations, etc.

mécanismes: pop synthétique, agenda, multimodalité, arbres décisions, etc.

données : traffic (voiture, transports en communs), Insee, EMD, etc.

1 simulation = 1 coeur
~ 8/16 Go Ram
+30 minutes

Explorer

Explorer pour discuter

Des conceptions complémentaires de la réalité

Explorer pour faire des choix

Les choix

générent des chemins

expliquant le même pattern

1

2

Deconstruire & reconstruire pour mieux comprendre ...

Know where and when

parameters and mechanisms break

Look back and challenge choices

Share your results

and challenge others

(   )

Cumulative knowledge

(    )

(    ,    )

(    )

connaitre et agir sur la dépendance au chemin

[Grimm2016, Cottineau2016]

Explorer pour comprendre

le "laboratoire virtuel", un agitateur d'idées
mais pas que ...

comportements attendus / simulés ?
défaillances ?
robustesse(s) ?

Bénéfices de l'exploration

Autrement dit, un processus systématique qui stimule l'effet de surprise.

a) la saine confrontation des points de vue

L'exploration des modèles revient donc à organiser :

b) la mesure des écarts entre comportements internes attendus et simulés

c) la chasse aux bugs et cas limites

Les racines du mal

... curse dimensionality ...

... non linéarité ...

... stochasticité ...

Les quatre cavaliers de l'apocalypse

... équifinalité ...

Une exploration directe est impossible

diversité de formes et d'évolutions

un résultat n'est jamais sûr

un état final est atteignable de

1000 façon différentes

par 1000 personnes différentes

[chapron, exmodelo 2019 ]

Important en shs,
"cumulativité des connaissances" 

[pumain 2005 ]

Analyse de sensibilité ?

"By exploring the sensitivity of model output to changes in parameters, we learn about the relative importance of the various mechanisms represented in the model and how robust the model output is to parameter uncertainty."

- sensibilité locale

- sensibilité globale

"Sensitivity analysis (SA) is used to explore the influence of varying inputs on the outputs of a simulation model (Ginot et al. 2006).

[Thiele2014]

Comment ?

Sensibilité locale - OAT

 évaluation à l'oeil
 "Face Validity

stratégie / DOE
"One-Variable-At-A-Time"  

- peu fiable
- couteux en temps
- limité
- difficilement reproductible

 "Tinkering" de Papert & Retsnick

- ludique
- interactif
- exploratoire
- incrémental
- essai erreur

Comment ?

Une première étape pour systématiser OAT ?

=> Sensibilité Globale

un modèle simple, 

un plan d'expérience complet :

P1 x P2 x P3

P_1
P_2
P_3
O_1

500ko

3 graphiques

 sorties systématiques

Comment ?

{discreteStep}^{(\sum\limits_{i=1}^n P_i)} * replication * duree
\{ replication \in \mathbb R \mid 30 \}
\{ duree \in \mathbb R \mid 1 minute \}
discreteStep = 11
11^3 * 30 * 1 \text{min} = 39930 min = 27 jours
11^3 * 30 * 500\text{ko} = 19965000 Ko = 19 Go
P = 3
11^3 * 30 * 3 \text{graphiques} = 119790 graphiques

Durée & Volumétrie impossible à gérer

1 er problème - Explosion combinatoire

Comment ?

2 ème problème - "Curse Dimensionality"

dimensions

=

couverture à nb points égal

Comment ?

Une première solution,  des méthodes plus sioux.

http://reseau-mexico.fr/

Comment ?

Une deuxième solution, changer d'approche !

Organiser une mise en tension entre les
choix Input - Output

modèle

(mécanismes, paramètres)

données, patterns / faits stylisés

choix Input

choix Output

Comment ?

Des critères quantifiés pour "guider"
une exploration automatisé

Quelle mise en tension ?

choix Output

Example "Ants"

"random walk"

Example "Ants"

Utilisation de traces ou "phéromones

Alignement avec les traces les plus fortes

Example "Ants"

evaporation

diffusion

t

t + 1 

Example "Ants"

exemple de dynamique

Example "Ants"

1 - Télécharger Netlogo

2 - Lancer Netlogo

3 - Ouvrir le modèle Ants

File > Model Library > ants

4 - jouer

Exploration

plan complet simple

Example "Ants"

Le BehaviorSpace

Utilisation de traces ou "phéromones" 

Example "Ants"

Le BehaviorSpace : config 4810 simulations

Utilisation de traces ou "phéromones" 

Example "Ants"

Résultats et script disponible sur github

Example "Ants"

Mesurer le rôle de l'aléatoire dans les simulations ?

diffusionRate = 25.0
evaporationRate = 25.0
population = 125.0

x

[                                  ]

10

10

50

100

1000

S

 output : [ time_t1 ,time_t2,  time_t3]

S

x

10

 ( mediane time_tx(                       ) ) * 100

S

x

10

 ( mediane time_tx(                       ) ) * 100

S

x

50

S

x

 ( mediane time_tx(                       ) ) * 100

S

x

100

S

x

 ( mediane time_tx(                       ) ) * 100

S

x

1000

S

x

 = replications

Example "Ants"

Mesurer le rôle de l'aléatoire dans les simulations ?

100 * médiane de 10,50,100,1000 réplications

Exploration

guidé => optimisation

Example "Ants"

Que veut on tester/savoir ?

Quelle valeurs de (diffusion, evaporation) minimise le temps de consommation des trois tas de nourriture ?

Obj_1 =
Obj_2 =
Obj_3 =

ticks quand

<= 0

ticks quand

<= 0

ticks quand

<= 0

trois objectifs

Comment ?

Example "Ants"

Utilisation de traces ou "phéromones" 

Le Behavior Search

Disponible avec Netlogo depuis la version 6.0.1

Windows:  Run "app\behaviorsearch\behaviorsearch_headless.bat".
Mac: Run "behaviorsearch/behaviorsearch_gui.command" .
Linux: Run "./Behaviorsearch" .

Example "Ants"

Le Behavior Search

Très lent ...

Example "Ants"

Aller encore plus loin ...

"High Performance Computing"

1954 - 2017

Wait ? Really ?

1993

Accès aux ressources

( dès juin 2010 )

workflow

distribue 

rapatrie

plan

d'expérience

... de nombreux aller retours entre modèles et résultats ...

discussions hyp.

Example "Ants"

Aller plus loin encore avec OpenMOLE

Créer des "chaînes de traitements"
parallélisables, reproductibles, simples (ou complexes) sans
aucune connaissance des technologies HPC


val i = Val[Double]
val res = Val[Double]

val exploration = 
ExplorationTask(i in (0.0 to 100.0 by 1.0))

val model =
  ScalaTask("val res = i * 2") set (
    inputs += i,
    outputs += (i, res)
  )

val env = LocalEnvironment(4)

exploration -< (model on env hook ToStringHook())

Plusieurs types de plan d'expériences : Plan complet, LSH, Analyse de sensibilités, Algorithmes Evolutionnaires, etc.

Plusieurs tâches différentes !

Support de multiples technologies HPC : Cluster, grille de calcul, etc.

Langage de scripts (DSL) simple et flexible pour composer les workflow

Example "Ants"

1 - Ouvrir votre navigateur (accèder à OpenMOLE)

ip : 142.132.168.193

port : entre 8081 et 8088

https://142.132.168.193:8081

ex : utilisateur 1

2 - [ndlr : description de l'interface]

3 - [ndlr : ouverture et run d'un projet marketplace ]

4 - [ndlr : telecharger le modèle .nlogo ants ]

Example "Ants"

Netlogo Openmole
population population
diffusion-rate diffusionRate
evaporation-rate evaporationRate
seed seed
final-ticks-food1 food1
final-ticks-food2 food2
final-ticks-food3 food3

Mapping des paramètres entre OpenMOLE et Netlogo

Tâche Netlogo 6 :

DOE simple plan complet :

    - diffusionRate in [1.0 et 100.0 par 10.0)
    - evaporationRate entre [1.0 et 100.0 par 10.0]
    - seed = random number * 10

Example "Ants"

http://openmole.org

// Define the input variables
val gPopulation = Val[Double]
val gDiffusionRate = Val[Double]
val gEvaporationRate = Val[Double]
val seed = Val[Int]
val i = Val[Double]

// Define the output variables
val food1 = Val[Double]
val food2 = Val[Double]
val food3 = Val[Double]

val exploration =
  ExplorationTask(
    (gDiffusionRate in (1.0 to 100.0 by 10.0)) x
    (gEvaporationRate in (1.0 to 100.0 by 10.0)) x
    (seed in (UniformDistribution[Int]() take 5))) 
    
// Define the NetlogoTask
val cmds = Seq("random-seed ${seed}", "run-to-grid")
val ants =
  NetLogo5Task(workDirectory / "ants.nlogo", cmds) set (
    // Map the OpenMOLE variables to NetLogo variables
    netLogoInputs += (gPopulation, "gpopulation"),
    netLogoInputs += (gDiffusionRate, "gdiffusion-rate"),
    netLogoInputs += (gEvaporationRate, "gevaporation-rate"),
    netLogoOutputs += ("final-ticks-food1", food1),
    netLogoOutputs += ("final-ticks-food2", food2),
    netLogoOutputs += ("final-ticks-food3", food3),
    gPopulation:= 100.0,
    // The seed is used to control the initialisation of the random number generator of NetLogo
    inputs += seed,
    outputs += (seed, gDiffusionRate, gEvaporationRate)
  )

val saveHook = AppendToCSVFileHook(workDirectory / "ant_exploration.csv") 

val env = LocalEnvironment(4)

exploration -< (ants on env) hook saveHook

Example "Ants"

à une optimisation multi-critères ...

SPATIAL SAMPLING

Echelle micro ("batiments")

Echelle meso ("population")

Extension de l'analyse de sensibilité

au domaine spatial

SPATIAL SAMPLING dans OpenMOLE

Autres échantillonnages : BlocksGridSpatialSamplingTask, ExpMixtureThresholdSpatialSamplingTask, PercolationGridSpatialSamplingTask, ReactionDiffusionSpatialTask

(Voir documentation)

Application à Ants : effet des obstacles / types d'obstacle sur les dynamiques du modèle

Pour aller plus loin

références et entrées vers + de biblio


[Thiele2014] Thiele, Jan C., Kurth, Winfried and Grimm, Volker (2014) 'Facilitating Parameter Estimation and Sensitivity Analysis of Agent-Based Models: A Cookbook Using NetLogo and 'R'' Journal of Artificial Societies and Social Simulation 17 (3) 11 <http://jasss.soc.surrey.ac.uk/17/3/11.html>. doi: 10.18564/jasss.2503
        


[Rey2015] REY-COYREHOURCQ, Sébastien (2015, October 13) "Une plateforme intégrée pour la construction et l’évaluation de modèles de simulation en géographie"  Thèse Paris 1. https://zenodo.org/record/50212


[Banos2016] Banos, Arnaud (2016) Modéliser c'est apprendre : Itinéraire d'un géographe, Edition Matériologique

[Cottineau2016] Cottineau, Clémentine, Rey-Coyrehourcq Sébastien (2016) "Back to the future of multi modelling" , Conférence RGS , slides

[Chérel2015] Chérel G., Cottineau C., Reuillon R., 2015, « Beyond Corroboration : Strengthening Model Validation by Looking for Unexpected Patterns. », PLoS ONE 10(9), e0138212. doi:10.1371/journal.pone.0138212

[Cottineau2015] Cottineau C., Reuillon R., Chapron P., Rey-Coyrehourcq S., Pumain D., 2015, "A Modular Modelling Framework for Hypotheses Testing in the Simulation of Urbanisation.", Systems, 3, Numéro Spécial "Agent-Based Modelling of City Systems", 348-377. DOI : 10.3390/systems3040348

[Cottineau2015] Cottineau C., Chapron P., Reuillon R., 2015, “Growing models from the bottom up. An evaluation-based incremental modelling method (EBIMM) applied to the simulation of systems of cities”, Journal of Artificial Societies and Social Simulation (JASSS), Vol. 18, No. 4, 9. DOI : 10.18564/jasss.2828.

[Banos2016] Banos, A., Lang, C., & Marilleau, N. (2016). Agent-based spatial simulation with NetLogo Volume 2: Advanced Concepts. Elsevier. url

[Reuillon2015] Reuillon, R., Schmitt, C., De Aldama, R., & Mouret, J.-B. (2015). A New Method to Evaluate Simulation Models: The Calibration Profile (CP) Algorithm. Journal of Artificial Societies and Social Simulation, 18(1), 12. Retrieved from http://jasss.soc.surrey.ac.uk/18/1/12.html

[Schmitt2015] Schmitt, C., Rey, S., Reuillon, R., & Pumain, D. (2015). Half a billion simulations: Evolutionary algorithms and distributed computing for calibrating the SimpopLocal geographical model. Environment and Planning B., 42(2), 300–315. url

[Reuillon2013] Reuillon, R., Leclaire, M., & Rey-Coyrehourcq, S. (2013). OpenMOLE, a workflow engine specifically tailored for the distributed exploration of simulation models. Future Generation Computer Systems, 29(8), 1981–1990. https://doi.org/http://dx.doi.org/10.1016/j.future.2013.05.003

[Delay2015] Delay E., « Réflexions géographiques sur l’usage des systèmes multi-agents dans la compréhension des processus d’évolution des territoires viticoles de fortes pentes : Le cas de la Côte Vermeille et du Val di Cembra », Thèse de doctorat, Université de Limoges, Limoges, 2015. HAL-SHA

Crédits icones

NounProject CC Commons :
Indigo, David, Icon Fair, Corpus Delicti, Daniel Aczel, Mikicon, Iconic, Fuat Sanli, Sergey Demushkin, Chanut is Industries

Atelier MAGIS / Ants

By sebastien rey coyrehourcq

Atelier MAGIS / Ants

  • 332