Agents¶
The abce.Agent
class is the basic class for creating your agents.
It automatically handles the possession of goods of an agent. In order to
produce/transforme goods you also need to subclass the abce.Firm
or
to create a consumer the abce.Household
.
For detailed documentation on:
Trading, see Trade
Logging and data creation, see Observing agents and logging.
Messaging between agents, see Messaging.
-
class
abce.
Agent
(id, group, trade_logging, database, random_seed, num_managers, agent_parameters, simulation_parameters, check_unchecked_msgs, start_round=None)[source]¶ Bases:
abce.database.Database
,abce.trade.Trade
,abce.messaging.Messaging
Every agent has to inherit this class. It connects the agent to the simulation and to other agent. The
abce.Trade
,abce.Database
andabce.Messaging
classes are included. An agent can also inheriting fromabce.Firm
,abce.FirmMultiTechnologies
orabce.Household
classes.Every method can return parameters to the simulation.
For example:
class Household(abce.Agent, abce.Household): def init(self, simulation_parameters, agent_parameters): self.num_firms = simulation_parameters['num_firms'] self.type = agent_parameters['type'] ... def selling(self): for i in range(self.num_firms): self.sell('firm', i, 'good', quantity=1, price=1) ... def return_quantity_of_good(self): return['good'] ... simulation = Simulation() households = Simulation.build_agents(household, 'household', parameters={...}, agent_parameters=[{'type': 'a'}, {'type': 'b'}]) for r in range(10): simulation.advance_round(r) households.selling() print(households.return_quantity_of_good())
-
create
(good, quantity)[source]¶ creates quantity of the good out of nothing
Use create with care, as long as you use it only for labor and natural resources your model is macro-economically complete.
- Args:
- ‘good’: is the name of the good quantity: number
-
create_timestructured
(good, quantity)[source]¶ creates quantity of the time structured good out of nothing. For example:
self.creat_timestructured('capital', [10,20,30])
Creates capital. 10 units are 2 years old 20 units are 1 year old and 30 units are new.
It can alse be used with a quantity instead of an array. In this case the amount is equally split on the years.:
self.create_timestructured('capital', 60)
In this case 20 units are 2 years old 20 units are 1 year old and 20 units are new.
- Args:
- ‘good’:
- is the name of the good
- quantity:
- an arry or number
-
destroy
(good, quantity=None)[source]¶ destroys quantity of the good. If quantity is omitted destroys all
Args:
'good': is the name of the good quantity (optional): number
Raises:
NotEnoughGoods: when goods are insufficient
-
group
= None¶ self.group returns the agents group or type READ ONLY!
-
id
= None¶ self.id returns the agents id READ ONLY
-
init
(parameters, agent_parameters)[source]¶ This method is called when the agents are build. It can be overwritten by the user, to initialize the agents. parameters and agent_parameters are the parameters given in
abce.Simulation.build_agents()
-
name
= None¶ self.name returns the agents name, which is the group name and the id
-
possession
(good)[source]¶ returns how much of good an agent possesses.
- Returns:
- A number.
possession does not return a dictionary for self.log(…), you can use self.possessions([…]) (plural) with self.log.
Example:
if self['money'] < 1: self.financial_crisis = True if not(is_positive(self['money']): self.bancrupcy = True
-
round
= None¶ self.round is depreciated
-
time
= None¶ self.time, contains the time set with simulation.advance_round(time) you can set time to anything you want an integer or (12, 30, 21, 09, 1979) or ‘monday’
-