Skip to content

BDIAgents_step1

RoiArthurB edited this page Sep 11, 2023 · 8 revisions

1. Skeleton model

This first step consists in defining the skeleton model with the gold mines and the gold market.

Formulation

  • Definition of the gold mine species
  • Definition of the market species
  • Creation of the gold mine and market agents
  • Definition of a display with the gold mines and the market

Model Definition

species

In this first model, we have to define two species of agents: the gold_mine agents and the market ones. These agents will not have a particular behavior, they will just be displayed. For the gold mine species, we define a new attribute: quantity of type int, with for initial value a random integer between 1 and 20. We also define an aspect named default that displays the gold mine as a triangle with a gray color if the gold mine is empty, yellow otherwise. The size of the triangle depends on the quantity of gold nuggets in the mine. Concerning the market species, we define a new attribute: golds of type int. We define as well an aspect named default that displays the market as a blue square.

species gold_mine {
    int quantity <- rnd(1,20);
    aspect default {
	draw triangle(200 + quantity * 50) color: (quantity > 0) ? #yellow : #gray border: #black;	
    }
}

species market {
    int golds;
    aspect default {
        draw square(1000) color: #black ;
    }
}

global variables

We define two global variables for the model: one called nb_mines that will be used to define the number of mines and that will be set to 10. One call the_market that will represent the market agent (that will be unique).

In addition, we define the duration of a simulation step to 10 minutes, and we define the shape of the environment by a square with a side size of 20 kilometers.

global {
    int nb_mines <- 10; 
    market the_market;
    float step <- 10#mn;
    geometry shape <- square(20 #km);
}

global init

At the initialization of the model, we create a market agent and nb_mines gold mine agents. For the market agent, we set the value of the the_market agent with the created agent.

global {
    ...
    init {
        create market {
	    the_market <- self;
	}
	create gold_mine number: nb_mines;
    }
}

display

We define a display to visualize the market and gold mine agents. We use for that the classic species keyword. In order to optimize the display, we use an OpenGL display (facet type: opengl).

In the experiment block:

output {
    display map type: opengl {
	species market ;
	species gold_mine ;
   }
}

Complete Model

https://github.com/gama-platform/gama/blob/GAMA_1.9.2/msi.gaml.architecture.simplebdi/models/BDI%20Architecture/models/Tutorial/BDI%20tutorial%201.gaml
  1. What's new (Changelog)
  1. Installation and Launching
    1. Installation
    2. Launching GAMA
    3. Updating GAMA
    4. Installing Plugins
  2. Workspace, Projects and Models
    1. Navigating in the Workspace
    2. Changing Workspace
    3. Importing Models
  3. Editing Models
    1. GAML Editor (Generalities)
    2. GAML Editor Tools
    3. Validation of Models
  4. Running Experiments
    1. Launching Experiments
    2. Experiments User interface
    3. Controls of experiments
    4. Parameters view
    5. Inspectors and monitors
    6. Displays
    7. Batch Specific UI
    8. Errors View
  5. Running Headless
    1. Headless Batch
    2. Headless Server
    3. Headless Legacy
  6. Preferences
  7. Troubleshooting
  1. Introduction
    1. Start with GAML
    2. Organization of a Model
    3. Basic programming concepts in GAML
  2. Manipulate basic Species
  3. Global Species
    1. Regular Species
    2. Defining Actions and Behaviors
    3. Interaction between Agents
    4. Attaching Skills
    5. Inheritance
  4. Defining Advanced Species
    1. Grid Species
    2. Graph Species
    3. Mirror Species
    4. Multi-Level Architecture
  5. Defining GUI Experiment
    1. Defining Parameters
    2. Defining Displays Generalities
    3. Defining 3D Displays
    4. Defining Charts
    5. Defining Monitors and Inspectors
    6. Defining Export files
    7. Defining User Interaction
  6. Exploring Models
    1. Run Several Simulations
    2. Batch Experiments
    3. Exploration Methods
  7. Optimizing Model Section
    1. Runtime Concepts
    2. Optimizing Models
  8. Multi-Paradigm Modeling
    1. Control Architecture
    2. Defining Differential Equations
  1. Manipulate OSM Data
  2. Diffusion
  3. Using Database
  4. Using FIPA ACL
  5. Using BDI with BEN
  6. Using Driving Skill
  7. Manipulate dates
  8. Manipulate lights
  9. Using comodel
  10. Save and restore Simulations
  11. Using network
  12. Headless mode
  13. Using Headless
  14. Writing Unit Tests
  15. Ensure model's reproducibility
  16. Going further with extensions
    1. Calling R
    2. Using Graphical Editor
    3. Using Git from GAMA
  1. Built-in Species
  2. Built-in Skills
  3. Built-in Architecture
  4. Statements
  5. Data Type
  6. File Type
  7. Expressions
    1. Literals
    2. Units and Constants
    3. Pseudo Variables
    4. Variables And Attributes
    5. Operators [A-A]
    6. Operators [B-C]
    7. Operators [D-H]
    8. Operators [I-M]
    9. Operators [N-R]
    10. Operators [S-Z]
  8. Exhaustive list of GAMA Keywords
  1. Installing the GIT version
  2. Developing Extensions
    1. Developing Plugins
    2. Developing Skills
    3. Developing Statements
    4. Developing Operators
    5. Developing Types
    6. Developing Species
    7. Developing Control Architectures
    8. Index of annotations
  3. Introduction to GAMA Java API
    1. Architecture of GAMA
    2. IScope
  4. Using GAMA flags
  5. Creating a release of GAMA
  6. Documentation generation

  1. Predator Prey
  2. Road Traffic
  3. 3D Tutorial
  4. Incremental Model
  5. Luneray's flu
  6. BDI Agents

  1. Team
  2. Projects using GAMA
  3. Scientific References
  4. Training Sessions

Resources

  1. Videos
  2. Conferences
  3. Code Examples
  4. Pedagogical materials
Clone this wiki locally