Modélisation et simulation économiques Chap 3 Introduction à la plateforme NetLogo



Documents pareils
SEANCE 2 : éléments de programmation

Programmation orientée agents #1. v 1.3. M1 S2 - Université de Montpellier II"

Master IAC Philippe Caillou DÉVELOPPEMENT DE SMA. Cours 1b

La Programmation Orientée Agent Les Agents Réactifs

STAGE IREM 0- Premiers pas en Python

Le langage C. Séance n 4

Introduction à MATLAB R

CARPE. Documentation Informatique S E T R A. Version Août CARPE (Documentation Informatique) 1

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Gnuplot. Chapitre Lancer Gnuplot. 3.2 Options des graphes

LES TYPES DE DONNÉES DU LANGAGE PASCAL

TP 1. Prise en main du langage Python

Utilisation d objets : String et ArrayList

Logiciel : GLPI Version : SYNCRHONISATION DE GLPI AVEC ACTIVE DIRECTORY. Auteur : Claude SANTERO Config. : Windows 2003.

Initiation à la Programmation en Logique avec SISCtus Prolog

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

Guide d installation de MySQL

.NET - Classe de Log

Guide d utilisation commandes des pièces de rechange Rev.1.0.3

Tp 1 correction. Structures de données (IF2)

INTRODUCTION A JAVA. Fichier en langage machine Exécutable


Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Alfstore workflow framework Spécification technique

TP1 : Initiation à l algorithmique (1 séance)

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

1 Recherche en table par balayage

Génie Logiciel avec Ada. 4 février 2013

TD3: tableaux avancées, première classe et chaînes

Problèmes liés à la concurrence

OCL - Object Constraint Language

Algorithmique et Programmation, IMA

Cours de Systèmes d Exploitation

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Programmer en JAVA. par Tama

Algorithmique avec Algobox

Séance 0 : Linux + Octave : le compromis idéal

Cours d algorithmique pour la classe de 2nde

ACCUEIL / Introduction. Introduction. Présentation de StarBoard Software Éléments de l écran Guide de démarrage rapide

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

BONNE NOUVELLE, À PARTIR DE DEMAIN 15 AOÛT 2014, l inscription en ligne sera disponible à partir du site de l ARO.

Logiciel PICAXE Programming Editor

Statistiques à une variable

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

4 Exemples de problèmes MapReduce incrémentaux

HEALTH TRACKER POUR FEMMES

Sélection du contrôleur

Initiation à l algorithmique

Gestionnaire de champs PRO

COSWIN MOBILE SERVEUR DE SYNCHRONISATION GUIDE D INSTALLATION

Définition des Webservices Ordre de paiement par . Version 1.0

NOTICE INSTALLATION. ARCHANGE WebDAV Office N&B/Couleur KONICA MINOLTA BUSINESS SOLUTIONS FRANCE

TP Contraintes - Triggers

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4

NOTICE INSTALLATION. ARCHANGE Simplex Office N&B/Couleur KONICA MINOLTA BUSINESS SOLUTIONS FRANCE

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

Initiation à LabView : Les exemples d applications :

Logitech Tablet Keyboard for Windows 8, Windows RT and Android 3.0+ Setup Guide Guide d installation

Développement Logiciel

KM2 W1 EVC1 M3~ Manuel AUTOMSIM API 24V. BP Dcy 1MINI 1MAXI.

Gestion de contenu d un site web avec TYPO3 Manuel de l administrateur

EXCEL TUTORIEL 2012/2013

Les Entrepôts de Données

Cours 7 : Utilisation de modules sous python

Guide d utlisation SmartOrder

I. Introduction aux fonctions : les fonctions standards

Editer un script de configuration automatique du proxy

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

L installation a quelque peu changée depuis les derniers tutos, voici une actualisation.

Vérification de programmes et de preuves Première partie. décrire des algorithmes

TD d économétrie appliquée : Introduction à STATA

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Package Contents. System Requirements. Before You Begin

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

Sage CRM. Sage CRM 7.3 Guide du portable

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Plateforme PAYZEN. Définition de Web-services

FACTURATION. Menu. Fonctionnement. Allez dans le menu «Gestion» puis «Facturation» 1 Descriptif du dossier (onglet Facturation)

Algorithmique et programmation : les bases (VBA) Corrigé

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

21 mars Simulations et Méthodes de Monte Carlo. DADI Charles-Abner. Objectifs et intérêt de ce T.E.R. Générer l'aléatoire.

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Mise en place d un serveur trixbox sur un domaine Kwartz. Version 1.0 du 25 juin 2012 Lycée Polyvalent d Artois, Noeux les Mines Adrien Bonnel

ACTUARIAT 1, ACT 2121, AUTOMNE 2013 #12

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Plan du cours. Historique du langage Nouveautés de Java 7

ET REGISTRE DE PRESENCE

modèles génériques applicables à la synthèse de contrôleurs discrets pour l Internet des Objets

Règles et paramètres d'exploitation de Caparmor 2 au 11/12/2009. Pôle de Calcul Intensif pour la mer, 11 Decembre 2009

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

NAVIGATION SUR INTERNET EXPLORER

Recherche dans un tableau

Programmation en Java IUT GEII (MC-II1) 1

Java Licence Professionnelle CISII,

Transcription:

Modélisation et simulation économiques Chap 3 Introduction à la plateforme NetLogo Murat Yıldızoğlu http ://yildizoglu.info Université Bordeaux IV GREΘA (UMR CNRS 5113)

NetLogo? Eléments de langage Plateforme de programmation avec interface graphique adaptée formée de trois panneaux : Interface : une interface d interaction avec le modèle et de représentation des résultats et des états du «monde» ; Information : une interface d information des utilisateurs du modèle ; Procedures : une interface pour écrire les procédures du modèle (caractéristiques et comportements des agents et du systèmes, leurs interactions). Les choses importantes se passent dans «Procedures» et les choses amusantes dans «Interface»

Types d agents Un «monde» NetLogo peut être composé de différentes types d agents : les tortues (turtles) : ce sont nos agents individuels, ils ont des caractéristiques, ils se déplacent dans le monde, ils naissent et meurent ; ils peuvent être de plusieurs types (breeds, consommateurs, firmes) ; les patches : ce sont les composantes spatiales du «monde» qui est modélisé ; les agents se déplacent sur les patches et les patches peuvent stocker des variables ; le «monde» (World) : il correspond à la représentation spatiale (en 2d ou 3D) de l environnement modélisé. les liens (links) : un type particulier d agent qui relie deux agents et qui est représenté comme une ligne dessinée entre ces agents. Ce lien peut être orienté ou non.

Autres éléments Le modèle peut aussi contenir : des variables globales (accessibles par tous les agents) ; des ensembles d agents (agent sets) : des listes d agents de même type ; des procédures spécialisées (dont setup et go ) ; des commentaires qui doivent suivre un point-virgule : ; Ceci est un commentaire

Listes Eléments de langage Les listes occupent une place centrale dans les programmes NetLogo On les délimite avec des crochets et on sépare leurs éléments avec un espace (pas de virgule!) : Une liste de trois nombres : [0.5 1 2] Une liste contenant deux listes : [[0.5 1 2] [2.5 1.33 25]] Une liste hétérogène : [0.5 [2.5 1.33 25] [ Paul Jacques Aliye ]] Une liste vide : [ ] On peut aussi les construire en utilisant l instruction list : (list 0.5 1 2) On fait référence aux éléments d une liste en utilisant l instruction item : item 0 [0.5 1 2] 0.5 Autres instructions utiles : replace-item, fput, lput, sentence, map, reduce, sort, sort-by

Déclaration et utilisation des variables Les variables se déclarent Dans l interface graphique, attachées aux contrôles (champ de texte, sélecteur de liste, curseur,etc.), Au début du programme, comme variable globale, dans la liste globals : globals [ prix nbagents ] Au début du programme, comme variable appartenant à un type d agent (turtle) firmes-own [ cout profit mes-prix ]

Variables 2 Eléments de langage Comme variable locale dans une procédure ou un bloc de code : let prix-initial On change leur valeur avec l instruction set : set prix-initial 0.5 set mes-prix [1.5 10 25] set mon-nom Toto set prix ( item 0 mes-prix ) set mes-prix ( replace-item 1 mes-prix 15 ) show mes-prix [1.5 15 25]

Structure d une commande set mes prix } {{ } liste finale mes prix : [1.5 10 25] ( replace item }{{} 1 mes prix } {{ } élément à changer liste initiale mes prix : [1.5 15 25] }{{} 15 ) nouvelle valeur

Une variable qui sait compter : ticks Les modèles NetLogo se déroulent dans un temps discret qui avance pas à pas. NL contient un compteur qui mémorise le nombre de périodes déjà exécutées : ticks Pour obtenir le nombre de ce compteur, on exécute l instruction de même nom let cette-periode ticks Pour initialiser la valeur de ce compteur, on exécute l instruction reset-ticks (en général à la fin de setup) et pour augmenter sa valeur d une unité (en général à la fin des instructions correspondant au déroulement complet d une période : go), on exécute l instruction tick

Déclaration de procédures Les procédures sont des fonctions spécialisées qui regroupent certaines instructuctions qu on est amenées à exécuter plusieurs fois NetLogo en possède deux types : Les commandes (commands) qu on utilise pour modifier les variables globales et/ou les variables qu on leur passe en argument ; Les rapporteurs (reporter) qui sont des méthodes qui retourne une valeur précise à la fin de leurs opérations, valeur à stocker dans une variable ou à utiliser dans un calcul (exemple : replace-item qui retourne la liste modifiée).

Commandes Eléments de langage Leur déclaration commence avec l instruction to et se termine avec l instruction end to nom-procedure [ argument1 argument2 ] instruction1 instruction2. end Plus tard dans le code, on lui fait appel comme instruction :. ma-prodecure.

Rapporteurs Eléments de langage Leur déclaration commence avec l instruction to-report et se termine avec l instruction end to-report ma-procedure [ argument1 argument2 ] let resultat instruction1 instruction2. set resultat... return resultat end Plus tard dans le code on lui fait appel pour affecter une valeur à une variable set ma-variable ma-procedure ma-variable contient alors la dernière valeur calculée pour resultat

Répéter des instructions Répéter des instructions n fois : repeat n [ instructions ] Répéter des instructions tant qu une condition est remplie (donne la valeur vraie true) et s arrêter quand la valeur devient false : while [ condition ] [ instructions ] while [any? other turtles-here] [ fd 1 ] La tortue avance (fd = forward) tant qu il trouve d autres tortues sur les patch où elle se déplace.

Tenir compte de conditions Exécution de certaines instructions seulement si certaines conditions sont remplies On utilise les commandes if ou ifelse : if condition [instructions] : instructions exécutées uniquement si condition = true ifelse condition [instructions1] [instructions2] : si condition = true instructions1 exécutées; sinon instructions2 exécutées.

Faire des calculs avec les listes d agents Le nom pluriel d un type d agents (firmes) permet de faire référence à une liste de tous les agents de ce type On peut alors leur demander d éxécuter des instructions chacun à son tour, dans un ordre aléatoire ask firmes [ fixe-production ; appel procédure déterminant la production calcule-profit ; appel procédure qui calcule le profit ]

Faire des calculs avec les agents 2 On peut aussi calculer des statistiques sur une propriétés des agents d un type On utilise : opérateur [variable-type] of nom-pluriel-agents Le profit moyen des firmes : mean [ profit ] of firmes Le profit maximal parmi les firmes : max [ profit ] of firmes Aussi minimum (min), médiane (median), écart-type (standard-deviation), variance (variance) d une variable des agents.

Faire des calculs avec les agents 3 Aussi tout autre calcul utilisant une variable commune des agents du même type : show [ who ] of firmes => [0 3 2 1] (ordre aléatoire) show sort [who] of firmes => [0 1 2 3] show sort [who * who] of firmes => [0 1 4 9] show sort [recettes - couts ] of firmes => [profit0 profit1 profit2 profit3]

Structure type d un modèle NetLogo Un modèle NetLogo typique est composé de plusieurs blocs : Déclarations des variables globales, des types d agents et des variables spécifiques de chaque type d agent ; Procédure setup : Initialisation des variables globales (lecture automatique au début de chaque exécution à partir de l interface graphique ou fixation de leur valeur) ; Création des populations de chaque type d agents et initialisation de leur variables individuelles ; Initialisation du compteur de périodes et des sorties diverses (graphiques et autres) de la simulation ; Une procédure (go) qui regroupe toutes les opérations qui ont lieu pendant une «période» d exécution du modèle et qui incrémente le compteur de périodes (ticks) ;

Des procédures complémentaires diverses qui gèrent les comportements des différentes types d agents ; qui collectent des statistiques sur ces comportements et sur les résultats agrégés du modèle ; qui actualisent les sorties, notamment graphiques. Une interface graphique qui contient des éléments qui permettent à l utilisateur de fixer les valeurs des paramètres du modèle et d observer les sorties, période par période. On utilise des commentaires pour documenter le modèle : ; ceci est un commentaire

Structure type 1 : Déclarations Déclaration des variables globales : globals [ nbmoutons herbe ] ;Les variables fixées dans l interface ;sont automatiquement des variables globales Création des types d agents breed [moutons mouton] Création des variables individuelles des agents moutons-own [energie] chaque mouton a un niveau d énergie patches-own [compteur]

Structure type 2 : Initialisation Préparer le modèle pour l exécution (procédure setup) to setup ; execute par le bouton «setup» (initialisations, instructions) end ou plus spécifiquement to setup ; execution par le bouton «setup» ; Effacer tous les agents, le monde ; et les variables clear-all ; we start with tick = 0 (NL 5) reset-ticks ; (procédure) initialiser les patches setup-patches ; (procédure) initialiser tous les moutons setup-moutons end

Structure type 3 to setup-patches ask patches [ set pcolor green ] end to setup-moutons end create-moutons nombre-moutons ; nombre-moutons l interface ask moutons [ setxy random-xcor random-ycor ]

Structure type 4 : Exécution des périodes to go ; execution par le bouton «go» end ; tant qu il est enfonce if ticks >= 500 [ stop ] ;arret apres 500 periodes bouger-moutons ; (procedure) manger-herbe ; (procedure) verifier-morts ; (procedure) reproduire ; (procedure) set nbmoutons count moutons repousser-herbe ; (procedure) set herbe count patches with [pcolor = green] tick ; incremente la periode

Structure type 5 : Finalisation du modèle Pour compléter le modèle, il faut : écrire les procédures qui manquent bouger-moutons ; manger-herbe ; verifier-morts ; reproduire ; repousser-herbe ;

Structure type 6 : Interface graphique Créer l interface graphique avec au moins un champ pour fixer nombre-moutons ; un champ pour fixer chacun des autres paramètres un bouton «setup» pour lancer l initialisation un bouton «go» pour démarrer le déroulement de l histoire (ticks) On peut la compléter par des graphiques pour observer l évolution de Quantité de moutons (nbmoutons) ; Quantité d herbe (herbe).

Autres procédures : bouger-moutons to bouger-moutons end ask moutons [ right random 360 forward 1 set energie energie - 1 ]

Autres procédures : manger-herbe to manger-herbe end ask moutons [ ] if pcolor = green [ set pcolor black set energie (energie + energie-from-grass) ;energie-from-grass Interface ]

Autres procédures : reproduire to reproduire ask moutons [ if energie > energie-naissance [ set energie energie - energie-naissance ] hatch 1 [ set energie energie-naissance ] ] end ;energie-naissance Interface

Autres procédures : verifier-morts to verifier-morts ask moutons [ if energie <= 0 [ die ] ] end

Autres procédures : repousser-herbe to repousser-herbe ask patches [ end ] if random 100 < 3 [ set pcolor green ]

Vision d ensemble du modèle Nous avons donc un modèle herbe moutons avec : de l herbe qui repousse aléatoirement ; des moutons qui la mange ; des moutons qui se déplacent aléatoirement ; des moutons qui meurent et qui se reproduisent.

Initialisation et actualisation des graphiques Les graphiques pour observer l évolution des variables se créent d abord dans l interface utilisateur ; NetLogo 5 actualise automatiquement les données représentées sur les graphiques : Les commandes d initialisation de plot (plot setup commands) et de crayons (pen setup commands) sont éxécutées quand les commandes reset-ticks ou setup-plots sont exécutés dans les procédures setup ou go ; Les commandes d actualisation de plot (plot update commands) et de crayons (pen update commands) sont éxécutées quand les commandes reset-ticks (dans setup), tick ou update-plots (dans go) sont exécutées.

Aide Eléments de langage Bien profiter de : L aide de NetLogo (Menu Help, User manual) et surtout, du dictionnaire du NetLogo (Menu Help, Dictionary) le reste du code dans NetLogo