Modélisation des
réseaux avec
NetLogo
Alvaro Gil

M.A. Économie
Étudiant M.Sc. Génie Industriel
alvaro.gil@polymtl.ca

Jean-Marc Frayret, Ph.D.
Professeur agrégé
École Polytechnique de Montréal
jean-marc.frayret@polymtl.ca

Le 13 mars 2012
Introduction
 Fréquemment, on se trouve des modèles dans lesquels
l’utilisation des réseaux est indispensable
 NetLogo a la possibilité de créer et manipuler des réseaux.
 NetLogo permet aussi d’utiliser certains attributs des systèmes
d’information géographique pour augmenter la puissance de
modélisation.
 Il existe aussi d’autres logiciels dédiés aux réseaux. Il faut bien
les considérer si le problème à modéliser est très complexe et
en conséquence, on devrait plutôt utiliser un logiciel spécialisé.
 Cette présentation est sur certains commandes et modèles de
base pour la simulation à base d’agents avec réseaux, qui
peuvent vous aider dans le cadre de vos projets finaux.

2
Notions de base
 La création des réseaux en NetLogo est fait à partir des liens
ou «links» entre tortues ou «turtles».
 Ici, les liens sont les arêtes ou arcs et les tortues sont les
sommets ou nœuds.
 La fonction de base pour la création d’un lien est CREATELINK. Voici un exemple (copie et collé le code dans la ligne
de commande en NetLogo sans les intra lignes)
ca
crt 5
ask turtles [setxy random-xcor random-ycor
create-links-with other turtles]

 Ceci nous montre la création d’un réseau complet de 5
nœuds.

3
Notions de base
 Si on utilise la fonction CREATE-LINKS-WITH, on créera
plusieurs connexions en même temps (il est nécessaire de
placer un arrangement des tortues après le code).
 Pour créer une seule connexion, on utilise CREATE-LINKWITH + «nom de tortue»
 L’appellation WITH dénote des arêtes indirectes.
 Si on veut créer des arcs directs, on utilise TO ou FROM.
 Dans les diapositives suivantes se trouvent quelques
exemples.

4
Notions de base
Exemple 1: Création d’un réseau simple avec 5 nœuds (copie ce

code dans l’onglet de CODE et appelle la procédure «simple_net» dans
le centre des commandes de l’interface)
To simple_net
ca
crt 5
ask turtles [setxy random-xcor random-ycor]
;; turtle 1 creates links with all other turtles
ask turtle 0 [ create-links-with other turtles ]
;; this does nothing since the link already exists
ask turtle 0 [ create-link-with turtle 1 ]
ask turtle 2 [ create-link-with turtle 1 ]
show count links ;; shows 5
end

5
Notions de base
Exemple 2: Création d’un arbre simple avec 6 nœuds (copie ce
code dans l’onglet de CODE et appelle la procédure «make-a-tree»
dans le centre des commandes de l’interface)
to make-a-tree
set-default-shape turtles "circle"
crt 6
ask turtle 0 [
create-link-with turtle 1
create-link-with turtle 2
create-link-with turtle 3]
ask turtle 1 [
create-link-with turtle 4
create-link-with turtle 5]
; do a radial tree layout, centered on turtle 0
layout-radial turtles links (turtle 0)
End

6
Notions de base
 Remarques sur la topologie des sommets:
 Dans les réseaux simples, généralement on a besoin de positions
aléatoires. Il est possible d’ordonner le positionnement aléatoire
dès le début :
ask turtles [setxy random-xcor random-ycor]

ou on peut créer le réseau et ensuite, demander aux agents de
se positionner autour dans une figure particulière ou autour d’un
autre agent, en utilisant les commandes*:
layout-radial …
layout-spring …
layout-tutte …
* voir le dictionnaire de NetLogo pour plus de renseignements sur la
syntaxe de ces commandes

7
Notions de base
Exemple 3: Création d’un triangle
to make-a-triangle
ca
set-default-shape turtles "circle"
crt 3
ask turtle 0
[create-links-with other turtles]
ask turtle 1
[create-link-with turtle 2]
repeat 30 [ layout-spring turtles links 0.2 5 1 ]
end

8
Notions de base
 Attributs dans les arcs (1) : Tel comme les tortues, les
liens ont certains attributs par default.
 End1 (Origine)
 End2 (Destination)
 Color
 Label
 Label-color
 Hidden?
 Breed
 Thickness
 Shape
 Tie-mode

Le nom d’un lien est donné par
ces deux attributs
Si un lien connecte les tortues 1 et 4,
le lien s’appellera LINK 1 4

9
Notions de base
 Attributs dans les arcs (2) : En plus, de la même
façon qu’on alloue des attributs additionnels aux
tortues, il est possible aussi d’allouer attributs aux
liens, avec la même notation.
links-own [cost]
links-own [capacity]

10
Notions de base
Exemple 4: Création d’un graphe directe
directed-link-breed [red-links red-link]
undirected-link-breed [blue-links blue-link]
to direct-graph
ca
crt 5
;; create links in both directions between turtle 0
;; and all other turtles
ask turtle 0 [ create-red-links-to other turtles ]
ask turtle 0 [ create-red-links-from other turtles ]
;; now create undirected links between turtle 0 and other turtles
ask turtle 0 [ create-blue-links-with other turtles ]
layout-radial turtles links (turtle 0)
end

11
Notions de base

12

 Attributs dans les arcs (3) : Si on veut travailler avec la
distance euclidienne, on peut utiliser :
link-length

 Par contre, si on veut travailler avec un distance différent
(ex. distance routière), on devrait ajouter ce attribut à
chaque arête.
 Pour connaître le dégrée des sommets (quantité de
nœuds entrants et sortants), on peut utiliser:
my-links

 Modèle d’exemple: Dans le modèle ci-joint à cette
présentation (Mod1.nlogo) se montrent toutes les
procédures ici expliquées.
Réseaux complexes
 Lorsque la topologie du réseau n’est pas triviale ou
quand la quantité des nœuds est relativement grande,
on parle des réseaux complexes (ex: l’internet, les
réseaux routières, les réseaux sociaux, etc.)

 De façon générale, il existe 4 différents types des
réseaux:
1.
2.
3.
4.

Réseaux aléatoires
Réseaux complétés
Réseaux du petit monde («Small-World»)
Réseaux d’escale livre («Free-Scale»)

 Pour savoir plus, vous pouvez consulter la présentation
ci-jointe sur les réseaux complexes avec son respectif
modèle d’exemple en NetLogo aussi annexe.

13
Algorithmes de recouvrement
minimal
 Pour la création d’un arbre des coûts minimale
(qui connecte tous les sommets sans cycles
avec le plus bas coût), on peut utiliser les
algorithmes de Kruskal et Prim.
 Ces algorithmes sont très utilisés dans la
modélisation des réseaux routiers, électriques,
etc., où les nœuds représentent les maisons
(villages, utilisateurs, etc.), et les arcs
représentent les lignes de connexion.
 Les arbres de coût minimaux sont aussi le départ
d’autres applications comme l’algorithme de
Christofides pour trouver des solutions
approximatives du problème de voyageur de
commerce (TSP).

14
Algorithmes de
recouvrement minimal
Voici le pseudo-code de Kruskal
(Cormen et coll. (2001))

À droit se montre un exemple
d’application de cet algorithme
dans un graphe de petite taille.

15
Algorithmes de plus court chemin

16

 D’autres algorithmes très utiles
dans les réseaux sont les
algorithmes de plus court
chemin.
 Il y a plusieurs méthodes avec
différents niveaux de
complexité (Dijkstra, Moore,
Bellman, Ford, Floyd, etc.).
 Lorsque le graphe n’est pas
dirigé (arêtes
bidirectionnelles), la méthode
de Dijkstra est efficace.
 Modèle d’exemple: Dans le
modèle ci-joint (Mod3.nlogo)
se montre une application de
ces deux algorithmes.

Exemple d’application de l’algorithme de Dijkstra
dans un graphe de petite taille.
Création des terraines
 Il y a trois méthodes pour créer des terrains en NetLogo.
1. Importation simple d’une image
2. Importation d’un vecteur des données
3. Utilisation de l’extension de systèmes d’information
géographique GIS (dernier sujet de cette présentation)

 La méthode plus simple est l’importation d’images.
 Il y a trois méthodes:
1. import-drawing filename ;seulement l’image
2. import-pcolors filename ;l’image est transformée dans
les cellules avec une valeur numérique (0 à 140)

3. import-pcolors-rgb filename ;l’image est transformée
dans les cellules avec un vecteur numérique (RGB)

17
Création des terraines
 La deuxième méthode
corrige cette
problématique, néanmoins il
est plus difficile, car cela
implique la création d’un
vecteur d’information avec
des données de toutes les
cellules qu’on veut inclure
dans le terrain.
 Modèle d’exemple : Dans le
modèle ci-joint
(Mod4.nlogo) se montre une
application de ces deux
méthodes.

Dans cet exemple on a 107 * 110
cellules dans la grille (soit 11.770)

18
Intégration avec GIS

19

 Il est possible aussi d’utiliser certaines fonctionnalités des
outils d’information géographique.
 Avec l’extension [GIS], on peut importer vecteurs des
données géographiques (points, lignes et polygones),
ainsi que trames ou grilles («rasters») chez NetLogo.
 Cette fonctionnalité nous permet de créer des
environnements plus réalistes lors des modèles qui
nécessitent réseaux routiers, cartes géographiques et
localisation des villes/chantiers/etc., entre autres.
 Pour une meilleure compréhension de toutes les fonctions
associées à cette extension, vous pouvez consulter le
dictionnaire de NetLogo (section GIS
http://ccl.northwestern.edu/netlogo/docs/), ainsi que les
modèles d’exemple
Intégration avec GIS
Modèles d’exemple

20

Ci-joint à cette présentation se trouvent deux modèles d’exemple
Modèle d’exemple 5 – Simulation des
réseaux électriques et pannes Mod5Electric.nlogo
Ce modèle utilise les fonctionnalités
géographiques pour créer un réseau
électrique entre 62 villes des ÉtatsUnis et le Canada. Pour créer le
réseau avec le coût optimal, le
modèle utilise l’algorithme de Kruskal
(déjà expliqué).
Il est possible aussi de créer une
panne et de mesurer l’impact du
débranchement sur la population.
Intégration avec GIS
Modèle d’exemple 6 –
Simulation d’un réseau routier
Mod6-Road.nlogo
Ce modèle utilise les fonctionnalités
géographiques pour créer un
réseau routier entre 62 villes des
États-Unis et le Canada à partir
d’une matrice des connexions
(fichier externe). De plus, il est
possible de simuler le transport d’un
camion de distribution sur le réseau
entre deux villes quelconques. Pour
choisir la route de distribution, le
modèle utilise l’algorithme de
Dijkstra (déjà expliqué).

21
Recommandations finales

22

 Essayez de suivre les tutoriels de
NetLogo.

 Il y a bons exemples dans la librairie de
NetLogo.
 Il y a plusieurs façons de modéliser un
problème, soyez récursive!.

 Si le modèle ne marche pas, ne vous
découragez pas, consultez le
dictionnaire, écrivez à la communauté
des utilisateurs ou contacte-moi.
 Finalement, ça valut la peine de
commencer votre modèle dès
maintenant.

Bonne chance dans vos
projets!

Réseaux avec NetLogo

  • 1.
    Modélisation des réseaux avec NetLogo AlvaroGil M.A. Économie Étudiant M.Sc. Génie Industriel alvaro.gil@polymtl.ca Jean-Marc Frayret, Ph.D. Professeur agrégé École Polytechnique de Montréal jean-marc.frayret@polymtl.ca Le 13 mars 2012
  • 2.
    Introduction  Fréquemment, onse trouve des modèles dans lesquels l’utilisation des réseaux est indispensable  NetLogo a la possibilité de créer et manipuler des réseaux.  NetLogo permet aussi d’utiliser certains attributs des systèmes d’information géographique pour augmenter la puissance de modélisation.  Il existe aussi d’autres logiciels dédiés aux réseaux. Il faut bien les considérer si le problème à modéliser est très complexe et en conséquence, on devrait plutôt utiliser un logiciel spécialisé.  Cette présentation est sur certains commandes et modèles de base pour la simulation à base d’agents avec réseaux, qui peuvent vous aider dans le cadre de vos projets finaux. 2
  • 3.
    Notions de base La création des réseaux en NetLogo est fait à partir des liens ou «links» entre tortues ou «turtles».  Ici, les liens sont les arêtes ou arcs et les tortues sont les sommets ou nœuds.  La fonction de base pour la création d’un lien est CREATELINK. Voici un exemple (copie et collé le code dans la ligne de commande en NetLogo sans les intra lignes) ca crt 5 ask turtles [setxy random-xcor random-ycor create-links-with other turtles]  Ceci nous montre la création d’un réseau complet de 5 nœuds. 3
  • 4.
    Notions de base Si on utilise la fonction CREATE-LINKS-WITH, on créera plusieurs connexions en même temps (il est nécessaire de placer un arrangement des tortues après le code).  Pour créer une seule connexion, on utilise CREATE-LINKWITH + «nom de tortue»  L’appellation WITH dénote des arêtes indirectes.  Si on veut créer des arcs directs, on utilise TO ou FROM.  Dans les diapositives suivantes se trouvent quelques exemples. 4
  • 5.
    Notions de base Exemple1: Création d’un réseau simple avec 5 nœuds (copie ce code dans l’onglet de CODE et appelle la procédure «simple_net» dans le centre des commandes de l’interface) To simple_net ca crt 5 ask turtles [setxy random-xcor random-ycor] ;; turtle 1 creates links with all other turtles ask turtle 0 [ create-links-with other turtles ] ;; this does nothing since the link already exists ask turtle 0 [ create-link-with turtle 1 ] ask turtle 2 [ create-link-with turtle 1 ] show count links ;; shows 5 end 5
  • 6.
    Notions de base Exemple2: Création d’un arbre simple avec 6 nœuds (copie ce code dans l’onglet de CODE et appelle la procédure «make-a-tree» dans le centre des commandes de l’interface) to make-a-tree set-default-shape turtles "circle" crt 6 ask turtle 0 [ create-link-with turtle 1 create-link-with turtle 2 create-link-with turtle 3] ask turtle 1 [ create-link-with turtle 4 create-link-with turtle 5] ; do a radial tree layout, centered on turtle 0 layout-radial turtles links (turtle 0) End 6
  • 7.
    Notions de base Remarques sur la topologie des sommets:  Dans les réseaux simples, généralement on a besoin de positions aléatoires. Il est possible d’ordonner le positionnement aléatoire dès le début : ask turtles [setxy random-xcor random-ycor] ou on peut créer le réseau et ensuite, demander aux agents de se positionner autour dans une figure particulière ou autour d’un autre agent, en utilisant les commandes*: layout-radial … layout-spring … layout-tutte … * voir le dictionnaire de NetLogo pour plus de renseignements sur la syntaxe de ces commandes 7
  • 8.
    Notions de base Exemple3: Création d’un triangle to make-a-triangle ca set-default-shape turtles "circle" crt 3 ask turtle 0 [create-links-with other turtles] ask turtle 1 [create-link-with turtle 2] repeat 30 [ layout-spring turtles links 0.2 5 1 ] end 8
  • 9.
    Notions de base Attributs dans les arcs (1) : Tel comme les tortues, les liens ont certains attributs par default.  End1 (Origine)  End2 (Destination)  Color  Label  Label-color  Hidden?  Breed  Thickness  Shape  Tie-mode Le nom d’un lien est donné par ces deux attributs Si un lien connecte les tortues 1 et 4, le lien s’appellera LINK 1 4 9
  • 10.
    Notions de base Attributs dans les arcs (2) : En plus, de la même façon qu’on alloue des attributs additionnels aux tortues, il est possible aussi d’allouer attributs aux liens, avec la même notation. links-own [cost] links-own [capacity] 10
  • 11.
    Notions de base Exemple4: Création d’un graphe directe directed-link-breed [red-links red-link] undirected-link-breed [blue-links blue-link] to direct-graph ca crt 5 ;; create links in both directions between turtle 0 ;; and all other turtles ask turtle 0 [ create-red-links-to other turtles ] ask turtle 0 [ create-red-links-from other turtles ] ;; now create undirected links between turtle 0 and other turtles ask turtle 0 [ create-blue-links-with other turtles ] layout-radial turtles links (turtle 0) end 11
  • 12.
    Notions de base 12 Attributs dans les arcs (3) : Si on veut travailler avec la distance euclidienne, on peut utiliser : link-length  Par contre, si on veut travailler avec un distance différent (ex. distance routière), on devrait ajouter ce attribut à chaque arête.  Pour connaître le dégrée des sommets (quantité de nœuds entrants et sortants), on peut utiliser: my-links  Modèle d’exemple: Dans le modèle ci-joint à cette présentation (Mod1.nlogo) se montrent toutes les procédures ici expliquées.
  • 13.
    Réseaux complexes  Lorsquela topologie du réseau n’est pas triviale ou quand la quantité des nœuds est relativement grande, on parle des réseaux complexes (ex: l’internet, les réseaux routières, les réseaux sociaux, etc.)  De façon générale, il existe 4 différents types des réseaux: 1. 2. 3. 4. Réseaux aléatoires Réseaux complétés Réseaux du petit monde («Small-World») Réseaux d’escale livre («Free-Scale»)  Pour savoir plus, vous pouvez consulter la présentation ci-jointe sur les réseaux complexes avec son respectif modèle d’exemple en NetLogo aussi annexe. 13
  • 14.
    Algorithmes de recouvrement minimal Pour la création d’un arbre des coûts minimale (qui connecte tous les sommets sans cycles avec le plus bas coût), on peut utiliser les algorithmes de Kruskal et Prim.  Ces algorithmes sont très utilisés dans la modélisation des réseaux routiers, électriques, etc., où les nœuds représentent les maisons (villages, utilisateurs, etc.), et les arcs représentent les lignes de connexion.  Les arbres de coût minimaux sont aussi le départ d’autres applications comme l’algorithme de Christofides pour trouver des solutions approximatives du problème de voyageur de commerce (TSP). 14
  • 15.
    Algorithmes de recouvrement minimal Voicile pseudo-code de Kruskal (Cormen et coll. (2001)) À droit se montre un exemple d’application de cet algorithme dans un graphe de petite taille. 15
  • 16.
    Algorithmes de pluscourt chemin 16  D’autres algorithmes très utiles dans les réseaux sont les algorithmes de plus court chemin.  Il y a plusieurs méthodes avec différents niveaux de complexité (Dijkstra, Moore, Bellman, Ford, Floyd, etc.).  Lorsque le graphe n’est pas dirigé (arêtes bidirectionnelles), la méthode de Dijkstra est efficace.  Modèle d’exemple: Dans le modèle ci-joint (Mod3.nlogo) se montre une application de ces deux algorithmes. Exemple d’application de l’algorithme de Dijkstra dans un graphe de petite taille.
  • 17.
    Création des terraines Il y a trois méthodes pour créer des terrains en NetLogo. 1. Importation simple d’une image 2. Importation d’un vecteur des données 3. Utilisation de l’extension de systèmes d’information géographique GIS (dernier sujet de cette présentation)  La méthode plus simple est l’importation d’images.  Il y a trois méthodes: 1. import-drawing filename ;seulement l’image 2. import-pcolors filename ;l’image est transformée dans les cellules avec une valeur numérique (0 à 140) 3. import-pcolors-rgb filename ;l’image est transformée dans les cellules avec un vecteur numérique (RGB) 17
  • 18.
    Création des terraines La deuxième méthode corrige cette problématique, néanmoins il est plus difficile, car cela implique la création d’un vecteur d’information avec des données de toutes les cellules qu’on veut inclure dans le terrain.  Modèle d’exemple : Dans le modèle ci-joint (Mod4.nlogo) se montre une application de ces deux méthodes. Dans cet exemple on a 107 * 110 cellules dans la grille (soit 11.770) 18
  • 19.
    Intégration avec GIS 19 Il est possible aussi d’utiliser certaines fonctionnalités des outils d’information géographique.  Avec l’extension [GIS], on peut importer vecteurs des données géographiques (points, lignes et polygones), ainsi que trames ou grilles («rasters») chez NetLogo.  Cette fonctionnalité nous permet de créer des environnements plus réalistes lors des modèles qui nécessitent réseaux routiers, cartes géographiques et localisation des villes/chantiers/etc., entre autres.  Pour une meilleure compréhension de toutes les fonctions associées à cette extension, vous pouvez consulter le dictionnaire de NetLogo (section GIS http://ccl.northwestern.edu/netlogo/docs/), ainsi que les modèles d’exemple
  • 20.
    Intégration avec GIS Modèlesd’exemple 20 Ci-joint à cette présentation se trouvent deux modèles d’exemple Modèle d’exemple 5 – Simulation des réseaux électriques et pannes Mod5Electric.nlogo Ce modèle utilise les fonctionnalités géographiques pour créer un réseau électrique entre 62 villes des ÉtatsUnis et le Canada. Pour créer le réseau avec le coût optimal, le modèle utilise l’algorithme de Kruskal (déjà expliqué). Il est possible aussi de créer une panne et de mesurer l’impact du débranchement sur la population.
  • 21.
    Intégration avec GIS Modèled’exemple 6 – Simulation d’un réseau routier Mod6-Road.nlogo Ce modèle utilise les fonctionnalités géographiques pour créer un réseau routier entre 62 villes des États-Unis et le Canada à partir d’une matrice des connexions (fichier externe). De plus, il est possible de simuler le transport d’un camion de distribution sur le réseau entre deux villes quelconques. Pour choisir la route de distribution, le modèle utilise l’algorithme de Dijkstra (déjà expliqué). 21
  • 22.
    Recommandations finales 22  Essayezde suivre les tutoriels de NetLogo.  Il y a bons exemples dans la librairie de NetLogo.  Il y a plusieurs façons de modéliser un problème, soyez récursive!.  Si le modèle ne marche pas, ne vous découragez pas, consultez le dictionnaire, écrivez à la communauté des utilisateurs ou contacte-moi.  Finalement, ça valut la peine de commencer votre modèle dès maintenant. Bonne chance dans vos projets!