netlogo - 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]
]
不要真正做到这一点,因为海龟最终可能会在整个模拟过程中选择现有链接之一,最终会减少网络中应该保持稳定的链接总数。
有什么想法吗 ?
非常感谢,佩德罗
解决方案
我无法对此进行测试,但您会想要类似的东西:
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
,因此您可以对任何概率使用相同的代码结构。
推荐阅读
- amazon-web-services - Amplify() 表达式不计算为函数,因此无法调用
- c# - ASP.NET Core 项目中未命中断点
- movesense - Movesense:在连接潜在客户时获取精确的时间戳?
- asp.net-core - 所有浏览器的相同电影名称的PDF查看缓存问题
- java - Quarkus 如何使用不同的数据源进行读写查询?
- g++ - 最小化使用调试符号和使用 gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu 构建的二进制文件的大小
- javascript - 如何使用 Javascript 从浏览器中读取 .csv 文件?
- flutter - Flutter/Dart - 格式化持续时间以仅显示分钟、秒和毫秒?
- vue.js - 如何将组件的安装调整为来自该组件的数据?
- linkedin - 连接 API - “权限不足”