描述基于代理的模型的最佳实践


14

我在数学生物学/流行病学方面投入了大量精力,其中大多数建模/计算科学工作仍由ODE集所主导,当然,有时它们是相当复杂的。这些模型的优点之一是它们很容易描述和复制。参数值表,方程式本身以及您已经给了他们所需的一切,以便他们以自己喜欢的任何方式来复制研究。

但是有些更复杂的模型已经开始变得越来越流行。基于代理的模式,特别是似乎都很难在出版物来形容,且难以复制的,因为他们并不一定完全由一组微分方程描述。在以读者理解发生的事情并使它们相对易于复制的方式描述这些模型之后,是否有任何指南(或仅有实践经验)?


1
我的理解是,正式描述的基于主体的模型与行为良好的常微分方程一样具有确定性,并且易于重现。您能指出文献中的一些具体例子吗?
阿隆·艾玛迪亚

@AronAhmadia许多基于代理的模型都依赖于不确定的组件。例如,MASON仿真库的创建者认为随机性非常重要,足以包括他们自己实现的随机数生成器...
Michael McGowan

@MichaelMcGowan-我对此感到担心。作为重现性策略的一部分,由随机数生成器驱动的仿真应该是可植入的,但是现在,科学家们必须依靠统计数据得出结论。
阿隆·艾玛迪亚

@AronAhmadia问题的一部分是,关于什么构成了ABM的正式描述,我从未见过太多安排。这就排除了随机性问题。
Fomite 2011年

Answers:


4

我不从事这项业务,但天真的我认为完整的描述包括三个部分

  1. 他们所居住的数据格局的描述。用数据结构(图形(有向或无向,加权或无权),树,数组,...)以及与每个节点关联的数据来描述。记下特殊情况处理,例如周期性边界条件或测试区域外邻居的假定状态。大概这与您的问题域有相当明确的联系。

  2. 对代理的内部状态及其决策方式的描述。再次,希望这有一个合理清晰的解释。

  3. 代理与环境之间的相对时间安排和/或动作同步以及更新的描述;在一对或一组代理之间。

伪代码(或实代码,如果实施细节不太污染的话)会有所帮助。


2

Volker Grimm等人提出了一种称为ODD(概述,设计和详细信息)的协议,用于描述基于代理的模型。它由理解ABM的功能所需的元素列表组成,旨在使这些模型的描述更加标准化。

必须说明的内容清单包括:

总览

  1. 目的
  2. 实体,状态变量和比例
  3. 流程概述和计划

设计

  1. 基本原则
  2. 紧急情况
  3. 适应
  4. 目标
  5. 学习
  6. 预测
  7. 感测
  8. 相互作用
  9. 随机性
  10. 集体
  11. 观察

细节

  1. 初始化
  2. 输入数据
  3. 子模型

更多细节可以在

Grimm,V.,Berger,U.,DeAngelis,DL,Polhill,JG,Giske,J.,&Railsback,SR(2010)。ODD协议:审查和第一次更新。生态模型,221,2760–2768。


1

到目前为止,最好的方法是将所有代码都包括在内作为补充材料。如果可能,还包括带有重新生成结果所需的随机种子的文件。这不仅使人们可以重新创建您的结果(您可能并不在意),还可以使他们更轻松地继续您的工作。这样可以为您的工作提供新的协作和引用。不幸的是,这带来了迫使您清理代码并确保其无bug的困难。因此,它比实际中的理想状态更为理想。但是至少,您应该存档用于生成结果的代码版本,这样,如果另一个研究人员要求提供代码,则可以生成它。

关于您的论文中的描述,然后我将集中于模型的关键新颖特征的高级,独立于实现的描述(这是大多数优秀论文所实现的实际部分)。专注于可以对结果进行定性改变的特征。我使用的大多数模型都会产生定量结果,但是通常不关心具体数量,而只是定性行为(因为参数通常与自然界中可观察到的参数相距甚远)。因此,我专注于描述模型的各个部分,如果这些部分发生变化,则会改变系统的定性行为。如果这种心态迫使我描述模型的每个细节到实现,那么我知道我的模型不是很健壮,因此应该废弃。

测试您的书面说明是否足够的一个好方法是,请没有与您一起完成此项目的朋友(或学生)描述他们如何实现模型是伪代码。如果他们在尝试时没有卡住(因为他们得出的模型草图应该产生相同的定性结果),那么您就知道您做得很好。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.