我想知道基于代理的建模存在哪些类型的工具包、语言、库,它们的优缺点是什么?
10 回答
我发现 2009 年 6 月的一项调查回答了您的问题:
基于代理的建模和仿真工具的调查
金。RJ艾伦
抽象的
基于代理的建模和仿真是一种基于离散事件仿真的计算要求高的技术,起源于遗传算法。它是模拟动态复杂系统和观察“紧急”行为的强大技术。ABMS 最常见的用途是社会模拟和优化问题,例如交通流和供应链。我们将研究计算科学和工程中的其他用途。ABMS 已经适应在新的架构上运行,例如 GPGPU(例如使用 CUDA 的 nVidia)。阿贡国家实验室在 Exascale ABMS 上有一个网站,并在 SciDAC 计划的资助下在 IBM BlueGene 上运行模型。我们计划在 2009 年夏天组织一次关于 ABMS 方法和应用的研讨会。关键词基于代理的建模,考古学
我也推荐NetLogo。它是一种基于 logo(基于 Lisp)的 IDE+环境+编程语言,可让您非常快速地构建多智能体模型。我发现我可以在几个小时内从研究文章中重现(模拟)算法,而其他库需要数周才能实现的算法。
您可以在此页面上查看我的一些模型。
我在 OSCON 2008 上被介绍给了Dramatis,它是一个基于代理的 Ruby 和 Python 框架。作者 (Steven Parkes) 在他的博客中有一些参考资料,并且正在运行一个与语言无关的Actors 讨论列表。
erights.org 上的这个页面有很多参考资料,我认为是介绍和探索 Actors 消息传递模型的核心论文。
你还应该看看Madkit 和 Turtlekit
在建模方面,看看 FAML,一种面向代理的建模语言。这是一篇非常学术的论文,但根据您的兴趣,它可能会有所帮助:http: //ieeexplore.ieee.org/xpl/freepre_abs_all.jsp?isnumber=4359463&arnumber= 4967615
我知道这是一个旧线程,但我认为添加一些额外的信息不会有什么坏处。有一个很棒的新网站,专门用于基于代理的建模。该站点包含论文、教程、工具、资源和研究人员在多个领域从事基于代理的建模的链接。
旧线程,但为了完整起见,还有可用于 ABM的Anylogic和pyabm 。
我有在多种环境/语言中编写基于代理的模型的经验。我的看法是,如果你想实现一个相对简单的模型,使用 Netlogo。也可以将 Netlogo 用于重型模型(我已经成功地做到了),但在某些时候,像 java/python/c++ 这样的编程语言的灵活性超过了 Netlogo 中可用的本机方法的便利性,尤其是当性能成为主要问题时。
就餐变得有点臃肿。如果您是一位经验丰富的程序员,那么开始构建 ABM 真正需要的是安排事件和绘制随机数的能力。其余的(定义代理/环境及其行为)您可以自己制作。在管理模型中的对象时,请使用您习惯的常规数据结构(数组/哈希/树等)。为此,我正在开发一个非常轻量级的 Java 库,称为“ABMUtils”(在 github 上),它实现了一个调度程序并包装了一个随机数生成器。这处于早期开发阶段,但我希望在未来几个月内充实(保持简单)。
如果您是进化经济学家,您还可以查看模拟开发实验室 (LSD)。
PHP 和 Java 开发人员应该看看KATO。