在NetLogo中,您将如何在空间上处理诸如人们(一种海龟(上车(另一种海龟品种(并四处开车之类的情况?你会一直把它们放在同一块补丁上吗;或者把人们送到某个等待补丁,并用指针变量或链接将他们联系起来?如果你把它们放在同一个补丁上,直觉上这听起来是最好的方法,你会相信这足以知道每辆车里有谁(在这里使用代理集人员(,还是同时使用指针变量或链接?
如果移动命令嵌套得当,这里的人应该足够优秀:
ask cars[move ask people-here [move]]
但这听起来很容易混淆。那么,如果你无论如何都在使用一个链接,为什么要麻烦所有的移动命令呢?
我个人建议使用与tie
相结合的链接来解决这个问题。Tie
与无向链接相结合,使得如果一只乌龟移动或旋转,其他乌龟也会随之移动或旋转。它也可以与有向链接一起使用,但这对您的问题没有任何好处。
在下面的示例代码中,我让乌龟移动到一辆车上,创建一个与它的链接,然后将自己绑在它上,然后汽车可以驾驶它们四处走动。完成驾驶后,您可以简单地告诉链接到untie
或die
breed [cars car]
breed [humans human]
to setup
ca
set-default-shape cars "car"
set-default-shape humans "person"
create-cars 2 [
setxy random-xcor random-ycor
set size 2
]
create-humans 5 [
setxy random-xcor random-ycor
]
end
to get-in
ask humans [
let my-car one-of cars
move-to my-car
create-link-with my-car [tie]
]
end
to move-cars
ask cars [fd 1]
end
to get-out
ask links [die]
ask humans [fd 1]
end