【问题标题】:Running a function for every present turtle from each of the turtle's perspectives从每个海龟的角度为每个当前海龟运行一个函数
【发布时间】:2013-09-02 14:21:54
【问题描述】:

从每个乌龟的角度来看,我必须为乌龟运行一个函数来决定它将分配给哪个乌龟作为它的“伙伴”。

现在我有下面的代码但是没有达到效果。

foreach sort other turtles [
      ask ? [
        if Smin < Sim myself ? and self != ? [
        ]
      ]
 ]

在 C/Java 中这很简单,只需一个简单的 for 循环即可。显然我很难理解 NetLogo 的 foreach 功能和“?”的集成。在循环中。我该怎么做?

【问题讨论】:

    标签: simulation netlogo


    【解决方案1】:

    从您发布的代码示例中不清楚您到底想做什么。

    一些可能有帮助的事情:

    • 除非您想按特定顺序称呼您的海龟,否则通常不需要使用foreach。只做ask other turtles [ ... ]就可以代替整个foreach sort other turtles [ ask ? [ ... ] ]
    • 鉴于您位于ask ? 块内,self != ?始终为 false,因此,ifand 子句也是如此。永远不会到达内部块中的代码。
    • myself 指代来自“外部”询问块的代理(例如,在 ask x [ ask y [ ... ] ] 中,self 将是 ymyself 将是 x)。 myselfself 均不受 foreach 影响,? 不受 ask 影响。

    我的猜测是,也许你只是想要:

    ask other turtles [
      if Smin < Sim myself self [
      ]
    ]
    

    但我不能确定,特别是因为我不知道 SminSim 是什么。如果您发布更多详细信息,也许我们可以进一步帮助您。

    最后:NetLogo 代码通常比等效的 C/Java 代码简单得多,但您必须学会接受“NetLogo 方式”。用 Java/C 思考,然后尝试用 NetLogo 进行翻译,通常会误入歧途。

    【讨论】:

    • 我明白了。我实际上是在尝试转换我阅读的伪代码,而我愚蠢的头脑一直将伪代码与 C 联系起来(C 是我学习的第一种编程语言,这可能就是原因)。如果我可以在这里发布伪代码以澄清我的问题,我会尝试。
    猜你喜欢
    • 2016-03-28
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    相关资源
    最近更新 更多