如何求某个时间形成的links或turtles或variables?

How to ask links or turtles or variables that are formed at a certain time?

感谢您为社区提供的帮助。所以我试图在彼此半径为 1 的代理之间创建 links。如果海龟在 16 ticks 内没有进入彼此半径为 1 的范围内,link 会自动死亡。因此,从技术上讲,一个 link 可能从第 200 个时钟周期开始,必须在第 216 个时钟周期死亡,除非它被“更新”,但另一个 link 可以从第 250 个时钟周期开始,必须在 link 266 个时钟周期死亡. 但是,如果我使用 ask links 它会改变所有 links.

所以我的问题是如何说类似的话:询问在 tick xx 形成的 link set die time at xx+16 if ticks = xx+16 [die].

另外,我如何更新 link 以便当两个具有 link 的特工再次联系时,他们会为他们之间的 link 设置新的开始和结束时间?

非常感谢。我知道我应该一次只问一个问题,但我想它们可能是相关的并且可以一起解决。提前致谢。

我想到了两种等效的方法。

一种方式模仿您在问题中表达的逻辑:

links-own [
  time-to-die
]


to create-links
  ask one-of turtles [
    create-links-with one-of other turtles [
      set time-to-die (ticks + 16)
    ]
  ]
end


to check-condition
  ask links [
    if (link-length <= 1) [
      set time-to-die (ticks + 16)
    ]

    if (time-to-die = ticks) [die]
  ]
end

另一种方法创建一个计数器,其中每个 link 跟踪其两端分开的时间:

links-own [
  time-apart
]


to check-condition
  ask links [
    ifelse (link-length > 1)
      [set time-apart time-apart + 1]
      [set time-apart 0]

    if (time-apart = 16) [die]
  ]
end

如果我们想要精确一点,第一种方法会更轻松一些,因为 links 不必在每个刻度设置 time-to-die 的值(而在第二种方法中, links 在每个 tick 设置 time-apart 的值),但我想这个优势可能很小,你可能应该更喜欢最适合你模型整体逻辑的那个。

无论如何,关键是要求所有link更新和检查他们的条件是没有问题的:每个link会根据自己的情况进行计算和检查情况,所以处理不同的 link 出生和必须在不同时间点死亡是没有问题的。