首页 > 解决方案 > Python中基于代理的建模:定义一个以timestep为参数的step方法

问题描述

我正在使用 Python 的“mesa”库来定义基于代理的模型。我在定义代理和模型的 step 方法时遇到了问题。特别是,如果代理在模拟的第一个时间步中采取行动,我希望它们以某种方式表现,如果它们操作的时间步在第一个时间步之后,我希望它们以不同的方式表现。我试图实现的方式是(以下是代理步骤方法):

def step(self, timestep):
    if timestep == 0:
       self.behaviour_1()
    else self.behaviour_2()

模型步骤方法将是:

def step(self, timestep):
    self.schedule.step(timestep)
    self.datacollector.collect(self)

运行文件的结构如下:

for i in range(15):
    model.step(i)

不幸的是,当我运行它时,我收到一条错误消息:“step() 采用 1 个位置参数,但给出了 2 个”。我该如何解决这个问题?

标签: pythonagent-based-modeling

解决方案


推荐阅读