Problem: The turtle variable is of type int (-1, for example), but the patch variable is a one-element list ( [-1] ) in NetLogo 6.2

Viewed 45

I have one doubt:

Context: I have a code in which, briefly, turtles have an integer variable (energy-collected) and from that, patches update their own variable (energy-of-my-agent), as described in the code snippet below.

Problem: The turtle variable is of type int (-1, for example), but the patch variable is a one-element list ( [-1] ).

Question: Should this happen? Otherwise, how can I make the patch variable just an integer value?

ask turtles
[
  set energy-collected (energy - euse)
]

ask patches
[
    set energy-of-my-agent [energy-collected] of turtles-here
]

Thanks in advance

1 Answers

The main thing you have to consider is what of reports.

In your case turtles-here is an agentset, not a specific agent.

This is because, although you might have a single turtle on a patch, you may also have multiple turtles on a patch. Therefore turtles-here reports an agentset, even if that agentset may be made of a single turtle.

It follows that a collection of values from an agentset, obtained with of (and [energy-collected] of turtles-here is exactly that), will be a list of values - even if that list contains only one element.

Therefore I would say:

  • Is your model made in such a way that each patch cannot have more than one turtle at a time? Then you could do:
ask patches [
 if any? turtles-here [
  set energy-of-my-agent [energy-collected] of one-of turtles-here
  ]
]

In the code above, one-of turtles-here reports a specific agent - not an agentset anymore. So its variable's value, obtained with of, will be stored as a single value (provided that the agent's variable is not a list itself, but that's not your case).

  • Can it happen that your patches have more than one turtle at a time? Then, if you're interested in the single patch holding "its" turtles' values, dealing with lists is probably necessary.

Update

I made a connection between this question and your other one suggesting that you want to use patches as elements of matrices.

Maybe this is useful to your case: if your model allows for the possibility of having more than one turtle on the same patch, you might be interested in doing something like:

ask patches [
 set energy-of-my-agent sum [energy-collected] of turtles-here
] 

As you can see, sum takes a list as input and reports a number. Each patch will take the sum of all the values of energy-collected by turtles standing there, or you can change the calculation using whatever you want (e.g. mean, max etc).

Actually, you can use this approach regardless: this way, even when you have a single turtle on a patch, sum (or any other function taking a lost and returning a value) will give you a single value where before you had a list of one value.

Related