Simulation 为每个海龟的每个当前海龟运行一个函数';s的观点

Simulation 为每个海龟的每个当前海龟运行一个函数';s的观点,simulation,netlogo,Simulation,Netlogo,从海龟的每个角度来看,我必须为海龟运行一个函数,以决定它将分配哪个海龟作为它的“伙伴” 现在我有下面的代码,但没有达到效果 foreach sort other turtles [ ask ? [ if Smin < Sim myself ? and self != ? [ ] ] ] foreach排序其他海龟[ 问[ 如果Smin

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

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

foreach sort other turtles [
      ask ? [
        if Smin < Sim myself ? and self != ? [
        ]
      ]
 ]
foreach排序其他海龟[
问[
如果Smin

在C/Java中,它会很简单,只是一个简单的for循环,然后就是了。显然,我很难理解NetLogo的foreach函数和循环中“?”的集成。我怎样才能做到这一点?

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

一些可能有帮助的事情:

  • 除非您想按照特定的顺序来称呼海龟,否则通常不需要使用
    foreach
    。仅仅做
    询问其他海龟[…]
    就可以代替所有的
    对其他海龟进行排序[ask?[…]]
  • 假设您在
    ask?
    块中,
    self!=
    将始终为false,因此,您的
    if
    子句也将为false。内部块中的代码永远无法访问
  • 我自己
    引用“外部”ask块中的代理(例如,在
    ask x[ask y[…])
    中,
    自我
    将是
    y
    我自己
    将是
    x
    )。
    我自己
    自我
    都不受
    foreach
    的影响,
    不受
    询问
    的影响
我猜也许你只是想:

ask other turtles [
  if Smin < Sim myself self [
  ]
]
问问其他海龟[
如果微笑是我自己[
]
]
但我不能确定,特别是因为我不知道什么是
Smin
Sim
。如果你发布更多细节,也许我们可以进一步帮助你


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

我明白了。我实际上是在试图转换我读到的伪代码,我愚蠢的头脑一直在把伪代码和C联系起来(C是我学的第一种编程语言,这可能就是原因)。为了澄清我的问题,我将尝试在这里发布伪代码。