限制代理可以建立的链接数量
Limit the number of links an agent can make
我有海龟 linking 如果它们具有相同的 var1 值(这很好用)。我想将 link 的数量限制为三个。我在代码的 linking 部分之前添加了一个 IF 语句(If count my-links < 3
),但是它不起作用;代理继续 link 超过我设置的最大值。我阅读了另一个问题 ,但这似乎并不能完全满足我在这里的尝试。我做错了什么?
to communicate
If count my-links < 3
[
ask other xagents in-radius 5 with [var1 = [var1] of myself]
[create-links-with yagents in-radius 5 with [var1 = [var1] of myself]
[
set color white
set thickness 0.1
]
]
]
end
限制海龟的 link 数量,然后再让它们创建新的海龟:
通过查看你的完整模块,正如@JenB 提到的那样,似乎没有条件限制目标乌龟制作 link 的 link 的数量。
这将是第一步:
to communicate
If count my-links < 3
[
ask other xagents in-radius 5 with [(var1 = [var1] of myself) and (count my-links < 3)]
[create-links-with yagents in-radius 5 with [(var1 = [var1] of myself) and (count my-links < 3)]
[
set color white
set thickness 0.1
]
]
]
end
但是如果没有这样的代理怎么办? (半径为 5,具有相同的 val1 且 links 小于 3)可能需要一个 if 语句。
我还认为您需要在代码中使用 one-of
,以便在每个步骤中只生成一个 link。
在每个 tick 后杀死 links 以限制海龟的 links 数量:
您可以在 communicate
子过程的末尾使用它来杀死额外的 links。它有一个随机删除 links 的缺点,也可能从具有较少 link 的海龟而不是那些可能也有额外 links 的海龟中删除 link。
ask turtles with [count my-links > LIMIT] [ if count my-links > LIMIT [ask n-of (count my-links - LIMIT) my-links [die]] ]
我有海龟 linking 如果它们具有相同的 var1 值(这很好用)。我想将 link 的数量限制为三个。我在代码的 linking 部分之前添加了一个 IF 语句(If count my-links < 3
),但是它不起作用;代理继续 link 超过我设置的最大值。我阅读了另一个问题
to communicate
If count my-links < 3
[
ask other xagents in-radius 5 with [var1 = [var1] of myself]
[create-links-with yagents in-radius 5 with [var1 = [var1] of myself]
[
set color white
set thickness 0.1
]
]
]
end
限制海龟的 link 数量,然后再让它们创建新的海龟:
通过查看你的完整模块,正如@JenB 提到的那样,似乎没有条件限制目标乌龟制作 link 的 link 的数量。
这将是第一步:
to communicate
If count my-links < 3
[
ask other xagents in-radius 5 with [(var1 = [var1] of myself) and (count my-links < 3)]
[create-links-with yagents in-radius 5 with [(var1 = [var1] of myself) and (count my-links < 3)]
[
set color white
set thickness 0.1
]
]
]
end
但是如果没有这样的代理怎么办? (半径为 5,具有相同的 val1 且 links 小于 3)可能需要一个 if 语句。
我还认为您需要在代码中使用 one-of
,以便在每个步骤中只生成一个 link。
在每个 tick 后杀死 links 以限制海龟的 links 数量:
您可以在 communicate
子过程的末尾使用它来杀死额外的 links。它有一个随机删除 links 的缺点,也可能从具有较少 link 的海龟而不是那些可能也有额外 links 的海龟中删除 link。
ask turtles with [count my-links > LIMIT] [ if count my-links > LIMIT [ask n-of (count my-links - LIMIT) my-links [die]] ]