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

0 投票
2 回答
1393 浏览

python - 具有高级可视化的python下的ABM

抱歉,如果这一切看起来都不太清楚,但我目前正在学习 Netlogo 来模拟基于代理的集体行为,并希望听到一些关于替代软件选择的建议。我的主要事情是我非常想利用 PyCuda,因为据我了解,它支持并行计算。但是,这是否意味着我仍然必须在其他环境中编写数字脚本并在另一个环境中实现视觉效果???

如果是这样,我的问题是:

  1. 我应该使用什么数字包?PyEvolve、DEAP 还是其他?PyEvolve 似乎不再被开发,而 DEAP 只是过时的(?)EAP 的包装。

  2. 图形方面,我发现 mayavi2 和 vtk 很有希望。问题是,没有一个数字包似乎很容易绑定到这些。除了将数值输出保存到数据文件并将它们输入到 mayavi2 之外,没有更好的选择吗?

  3. 另一种选择是通过 Netlogo 生成数据并将它们从 (2) 输入到图形包中。这样做有什么缺点吗?

非常感谢您阐明这种困惑。

0 投票
2 回答
628 浏览

simulation - 仿真与软件工程

我想开始一个模拟项目,这将是一个离散时间的模拟。目的是模拟涉及一些非自治物理模型的代理通信,因此不一定限于纯粹的基于代理的模拟。在开始之前,我想问一下确实存在哪些特定于仿真的软件工程实践,例如测试实践(适合 TDD?仿真往往是高度不确定的),从软件工程的角度来看,哪些问题是常见的、经常发生的问题等等。我说的不是建模过程,而是使用现有模型实现系统的过程。非常欢迎相关书籍推荐。

谢谢。

0 投票
1 回答
323 浏览

objective-c - Objective-C 中基于代理的建模项目的同步和线程化

首先,我是一名 Objective-C 新手。我的大部分背景都是 Java。另外,由于大多数 Objective-C 问题都围绕 Cocoa,我应该指出这是在GNUStep上。

对于一个学校项目,我正在创建一个简单的基于代理的建模框架。这些框架通常用于模拟复杂系统(如疾病的传播)。我的框架有两个主要对象:一个世界和一个错误。世界由“层”组成,每个层都与一个环形网格相关联。世界可以由虫子组成,每个虫子都有一个 x 和 y 坐标,以及它所属的层。

我的总体想法是用错误填充世界,然后为每个错误触发线程并让他们做他们想做的事。您可以通过子类化主Bug类并实现act协议中定义的方法来创建任何类型的错误。这样您就可以拥有各种类型的自定义错误和自定义行为。Bug 应该能够与世界以及彼此交互(从世界中删除错误,向世界添加错误,移动自身)。正如你所看到的,这很快就会走向多线程地狱。

目前我有很多@synchronized障碍,我很难确保世界始终保持一致的状态。这变得特别困难,因为错误需要与世界通信并对其采取行动,反之亦然。我正在尝试实现一个名为 a 的简单错误RandomBug,它会在世界各地随机移动。即使这也被证明是困难的,因为我看到了状态可能被破坏或无效的潜在问题。

我开始看一看,NSOperation因为NSOperationQueue看起来这可能会让事情变得更容易。我有两个与此有关的问题:

  • 是否有一种简单的方法可以NSOperation重复执行 s(即,以特定的时间间隔)。
  • 如果我将线程上的最大并发操作数设置为 1,我还需要@synchronized块吗?在给定时间不会只有一个线程与世界交互吗?
  • 有没有更好的方法来解决这类问题(多个线程以重复的方式与一个共享资源交互)?
  • 我应该完全放弃线程并简单地遍历世界上的错误并以随机方式激活它们吗?
0 投票
1 回答
865 浏览

objective-c - 从线程异步更新 NSView

首先,我是一名 Objective-C 新手。所以我对 OS X 或 iOS 开发不是很熟悉。我的经验主要是在 Java 中。

我正在创建一个基于代理的建模框架。我想显示模拟并为此编写一个小应用程序。首先,关于框架。该框架有一个World类,其中有一个start方法,该方法遍历所有代理并让它们执行其任务。在世界的一个“步骤”结束时(即,在所有代理都完成了他们的事情之后),该start方法调用intercept实现的对象的方法InterceptorProtocol。该对象之前是通过构造函数传入的。使用拦截器,任何人都可以了解世界的状态。这对于日志记录很有用,或者在我试图完成的场景中:以图形方式显示信息。调用intercept是同步的。

现在就 GUI 应用程序而言,它非常简单。我有一个初始化自定义视图的控制器。这个自定义视图还实现InterceptorProtocol了它可以监听世界上发生的事情。我创建一个World对象并将视图作为拦截器传递。视图通过私有属性维护对世界的引用,因此一旦我初始化了世界,我将视图的世界属性设置为我刚刚创建的世界(我意识到这会创建一个循环,但我需要对视图方法中的世界,drawRect我能拥有它的唯一方法是如果我从类中保持对它的引用)。

由于世界的start方法是同步的,我不会立即启动世界。在drawRect方法中,我检查世界是否正在运行。如果不是,我在后台线程中启动它。如果是,我会检查这个世界并显示我需要的所有图形。

在方法中(从后台线程上运行intercept调用),我设置为. 由于世界的方法在一个单独的线程中运行,所以我还有一个用于同步的锁定对象,这样我就不会在它被变异时处理该对象(这部分有点笨拙,它可能不工作我期望它的方式 - 有不止几个粗糙的地方,我只是想努力工作;我计划稍后清理)。startsetNeedsToDisplayYESstartWorld

我的问题是视图渲染了一些东西,然后它几乎被锁定了。我可以看到NSLog正在调用语句,因此代码正在运行,但视图上没有任何更新。

这是一些相关的代码:

主视图控制器

世界观

World.m中的启动方法:

如果您想查看任何其他代码,请告诉我。我意识到代码并不漂亮。我只是想让东西正常工作,我计划稍后清理它。另外,如果我违反了 Objective-C 最佳实践,请告诉我!

走出去一点;抱歉,如果我没有立即回复!

0 投票
1 回答
372 浏览

python-2.7 - 为什么一个对象不能在 Python 包 ComplexNetworkSim 中使用方法作为属性?

我正在尝试使用继承自networkxSimPy的 Python 包ComplexNetworkSim来模拟消息如何在网络中传播的基于代理的模型

这是我的代码:

(此代码下游可能存在其他问题,并且尚未经过全面测试。)

我的问题是myAgent 对象没有正确调用方法 Run as a attribute。具体来说,这是我尝试运行上述代码时收到的错误消息:

有人知道这是为什么吗?我无法弄清楚我的代码与ComplexNetworkSim中的示例有何本质不同。

0 投票
2 回答
148 浏览

frameworks - 具有时间交互的基于代理的建模?

我需要找到一种基于代理的语言或框架,允许用户“倒带”模型、更改一些参数并查看它如何使用新参数进行开发。基本上 - 一个允许其用户在模拟中进行时间旅行并分支不同时间线的 ABM。

存在这样的东西吗?

0 投票
1 回答
2750 浏览

algorithm - Netlogo,创建避障算法

我在 NetLogo 中模拟行人运动,并且在从头开始创建避障算法时遇到了麻烦。网上有算法,但它们不适合移动障碍物(其他行人)。此外,我的代理正在从他们的生成点(A 点)移动到他们的目标(B 点)。

这是我的 NetLogo 算法:

本次模拟的模拟环境是一个路口:

http://imgur.com/nQzhA7g,R5ZYJrp#0

(对不起,我需要 10 个代表来发布图片:()

图 1 显示了设置后的环境状态。图 2 显示了代理移动到他们的目标(目标!= 他们的生成点)后会发生什么。面向不同方向的特工显示了从中心的特工杂乱无章中走出来的特工,现在正朝着他们的目标前进。然而,由于我的算法,中心的代理被困在那里。当代理数量更多时,模拟会出现更多问题,这意味着它们只会在环境中心杂乱无章,并且在移动时会卡顿。

我的算法基于http://files.bookboon.com/ai/Vision-Cone-Example-2.html。原谅我的算法,我一周前开始在 NetLogo 中编程,直到现在我仍然没有正确的心态来编程。我确信有更好的方法来实现我的想法,但是我在尝试许多我想到的实现时感到沮丧(但从未接近真实的东西)。

PS:这是我在 StackOverflow 中的第一篇文章/问题!我希望我的问题(以及我的提问方式)还不错。

0 投票
0 回答
65 浏览

process - 评测网编辑

我正在寻找评估网的编辑器(E-net,Petri 网的扩展)。

就像是:

我只发现了这个问题,并没有发现任何关于他的作品的结果。

我正在使用评估网而不是 petri 网来对基于代理的协商协议进行建模,因为在本期中,图表更易于阅读。

0 投票
2 回答
605 浏览

multithreading - 使用本地编程语言进行基于代理的编程

所以基本上我有兴趣建立一个基于代理的战场模拟。

基于代理的模型有很多框架,例如 JADE 等。但是由于某些限制,我只能使用本地编程语言(例如 C++ 或 Java)来实现它,而没有任何框架或库。

我在谷歌搜索过,但似乎找不到任何关于面向代理编程的好的教程。

我应该从哪里开始?或者有没有针对基于代理的编程的完整初学者的教程?

THX b4

0 投票
0 回答
136 浏览

python - 在基于代理的模型中存储/记录代理特定值的 Pythonic 方式?

我想跟踪特定于代理的变量,但我不确定 pythonic 的方法。

例如,我有 400 个家庭随着时间的推移收款和花钱。每个家庭作为一个唯一的 ID,通过该 ID,家庭特定变量(收入、消费)应该是可调用和可变的。我必须跟踪特定变量,因为实际的代理决策取决于过去的决策(例如,在之前的时间步中花费)。

因此,对于一个变量,您可以创建 400 个列表(通过键入它们?不可能),或者您可以创建一个具有 400 列(行 = 时间步 t 中的值)的 numpy 数组,并且列索引对应于家庭 ID,或者您可以...当然,特定于代理的变量应该可以用于数学运算,例如求和或均值。

有更好的建议吗?