问题标签 [agent-based-modeling]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
hardware - 在 NetLogo 中设计用于空间显式建模的计算机
我进行了各种搜索,但尚未找到讨论如何构建用于 NetLogo 的建模计算机的论坛或文章。我希望开始这样的讨论,并且由于 NetLogo 的内存使用与世界的大小成正比,并且与 BehaviorSpace 并行运行的模拟数量,存在一个将足够的硬件与 NetLogo 需求相关联的公式似乎是合理的。
例如,我计划在大约 12 公里 x 12 公里的景观中运行一个元种群模型,对应于像素大小为 1 的 12,000x12,000 的 NetLogo 世界,分辨率为 1 米(与动物的运动行为相关) )。较早的一篇文章描述了一个大世界(如何在 NetLogo 中模拟一个非常大的世界?),并讨论了减少大世界需求的潜在方法(http://netlogo-users.18673.x6.nabble.com/Re -Relogo-td4869241.html#a4869247 的谣言)。另一篇文章描述了一个 3147x5141 的世界,并且使用的是具有 64GB RAM 的 Linux 计算机(http://netlogo-users.18673.x6.nabble.com/Java-OutofMemory-errors-for-large-NetLogo-worlds-suggestions-请求-td5002799.html)。显然,计算机运行大型 NetLogo 世界的能力变得越来越重要。
据推测,对于能够访问基于 Windows 的机器的大学研究人员而言,“最佳”解决方案是运行 16GB 到 64GB 的 RAM,配备六核或八核处理器,例如能够超线程以并行运行多个模拟的 Intel Xeon与行为空间。例如,我在一台机器上使用 SELES(2001 年秋季和秋季),该机器具有 6 核 Xeon 处理器并启用了超线程和 8GB RAM,以运行 12,000 次复制具有 1 米分辨率光栅图为 1580x1580 的模型。这充分利用了计算机的能力,运行模拟大约需要一个月的时间。
所以 - 如果我要在 NetLogo 中运行 12,000 个 12,000x12,000 世界的复制品,那么计算机的“最佳”选项是什么?在没有达到最新和最强大的处理能力的情况下,我认为最经济合理的选择是具有双 Xeon 处理器(可能是 8 核 Ivy 桥)和 64GB RAM 的服务器主板。这是否是一个足够的设计,或者是否有更便宜(或不)用于这种规模的建模的替代方案?此外,是否存在处理器/RAM 组合的“指南”来应对随着世界规模和并行模拟数量的增加而增加的 NetLogo 对内存的需求?
modeling - 在 NetLogo 中实现时间延迟
我正在尝试为 NetLogo 程序中的性能指标实现时间滞后。这是我目前正在尝试编写的代码,但我不知道如何在以下公式中实现 (t-1) 因子:
性能(t) = θ × 性能(t−1) + (1 - θ) π(t), 0 < θ < 1
现在我离开它是这样的:
但是我的模型没有给出合法的结果(因为据我所知,这个公式没有考虑时间滞后)。
完整代码:
agent-based-modeling - 是否可以立即从 IDE 执行 REPAST 模型
是否可以在不查看 GUI 的情况下直接运行我的模拟?我感兴趣的只是控制台输出数据,因此我无需与 GUI 交互来播放、暂停或重置我的模拟。
java - 相当于 GridCellNgh 的对象?
我正在使用 Repast Simphony 在 Eclipse 中使用 java 构建模拟。模拟具有在“地理”上下文中运行的代理类。
代理可以在其他上下文中移动,包括“网格”和“空间”。这些是 2D 投影,其中“地理”上下文是 GIS 投影。
“网格”包与“地理”包一样带有一组对象/方法。网格包中的其中一个称为 GridcellNgh,它在特定网格点周围创建摩尔邻域或“过滤器”。有谁知道可以执行与 GridCellNgh 类似功能的对象,该对象将在 Geography 包投影中工作?
http://repast.sourceforge.net/docs/api/repast_simphony/repast/simphony/space/gis/Geography.html
或者也许可以在上下文中同时构建一个网格和一个地理?(我认为这不太可能,因为 Geography 是 GIS 投影,而 Grid 是 2D 投影)。
random - 如何在 Netlogo 中创建随机二进制/布尔变量
我想为每只海龟分配一个随机布尔变量,但我没有看到一个可以模拟伯努利分布的平局的函数。
这很接近,但很尴尬:
有人知道更好的方法吗?
real-time - 如何使用 NetLogo 从网站获取实时数据?
我们试图让 NetLogo 获取实时数据,但我们没有发现任何有用的在线线程可以告诉我们如何。
我们在第一阶段使用历史股价数据来训练我们的代理。训练阶段结束后,我们希望使用实时数据来测试代理生成的策略。为此,我们需要 NetLogo 在线获取实时数据。有没有办法让 NetLogo 在线阅读股票价格,例如。雅虎财经,并自动运行?
您能给我们一些关于如何在 NetLogo 中实现这一点的提示吗?如果 NetLogo 无法做到这一点。谁能推荐其他可以做到这一点的基于代理的建模工具?
谢谢。
java - 降低基于代理的模型的复杂性
我正在开发一个基于代理的模型来模拟细胞培养的体外生长。
我正在使用 MASON 库(Java),但我猜测可能适用于不同的实现。
本质上,我的代理程序被编程为在创建后每 12 +/- 2 个时间步进行划分。每次代理分裂时,都会将一个新代理添加到模拟中。
这导致问题复杂性的快速增长,这很快使模拟变得特别慢。
为了解决这个问题,我决定代理应该在创建的t个时间步之后“死亡”。
但是,MASON 的调度是建立在 BinaryHeap 之上的,一旦添加了对象(代理),就不容易删除它们。我的解决方案是设置一个布尔标志:
在t个时间步之后设置为 true 。
所以
然后我开始我的 step 方法,即每次执行 agent 时调用的方法,如下所示:
但是,我知道只需访问计划中的对象就足以减慢模拟速度。
有人对我如何取消设置代理或阻止它被调用有任何建议吗?
谢谢,达里奥
java - 模拟滞后
大家好,我已经制作了一个基于代理的模型。代理可以随机移动并使用 A* 算法移动到一个地方到另一个地方。有两个主要集合1)到达队列(arraylist)和2)主要代理(arraylist)。所有代理最初都被放入到达队列中,代理以特定的时间间隔被放入模拟中,例如每 400 个模拟步骤有 100 个代理)。
我遇到的问题是每次我将代理人数从 3000+ 增加时,模拟就会开始滞后。我还使用 Java 2D 库来可视化 2D 代理数组。Bellow ive 添加了我的应用程序的 visualVM 的屏幕截图,显示了被调用最多的方法(CPU 时间)。
gis - Netlogo 和 GIS 扩展:在某些计算机上工作,而不是在其他计算机上工作
我们目前正在使用 Netlogo 中的 GIS 开发 ABM。我们正在尝试使用多台计算机来运行模拟。在其中两台计算机上,模型运行良好,但在第三台计算机上,GIS 数据将加载,然后不会显示。经过多次测试,我们发现其中一个数据集的世界信封与其他三个不同。有谁知道如何纠正这个问题?我们已经尝试转换数据并检查以确保我们在所有三台计算机上都有相同的数据文件,但这似乎对我们的问题没有帮助。
matlab - 计算角锥中的最近点
图1
在上图中,有 3 个代理i_1
,即i_2
和i_3
。对于每个代理,我知道速度 ( v_x, v_y
) 和位置 ( x,y
)。
我希望计算视锥内最近的代理,比如代理的x
度数。(上面描述的视锥为i_1
)
在上图中,考虑到 i_1:计算结果应该是 i_2。
我幼稚的做法是先计算出i_1
方向tan(vx/xy)
。现在用 i_1
的坐标计算方向上的线。22.5
然后左右旋转线22.5
。现在从左到右迭代步长=〜0.01
度,并计算每个方向与代理的距离的交点。以最短距离存储代理。
但这是非常低效的。我将不胜感激更好的方法。