我在数学生物学/流行病学方面的工作量相当大,其中大多数建模/计算科学工作仍然由 ODE 集主导,诚然有时它们相当复杂。这些模型的优点之一是它们很容易描述和复制。参数值表,方程本身,你已经给了某人他们需要的一切,以他们想要的任何方式来复制你的研究。
但是更复杂的模型已经开始变得越来越流行。尤其是基于代理的模型,似乎既难以在出版物中描述,也更难以复制,因为它们不一定由一组 ODE 完美描述。是否有任何指导方针——或者只是实践经验——以读者理解发生了什么的方式描述这些模型,并使它们相对容易复制?
我在数学生物学/流行病学方面的工作量相当大,其中大多数建模/计算科学工作仍然由 ODE 集主导,诚然有时它们相当复杂。这些模型的优点之一是它们很容易描述和复制。参数值表,方程本身,你已经给了某人他们需要的一切,以他们想要的任何方式来复制你的研究。
但是更复杂的模型已经开始变得越来越流行。尤其是基于代理的模型,似乎既难以在出版物中描述,也更难以复制,因为它们不一定由一组 ODE 完美描述。是否有任何指导方针——或者只是实践经验——以读者理解发生了什么的方式描述这些模型,并使它们相对容易复制?
我不从事那个行业,但我天真地认为完整的描述分为三个部分
描述他们所处的数据环境。根据数据结构(图(有向或无向,加权或未加权);树;数组;...)和与每个节点关联的数据进行描述。记下特殊情况处理,例如周期性边界条件或测试区域外邻居的假定状态。大概这与您的问题域有相当明确的联系。
对代理的内部状态以及它如何做出决策的描述。同样,希望这有一个相当清晰的解释。
描述代理和景观之间行动和更新的相对时间和/或同步;以及代理对或代理组之间。
伪代码(甚至是真正的代码,如果它没有被实现细节污染太多)会有所帮助。
Volker Grimm 和其他人提出了一种称为 ODD(概述、设计和详细信息)协议的东西,用于描述基于代理的模型。它由理解 ABM 功能所需的元素列表组成,旨在使对此类模型的描述更加标准化。
必须描述的清单包括:
概述
设计
细节
更多细节可以在
到目前为止,最好的方法是将所有代码作为补充材料包含在内。如果可能,还包括具有重新创建结果所需的相关随机种子的文件。这不仅可以让人们重新创建您的结果(您可能不关心),还可以让他们更轻松地从您离开的地方继续。这允许对您的工作进行新的协作和引用。不幸的是,这带来了迫使您清理代码并确保其没有错误的困难。因此,它比实践中的通常情况更为理想。但至少,您应该存档用于生成结果的代码版本,这样如果其他研究人员要求提供代码,您就可以生成它。
就你论文中的描述而言,我将专注于对模型的关键新特性进行高级的、独立于实现的描述(这是大多数优秀论文实现的实用部分)。如果对它们进行调整,则专注于将定性改变结果的特征。我使用的大多数模型都会产生定量结果,但通常不感兴趣具体的数量,只有定性行为(因为参数通常与自然界中可观察到的参数相去甚远)。因此,我专注于描述模型的部分,如果改变将改变系统的定性行为。如果这种心态迫使我将模型的每一个细节都描述到实现,那么我知道我的模型不是很健壮,因此应该被废弃。
测试你的论文描述是否足够的一个好方法是请一个没有和你一起做这个项目的朋友(或学生)来描述他们如何实现你的模型是伪代码。如果他们在尝试这个时没有卡住(因为他们得出了一个应该产生相同定性结果的模型草图),那么你就知道你已经做了很好的描述工作。