Skip to content

aea.skills.behaviours

This module contains the classes for specific behaviours.

SimpleBehaviour Objects

class SimpleBehaviour(Behaviour, ABC)

This class implements a simple behaviour.

__init__

def __init__(act: Optional[Callable[[], None]] = None, **kwargs: Any) -> None

Initialize a simple behaviour.

Arguments:

  • act: the act callable.
  • kwargs: the keyword arguments to be passed to the parent class.

setup

def setup() -> None

Set the behaviour up.

act

def act() -> None

Do the action.

teardown

def teardown() -> None

Tear the behaviour down.

CompositeBehaviour Objects

class CompositeBehaviour(Behaviour, ABC)

This class implements a composite behaviour.

CyclicBehaviour Objects

class CyclicBehaviour(SimpleBehaviour, ABC)

This behaviour is executed until the agent is stopped.

__init__

def __init__(**kwargs: Any) -> None

Initialize the cyclic behaviour.

number_of_executions

@property
def number_of_executions() -> int

Get the number of executions.

act_wrapper

def act_wrapper() -> None

Wrap the call of the action. This method must be called only by the framework.

is_done

def is_done() -> bool

Return True if the behaviour is terminated, False otherwise.

The user should implement it properly to determine the stopping condition.

Returns:

bool indicating status

OneShotBehaviour Objects

class OneShotBehaviour(SimpleBehaviour, ABC)

This behaviour is executed only once.

__init__

def __init__(**kwargs: Any) -> None

Initialize the cyclic behaviour.

is_done

def is_done() -> bool

Return True if the behaviour is terminated, False otherwise.

act_wrapper

def act_wrapper() -> None

Wrap the call of the action. This method must be called only by the framework.

TickerBehaviour Objects

class TickerBehaviour(SimpleBehaviour, ABC)

This behaviour is executed periodically with an interval.

__init__

def __init__(tick_interval: float = 1.0,
             start_at: Optional[datetime.datetime] = None,
             **kwargs: Any) -> None

Initialize the ticker behaviour.

Arguments:

  • tick_interval: interval of the behaviour in seconds.
  • start_at: whether to start the behaviour with an offset.
  • kwargs: the keyword arguments.

tick_interval

@property
def tick_interval() -> float

Get the tick_interval in seconds.

start_at

@property
def start_at() -> datetime.datetime

Get the start time.

last_act_time

@property
def last_act_time() -> datetime.datetime

Get the last time the act method has been called.

act_wrapper

def act_wrapper() -> None

Wrap the call of the action. This method must be called only by the framework.

is_time_to_act

def is_time_to_act() -> bool

Check whether it is time to act, according to the tick_interval constraint and the 'start at' constraint.

Returns:

True if it is time to act, false otherwise.

SequenceBehaviour Objects

class SequenceBehaviour(CompositeBehaviour, ABC)

This behaviour executes sub-behaviour serially.

__init__

def __init__(behaviour_sequence: List[Behaviour], **kwargs: Any) -> None

Initialize the sequence behaviour.

Arguments:

  • behaviour_sequence: the sequence of behaviour.
  • kwargs: the keyword arguments

current_behaviour

@property
def current_behaviour() -> Optional[Behaviour]

Get the current behaviour.

If None, the sequence behaviour can be considered done.

Returns:

current behaviour or None

act

def act() -> None

Implement the behaviour.

is_done

def is_done() -> bool

Return True if the behaviour is terminated, False otherwise.

State Objects

class State(SimpleBehaviour, ABC)

A state of a FSMBehaviour.

A State behaviour is a simple behaviour with a special property 'event' that is opportunely set by the implementer. The event is read by the framework when the behaviour is done in order to pick the transition to trigger.

__init__

def __init__(**kwargs: Any) -> None

Initialize a state of the state machine.

event

@property
def event() -> Optional[str]

Get the event to be triggered at the end of the behaviour.

is_done

@abstractmethod
def is_done() -> bool

Return True if the behaviour is terminated, False otherwise.

reset

def reset() -> None

Reset initial conditions.

FSMBehaviour Objects

class FSMBehaviour(CompositeBehaviour, ABC)

This class implements a finite-state machine behaviour.

__init__

def __init__(**kwargs: Any) -> None

Initialize the finite-state machine behaviour.

is_started

@property
def is_started() -> bool

Check if the behaviour is started.

register_state

def register_state(name: str, state: State, initial: bool = False) -> None

Register a state.

Arguments:

  • name: the name of the state.
  • state: the behaviour in that state.
  • initial: whether the state is an initial state.

Raises:

  • ValueError: if a state with the provided name already exists.

register_final_state

def register_final_state(name: str, state: State) -> None

Register a final state.

Arguments:

  • name: the name of the state.
  • state: the state.

Raises:

  • ValueError: if a state with the provided name already exists.

unregister_state

def unregister_state(name: str) -> None

Unregister a state.

Arguments:

  • name: the state name to unregister.

Raises:

  • ValueError: if the state is not registered.

states

@property
def states() -> Set[str]

Get all the state names.

initial_state

@property
def initial_state() -> Optional[str]

Get the initial state name.

initial_state

@initial_state.setter
def initial_state(name: str) -> None

Set the initial state.

final_states

@property
def final_states() -> Set[str]

Get the final state names.

get_state

def get_state(name: str) -> Optional[State]

Get a state from its name.

act

def act() -> None

Implement the behaviour.

is_done

def is_done() -> bool

Return True if the behaviour is terminated, False otherwise.

register_transition

def register_transition(source: str,
                        destination: str,
                        event: Optional[str] = None) -> None

Register a transition.

No sanity check is done.

Arguments:

  • source: the source state name.
  • destination: the destination state name.
  • event: the event.

Raises:

  • ValueError: if a transition from source with event is already present.

unregister_transition

def unregister_transition(source: str,
                          destination: str,
                          event: Optional[str] = None) -> None

Unregister a transition.

Arguments:

  • source: the source state name.
  • destination: the destination state name.
  • event: the event.

Raises:

  • ValueError: if a transition from source with event is not present.