基于代理的模拟:为什么 Netlogo 运行 比基于 Java 的 Repast 快得多

Agent-Based Simulation: Why Netlogo is running much faster than Java based Repast

大家都说 Jave 是一种用于大型系统和工程项目的语言,运行比大多数其他语言快得多。我只是将它与另一个基于代理的建模语言 - Netlogo 进行了比较,我发现 Netlog 运行s 在经典的狼羊模拟模型中比基于 Jave 的 Repast 快四倍。两个模型都使用相同的参数进行模拟,运行 实时 5 秒。 Netlogo 可以模拟超过 8000 个时间步,而 Jave Repast 只能执行大约 2600 个时间步。为什么?

如果您将 Netlogo 与 Repast Simphony wolf-sheep 捕食演示与默认设置进行比较,这不是一个公平的比较,因为 Repast 模型做得更多。 Repast 模型正在执行 file-based 数据记录、图表渲染、2D 显示渲染和 3D 显示渲染。 Repast 和 Netlogo 显示都有更新设置,这些设置决定了它们相对于滴答计数的渲染速度,并且显示渲染速度高度依赖于 GPU。

为了更好地比较性能,我们需要创建更准确的测试环境。我 运行 使用默认参数的 Netlogo 演示未选中 "view updates" 因此显示不会更新,但图表仍会更新。 运行 20,000 个刻度的模型大约需要 14 秒。我修改了 Repast 演示,删除了文件记录并关闭 2D 和 3D 显示,只保留图表显示,运行 模型显示 20,000 个刻度,这也需要大约 14 秒。因此,对于此演示,Repast 和 Netlogo 之间的性能完全相同。

我们还应该考虑到 Repast 和 Netlogo 中默认参数的演示模型都是复杂度有限的 TOY 模型。通常在科学研究中使用的更复杂的模型中,代理行为非常复杂,以至于个体行为计算时间比工具包框架代码时间长一个数量级,使得这些类型的比较无法提供工具包能力的信息.