NetLogo 可以处理数百万个代理吗?
Can NetLogo handle millions of agents?
对于一个项目,我们需要在 NetLogo 和 RepastS 之间做出选择。
我们将建立一个机构网络模型,人们在这些机构之间流动。人们进出这些以黑匣子形式实现的机构。我们认为为此使用 NetLogo 没有问题。该项目的扩展将明确实现具有交互代理的机构。这些交互发生在与宏观层面更新(机构之间的移动)不同的时间尺度上。
1) NetLogo 能否处理潜在的数百万代理(在机构之间移动并在机构内部交互)和 2) NetLogo 能否处理在不同时间尺度和粒度上运行的代理?
1) 请参阅 NetLogo FAQ on how big models can be 以及如何增加其内存容量。
数百万代理人绝对有可能,但远非常见。我听说有一个实验室在他们的模拟中使用了大约 700 万个代理(运行在一个集群上)。
在我的笔记本电脑上,增加内存限制后(请参阅常见问题解答),我能够轻松创建数百万个代理并让他们做一些琐碎的事情。每个ask
3-400 万也大约 1-1.5 秒。
2) 绝对!为此检查 LevelSpace extension(与 NetLogo 捆绑在一起)。它允许 NetLogo 模型打开并与其他 NetLogo 模型交互。因此,在您的情况下,您将创建一个用于机构内交互的模型,然后为机构之间的旅行创建另一个模型,该模型打开了许多机构模型,它可以向其中添加代理并从中删除代理。然后,您可以 运行 相对于您的主要模型,您想要的任何规模的机构内模型。
此外,通过 LevelSpace 在模型之间分布代理通常 运行 会更快一些。当调用多个模型时,LevelSpace 将自动并行化操作。
对于一个项目,我们需要在 NetLogo 和 RepastS 之间做出选择。
我们将建立一个机构网络模型,人们在这些机构之间流动。人们进出这些以黑匣子形式实现的机构。我们认为为此使用 NetLogo 没有问题。该项目的扩展将明确实现具有交互代理的机构。这些交互发生在与宏观层面更新(机构之间的移动)不同的时间尺度上。
1) NetLogo 能否处理潜在的数百万代理(在机构之间移动并在机构内部交互)和 2) NetLogo 能否处理在不同时间尺度和粒度上运行的代理?
1) 请参阅 NetLogo FAQ on how big models can be 以及如何增加其内存容量。
数百万代理人绝对有可能,但远非常见。我听说有一个实验室在他们的模拟中使用了大约 700 万个代理(运行在一个集群上)。
在我的笔记本电脑上,增加内存限制后(请参阅常见问题解答),我能够轻松创建数百万个代理并让他们做一些琐碎的事情。每个ask
3-400 万也大约 1-1.5 秒。
2) 绝对!为此检查 LevelSpace extension(与 NetLogo 捆绑在一起)。它允许 NetLogo 模型打开并与其他 NetLogo 模型交互。因此,在您的情况下,您将创建一个用于机构内交互的模型,然后为机构之间的旅行创建另一个模型,该模型打开了许多机构模型,它可以向其中添加代理并从中删除代理。然后,您可以 运行 相对于您的主要模型,您想要的任何规模的机构内模型。
此外,通过 LevelSpace 在模型之间分布代理通常 运行 会更快一些。当调用多个模型时,LevelSpace 将自动并行化操作。