【问题标题】:In an «ask turtles» method: How can I read a variable of a patch in a relative angle and distance from a turtle?在“问海龟”方法中:如何以相对角度和与海龟的距离读取补丁的变量?
【发布时间】:2019-04-21 03:33:15
【问题描述】:

我希望 [[shape = "sheep"]] 的海龟移动到左侧或右侧,具体取决于某个相关块周围有多少 [有吸引力的(绿色)块]。

How the turtles with [shape = "sheep"] should count the patches (yellow)

(不正确的)代码如下所示:

to move-sheep
  ask turtles with [shape = "sheep"] [
    right random (16 + (count neighbors4 with [pcolor = green] patch-right-and-ahead 60 2)^ 2)
    left random (16 + (count neighbors4 with [pcolor = green] patch-right-and-ahead -60 2)^ 2)
    forward 1
    #(some other commands…)
  ]
end

谢谢你^^

【问题讨论】:

  • 您的图像中所有海龟相对于补丁具有相同的角度,并且每个目标补丁周围都有相同的补丁。我无法弄清楚你要数什么。我建议您只需要求patch-right-and-ahead 60 1.5 将颜色更改为红色(或类似)即可进行调试。
  • “我无法计算出你要计算的内容”-@JenB 查看嵌入的链接。
  • 我确实看过嵌入的链接,这是一张漂亮的图片,没有任何文字描述。有深黄色和淡黄色(绿色?)斑块。你是在数两者还是只数深黄色?计算(或不计算)补丁的规则是什么。例如,在不超过 X 距离的两个角度之间,必须有四个 NSEW 补丁全为绿色,而不是对角线邻居。您要求我们提供有关计数补丁的代码方面的帮助,但未提供您希望遵循的规则,或描述您当前代码的问题。
  • 好吧,我想数一下左边的黄色方块和右边的黄色方块(但是,正如你所见,每一边代表不同的线)。我想用 [pcolor = green] patch-right-and-ahead ±60 2 替换那些«count neighbors4» 用 [pcolor = green] 的 [黄色可视化补丁] 的数量

标签: simulation netlogo


【解决方案1】:

如果您真的告诉我们问题所在,那就容易多了。您说您的代码是错误的,但不是您如何知道它是错误的。它是否报告错误(如果是,错误是什么以及报告的是哪一行)?移动的乌龟走错路了吗?

无论如何,解决此问题的最简单方法是在尝试移动之前做一些较小的事情。如果您简单地计算绿色补丁的数量并将其打印出来,您可以测试代码。引入运动后,如何判断它是否正确计数?

我仍然不完全确定你在问什么。但我认为这段代码可能会帮助您诊断问题。它会告诉您目标补丁周围的计数是多少,因此您可以查看它是否进行了正确的计数。一旦你知道计数有效,你就可以修改移动。

to testme
  clear-all
  ask patches [set pcolor one-of [yellow green]]
  create-turtles 1 [set heading 30 set color black]
  ask one-of turtles
  [ ask patch-right-and-ahead 60 2 [set pcolor red]
    type "Right: "
    print count ([neighbors4] of patch-right-and-ahead 60 2) with [pcolor = green] 
    ask patch-right-and-ahead -60 2 [set pcolor red]
    type "Left: "
    print count ([neighbors4] of patch-right-and-ahead -60 2) with [pcolor = green]
  ]
end

【讨论】:

  • 哎呀……好吧:特工是羊,他们应该转向有更多草的那一侧。 (但包括RNG)
  • 而«count neighbors4 with [pcolor = green] patch-right-and-ahead 60 2»旨在显示必须计数的内容。 @JenB
  • 你试过我提供的代码了吗?如果计算正确,您可以使用我编写的代理集构造代码并将其放在您的移动线中。如果它计算错误的东西,你想计算什么?如果不是计数的问题,那是什么问题?
  • 天哪,它有效;右随机 (16 + (count ([neighbors4] of patch-right-and-ahead 60 2) with [pcolor = green])^ 2) 左随机 (16 + (count ([neighbors4] of patch-right-and-)领先 -60 2) 与 [pcolor = green])^ 2)
  • @Trummler - 如果 Jen 的回答解决了您的问题,请点击他们回答顶部附近的复选标记以接受它并将此问题标记为已关闭。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多