【问题标题】:How do I make turtles bounce off the world boundary in netlogo如何让海龟在 netlogo 中从世界边界反弹
【发布时间】:2016-05-18 21:26:13
【问题描述】:

我在 Netlogo 中有一个盒子绑定的世界,我的海龟正在按照我想要的方式移动,但有些会卡在墙上,这会吸引其他人(我使用植绒模型作为主干),直到所有海龟都被卡住面对墙壁并停止移动。我尝试在 Go 中包含一个 wall_jump,但是一旦有太多的群友靠墙它就没有帮助,所以我放了另一个块让群友从墙上反弹,但它似乎没有任何效果。如果您想重现整个问题,请打开植绒模型并关闭世界边界。

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

 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

【问题讨论】:

  • 你的 if 和你的 else 语句有什么区别?
  • flockmates 是我所依据的“植绒”模型的继承,它归海龟所有。基本上,他们将附近的海龟识别为群友,然后根据群友的平均航向确定它们的新航向。我用那个 ifelse 声明的目的是基本上说你附近是否有任何羊群伙伴,以同样的方式决定一个新的方向,因为你被困在墙上。还是不行

标签: netlogo


【解决方案1】:

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

虽然与您的问题没有直接关系,但您可能会发现查看 Heroes and Cowards 模型也很有趣,该模型会产生墙聚类(在 Cowards 模式下): http://ccl.northwestern.edu/netlogo/models/HeroesandCowards

【讨论】:

  • 感谢您向我介绍艾伦的那些模型。我调整了我的模型以适应他们的解决方案的要求,即简单地放置'if abs pxcor = max-pxcor [ set heading (- heading)] if abs pycor = max-pycor [ set heading (180 - heading) ]'这有效,但前提是您的原点位于中心(我的原点位于角落)。我最终告诉我的海龟无论如何都要通过一个辅助功能在左边缘产卵,如果有人需要,我可以分享它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-18
  • 1970-01-01
  • 2015-05-04
  • 2014-05-01
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
相关资源
最近更新 更多