是否可以对基于代理的模型进行矢量化?

时间:2015-11-16 05:16:47

标签: python optimization vectorization agent-based-modeling

我使用Python对象在Python中实现了自己的基于代理的模型(ABM)。具体来说,这是Virus对象和Host对象的模型,其中Virus对象存在于Host对象(存储在列表中)中,可以与其他Virus对象交换基因,并且可以在Host对象接触时传输到另一个Host对象。

OOP方式使其灵活且易于编程,但是我很难加速,例如,使用PyPy或numba,或者将一些代码移动到Cython。加速总是好的,所以我不会讨论为什么我想在这里做到这一点。

但我的问题更为根本。是否可以对这些模型进行矢量化?或者,这种模型的层次性和相互依赖性是否使得使用向量和矩阵在逻辑上无法实现?

1 个答案:

答案 0 :(得分:1)

这几天没有任何回应,所以我会看看我是否可以进行辩论。我对Python不够熟悉,无法给出明确的答案。但它可能取决于您尝试编码的交互(代理之间或代理及其环境之间)的详细信息。如果可以接受这样的事情:

  

1 /根据当前情况计算每个代理的行为并存储在“下一个时间步”变量中

     

2 /将变量更新为“下一个时间步长”值

那么原则上不应该有任何问题。但这正是ABM构建者经常使用专门的ABM语言(如NetLogo)或OOP语言的原因。您可以查看Repast Py如何处理这些问题。