首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在乌龟之间增加障碍

在乌龟之间增加障碍
EN

Stack Overflow用户
提问于 2014-09-11 01:26:07
回答 2查看 351关注 0票数 0

我是Netlogo环境的新手,我正在尝试开发一种无线通信模型。我遇到了一个问题,我必须阻止两个节点(海龟)之间的通信,如果我在两个节点之间保留一个障碍物(作为带有某种颜色的补丁或类似的东西),传输节点应该扫描障碍物并报告一些东西来结束该过程。我在Netlogo社区中经历了视线模型和避障模型,但它们对我帮助不大。节点应该扫描障碍物,不只是在前面一个补丁的范围内,而是在它与另一个节点之间的整个距离内。任何适合这个问题的想法或原语都会对我有很大的帮助。我希望我已经说清楚了,并对我的英语表示抱歉:)

诚挚的问候

EN

回答 2

Stack Overflow用户

发布于 2014-09-11 12:54:19

这可能不是最有效的解决方案,但假设您有以下几种:

代码语言:javascript
复制
breed [ obstacles obstacle ]
breed [ nodes node ]

您可以使用以下报告器:

代码语言:javascript
复制
to-report can-see? [ target ]
  let result false
  hatch 1 [
    face target
    fd 0.1
    set result ifelse-value (any? turtles-here with [ self = target ])
      [ true ]
      [ ifelse-value (any? obstacles-here)
        [ false ]
        [ can-see? target ]
      ]
    die
  ]
  report result
end

它的工作原理是在目标的方向上hatch一系列的临时节点。如果沿途的任何节点遇到障碍,它都会返回false。如果它到达目标,则返回true。这些临时节点是递归创建的,直到获得结果。

您可能希望调整“步长”(本例中为fd 0.1):步长越大,越有可能错过障碍物的拐角,但速度会稍微快一些。

您还需要确保使用tick based updates instead of continuous updates,否则它将非常慢。

下面是一个在可以相互查看的节点之间创建链接的示例:

代码语言:javascript
复制
to setup
  ca
  ask n-of 100 patches [
    sprout-obstacles 1 [
      set color red
      set shape "square"
    ]
  ]
  ask n-of 50 patches with [ not any? obstacles-here ] [ 
    sprout-nodes 1 [
      set color yellow
      set shape "circle"
      let targets other nodes
      create-links-with targets with [ can-see? myself ]
    ]
  ]
end

如果您想使用补丁而不是乌龟作为障碍,您可能可以相当容易地修改它。

票数 1
EN

Stack Overflow用户

发布于 2014-09-16 03:13:10

我在NetLogo用户列表上发布了这个问题的答案。为了完整起见,请在此处重新发布:

有许多方法可能会起作用。

在这种情况下,似乎可以使用相同的技术来确定节点之间的线是否与障碍物上的任何线相交。

这里有一些其他的想法。

另一种方法是派一只乌龟去“走”到另一个节点的笔直的路径,以发现任何障碍。这必须小心,以避免跳过与线相交的补丁的角落。

另一种是使用具有非常小角度的IN-CONE,以获得节点之间的一组狭窄的面片。可以找到从A到B的IN锥体和从B到A的IN锥体的交点,以缩小集合的范围。然后在集合中搜索障碍物或在集合上使用MIN-ONE with DISTANCE来找到“最近”的障碍物。

另一种是使用几何/数学来找到位于两个节点之间的线上的补丁集,然后查找障碍物。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25771488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档