让海龟等待x个刻度

时间:2014-03-25 12:15:53

标签: wait netlogo

我想做的部分原因是让一群海龟四处移动,但当一只海龟到达目的地时,海龟会在继续之前等待一定数量的蜱虫?也可以根据目的地(不同的补丁颜色)使海龟等待不同数量的刻度。是否需要制作海龟品种或全局变量来计算滴答数?希望相关的代码如下。

1 个答案:

答案 0 :(得分:2)

你是对的,这可以通过让海龟计算它们在补丁上的滴答数来完成。此外,这必须是一个乌龟变量,而不是一个全局变量,因为每个乌龟将具有不同的值

我使用的方法是:

  1. 一旦乌龟到达目的地记录,ticks(记录到目前为止已经过去的蜱数的全局变量)变成乌龟变量ticks-since-here。这就像一个时间戳。
  2. 在每个连续的勾选中检查当前时间ticks全局变量和ticks-since-here乌龟变量之间的差异。如果这大于允许乌龟留在补丁上的滴答数,让它选择并移动到新目的地。

    繁殖[访客访客]

    globals [ number-of-visitors ]
    
    visitors-own [
      ; visitors own destination 
      destination
      ticks-since-here
    ]
    
    to go
      ask visitors [
        move
      ]
      tick
    end
    
    to move
      ; Instructions to move the agents around the environment go here
      ; comparing patch standing on to dest, if at dest then  choose random new dest
      ; then more forward towards new dest
      ifelse ( patch-here = destination ) 
      [
        if ticks - ticks-since-here > ticks-to-stay-on-patch patch-here
        [
          set ticks-since-here 0
          set destination one-of patches with 
          [
            pcolor = 65 or pcolor = 95 or pcolor = 125 or pcolor = 25 or pcolor = 15 or pcolor = 5
          ]
        ]
      ]
      [
        face destination
        forward 1
        if ( patch-here = destination ) 
        [
          set ticks-since-here ticks
        ]
      ]
    end
    
    to-report ticks-to-stay-on-patch [p]  
      if [pcolor] of p = 65
        [
          report 6
        ]
      if [pcolor] of p = 95
        [
          report 5
        ]
      if [pcolor] of p = 125
        [
          report 4
        ]
      if [pcolor] of p = 25
        [
          report 3
        ]
      if [pcolor] of p = 15
        [
          report 2
        ]
      if [pcolor] of p = 5
        [
          report 1
        ] 
    end
    
    to setup-people 
      ;;;; added the following lines to facilitate world view creation
      ask patches
      [
        set pcolor one-of [65 95 125 25 15 5]
      ]
      set number-of-visitors 100
      ;;;;
    
      create-visitors number-of-visitors 
      [
        ask visitors 
        [
          ; set the shape of the visitor to "visitor"
          set shape "person"
          ; set the color of visitor to white
          set color white
          ; give person a random xy
          setxy (random 50) (random 50)
          ; set visitors destination variable
          set destination one-of patches with 
          [
            pcolor = 65 or pcolor = 95 or pcolor = 125 or pcolor = 25 or pcolor = 15 or pcolor = 5
          ]
        ]
      ]  
    end