Timer 如何让海龟们面对面,等3秒钟,然后继续游荡?

Timer 如何让海龟们面对面,等3秒钟,然后继续游荡?,timer,netlogo,interaction,agent-based-modeling,Timer,Netlogo,Interaction,Agent Based Modeling,我对Netlogo和stackoverflow都是新手,但是你的其他帖子已经帮了我很多 我目前正在尝试编程一个模型,在这个模型中,代理随机地在一个空间中漫游,并让他们在每次见面时都停下来。这里的“会面”是指“在半径2内相互传递”。他们应该面面相觑,等待两个滴答声,然后继续移动,直到找到下一个代理 我试图使用,但没有真正成功 到目前为止,我设法让他们面对面。我无法将勾选-命令放在代码的正确位置。(编辑:多亏了赛斯,这个问题通过取消等待-命令得以解决。->,我不希望所有海龟都停止移动,只希望它们彼此

我对Netlogo和stackoverflow都是新手,但是你的其他帖子已经帮了我很多

我目前正在尝试编程一个模型,在这个模型中,代理随机地在一个空间中漫游,并让他们在每次见面时都停下来。这里的“会面”是指“在半径2内相互传递”。他们应该面面相觑,等待两个滴答声,然后继续移动,直到找到下一个代理

我试图使用,但没有真正成功

到目前为止,我设法让他们面对面。我无法将
勾选
-命令放在代码的正确位置。(编辑:多亏了赛斯,这个问题通过取消
等待
-命令得以解决。->,我不希望所有海龟都停止移动,只希望它们彼此相遇)。 另一件我正在努力的事情是他们相遇时的某种视觉表现,例如,当他们相遇时,他们会眨眼,或者在他们相遇时,他们周围会出现一个圆圈。使用
wait
-命令,一切都会再次停止,这是我想要防止的

到目前为止,代码如下

to go 

  tick  

  ask turtles 
  [
   wander
   find-neighbourhood
  ] 

 ask turtles with [found-neighbour = "yes"]
  [
    face-each-other
  ]

 ask turtles with [found-neighbour = "no" or found-neighbour = "unknown"]
 [ wander ]

  end

;-------
;Go commands      

to wander
      right random 50
      left random 50
      forward 1   
end 

 to find-neighbourhood
     set neighbourhood other turtles in-radius 2
     if neighbourhood != nobody [wander]
     find-nearest-neighbour
  end 

  to find-nearest-neighbour
  set nearest-neighbour one-of neighbourhood with-min [distance myself]
  ifelse nearest-neighbour != nobody [set found-neighbour "yes"][set found-neighbour "no"]
            end 

to face-each-other                             ;;neighbour-procedure
  face nearest-neighbour
  set found-neighbour "no"
  ask patch-here [                             ;; patch-procedure
    set pcolor red + 2
    ;wait 0.2
    set pcolor grey + 2
        ]
    if nearest-neighbour != nobody [wander]
  rt 180
  jump 2

  ask nearest-neighbour 
[
    face myself 
    rt 180
    jump 2
    set found-neighbour "no"
  ]  
  end   

你链接到海伦的问题是对的。基本上,你的问题的答案是你需要做同样的事情。当你试图这么做的时候,你是在正确的轨道上。我建议你再试试,如果你被卡住了,告诉我们你被卡住的确切位置。

在一位同事的帮助下,我设法解决了我的计时器问题。正如赛斯指出的那样,
wait
不是正确的命令,太多的
要结束
——循环也让我的海龟们感到困惑。代码现在看起来如下所示,并且可以正常工作。海龟们靠得很近,面对面,把它们的形状变成星星,等上三下,然后朝相反的方向跳

to setup

  clear-all 
 ask turtles 
   [
     set count-down 3
     ]
reset-ticks

end 
;---------
to go

 ask turtles 
  [    
   if occupied = "yes" [
     ifelse count-down > 0 
[
       set count-down (count-down - 1)
       set shape "star"
     ][
       set shape "default"
       rt 180
       fd 2
       set occupied "no"
       set count-down 3
     ] 
   ]

   if occupied = "no" [
     ; Wandering around, ignoring occupied agents

     set neighbourhood other turtles in-radius 2

     ; If someone 'free' is near, communicate!

     set nearest-neighbour one-of neighbourhood with-min [distance myself]
     ifelse nearest-neighbour != nobody [
         if ([occupied] of nearest-neighbour = "no") [
            face nearest-neighbour            
            set occupied "yes"
            ask nearest-neighbour [ 
              face myself              
              set occupied "yes"
           ]]
     ][
       ; No one found, keep on wandering
       wander
     ]]] 
   tick 
   end
;-------
;Go commands      

to wander
      right random 50
      left random 50
      forward 1   
end 

当代码中有一堆注释掉的代码并且缩进到处都是的时候,阅读代码是非常困难的。这可能就是为什么没有人试图回答这个问题的原因——要阅读的代码太多了,而且你也没有让它变得容易。我突然想到的一件事是,你肯定根本不想使用
等待
。当一只乌龟等待时,一切都停止了。这些都是非常有用的评论,非常感谢。我尝试相应地编辑它。现在更清晰了,谢谢。我从一位同事那里得到了一些帮助,我们设法解决了这个问题。这并不是说我现在没有陷入下一步,但我想我可以结束这个问题。。。我该怎么做?你可以回答你自己的问题并发布你的代码,因为这个解决方案可能对其他人有帮助。如需结束,请参阅