loet23
loet23

Reputation: 21

NetLogo: how to let turtles return after one tick

hope you can help me out! I have a NetLogo question about the following code:

breed [tourists tourist]

turtles-own [satisfaction]

to setup
  clear-all
  reset-ticks
end 

to go
  
  tick
  
  ask n-of initial-number-tourists patches
  [
    sprout 1 [
      set color white
      set size 1
    ]
  ]

  ask turtles
  [ let nearest min-one-of turtles [distance myself]
  if-else distance nearest < 0.0000001 [ set satisfaction 0 ]
    [ set satisfaction 1 ] 
  ]

  ask turtles with [satisfaction = 0] [die]

end

The intention is to sprout "initial-number-tourists" at the start of each tick. Then, they calculate their 'satisfaction' based on the if there are turtles close and let the turtles that have a satisfaction of 0 die. Then, the turtles that remain (that are satisfied) will be sprouted again and their satisfaction will be calculated again.

The code is working, however, with unexpected outcomes. What happens is that the turtles are all sprouted, and they all die each tick. The next tick; they are sprouted again and all die again. Even if i set the distance threshold really low like i did in the code I provided.

Hopefully you can help me out!! Kind regards

Upvotes: 0

Views: 150

Answers (1)

Charles
Charles

Reputation: 4168

The problem you are encountering is that the nearest turtle to each turtle is itself! Thus the distance to nearest is always zero and satisfaction will be set to zero for every turtle. What you want is the closest among the other turtles,

let nearest min-one-of other turtles [distance myself]

(Your distance threshold will mean that all turtles will have satisfaction of 1, but I assume that is what you wanted to accomplish in your testing. Since turtles are sprouted at the centers of the patches, a threshold of < 1.0 would accomplish the same thing.)

Minor point: the convention is to put tick at the end, not the beginning of the go procedure.

Upvotes: 1

Related Questions