Simulation avec Netlogo

Sébastien Rey Coyrehourcq

Rouen

2023-2024

Programme

...indicatif...

Modéliser (1) & prise en main Netlogo

Modéliser (2)

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

Schelling

Schelling - Sakoda simulation

[1916 - 2005]

[1921 - 2016]

Journal of Mathematical Sociology (Vol 1) 1971

Journal of Mathematical Sociology (Vol 2) 1971

- The checkerboard model of social interaction -

- Dynamic models of segregation - 

Phd Dissertation 1949

Schelling

Sénat - 1966

Crédit : Henry Griffin / Associated Press

Schelling model

vacancies

blue people

pink people

random position of people on a 2D grid

Schelling model

False

Move to

random

True

Stay here

Moore

Neumann

\lambda

% of similar around me

Schelling model

What could we expect if we accept some heterogeneity ?

\lambda

=

finally 70 % similar

Schelling model

Play with differents         threshold

\lambda

Play with more or less vacancies

experiment on netlogo

Try to identify different states of the Schelling model and place them on this diagram

Try to identify different states of the Schelling model and place them on this diagram

[Gauvin 2009, Daude 2007]

Joshua Epstein

Social Simulation Conference 2015

Sugarscape model

KISS

KIDS

Stylized

Particular

[Sanders & Banos 2011, 2013, Banos 2013]

Schelling

Sugarscape

Sugarscape model

max sugar by patch

world - n * n patch -

Sugarscape model

Sugarscape model

limited vision, growing sugar

Sugarscape model

Sugarscape model

Sugarscape model

exploring resilience concept ?

Resilience is the ability of a system to maintain certain functions, processes, or populations after experiencing a disturbance.

Sugarscape model

farm workers

farm owners

tax

https://hal.archives-ouvertes.fr/hal-01094421

Collectif MAPS :

more rules !

Sugarscape model

reproduction

Sugarscape model

play with tax and note observation

Tax 0.05 0.10 0.20 0.30
Gini
Total population 
% capitalist
% farmers
Mean ressources farm owners 
Mean ressources farm workers

value at ticks = 2000

Tax 0.05 0.10 0.20
Gini 0,40 0.28 - 0.38 0.35 - 0.38
Total population  430 250 240
% capitalist 5 12 20
% farmers 95 88 80
Mean ressources capitalist  25 28 26
Mean ressources farmers 22 22 23

not so big differences between roles ... need some new visualisation ...

smaller population, higher share of farm workers, more inequalities

... possible collapse of system or
new equilibrium ...

add some new visualisations

right clic in blank zone in interface

change pen name

change plot name

change xy

advanced pen

mode "Bar"

name pen name interval
Wealth-Rentiers WR 5
Wealth-Recoltants WRe 5

parameters for 2 plots

Sugarscape model

Go to "code" tab, search "update-lorenz-and-gini-plots" function, add this source code ...



;; .... At the end of this function ....  
;; .... add this code to plot Distribution of Wealth

    set-current-plot "Wealth-Rentiers"
      set-current-plot-pen "WR"
      if any? turtles with [class = ClasseRentier]
        [histogram [sugar] of turtles with [class = ClasseRentier] ]
        
        set-current-plot "Wealth-Recoltants"
      set-current-plot-pen "WRe"
      if any? turtles with [class = ClasseRécoltant]
        [histogram [sugar] of turtles with [class = ClasseRécoltant] ]

Sugarscape model

... then return to "interface" tab, and relaunch simulation

Tax 0.05 0.10 0.20 0.30 0.40
Little catastroph resilient
medium catastroph
Big catastroph
Cataclysme

Sugarscape model

quelques
definitions ...

To an observer B, an object A* is a model of an object A to the extent that B can use A* to answer questions that interest him about A

Beaucoup de définitions ... statique ou dynamique

En construisant un modèle (model building), on crée une représentation idéalisée de la réalité afin de faire apparaître certaines de ses propriétés

[Minsky 1965]

[Hagget 1965]

"le terme de modélisation désigne à la fois l’activité pour produire un modèle et le résultat de cette activité" .

[Langlois 2005]

Le concept de modélisation est donc « [...] plus large que celui de modèle, car il recouvre l’activité humaine qui aboutit au modèle achevé, alors que le modèle est un objet (concret ou abstrait), volontairement dépouillé de l’activité qui l’a créé »

Modéliser ? Simuler ?

un objet médiateur qui a pour fonction de faciliter une opération cognitive dans le cadre d’un questionnement orienté, opération cognitive qui peut être de cognition pratique (manipulation, savoir-faire, apprentissage de gestes, de techniques, de conduites, etc.) ou théorique (récolte de données, formulation d’hypothèses, hypothèses de mécanismes théoriques, etc.)

"simplifier" ou "faciliter" ??

[Varenne 2013]

ce n’est pas tant « le modèle » que ce qu’il y a « dans le modèle » qui nous intéresse

[Sander 2000,  Besse 2000]

Puisque l’usage du modèle est relatif (à un observateur et à un questionnement), on ne peut dire que le modèle doit être un objet simple en lui-même ou dans l’absolu. Il convient donc de regarder sous quel aspect exactement il doit apparaître simplificateur, sous quel aspect il devient un outil facilitateur, un outil de facilitation. [...] on comprend déjà qu’un modèle n’est pas ce qui est recherché en tant que tel, mais ce qui facilite la recherche d’information au sujet d’un système réel ou fictif [...] Il est le moyen plus que la fin.

[Varenne 2008]

Modéliser ? Simuler ?

un objet médiateur qui a pour fonction de faciliter une opération cognitive dans le cadre d’un questionnement orienté, opération cognitive qui peut être de cognition pratique (manipulation, savoir-faire, apprentissage de gestes, de techniques, de conduites, etc.) ou théorique (récolte de données, formulation d’hypothèses, hypothèses de mécanismes théoriques, etc.)

fusion et/ou émergences des objectifs

[Varenne 2013]

~ 20 fonctions épistémiques qui peuvent se recouper

exemples => performance ; parcimonie ; compression d'information ; la compréhension ; la pédagogie ; co-construire ; etc ...

Modéliser ? Simuler ?

Large bibliographie en fr.

Déjà + 20 ans de littérature ...

Src : Heppenstal, 20 years of geocomputation 2016

ABM en géographie ?

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

MicMac

[Banos et al. 2015]

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

SimpopLocal

ATP

5AD

M03

ESCAPE

risques & santé

HUME

SimFeodal

MicMac

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

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

archéologie

5AD

M03

MicMac

SimpopLocal

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

src :

SimpopLocal

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

SimFeodal

5AD

M03

archéologie

MicMac

SimFeodal

Objectif : Il s’agit de simuler les transformations du système de peuplement Nord-Ouest européen entre 800 et 1100, période de transition d’un système majoritairement dispersé à un système hiérarchisé et polarisé.

interdisciplinarité

src :

SimFeodal

Un pas de temps de simulation (i.e. une itération du modèle) représente une durée de 20 ans, ce qui correspond approximativement à la durée de vie d’une génération à l’époque médiévale.

KISS

KIDS

Stylisé

Particulier

SimpopLocal

ATP

5AD

M03

archéologie

SimFeodal

MicMac

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é

Rin ATP

Modèle incrémental : complexification progressive des axes (espace, carrieres, monuments) pour mesurer le poids de chaque hypothèse sur les sorties du modèles.

Exploration (en cours) :
- distance moyenne parcourue par les archéomatériaux => quel paramètres pour quels patterns de distribution ?
- Calibrer distance moyenne obs. vs. simulé => quel paramètres produisent les meilleurs résultats ?

Rin ATP

interdisciplinarité

distribution "besoins"

distribution qté de batiment prioritaires

distribution qualité craie par carrières

distribution besoins pour les monuments

distribution de la capacité des carrière

population de monuments et de carrières

KISS

KIDS

Stylisé

Particulier

SimpopLocal

ATP

5AD

M03

HUME

archéologie

SimFeodal

MicMac

HUME

Objectif : Explorer les processus qui conduisent un espace initialement vierge de toute présence humaine à se peupler sous l’effet d’un flux migratoire, et cela dans un contexte de perturbations environnementales. L’objectif est d’explorer les effets de différents paramètres et de différentes situations initiales sur la configuration spatiale et le rythme du peuplement. Le processus central est celui de la migration

(HUman Migration and Environment)

Un flux de groupes migrants pénètre l’espace (représenté par une grille) par le nord-ouest. Ces groupes exploitent les ressources des cellules sur lesquelles ils sont localisés. Face à une pénurie de ressources, le groupe se déplace mais il a aussi une certaine probabilité d’innover qui lui permet de survivre tout en prélevant moins de ressources.

HUME

(HUman Migration and Environment)

src :

KISS

KIDS

Stylisé

Particulier

SimpopLocal

ATP

5AD

M03

HUME

SimFeodal

Kites

archéologie

MicMac

Desert Kites (wip)

Objectif : Modèle exploratoire pour mieux comprendre et évaluer les modes de chasses tenant compte de la morphologie des Desert kites.

Axes de complexification :
- Gazelle => algo. spécifique
- Chasseurs
- Espace

src :

KISS

KIDS

Stylisé

Particulier

SimpopLocal

ATP

5AD

M03

HUME

SimFeodal

Kites

Gerhaies

géormophologie

MicMac

GerHaies (revival)

Objectif : Explorer l'impact de différente stratégies de gestion sur l'évolution du linéaire de haies dans le territoire Normand

agents: Haies & Exploitants
2 indicateurs d'évolution
4 modes de gestion
Données
réelles raster

 

Représentation multi-faces de chaque haie

Introducing Netlogo platform

Logo langage 1966

Seymour Papert 

Logo turtle 1969-70 inspired by
Walter Grey's turtle in 1948

to square
repeat 4 [forward 50 right 90]
end

1928 - 2016

Introducing Netlogo platform

StarLogo

& Netlogo

NetLogo

Workspace

NetLogo

Model library

NetLogo

Dictionary

NetLogo

World of wonders

xcor

ycor

color

size

shape

anything you want

heading

pxcor

pycor

pcolor

anything you want

Turtles

Patches

Time

NetLogo

World of wonders

xcor

ycor

color

size

shape

anything you want

heading

pxcor

pycor

pcolor

anything you want

Observer

Turtles

create-turtles

clear-all

reset-ticks

Patches

Time

reset-ticks

(ticks)

tick

tick

tick

tick

NetLogo

birth of turtles

xcor

ycor

color

size

shape

anything you want

turtles-own [
;declare variable you want for turtles 
]

create-turtles <number of turtles> [
; init turtles variables
]
create-turtles 2 [
set shape "turtle"
set color orange
set size random 3
set xcor random-xcor
set ycor random-ycor
]

1

2

heading

xcor 1

ycor 2

heading 280

size 1

xcor 4

ycor 1

heading 20

size 2

NetLogo

Action !

ask            [
   set color blue

]

ask           with
[ color = orange ]
   set color blue

]

NetLogo

Action !

ask            [
   set color orange

]

2

3

4

1

5

4

4

1

5

3

2

ask (turtle-set                    ) [
   set heading 180

]

4

1

5

3

2

4

2

3

4

1

5

2

NetLogo

move your body

0

-5

0

5

(patch 3 -1)

-5

5

5

-5

NetLogo

move your body

0

0

5

ask            [
set heading towards (patch 3 -1) ]

ask            [ face (patch 3 -1) ]

-5

-5

5

5

-5

NetLogo

move your body

0

0

5

ask            [
set heading towards           ]

-5

-5

5

5

-5

NetLogo

move your body

0

-5

0

5

ask            [
set heading towardsxy 0.5 -1.5 ]

- 0.5

0.5

-5

5

5

-5

Need distance ?

show [distance patch 3 -1 ]

of

ask            [
show distance patch 3 -1  ]

ask            [
show distance            ]

NetLogo

move your body

NetLogo

move your body

forward 1

centroid to centroid

NetLogo

move your body

NetLogo

move your body 2

forward 1

centroid to centroid

NetLogo

move your body

NetLogo

move your body

forward 1

centroid to not centroid

NetLogo

move your body

patch-left-and-ahead 45 1

patch-right-and-ahead 45 1

NetLogo

move your body

patch-right-and-ahead 45 1

NetLogo

move your body

patch-right-and-ahead 45 1

move-to

NetLogo

move your body

knowing future patch ? => see model library

NetLogo

Leaving command center

Command Center is great to DEBUG your program, at any time, by asking turtles, patches, trying commands ...

BUT

this is not the way we write our programs

[credits: stan openshaw]

NetLogo

Leaving command center

to setup
  clear-all
  create-turtles 2
  reset-ticks
end
to go
  ask turtles [
    fd 1         ;; forward 1 step
    rt random 10 ;; turn right
    lt random 10 ;; turn left
  ]
  tick
end

setup

go

interface tab

code tab

NetLogo

Leaving command center

to setup
  clear-all
  create-turtles nb-turtles
  reset-ticks
end
to go
  ask turtles [
    fd 1         ;; forward 1 step
    rt random 10 ;; turn right
    lt random 10 ;; turn left
  ]
  tick
end

setup

go

interface tab

code tab

nb-turtles

4

NetLogo

Leaving command center

to whatyouwant
  ask turtles [
   set color first shuffle [orange blue]
  ]
end

setup

go

interface tab

code tab

whatyouwant

...

NetLogo

Exercice

to move-by-color
 ; move turtle of color = my-color to one specified patch  
end

setup

go

interface tab

code tab

...

move-by-color

Algorithms in one word : LOOP

NetLogo

How do you ask our turtle to do something ?

ask            [


    ... do something ...
 

]

1

3

8

2

Agenset

...

1

3

8

2

...

List

foreach [self] of            [   t  ->

       ask  t [

     ... do something ...

      ]
]

list contain anything you want

agentset contain only agents

RANDOMIZED

SAME ORDER

Algorithms in one word : IF

NetLogo

How do you manage differents behaviors for our turtle ?

energy > 15

?

?

sinon

sinon

energy > 15

...
SI [EXPRESSION] == TRUE ALORS

      INSTRUCTION
FIN SI

...

t_0
t_1
t_0
t_1
t_{2}
t_{2}
t_{3}
t_{3}

ex : (2 + 2 <= 4)

jump

Algorithms in one word : IF

NetLogo

a = 3
SI [EXPRESSION] == TRUE ALORS

      INSTRUCTIONS
FIN SI

...

t_0
t_1
t_0
t_1
t_{2}
t_2

ex : (2*a <= 4)

jump

jump

Algorithms in one word : IF

NetLogo

a = "foo"
SI [EXPRESSION] == TRUE ALORS

      INSTRUCTIONS
SINON SI [EXPRESSION] == TRUE

      INSTRUCTIONS

SINON

      INSTRUCTIONS

FIN SI

t_0
t_{1_{a}}
t_0
t_{1_{b}}

ex : (a != "bar")

jump

t_{2}
t_{1_{c}}

jump

ex : a == "Foo"

t_{1_{a}}
t_{1_{b}}
t_{1_{c}}
t_{2}

Algorithms in one word : IF

NetLogo

Algorithms in one word : IF

NetLogo

IF <condition > [
... code ...

IFELSE < condition > [

... code ...

]

][

]

  ask turtles with [color = white] [
   ifelse energy > 15 [
      set color green
    ]
    [
        set color orange
    ]
  ]
  ask turtles [
   ifelse color = white and energy > 15[
      set color green
    ]
    [
      if color = white [
        set color orange
      ]
    ]
  ]
 ask turtles [
   if color = white and energy > 15 [
      set color green
    ] 
  ]

... code ...

Algorithms in one word : IF

NetLogo

( IFELSE
< condition > [

]

]

 ask turtles [
   (ifelse 
      energy > 15 and color = white [
      set color green
    ]
      color = white 
    [
        set color orange
    ])
  ]

<condition 2> [

<condition n > [

...

... code ...

... code ...

][

... code ...

])

... code ...

NetLogo

it's alive !

turtle to breeds

xcor

ycor

color

size

shape

heading

inherit

speed

energy

target

breed [diplodocus a-diplodocus]

diplodocus-own [
 sleeping-time ; sleep
 childrens ; nb of childrens
]

builtin variables

sleeping-time

childrens

aggressivity

breed [velociraptors a-velociraptor]

velociraptors-own [
aggressivity ; level of aggressivity
target ; target to kill
group ; my group of hunters
]

group

NetLogo

Exercice

breed [houses house]
breed [diplodocus a-diplodocus]

diplodocus-own [ target ]

to setup
 ; a) create nb houses 
 ; b) create nb diplodocus 
 ; with a random house as target
end

to go
 ; a) if distance to target = 0
 ;    -> change target of diplodocus
 ; b) if distance to target < 1
 ;    -> move to target
 ;    -> else forward 1 
 ; tick
end

t0

t1

t0

t1

NetLogo

list vs agentset / patchset

1

15

3

8

2

4

6

ask

with

set

let

...

one-of

min-one-of

max-one-of

any?

member?

of

...

RANDOMIZED

at each call

count

NetLogo

list vs agentset / patchset

Agentset are returned by primitive

or created manually

turtle-set ( list

1

3

ask turtles with [color = orange]

ask turtle 4 [ show other turtles-here ]

ask patch -9 -5 [ show turtles-on neighbors ]

ask turtles with [color = green] [ show turtles-on neighbors ]

)

(turtle-set

1

3

)

NetLogo

list vs agentset / patchset

List are returned / used by primitive

or created manually with many possibilities

list (random 10) (random 10)

 list

1

3

[ 3 4 5 9]

foreach

sort / sort-by / sort-on

<- anonymous function

map

filter

similar to agentset but

MAINTAIN ORDER

NetLogo

Understanding Context

ask

[

]

set

let

color

mycolor

mycolor

blue

set

size

random 3

NetLogo

Understanding Context

ask

[

]

set

let

color

mycolor

mycolor

blue

set

size

random 3

ask

patch-here [

set

pcolor

mycolor2

let

mycolor2

mycolor - 2

]

patch-here

NetLogo

my dear neighbors

5

5

ask            [

      ask             in-radius   x    [

              ...
      ]

]

1

2

0

0

NetLogo

my dear neighbors

5

5

ask            [

      ask             in-radius   1    [

              set color green
      ]

]

0

0

NetLogo

my dear neighbors

5

5

ask            [

      ask neighbors4  [

              set pcolor green
      ]

]

0

0

NetLogo

my dear neighbors

5

5

ask            [

      ask neighbors with [any? turtles-here]  [

              set pcolor red
      ]

]

0

0

NetLogo

my dear neighbors

5

5

ask            [

      ask             in-radius   1    [

              set pcolor green
      ]

]

0

0

.

.

.

.

.

.

.

.

.

NetLogo

my dear neighbors

5

5

ask            [

      ask             in-radius   1    [

              set pcolor green
      ]

]

0

0

.

.

.

.

.

.

.

.

.

NetLogo

of ? or ask ?

[ energy] of          

Get a value for a turtle, or values for turtles

or use it with ask to do complex things in few lines  ...

ask [         in-radius 3] of
[ set color red ]

[ energy] of          

[ energy] of

sum, max, min

NetLogo

of ? or ask ?

Different taste of of

max-n-of 2            [energy]

max-n-of 2           with [color = blue] [energy]

1

5

1

8

1

8

3

5

[ 15, 8, 12, 6 ]  

max-n-of 2           with [color = blue] [energy]

max-one-of            [energy]

1

NetLogo

of ? or ask ?

Also works with patches or agenset

1

8

5

[ 15, 8, 12, 6 ]  

1

1

3

3

8

ask      max-one-of [ sum [energy] of turtles-here ] [ show sum [energy] of turtles-here]

ask       with-max [count turtles-here with [energy > 10]] [ set pcolor red]

NetLogo

Communicate T - P

... in-radius <number> ...

( T to T )

( T to P )

... patch-here ...

( P to T )

... other turtles-here ...

... neighbors ... ou ... neighbors4 ...

... turtles-on ...

... turtles-on ...

... patch-right/left-and-ahead ...

... turtles-at ...

... in-cone <distance> <angle> ...

NetLogo

Organize your code

With procedure and function

NetLogo

Organize your code

With procedure and function

NetLogo

Organize your code

With "finite state machine" pattern

DinoLogo

DinoLogo

step 1 : diplodocus

DinoLogo

step 2 : velociraptor

DinoLogo

step 3 : humans

DinoLogo

step 4 : Dying

DinoLogo

step 4 : state

state = next-state

apply current state

compute next-state

state

next-state

state

to-report compute-new-diplodocus-state

(ifelse 
  state = "exploring" [
  
  ; ... switch to eating  
  ; ... or continue to explore

  ]
  state = "eating" [
  
  ; ... switch to exploring
  ; ... or continue to eat
  
  ])

  report ???

end

to apply-current-diplodocus-state

(ifelse 
  state = "exploring" [
  
  ; ... move action

  ]
  state = "eating" [
  
  ; ... switch to exploring
  ; ... eat action
  
  ])

end
to go-diplo
ask diplodocus [
  set state next-state
  apply-current-diplodocus-state
  set next-state compute-new-diplodocus-state
]
end

next-state

"eating"

"exploring"

DinoLogo

step 5 : obstacle

- use nw:turtles-in-radius 3

- compute all nodes & links accessible

- use  nw:turtles-on-path-to

get path to next-target

get accessible nodes only

... max-one-of ...

select target (grass-qty) in these accessible patches

go to target !

sprout + create-link + neighbors

Simulation avec Netlogo - Formation M2

By sebastien rey coyrehourcq

Simulation avec Netlogo - Formation M2

  • 120