kdix
kdix

Reputation: 3

Can I direct a turtle to a specific patch based on the result of comparing their variable values?

I have N groups of turtles which own the variable group-id (1 to N, N is defined at setup, each group has 25 turtles).

At the beginning each group of turtles spawns on a random patch with variable patch-group-id that matches the turtle group-id, like so:

let i 0
while [ i < n_groups ] [
    let x random 100
    let y random 100
    ask patch x y [ set patch-group-id i set pcolor gray ]
    create-turtles 25 [
      set group-id i
      setxy x y
    ]
    set i i + 1
  ]

The turtles move around but at a later step in the process I would like them to move back to their ‘home’ patch. Other turtles may also change their group-id and therefore their home patch and I would like them to move there too.

Is there any way to do a comparison along the lines of…

Ask turtles [
Let target one-of patches with [patch-group-id = group-id]
]

And then ask the turtle to move-to or jump to the target?

NetLogo doesn’t like this (‘Min-one-of expected this input to be a number block, but got a true/false block instead’) and I think there are probably other issues too.

Upvotes: 0

Views: 209

Answers (1)

JenB
JenB

Reputation: 17678

patch-group-id is a variable owned by patches and group-id is owned by turtles. So you need to tell NetLogo which group-id the patches are trying to match to. Try this:

ask turtles
[ let target one-of patches with [patch-group-id = [group-id] of myself]
]

Another way to do this is to drop the idea of group-id and simply have each turtle remember its home patch. Conceptually, this implements the idea that a group is entirely defined by its home patch. So your setup would look something like:

turtles-own
[ my-home
]

to setup
  clear-all
  ask n-of n-groups patches
  [ sprout turtles 25
    [ set my-home patch-here
    ]
    set pcolor gray
  ]
end

Then you never need to construct the target, you simply get then to go to their variable my-home.

If you went down this path, you would also need to change the code that uses group-id. For example, you said that sometimes the turtles change their group-id, instead of set group-id [group-id] of ... you would have set my-home [my-home] of ...

Upvotes: 0

Related Questions