问题标签 [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.

0 投票
1 回答
59 浏览

mesa-abm - 在 gis 形状文件的折线顶点处创建节点

我是 mesa 的新手,但之前使用 netlogo 创建了一个 ABM(基于代理的模型)。我知道 Mesa ABM 平台有一个名为 geo-mesa 的 Gis 扩展。我感兴趣的是,如果有道路网络(折线)shapefile,是否可以允许代理在这些道路上移动。(在 Netlogo 中,您通过在折线的顶点创建一个节点(一种代理)来实现此目的,允许代理通过从一个节点跳到另一个节点来遍历道路网络。)在 mesa/geo mesa 中是否有类似的可能。此外,除了 mesa 和 geo-mesa 网站 Geoschelling 模型中的教程之外,是否还有其他使用 mesa 创建的模型。提前感谢任何有用的评论

0 投票
0 回答
96 浏览

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 时,我可以避免迭代。下面给出了如何创建每个“代理”然后将其分配给台面网格的示例(景观补丁)。

目前我的代码有效,但我知道必须有更有效的方法来实现这个结果。“构建”景观所需的时间是几分钟,我希望能构建数千个!任何有关如何提高效率的帮助将不胜感激。谢谢

0 投票
1 回答
193 浏览

python - Python Mesa 高级教程 - 启动服务器时出错

嗨,我是 python 和基于代理的建模的新手。

在运行可视化代码时,我正在关注mesa 高级教程并获得 NotImplementedError。

我之前遵循介绍性教程并成功创建了正常运行的 MoneyAgent 和 MoneyModel 类。

我在(高级教程)代码中复制如下:

但是得到一个“NotImplementedError”:

任何人都可以帮忙吗?

0 投票
1 回答
972 浏览

python - 在 MESA 中删除代理

我正在使用 MESA 来模拟 COVID-19 的传播。我想删除死掉的代理,但是当我在网络上运行它时,即使我将死亡率设置为 100%,代理也不会减少。

0 投票
0 回答
44 浏览

python - Python mesa ModularServer错误'int'对象不可调用

嘿,我正在使用 Python 库 Mesa 进行基于代理的建模。

我已经将“网络上的病毒”模型改编为我自己关于利益相关者参与智能城市的研究,并陷入调试 ModularServer 的问题,该服务器在 python 中的模型与其在 javascript 中的浏览器界面之间创建了链接。

这是我的代码:

这是错误:

0 投票
0 回答
112 浏览

python - Python Mesa - 如何创建一个函数来调用随机代理

我对编码很陌生,并且正在使用一个名为 Mesa 的基于 Python 代理的建模库。我正在尝试创建一个将电视广告添加到模型中的函数,其数量取决于数量 ads_per_hour。我的代码如下 - 第一个块是正在制作的代理,第二个是问题。该模型可以被可视化为一个 20x20 的正方形网格,代理在其周围游荡。

我认为我目前正在做的是调用随机单元并查看其中是否有老年特工,但这可能意味着电视广告可能会比我预期的要少。相反,我要做的是创建一个 ElderlyCitizen 类的所有代理的列表,并从中随机尝试 ads_per_hour 代理数。

有没有一种简单的方法可以从调度程序中调用 30 个随机代理?我有其他类型的代理人,所以我需要确保他们只是被呼叫的老年人。提前致谢。

0 投票
1 回答
66 浏览

python - python:运行台面模拟 - 如何保存每次运行的结果?

我正在使用这个mesa 框架,它有两个主要文件:model.pyserver.py。构建的模拟只运行一次,但我想运行几次,前 5 次,但保存每次运行的值。我正在使用命令行运行代码,每次运行后我都可以单击“重置”按钮'复位按钮再次运行模拟。当我单击“重置”时,代码当前会清除所有内容,但我想知道是否可以将模拟结果保存在某处,以便在多次迭代后计算平均值。我想创建一个蒙特卡罗模拟,但意识到这是不可能的,因为它需要人工干预才能运行,而蒙特卡罗模拟自己运行。

现在我想简化并能够在每次迭代后保存所有值。这听起来很容易,但由于框架的性质,我不确定这是否可能。在再次调用它之前,我需要能够存储这些值

如果这可以实现,有没有人有任何想法?我过去几天都在这上面,不确定这是否可能。我检查了 stackoverflow 是否有类似的问题,但没有找到任何问题。

抱歉所有更新,我试图简化为基本问题。

提前感谢您的帮助。

0 投票
0 回答
39 浏览

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]

目标

  1. 爆炸infecteddegree distribution(!!注意:infected有一个固定的长度(= nb_steps)但不是degree distribution(其长度变化))。
  2. 将所有内容合并到一个数据集中

当前解决方案

我使用以下辅助函数来分解不同的列

我使用如下:

结果

限制

它可以工作,但速度很慢而且非常不雅。--> 有什么更好的处理方式?

0 投票
0 回答
13 浏览

python - Mesa 模拟中的背景图像

在 Netlogo 中有一个叫做 import-drawing 的函数:

import-drawing filename Observer 命令 将图像文件读入绘图,将其缩放到世界大小,同时保留图像的原始纵横比。图像在绘图中居中。旧图先不清除。

Mesa有类似的东西吗?

我正在尝试将背景图像强加到代理的网格上。特别是,我想强加一个地图图像,代理可以在地图上的不同点之间跑来跑去。关于如何在 MESA 中执行此操作的任何想法?

此外,是否有与 Mesa 等效的Netlogo Dictionary 。我很难找到关于我想要的示例/文档。