【问题标题】:How to check if 2 different breeds of turtles are on the same patch如何检查 2 个不同品种的海龟是否在同一个补丁上
【发布时间】:2020-04-11 22:36:43
【问题描述】:

我的设计的最后一部分涉及我记录任何时候汽车品种驶入或以 netlogo 术语,与人们在屏幕边缘导航时在同一个补丁或 X 和 Y 坐标上。如果这是 java 我可以做类似的事情

如果 Car.xPostion == Person.xPostion

(做点什么……)

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


to record-accidents

  ask turtles with [movable? = true]

  [

  ]

【问题讨论】:

    标签: netlogo agent-based-modeling


    【解决方案1】:

    如果您尝试类似您的 java 方法,它会失败,因为海龟位置是连续的并且浮点数几乎总是不相等的。

    如果我正确理解了您的问题,您是否给出了一个名为可移动的布尔变量?对汽车设置为 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...
    

    【讨论】:

    • 所以您不想识别这些补丁,只计算它们?然后像 set num-accidents num-accidents + count patches with [any? people-here and any? cars-here] 一样,将 num-accidents 作为全局变量
    • 此勾选的事故数为count patches with [any? people-here and any? cars-here]。如果您想要一段时间内的总数,只需让监视器显示您正在增加的全局变量。否则,需要一个新问题,以便您可以更全面地解释问题,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多