Exploration de modèles
multi-agents

Etienne Delay

Sébastien Rey Coyrehourcq

MAPS 10 - Oléron

06/2017

Résultats et script disponible sur github

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

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"

Le BehaviorSpace

Utilisation de traces ou "phéromones" 

Example "Ants"

Le BehaviorSpace : config 4810 simulations

Utilisation de traces ou "phéromones" 

Example "Ants"

Utilisation de traces ou "phéromones" 

Résultats et script disponible sur github

Example "Ants"

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

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

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 plus loin : R et NetLogo avec RNetlogo

Résultats et script disponible sur github

Example "Ants"

Aller plus loin : R et NetLogo avec RNetlogo

Example "Ants"

Aller encore plus loin ...

"High Performance Computing"

1954 - 2017

Wait ? Really ?

1993

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"

Aller plus loin encore avec OpenMOLE

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

D'un plan d'expérience simple ...

Example "Ants"

à une optimisation multi-critères ...

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

exploration modele MAPS

By sebastien rey coyrehourcq

exploration modele MAPS

  • 946