11  Defining and initialising agents

In Block B, we will finally build a version of PondTrade through steps that will introduce you to more advanced algorithms that bring us closer to our conceptual model, such as path cost calculation, feedback loops, and evolution through vector variables.

So that we can cover all the steps at a good pace, we will not be delving into the same details as in Block A. I recommend you follow the steps in this block using the copy-and-paste functionality to update your script. If your version at the end of each step does not work as expected, you may want to compare it to the corresponding script (.nlogo) included in the repository (use tools like Text Compare!). If there are any doubts about NetLogo primitives, for example, remember to consult the NetLogo Dictionary from the Help menu.

11.1 Refresing the specificacions of the conceptual model

Our first aim is to reach a consolidated version corresponding to the first-tier conceptual model. In the original PondTrade repository, this will cover the development steps 6 to 9.

Pond Trade conceptual model at start (first tier)
Pond Trade conceptual model at start (first tier)

One of the necessary first steps in implementing and ABM model is to define the types of agents we plan to have, based on our initial conceptual model. We must emphasise the plan part here. There is always the possibility that we will revise the conceptual model up to the point that we will require more or fewer specifications about the agents.

11.2 Agent declaration

According to our conceptual model so far, we need two types of agents:

  • settlements: fixed to a coastal patch and with an “economic size” (sizeLevel). Create traders according to their size.
  • traders: mobile agents but with a fixed base at a settlement (base).
Caution

Notice that we intentionally avoid naming the size of settlements as size, since it is a NetLogo primitive used to scale the pixel size turtles in the view screen.

11.3 Creating settlements

We then write a procedure to handle the creation of all settlements, which under the PondTrade specifications, should always be placed in an empty land patch adjacent to at least one water patch (i.e., coastal settlements).

We are introducing the parameter numberOfSettlements, which we add to the interface tab as a slider (e.g., spanning from 0 to 100 by increments of 1). We randomise sizeLevel to get a sense of how we will visualise these agents.

11.4 Creating traders

We implement the procedure for creating traders, which is a call to all settlements to generate several traders proportional to ita sizelevel. We give them a nice sailboat shape and place them randomly inside the pond.

11.5 Adapting setup (initialisation)

Add these procedures to setup, after create-map:

Press the Set up button and observe the outcome.

Given the appearance of the view screen so far, we might foresee it becoming too populated by agent icons later. As a precaution, let us enable a simple visualisation option, to switch on and off the settlement icons:

Pond Trade step 6
Pond Trade step 6

11.6 Check agent variable inheritance

Unless specified otherwise, all new turtles created with create-<BREED> or sprout-<BREED> are assigned a random colour. In this case, settlements were created by specific patches with sprout-settlements, and these created traders with hatch-traders. Unlike create and sprout, the hatch command assumes that all variables in common between the creator (turtle) and the created (turtle) are to be inherited.

To check this after initialising your agents, right-click on top of a trader and select “trader <WHO NUMBER> > inspect trader <WHO NUMBER>”.

Pond Trade step 6 - “View” right-click context menu

You now get a focus pop-up context menu where the values of each agent variable are shown. Do the same to check the information about this trader base. This time, however, write the inspect settlement <WHO NUMBER> directly into the console. You can now verify that the trader and settlement were assigned the exact same colour.

Pond Trade step 6 - agent detail
Pond Trade step 6 - agent detail