netlogo - 被要求前往某些区域的海龟都聚集在一个地方

标签 netlogo agent agent-based-modeling

我正在编写一个捕食者-被捕食者模型,其中捕食者有一个小型内部机器学习模型来决定它要在哪个栖息地捕猎。

如果捕食者前一天没有成功狩猎,他们会随机分配四种策略。每个策略都有一个独特的栖息地,它们可以在其中狩猎,但是尽管它们都从环境的随机区域移动到中心位置,然后用钢笔模式“绘制它”并忽略环境的所有其他部分,我不明白为什么。

我尝试了多种代码组合来解决这个问题,但它总是做同样的事情。我最新的尝试如下


    if strat = "strat1" [ifelse any? patches in-cone 0 250 with [habitat = "rugged slope"]
      [set target-patch min-one-of patches in-cone 0 250 with [habitat = "rugged slope"] [distance myself]
 face target-patch
  fd 1]
      [face one-of patches with [habitat = "rugged slope"]
        fd 1]]

    if strat = "strat2" [ifelse any? patches in-cone 0 250 with [habitat = "gentle slope"]
      [set target-patch min-one-of patches in-cone 0 250 with [habitat = "gentle slope"] [distance myself]
 face target-patch
  fd 1]
      [face one-of patches with [habitat = "gentle slope"]
        fd 1]]

    if strat = "strat3" [ifelse any? patches in-cone 0 250 with [habitat = "rugged forest"]
      [set target-patch min-one-of patches in-cone 0 250 with [habitat = "rugged forest"] [distance myself]
 face target-patch
  fd 1]
      [face one-of patches with [habitat = "rugged forest"]
        fd 1]]

        if strat = "strat4" [ifelse any? patches in-cone 0 250 with [habitat = "gentle forest"]
      [set target-patch min-one-of patches in-cone 0 250 with [habitat = "gentle forest"] [distance myself]
 face target-patch
  fd 1]
      [face one-of patches with [habitat = "gentle forest"]
        fd 1]]

  ]
end

正如您所看到的,他们被告知去某些区域,但结果看起来像这样(附图)

掠食者离开他们的巢穴(粉红色),尽管有独特的去向命令,但他们只是在中间相遇并绘画。 turtles painting the map

最佳答案

我认为我们可能需要查看您的更多代码才能了解这些区域是如何分布的。但问题可能是patch in-cone 0 250只会查看捕食者当前所在的补丁(半径为零)。因此,如果(例如)strat = "strat2" 并且捕食者位于 habitat = "gentlelope" 的补丁上,则目标补丁将是捕食者所在的补丁在。如果栖息地不是“缓坡”(这可能是最有可能的),那么即使附近有一个特定的缓坡栖息地,它的路径也会相当漫无目的。

关于netlogo - 被要求前往某些区域的海龟都聚集在一个地方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61249858/

相关文章:

procedure - Netlogo 随机选择 3 个程序之一

continuous-integration - 自托管代理未显示在代理池下拉列表下

netlogo - 在 NetLogo 中实现强化学习(多代理模型中的学习)

social-networking - NetLogo:比较邻居的值

java - 使用 java 的 repast simphony 代理决策使用大量内存

matrix - NetLogo:如何导入2列邻接表来创建图形?

netlogo - 意外的绘画行为

list - Netlogo:如何为列表中的每只海龟创建链接?

docker - Jenkins Pipeline和Docker插件-基于唯一代理的并发构建

java - 如何在 Lotus Domino Java Agent 中设置entityExpansionLimit?