我如何让海龟在 netlogo 中从世界边界反弹

How do I make turtles bounce off the world boundary in netlogo

我在 Netlogo 中有一个盒子限制的世界,我的海龟按照我想要的方式移动,但有些会卡在墙上,这会吸引其他人进入(我使用 Flocking 模型作为 backbone ) 直到所有的海龟都被困在墙上并停止移动。我尝试在 Go 中包含一个 wall_jump,但是一旦有太多的 flockmates 靠在墙上,它就无济于事,所以我放了另一个块来要求 flockmates 从墙上反弹,但它似乎没有有什么影响。如果你想重现整个问题,打开植绒模型并关闭世界边界。

其他人是如何解决这个问题的?

 to wall_jump
  ifelse any? flockmates 
  [
   if ycor >= max-pycor * 0.95  [set heading (random-normal 180 2)] 
   if xcor >= max-pxcor * 0.95 [set heading (random-normal 270 2)]  
   if xcor <= min-pxcor * 0.95   [set heading (random-normal 90 2)]          
   if ycor <= min-pycor * 0.95   [set heading (random-normal 0 2)]           
  ]

  [if ycor >= max-pycor * 0.95    [set heading (random-normal 180 2)] 
   if xcor >= max-pxcor * 0.95   [set heading (random-normal 270 2)]  
   if xcor <= min-pxcor * 0.95   [set heading (random-normal 90 2)]          
   if ycor <= min-pycor * 0.95   [set heading (random-normal 0 2)]           
  ]
  end

这个问题在 Random Balls 模型中解决了(在 NetLogo 模型库中): http://ccl.northwestern.edu/netlogo/models/RandomBalls

虽然与您的问题没有直接关系,但您可能会发现查看产生墙集群(在懦夫模式下)的英雄与懦夫模型也很有趣: http://ccl.northwestern.edu/netlogo/models/HeroesandCowards