aea.skills.behaviours
This module contains the classes for specific behaviours.
SimpleBehaviour Objects
class SimpleBehaviour(Behaviour, ABC)
This class implements a simple behaviour.
__
init__
| __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
| setup() -> None
Set the behaviour up.
act
| act() -> None
Do the action.
teardown
| 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__
| __init__(**kwargs: Any) -> None
Initialize the cyclic behaviour.
number_
of_
executions
| @property
| number_of_executions() -> int
Get the number of executions.
act_
wrapper
| act_wrapper() -> None
Wrap the call of the action. This method must be called only by the framework.
is_
done
| is_done() -> bool
Return True if the behaviour is terminated, False otherwise.
The user should implement it properly to determine the stopping condition.
OneShotBehaviour Objects
class OneShotBehaviour(SimpleBehaviour, ABC)
This behaviour is executed only once.
__
init__
| __init__(**kwargs: Any) -> None
Initialize the cyclic behaviour.
is_
done
| is_done() -> bool
Return True if the behaviour is terminated, False otherwise.
act_
wrapper
| 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__
| __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.
tick_
interval
| @property
| tick_interval() -> float
Get the tick_interval in seconds.
start_
at
| @property
| start_at() -> datetime.datetime
Get the start time.
last_
act_
time
| @property
| last_act_time() -> datetime.datetime
Get the last time the act method has been called.
act_
wrapper
| act_wrapper() -> None
Wrap the call of the action. This method must be called only by the framework.
is_
time_
to_
act
| 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__
| __init__(behaviour_sequence: List[Behaviour], **kwargs: Any) -> None
Initialize the sequence behaviour.
Arguments:
behaviour_sequence
: the sequence of behaviour.kwargs
:
current_
behaviour
| @property
| current_behaviour() -> Optional[Behaviour]
Get the current behaviour.
If None, the sequence behaviour can be considered done.
act
| act() -> None
Implement the behaviour.
is_
done
| 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__
| __init__(**kwargs: Any) -> None
Initialize a state of the state machine.
event
| @property
| event() -> Optional[str]
Get the event to be triggered at the end of the behaviour.
is_
done
| @abstractmethod
| is_done() -> bool
Return True if the behaviour is terminated, False otherwise.
reset
| reset() -> None
Reset initial conditions.
FSMBehaviour Objects
class FSMBehaviour(CompositeBehaviour, ABC)
This class implements a finite-state machine behaviour.
__
init__
| __init__(**kwargs: Any) -> None
Initialize the finite-state machine behaviour.
is_
started
| @property
| is_started() -> bool
Check if the behaviour is started.
register_
state
| 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.
Returns:
None
Raises:
ValueError
: if a state with the provided name already exists.
register_
final_
state
| register_final_state(name: str, state: State) -> None
Register a final state.
Arguments:
name
: the name of the state.state
: the state.
Returns:
None
Raises:
ValueError
: if a state with the provided name already exists.
unregister_
state
| unregister_state(name: str) -> None
Unregister a state.
Arguments:
name
: the state name to unregister.
Returns:
None
Raises:
ValueError
: if the state is not registered.
states
| @property
| states() -> Set[str]
Get all the state names.
initial_
state
| @property
| initial_state() -> Optional[str]
Get the initial state name.
initial_
state
| @initial_state.setter
| initial_state(name: str) -> None
Set the initial state.
final_
states
| @property
| final_states() -> Set[str]
Get the final state names.
get_
state
| get_state(name: str) -> Optional[State]
Get a state from its name.
act
| act() -> None
Implement the behaviour.
is_
done
| is_done() -> bool
Return True if the behaviour is terminated, False otherwise.
register_
transition
| 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.
Returns:
None
Raises:
ValueError
: if a transition from source with event is already present.
unregister_
transition
| 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.
Returns:
None
Raises:
ValueError
: if a transition from source with event is not present.