Is there a way to set up a patch-set based on a patch-variable in net logo?

I have a fairly simple question: is there a way to define a patch-set based on a patch-variable? In my model, I have a large set of patches that form the food object, and food is a patch-variable. I have the turtles change color when they find themselves on the food, but I have previously manually defined the patch-set on which they change color. However, I want to adjust the location of the food, and I don't want to go through the work of checking and redefining all the food patches. Thanks!!

to setup-food
  if (distancexy (0.8 * min-pxcor) (0.8 * min-pycor)) < 5
  [set food 5
    if food > 0
    [set pcolor cyan]]
end

TO look-for-food;; procedure that controls turtle color change on food
let potential-leaders foragers-on (patch-set patch -38 -16 patch -37 -16 patch -36 -16 so on..)
[do things]
end
````````````

1 answer

  • answered 2021-04-08 13:46 JenB

    you can create such a patch set explicitly like:

    let foods patches with [food > 0]
    ask foods [ set pcolor cyan ]
    

    This is a local variable that is thrown away (hence let) when the procedure is over, but you can also create a global variable if you are going to need this patchset in lots of places in your code, just remember to update it when the food runs out on a patch.

    And you also do this implicitly whenever you use with

    ask patches with [food > 0] [set pcolor cyan]