使用 agentpy,如何在模拟期间创建代理

Using agentpy, how to create an agent during a simulation

我使用 agentpy 对一家公司进行了简单模拟。它在模拟晋升方面做得很好,但我也希望能够模拟人们加入和离开公司。

离开很容易,我可以设置一个标志为inactive什么的,但是加入就比较复杂了。我是否需要在设置过程中制作一堆代理并将它们的状态设置为 尚未知,或者我可以在一个步骤中创建一个代理并将它们添加进去吗?

人class是这样定义的:

class PersonAgent(ap.Agent):

    def setup(self):
        p = PEOPLE_DF.iloc[self.id] #  the existing people are in a spreadsheet
        self.name = p.full_name
        self.gender = get_gender(p.gender)
        self.bvn_rank = get_rank(p.b_rank)
        # self.capability = float(p.capability)
        print()

    def rank_transition(self):
        self.bvn_rank = transition(self.b_rank, self.gender)

我想我会用 __init__ 做点什么,但我没有运气弄清楚。

是的,您可以在模拟步骤中启动新代理。

这里有一些例子:

class MyModel(ap.Model):

    def setup(self):

        # Initiate agents at the start of the simulation
        self.agents = ap.AgentList(self, 10, PersonAgent)

    def step(self):
        
        # Create new agents during a simulation step
        self.single_new_agent = PersonAgent(self)
        self.list_of_new_agents = ap.AgentList(self, 10, PersonAgent)
        
        # Add them to the original list (if you want)
        self.agents.append(self.single_new_agent)
        self.agents.extend(self.list_of_new_agents)