使用 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)
我使用 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)