22
Modélisation des réseaux avec NetLogo Alvaro Gil M.A. Économie Étudiant M.Sc. Génie Industriel [email protected] Jean-Marc Frayret, Ph.D. Professeur agrégé École Polytechnique de Montréal [email protected] Le 13 mars 2012

Réseaux avec NetLogo

Embed Size (px)

DESCRIPTION

École Polytechnique de Montréal March 2012

Citation preview

Page 1: Réseaux avec NetLogo

Modélisation des

réseaux avec

NetLogo

Alvaro GilM.A. ÉconomieÉtudiant M.Sc. Génie [email protected]

Jean-Marc Frayret, Ph.D.Professeur agrégéÉcole Polytechnique de Montré[email protected]

Le 13 mars 2012

Page 2: Réseaux avec NetLogo

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

Page 3: Réseaux avec NetLogo

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 CREATE-

LINK. 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

Page 4: Réseaux avec NetLogo

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-LINK-

WITH + «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

Page 5: Réseaux avec NetLogo

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)

5

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

Page 6: Réseaux avec NetLogo

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)

6

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

Page 7: Réseaux avec NetLogo

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

Page 8: Réseaux avec NetLogo

Notions de base

Exemple 3: Création d’un triangle

8

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

Page 9: Réseaux avec NetLogo

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

9

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

Page 10: Réseaux avec NetLogo

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

Page 11: Réseaux avec NetLogo

Notions de base

Exemple 4: Création d’un graphe directe

11

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

Page 12: Réseaux avec NetLogo

Notions de base

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.

12

Page 13: Réseaux avec NetLogo

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. Réseaux aléatoires

2. Réseaux complétés

3. Réseaux du petit monde («Small-World»)

4. 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

Page 14: Réseaux avec NetLogo

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

Page 15: Réseaux avec NetLogo

Algorithmes de

recouvrement minimalVoici 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

Page 16: Réseaux avec NetLogo

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.

16Algorithmes de plus court chemin

Exemple d’application de l’algorithme de Dijkstradans un graphe de petite taille.

Page 17: Réseaux avec NetLogo

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

Page 18: Réseaux avec NetLogo

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.

18

Dans cet exemple on a 107 * 110

cellules dans la grille (soit 11.770)

Page 19: Réseaux avec NetLogo

Intégration avec GIS

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

19

Page 20: Réseaux avec NetLogo

Intégration avec GIS

Modèle d’exemple 5 – Simulation des réseaux électriques et pannes Mod5-Electric.nlogo

Ce modèle utilise les fonctionnalités géographiques pour créer un réseau électrique entre 62 villes des États-Unis 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.

20

Modèles d’exempleCi-joint à cette présentation se trouvent deux modèles d’exemple

Page 21: Réseaux avec NetLogo

Intégration avec GIS

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

Modèle d’exemple 6 –

Simulation d’un réseau routier Mod6-Road.nlogo

Page 22: Réseaux avec NetLogo

Recommandations finales22

Bonne chance dans vos

projets!

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.