问题标签 [mesa-abm]
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.
mesa-abm - 在 gis 形状文件的折线顶点处创建节点
我是 mesa 的新手,但之前使用 netlogo 创建了一个 ABM(基于代理的模型)。我知道 Mesa ABM 平台有一个名为 geo-mesa 的 Gis 扩展。我感兴趣的是,如果有道路网络(折线)shapefile,是否可以允许代理在这些道路上移动。(在 Netlogo 中,您通过在折线的顶点创建一个节点(一种代理)来实现此目的,允许代理通过从一个节点跳到另一个节点来遍历道路网络。)在 mesa/geo mesa 中是否有类似的可能。此外,除了 mesa 和 geo-mesa 网站 Geoschelling 模型中的教程之外,是否还有其他使用 mesa 创建的模型。提前感谢任何有用的评论
python - 如何加快将 numpy 数组值分配给 Mesa 中的对象(代理)
我正在使用 mesa(基于代理的建模)来实现景观模型。为了生成景观,我使用了几个 numpy 数组 (800 x 800),每个数组都包含特定信息(例如海拔、土壤湿度等)。为了初始化模型,Mesa 遍历用户指定的网格大小(在本例中为 800 x 800)并将“代理”分配给网格上的每个“补丁”:
然后,使用此迭代器,我将 numpy 数组中的值分配给网格上的每个 x,y:
在 numpy 数组中,有一些我不需要分配给网格的 x、y 值,所以我目前使用一个简单的“if”语句来过滤掉这些值 ( if self.landscape.elevation[x, y] != -9999:
)。显然,通过使用 coord_iter 函数,我不可避免地会执行 800 x 800 次循环,而当 numpy 数组中的值 == -9999 时,我可以避免迭代。下面给出了如何创建每个“代理”然后将其分配给台面网格的示例(景观补丁)。
目前我的代码有效,但我知道必须有更有效的方法来实现这个结果。“构建”景观所需的时间是几分钟,我希望能构建数千个!任何有关如何提高效率的帮助将不胜感激。谢谢
python - Python Mesa 高级教程 - 启动服务器时出错
嗨,我是 python 和基于代理的建模的新手。
在运行可视化代码时,我正在关注mesa 高级教程并获得 NotImplementedError。
我之前遵循介绍性教程并成功创建了正常运行的 MoneyAgent 和 MoneyModel 类。
我在(高级教程)代码中复制如下:
但是得到一个“NotImplementedError”:
任何人都可以帮忙吗?
python - 在 MESA 中删除代理
我正在使用 MESA 来模拟 COVID-19 的传播。我想删除死掉的代理,但是当我在网络上运行它时,即使我将死亡率设置为 100%,代理也不会减少。
python - Python mesa ModularServer错误'int'对象不可调用
嘿,我正在使用 Python 库 Mesa 进行基于代理的建模。
我已经将“网络上的病毒”模型改编为我自己关于利益相关者参与智能城市的研究,并陷入调试 ModularServer 的问题,该服务器在 python 中的模型与其在 javascript 中的浏览器界面之间创建了链接。
这是我的代码:
这是错误:
python - Python Mesa - 如何创建一个函数来调用随机代理
我对编码很陌生,并且正在使用一个名为 Mesa 的基于 Python 代理的建模库。我正在尝试创建一个将电视广告添加到模型中的函数,其数量取决于数量 ads_per_hour。我的代码如下 - 第一个块是正在制作的代理,第二个是问题。该模型可以被可视化为一个 20x20 的正方形网格,代理在其周围游荡。
我认为我目前正在做的是调用随机单元并查看其中是否有老年特工,但这可能意味着电视广告可能会比我预期的要少。相反,我要做的是创建一个 ElderlyCitizen 类的所有代理的列表,并从中随机尝试 ads_per_hour 代理数。
有没有一种简单的方法可以从调度程序中调用 30 个随机代理?我有其他类型的代理人,所以我需要确保他们只是被呼叫的老年人。提前致谢。
python - python:运行台面模拟 - 如何保存每次运行的结果?
我正在使用这个mesa 框架,它有两个主要文件:model.py和server.py。构建的模拟只运行一次,但我想运行几次,前 5 次,但保存每次运行的值。我正在使用命令行运行代码,每次运行后我都可以单击“重置”按钮再次运行模拟。当我单击“重置”时,代码当前会清除所有内容,但我想知道是否可以将模拟结果保存在某处,以便在多次迭代后计算平均值。我想创建一个蒙特卡罗模拟,但意识到这是不可能的,因为它需要人工干预才能运行,而蒙特卡罗模拟自己运行。
现在我想简化并能够在每次迭代后保存所有值。这听起来很容易,但由于框架的性质,我不确定这是否可能。在再次调用它之前,我需要能够存储这些值
如果这可以实现,有没有人有任何想法?我过去几天都在这上面,不确定这是否可能。我检查了 stackoverflow 是否有类似的问题,但没有找到任何问题。
抱歉所有更新,我试图简化为基本问题。
提前感谢您的帮助。
pandas - 将 xarray 数据集(explode + combine_by_coords)与仅共享坐标子集的变量组合的有效方法
语境
我正在运行一个生成多个(networkx)图的模拟。(它实际上是一个基于台面代理的模拟,灵感来自网络上的病毒示例)并且由于随机性,我多次运行每组参数。
最小的例子
以下示例希望能够让您了解我想要实现的目标
这使
网络类型 | 跑 | nb_agents | 可能性 | 已感染 | avg_degree | degree_distribution |
---|---|---|---|---|---|---|
随机的 | 0 | 10 | 0.1 | [73 86 96 94 33 57 36 15 30 74] | 0.8 | [5 3 1 1] |
随机的 | 0 | 10 | 0.5 | [ 4 0 64 37 40 16 30 67 51 36] | 4.2 | [0 0 0 4 2 2 2] |
随机的 | 0 | 10 | 0.8 | [59 96 51 68 81 11 40 31 26 95] | 7.2 | [0 0 0 0 0 0 1 6 3] |
随机的 | 0 | 20 | 0.1 | [17 91 26 32 63 65 79 28 80 32] | 1.8 | [3 4 9 2 2] |
随机的 | 0 | 20 | 0.5 | [17 2 5 17 85 13 42 77 70 72] | 9 | [0 0 0 0 0 0 2 2 4 3 6 1 2] |
目标
- 爆炸
infected
和degree distribution
(!!注意:infected
有一个固定的长度(=nb_steps
)但不是degree distribution
(其长度变化))。 - 将所有内容合并到一个数据集中
当前解决方案
我使用以下辅助函数来分解不同的列
我使用如下:
结果
限制
它可以工作,但速度很慢而且非常不雅。--> 有什么更好的处理方式?
python - Mesa 模拟中的背景图像
在 Netlogo 中有一个叫做 import-drawing 的函数:
import-drawing filename Observer 命令 将图像文件读入绘图,将其缩放到世界大小,同时保留图像的原始纵横比。图像在绘图中居中。旧图先不清除。
Mesa有类似的东西吗?
我正在尝试将背景图像强加到代理的网格上。特别是,我想强加一个地图图像,代理可以在地图上的不同点之间跑来跑去。关于如何在 MESA 中执行此操作的任何想法?
此外,是否有与 Mesa 等效的Netlogo Dictionary 。我很难找到关于我想要的示例/文档。