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.