如何检查2种不同的海龟是否在同一片上

时间:2020-04-11 22:36:43

标签: netlogo agent-based-modeling

设计的最后一部分涉及到我记录下来,无论何时汽车品种驶入或以netlogo的形式出现,都在人们穿越屏幕边缘时与它们繁殖的位置相同或与X和Y坐标相同。如果这是Java,我可以完成

之类的工作

如果Car.xPostion == Person.xPostion

(做点事情...)

但是不幸的是,我不知道如何在NetLogo中做同样的事情,到目前为止,我所能做的只是问这两个品种,就是给每只海龟一个名为可移动的布尔变量,并将它们设置为true,其余的设置为true。为假,无论如何,我可以在Netlogo上检查两个不同乌龟的两个坐标吗?到目前为止,这就是我所能做的。


to record-accidents

  ask turtles with [movable? = true]

  [

  ]

1 个答案:

答案 0 :(得分:2)

如果您尝试使用类似Java的方法,则它将失败,因为乌龟位置是连续的并且浮点数几乎总是不相等。

如果我正确理解了您的问题,那么您给了一个布尔变量,称为mobile?对汽车设置为true,对其他所有品种设置为false。您不需要这样做,海龟知道它们自己的品种,因此可以进行ask cars

要回答您的特定问题,有几种方法可以根据不同的观点进行处理(由哪个代理商负责)。

您可以在发生事故的地方识别补丁:这是标题中您的问题的答案(关于识别具有两个品种的补丁)。

let accident-locations patches with [any? people-here and any? cars-here]
if any? accident-locations
[ ask accident-locations
  [ <do something>

但是您也可以从乌龟角度看待。您可以从被撞的行人开始。这利用了以下事实:乌龟可以自动访问它们所在的补丁的补丁变量(例如turtles-here):

let hit people with [any? cars-here]
if any? hit
[ ask hit...

或从汽车:

let hitters cars with [any? people-here]
if any? hitters
[ ask hitters...
相关问题