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?
将始终为false,因此,您的self!=
的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是我学的第一种编程语言,这可能就是原因)。为了澄清我的问题,我将尝试在这里发布伪代码。