a hands on ioda tutorial
play

A Hands-on IODA Tutorial Interaction-Oriented Simulation within - PowerPoint PPT Presentation

A Hands-on IODA Tutorial Interaction-Oriented Simulation within NetLogo Sbastien Picault sebastien.picault@univ-lille1.fr SMAC team LIFL Lille 1 University http://www.lifl.fr/SMAC/ Social Simulation Conference September 1st, 2014


  1. A Hands-on IODA Tutorial Interaction-Oriented Simulation within NetLogo Sébastien Picault sebastien.picault@univ-lille1.fr SMAC team – LIFL – Lille 1 University http://www.lifl.fr/SMAC/ Social Simulation Conference September 1st, 2014

  2. Outline of the tutorial 1 The Interaction-Oriented Approach (IODA) 2 The IODA extension for NetLogo 3 Let’s code !

  3. IODA The IODA extension for NetLogo IODA — I — The Interaction-Oriented approach (IODA) S. Picault — SMAC, LIFL — Univ. of Lille A Hands-on IODA Tutorial 3/23

  4. IODA The IODA extension for NetLogo IODA Limitation of classical MABS approaches ◮ excessive focus on individuals ◮ strong dependencies agents/behaviors ◮ make model revisions difficult ◮ alternative: separation declarative/procedural : ◮ simplifies expertise acquisition ◮ enhanced model intelligibility ◮ increased reutilisability ◮ homogeneity of the concepts S. Picault — SMAC, LIFL — Univ. of Lille A Hands-on IODA Tutorial 4/23

  5. IODA The IODA extension for NetLogo IODA The notion of interaction behavior = abstract description + modalities abstract description : conditions/actions rules = interactions rely upon generic perception/action capabilities ( primitives ) + execution modalities : variability in the primitives, depending on agent families S. Picault — SMAC, LIFL — Univ. of Lille A Hands-on IODA Tutorial 5/23

  6. IODA The IODA extension for NetLogo IODA Structure of an interaction Interaction(Src,Tgt) Eat(Src,Tgt) Trigger Src.hungry() Tgt.fresh() Conditions Actions Src.assimilate(Tgt) Tgt.destroy() Trigger: motivations/goals for doing the actions Conditions: prerequisite that allow the realization of the actions Actions: list of the actions to perform S. Picault — SMAC, LIFL — Univ. of Lille A Hands-on IODA Tutorial 6/23

  7. IODA The IODA extension for NetLogo IODA The interaction-oriented approach 3 key ideas ◮ each relevant entity is an agent = entity with perception and action capabilities ◮ each behavior is an interaction = conditions/actions rule involving several agents ◮ a generic engine determines what interactions may occur agents characterized by their capability to perform (source) or undergo (target) an interaction [ Mathieu & al. 2001 ] S. Picault — SMAC, LIFL — Univ. of Lille A Hands-on IODA Tutorial 7/23

  8. IODA The IODA extension for NetLogo IODA The IODA approach separation between declarative/procedural parts: ◮ automatization of model implementation and of simulations analysis ◮ elicitation of simulation biases [ Kubera & al. 2008 ] IODA Interaction-Oriented Design of Agent simulations methodology and modelling frame JEDI Java Environment for the Design of agent Interactions highly tunable platform [ Kubera & al. 2011 ] JEDI-Builder Code generator IODA model → JEDI simulation LEIA LEIA lets you Explore Interactions for your Agents Explorer for the simulation space [ Gaillard & al. 2010 ] S. Picault — SMAC, LIFL — Univ. of Lille A Hands-on IODA Tutorial 8/23

  9. IODA The IODA extension for NetLogo IODA Interaction and update matrices ❳❳❳❳❳❳❳❳❳❳❳ Targets ∅ Trees Grass Sheep Goats Wolves Sources ❳ Trees Grow (0) Grass Spread (1) Die (3) Eat (2; 0) Mate (1; 0) Sheep Wander (0) Die (4) Climb (3; 1) Eat (2; 0) Mate (1; 0) Goats Wander (0) Die (4) Eat (3; 1) Eat (2; 1) Mate (1; 0) Wolves Wander (0) UPDATE Trees ◮ synthetic view of all behaviors Grass Age (2) ◮ actions resulting from decisions Sheep BecomeSick (1) vs. spontaneous state changes Age (2) Goats BecomeSick (1) Wolves Age (1) S. Picault — SMAC, LIFL — Univ. of Lille A Hands-on IODA Tutorial 9/23

  10. IODA The IODA extension for NetLogo IODA An homogeneous handling of entities ◮ each relevant entity is an agent ◮ the actitivy of agents is characterized dynamically: active agent: acts upon the others = no-empty line in the interaction matrix passive agent: undergoes actions from other entities = non-empty column in the interaction matrix labile agent: spontaneous state change = non-empty line in the update matrix ◮ optimization of the simulation engine [ Kubera & al. 2010 ] S. Picault — SMAC, LIFL — Univ. of Lille A Hands-on IODA Tutorial 10/23

  11. IODA The IODA extension for NetLogo IODA “Reactive” IODA engine during a time step: Update: each labile agent performs the realizable 1 interactions from the update matrix Interaction selection: each active agent 2 perceives neighbors (among the passive agents) 1 filters targets of interactions that it can perform 2 i.e. agents which can undergo those interactions evaluates the triggers and conditions of those interactions 3 selects one realizable interaction with the highest priority 4 level performs the corresponding actions 5 S. Picault — SMAC, LIFL — Univ. of Lille A Hands-on IODA Tutorial 11/23

  12. IODA The IODA extension for NetLogo IODA — II — The IODA extension for NetLogo S. Picault — SMAC, LIFL — Univ. of Lille A Hands-on IODA Tutorial 12/23

  13. IODA The IODA extension for NetLogo IODA Overview The principles and algorithms of IODA can be implemented on any platform within NetLogo: ◮ Java extension − → required data structures + file reading functions + consistency checking / primitives to write ◮ NetLogo include file − → reactive simulation engine S. Picault — SMAC, LIFL — Univ. of Lille A Hands-on IODA Tutorial 13/23

  14. IODA The IODA extension for NetLogo IODA Features ◮ agent families = turtles , breeds or patches ◮ target selection policies ◮ consistency checking ◮ easy tuning of perception ◮ physical/social environnements ( links ) http://www.lifl.fr/SMAC/projects/ioda/ioda_for_netlogo/ S. Picault — SMAC, LIFL — Univ. of Lille A Hands-on IODA Tutorial 14/23

  15. IODA The IODA extension for NetLogo IODA Principles a IODA NetLogo simulation = ◮ classical NetLogo program using the extension + definition of the concrete primitives for each agents family ◮ definition of the interactions in a text file ◮ definition of the interaction and update matrices in a text file ◮ delegation of the scheduling to a dedicated procedure ioda:go S. Picault — SMAC, LIFL — Univ. of Lille A Hands-on IODA Tutorial 15/23

  16. IODA The IODA extension for NetLogo IODA Example (1) – behaviors ◮ inspired by the classical Termites model in the NetLogo library ◮ everything is an agent: termites + wood chips PPPPPPPP Target ∅ chips termites Source P chips (MoveRandomly, 10, 1) termites (MoveRandomly, 0) (PutDown, 20, 0.3) (PickUp, 30, 1) S. Picault — SMAC, LIFL — Univ. of Lille A Hands-on IODA Tutorial 16/23

  17. IODA The IODA extension for NetLogo IODA Example (2) – NetLogo template __includes ["../../IODA_2_2.nls"] extensions [ioda] breed [ termites termite ] breed [ chips chip ] termites-own [ carrying? ] to setup clear-all create-termites nb-termites [ init-termite ] create-chips nb-chips [ init-chip ] ioda:load-interactions "interactions.txt" ioda:load-matrices "matrix.txt" " \t" ioda:setup reset-ticks end to go ioda:go tick end S. Picault — SMAC, LIFL — Univ. of Lille A Hands-on IODA Tutorial 17/23

  18. IODA The IODA extension for NetLogo IODA Example (3) - matrices ◮ defined in a CSV file (arbitrary separators) ◮ here: a file "matrix.txt" ;source interaction priority target distance termites MoveRandomly 0 termites MoveRandomly 10 chips 1 termites PutDown 20 chips 0.3 termites PickUp 30 chips 1 S. Picault — SMAC, LIFL — Univ. of Lille A Hands-on IODA Tutorial 18/23

  19. IODA The IODA extension for NetLogo IODA Example (4) – interactions defined in a text file (here: "interactions.txt" ) interaction MoveRandomly actions wiggle end interaction PickUp condition not-carrying? actions take-load get-away end interaction PutDown condition carrying? actions drop-load random-turn get-away end S. Picault — SMAC, LIFL — Univ. of Lille A Hands-on IODA Tutorial 19/23

  20. IODA The IODA extension for NetLogo IODA Example (5) – primitives to-report termites::not-carrying? report not carrying? ◮ each abstract end to-report termites::carrying? primitive must be report carrying? end concretely defined for to termites::filter-neighbors ioda:filter-neighbors-in-radius 1 the agents family that end to termites::take-load are likely to use it set carrying? true ask ioda:my-target [ioda:die] end ◮ filter-neighbors to termites::wiggle left random 50 right random 50 fd 1 primitive for handling end to termites::drop-load the perception of set carrying? false hatch-chips 1 [init-chip] neighbors end to termites::get-away fd 20 ◮ predefined primitives end to termites::random-turn e.g. ioda:die right random 360 end S. Picault — SMAC, LIFL — Univ. of Lille A Hands-on IODA Tutorial 20/23

  21. IODA The IODA extension for NetLogo IODA Example (6) – outcome S. Picault — SMAC, LIFL — Univ. of Lille A Hands-on IODA Tutorial 21/23

  22. IODA The IODA extension for NetLogo IODA — III — Let’s code! S. Picault — SMAC, LIFL — Univ. of Lille A Hands-on IODA Tutorial 22/23

  23. IODA The IODA extension for NetLogo IODA Using the extension http://www.lifl.fr/SMAC/projects/ioda/SSC2014 S. Picault — SMAC, LIFL — Univ. of Lille A Hands-on IODA Tutorial 23/23

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend