如何求某个时间形成的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 出生和必须在不同时间点死亡是没有问题的。
感谢您为社区提供的帮助。所以我试图在彼此半径为 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 出生和必须在不同时间点死亡是没有问题的。