Search code examples
netlogoagent-based-modeling

getting a particular colored turtle to do something on a particular colored patch in Netlogo


I am putting together a Netlogo model where students and criminals are interacting on a college campus. If criminals are close to students, a chase ensues so that when a criminal is distance < 1 the student dies. In addition to dying when criminal are to close I also want students(leader) to die during the chase when they are on a green patch. Green patches in this sense equate 'safe' areas. I have procedures set up for criminals chasing(follower) and students running away(leader), but I am at a complete block with getting the students being chased to die when coming across a green patch. One thought I had was making students being chased blue with the follower procedure:

ask students[
      set no-threat criminals in-radius 25
      ifelse any? no-threat[set color blue][set color black]

      ]

Then having blue students die when they encounter a green patch. I think I am missing something obvious to get this to work. Any nudge in the right direction would be much appreciated!

FYI, I am also relatively new to asking questions here so all apologize for any forum faux pas

here is the meat of the program I have been working on for reference '''

to move-to-student
  ask criminals[
    set candidate students in-radius 25

    if any? candidate[
      set leader min-one-of candidate [distance myself]
      if leader != nobody [ set color red]

      ;set follower myself
      face leader
      fd .3
      if [pcolor] of patch-ahead 5 = 2.2 [
    set heading heading - 100]
      ]
      ]
end
to run-from-criminal
  ask students[
  ;while[distance follower > 1][
    set threat criminals in-radius 25
    if any? threat[
      set follower min-one-of threat [distance myself]
       if distance follower < 1 [ set number-dead number-dead + 1 die]; set candidate leader set threat follower ] ;students 'die' if criminal gets to close


       if threat != nobody [set color blue] 
       face follower
       rt 180 lt random 20 rt random 20 fd .2
       if [pcolor] of patch-ahead 5 = 2.2 [
        set heading heading - 100]

    ]]



end

to safe-die
  ask students[
      if follower = blue and if [pcolor] of patch-here = green [die]
  ]

end
to revert-leader

ask students[
  set no-threat criminals in-radius 25
  ifelse any? no-threat[set color blue][set color black]

  ]

end

to create-new-students
  ask students[
     if count students < student-count [hatch 1 setxy random-xcor random-ycor]
    ]
end

Solution

  • I figured it out. Maybe writing it down helped. Looks like my solution was a combination of a nested if statement (something I've tried and failed at previously) and assigning the agents I want to die to an agent-set. There might be a better way to get this done but I wanted to share the solution I got...

    ask students[
        if any? no-threat[if [pcolor] of patch-here = green [die]
        ]