turtles-own
allows us to define custom turtle characteristics (variables) for all the turtles in a model (in addition to the default turtle characteristics such as color
, size
, and heading
). Although the name of the characteristic will be the same for all the turtles, each turtle will have a different value for these custom characteristics. Once we create such custom characteristics, we can use the set
primitive to change its value. For example, if we wanted to create a model of electric vehicles in which each car had a different level of remaining battery, we would write the following code:
turtles-own [remaining-battery passengers]
to setup
clear-all
create-turtles 100 [
set shape "car"
set remaining-battery random 100
set passengers one-of [1 2 3]
]
reset-ticks
end
to go
ask turtles [
if remaining-battery > 0 [
forward 1
set remaining-battery remaining-battery - 1
]
]
tick
end
Things to keep in mind when using turtles-own
:
You should always use turtles-own
in the beginning of your code, on top of the code tab.
We can define multiple characteristics within a turtles-own
primitive by separating each characteristic with a space.
You can create breed specific characteristics by following the <breed>-owns
format. For example, if we had a model with banks and customers, we could write banks-own [balance customer-list] customers-own [income]
. If you have multiple breeds in your model, characteristics defined with turtles-own
will apply to all turtles regardless of their breed.
In the model example below, we have three cars on three parallel roads. Each car has a different amount of gas in its tank, shown with a label next to each car. When the go button is clicked, each car starts moving forward until they run out of gas.
Once you mastered the turtles-own
primitive, don't stop there. Check out the resources below to improve your NetLogo skills.
turtles-own
primitive:globals
Defines variables that can be accessed throughout the whole model and has the same value for all the agents.
patches-own
Defines custom characteristics (variables) for patches. Each custom characteristic can have a different value for each patch.