Netlogo——用网络外的海龟更新外链

Netlogo - updating outlinks with turtles outside the network

我需要快速学习NetLogo,所以我转向这里寻求帮助。我花了很多时间试图解决这个问题,但我认为任何更有经验的人都能提供帮助。

我正在为海龟创建一个影响网络,它需要时不时地随机调整自己。我使用了以下运行良好的命令:

ask turtles [create-links-to n-of (S) other turtles]

其中 S 是我的海龟总数。我使用 links-to 是因为一只乌龟受到另一只乌龟的影响,但不一定影响另一只乌龟。到目前为止,一切都很好。问题是我还需要进行网络更新,这样海龟有 5% 的概率通过关闭其中一个链接并与网络外的人创建一个新链接来调整他们的网络。以下几行:

if random 101 < 5 [
  create-links-to n-of 1 other turtles
  ask one-of links [die]
]

不要真的这样做,因为海龟可能最终会在整个模拟过程中选择现有链接之一,最终会减少网络中的链接总数,这应该会保持稳定。

有什么想法吗?

非常感谢, 佩德罗

我无法测试这个,但你会想要这样的东西:

if random 100 < 5
[ let target one-of (other turtles with [not member? self link-neighbors])
  ask one-of links [die]
  create-links-to target
]

not member? self link-neighbors 排除了所有已经 link 的海龟。之所以先选择然后死亡再创造,是为了避免创造和死亡是一样的link.

我还略微清理了您的代码。首先,one-ofn-of 1 的作用相同,但更易于阅读。其次,随机 101 生成 101 个随机数(0、1、2、... 100)中的任意一个,因此 5/101 小于 5%。所以我将 101 更改为 100。请注意,使用 random-float 1 < 0.05 通常更容易,因此您可以使用相同的代码结构来获得任何概率。