Agent

BPTK API Documentation for the Agent class

Agent

The agent class is the base class for all agents used in an agent-based simulation.

Your agents must inherit from this class if they are to be part of an agent-based simulation.

Agent Constructor

Agent(agent_id, model, properties, agent_type=‘agent’)

Construct an agent.

  • Parameters

    • agent_id – Integer. Id of agent. Model should manage this. Do use agent factories!

    • model – Model instance The agent-based model this agent will be part of.

    • properties – Dictionary of agent properties. These properties will be available as object attributes (i.e. via self.)

Agent.act

act(time, round_no, step_no)

Called by the scheduler every timestep.

Does nothing in the base class, typically agents will implement most of their action logic in this method (and in the event handlers).

  • Parameters

    • time – Float. This is the current simulation time (equivalent to round_no+step_no*dt)

    • round_no – Integer. The current round.

    • step_no – Integer. The current step (within the round)

Agent.begin_episode

begin_episode(episode_no)

Called by the framework at the beginning of each episode.

Useful to allow a soft reset of the agent, e.g. when training a model for reinforcement learning.

The default implementation does nothing.

  • Parameters

    episode_no – Integer. The number of the episode.

Agent.end_episode

end_episode(episode_no)

Called by the framework at the end of each epsiode, to allow tidy up if necessary. The default implementation does nothing.

  • Parameters

    episode_no – Integer. The number of the episode

Agent.get_property

get_property(name)

Get the settings of a property.

  • Parameters

    name – String. Name of property

  • Returns

    Dictionary with keys type and value.

Agent.get_property_value

get_property_value(name)

Retrieves the value of a property.

  • Parameters

    name – String. The name of the property whose value is to be retrieved.

  • Returns

    The value of the property.

Agent.handle_events

handle_events(time, sim_round, step)

Called by the framework to handle events.

This method then calls the registered event handlers.

  • Parameters

    • time – Float. The current simulation time (sim_round+dt*step)

    • sim_round – Integer. The current simulation round.

    • step – Integer. The current simulation step (within the round).

Agent.initialize

initialize()

Initialize the agent.

Called by the framework directly after the agent is instantiated, useful for any kind of initialization code such as setting the agent type, current state and registering event handlers.

Agent.is_event_relevant

static is_event_relevant(threshold)

Helper function used to differentiate relevant and irrelevant events.

The function generates a random number in the range [0.0, 1.0) using Pythons random.random(). If this is smaller than the threshold, the event is deemed relevant.

  • Parameters

    threshold – Float. Threshold for relevance, should be in the range [0.0,1.0]

  • Returns

    Boolean

Agent.receive_event

receive_event(event)

Receive an event.

  • Parameters

    event – Event instance. The event that the agent receives.

Agent.receive_instantaneous_event

** receive_instantaneous_event(event) **

Handle an event immediately, do not wait for the next round.

  • Parameters

    event – event instance. Event that the agent receives.

Agent.register_event_handler

register_event_handler(states, event, handler)

Register an event handler.

The event handler is called by the framework if a relevant event occurs. The event handler is registered for all relevant state.

  • Parameters

    • states – List. List of states (String) for which the event handler is valid

    • event – String The type of event the handler reacts to.

    • handler – Function. The actual event handler. This must be a function that accept the event as its parameter. Typically this will be a method of the agent class.

Agent.serialize

** serialize() **

Serialize the agent.

  • Returns

    id, state, type and all properties.

  • Return type

    Returns a dictionary containing all relevant agent data

Agent.set_property

set_property(name, data)

Configure an agent property by passing a dictionary specifying the property.

  • Parameters

    • name – String. The name of the property whose data is being set.

    • data – Dictionary. Specification of property in dictionary with keys type and values. Currently the types Double, String, Integer, Lookup, Dictionary, Boolean and Agent are supported.

Agent.set_property_value

set_property_value(name, value)

Sets the value of a property.

  • Parameters

    • name – String. The name of the property to set.

    • value – (Agent|Dictionary|Double|Integer|String|Array of Points). The value of the property to set.