我有乌龟链接,如果它们的 var1 具有相同的值(这很好)。我想将链接数量限制为三个。我在代码的链接部分之前添加了一个 IF 语句(If count my-links < 3
),但不起作用;代理继续链接超过我设置的最大值。我读了另一个问题如何限制代理可以在模型中建立的链接数量 https://stackoverflow.com/questions/31007765/how-to-limit-the-number-of-links-an-agent-can-make-in-a-model但这似乎并不能完全达到我在这里尝试的目的。我究竟做错了什么?
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
在让海龟创建新链接之前限制它们的链接数量:
通过查看您的完整模块,正如 @JenB 提到的那样,似乎没有条件限制目标海龟用于建立链接的链接数量。
这是第一步:
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 且链接数小于 3)可能需要一个 if 语句。
我也认为你需要使用one-of
在您的代码中每一步仅创建一个链接。
每次勾选后终止链接以限制海龟的链接数量:
你可以在你的最后得到这个communicate
删除额外链接的子程序。它的缺点是随机删除链接,并且还可能从链接较少的海龟中删除链接,而不是从可能具有额外链接的海龟中删除链接。
ask turtles with [count my-links > LIMIT] [ if count my-links > LIMIT [ask n-of (count my-links - LIMIT) my-links [die]] ]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)