首页 > 解决方案 > Netlogo - 使用网络外的海龟更新外链

问题描述

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

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

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

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

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

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

有什么想法吗 ?

非常感谢,佩德罗

标签: netlogoagent-based-modelingmulti-agent

解决方案


我无法对此进行测试,但您会想要类似的东西:

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排除了所有已经链接到的海龟。之所以有选择后死亡后创造,是为了避免创造和死亡是同一个环节。

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


推荐阅读