aea.decision_
maker.base
This module contains the decision maker class.
OwnershipState Objects
class OwnershipState(ABC)
Represent the ownership state of an agent (can proxy a ledger).
set
| @abstractmethod
| set(**kwargs) -> None
Set values on the ownership state.
Arguments:
kwargs
: the relevant keyword arguments
Returns:
None
apply_
delta
| @abstractmethod
| apply_delta(**kwargs) -> None
Apply a state update to the ownership state.
This method is used to apply a raw state update without a transaction.
Arguments:
kwargs
: the relevant keyword arguments
Returns:
None
is_
initialized
| @property
| @abstractmethod
| is_initialized() -> bool
Get the initialization status.
is_
affordable_
transaction
| @abstractmethod
| is_affordable_transaction(terms: Terms) -> bool
Check if the transaction is affordable (and consistent).
Arguments:
terms
: the transaction terms
Returns:
True if the transaction is legal wrt the current state, false otherwise.
apply_
transactions
| @abstractmethod
| apply_transactions(list_of_terms: List[Terms]) -> "OwnershipState"
Apply a list of transactions to (a copy of) the current state.
Arguments:
list_of_terms
: the sequence of transaction terms.
Returns:
the final state.
__
copy__
| @abstractmethod
| __copy__() -> "OwnershipState"
Copy the object.
Preferences Objects
class Preferences(ABC)
Class to represent the preferences.
set
| @abstractmethod
| set(**kwargs, ,) -> None
Set values on the preferences.
Arguments:
kwargs
: the relevant key word arguments
is_
initialized
| @property
| @abstractmethod
| is_initialized() -> bool
Get the initialization status.
Returns True if exchange_params_by_currency_id and utility_params_by_good_id are not None.
marginal_
utility
| @abstractmethod
| marginal_utility(ownership_state: OwnershipState, **kwargs, ,) -> float
Compute the marginal utility.
Arguments:
ownership_state
: the ownership state against which to compute the marginal utility.kwargs
: optional keyword argyments
Returns:
the marginal utility score
utility_
diff_
from_
transaction
| @abstractmethod
| utility_diff_from_transaction(ownership_state: OwnershipState, terms: Terms) -> float
Simulate a transaction and get the resulting utility difference (taking into account the fee).
Arguments:
ownership_state
: the ownership state against which to apply the transaction.terms
: the transaction terms.
Returns:
the score.
__
copy__
| @abstractmethod
| __copy__() -> "Preferences"
Copy the object.
ProtectedQueue Objects
class ProtectedQueue(Queue)
A wrapper of a queue to protect which object can read from it.
__
init__
| __init__(access_code: str)
Initialize the protected queue.
Arguments:
access_code
: the access code to read from the queue
put
| put(internal_message: Optional[Message], block=True, timeout=None) -> None
Put an internal message on the queue.
If optional args block is true and timeout is None (the default), block if necessary until a free slot is available. If timeout is a positive number, it blocks at most timeout seconds and raises the Full exception if no free slot was available within that time. Otherwise (block is false), put an item on the queue if a free slot is immediately available, else raise the Full exception (timeout is ignored in that case).
Arguments:
internal_message
: the internal message to put on the queue :raises: ValueError, if the item is not an internal message
Returns:
None
put_
nowait
| put_nowait(internal_message: Optional[Message]) -> None
Put an internal message on the queue.
Equivalent to put(item, False).
Arguments:
internal_message
: the internal message to put on the queue :raises: ValueError, if the item is not an internal message
Returns:
None
get
| get(block=True, timeout=None) -> None
Inaccessible get method.
:raises: ValueError, access not permitted.
Returns:
None
get_
nowait
| get_nowait() -> None
Inaccessible get_nowait method.
:raises: ValueError, access not permitted.
Returns:
None
protected_
get
| protected_get(access_code: str, block=True, timeout=None) -> Optional[Message]
Access protected get method.
Arguments:
access_code
: the access codeblock
: If optional args block is true and timeout is None (the default), block if necessary until an item is available.timeout
: If timeout is a positive number, it blocks at most timeout seconds and raises the Empty exception if no item was available within that time. :raises: ValueError, if caller is not permitted
Returns:
internal message
DecisionMakerHandler Objects
class DecisionMakerHandler(WithLogger, ABC)
This class implements the decision maker.
__
init__
| __init__(identity: Identity, wallet: Wallet, **kwargs)
Initialize the decision maker handler.
Arguments:
identity
: the identitywallet
: the walletlogger
: the loggerkwargs
: the key word arguments
agent_
name
| @property
| agent_name() -> str
Get the agent name.
identity
| @property
| identity() -> Identity
Get identity of the agent.
wallet
| @property
| wallet() -> Wallet
Get wallet of the agent.
context
| @property
| context() -> SimpleNamespace
Get the context.
message_
out_
queue
| @property
| message_out_queue() -> AsyncFriendlyQueue
Get (out) queue.
handle
| @abstractmethod
| handle(message: Message) -> None
Handle an internal message from the skills.
Arguments:
message
: the internal message
Returns:
None
DecisionMaker Objects
class DecisionMaker(WithLogger)
This class implements the decision maker.
__
init__
| __init__(decision_maker_handler: DecisionMakerHandler)
Initialize the decision maker.
Arguments:
agent_name
: the agent namedecision_maker_handler
: the decision maker handler
message_
in_
queue
| @property
| message_in_queue() -> ProtectedQueue
Get (in) queue.
message_
out_
queue
| @property
| message_out_queue() -> AsyncFriendlyQueue
Get (out) queue.
decision_
maker_
handler
| @property
| decision_maker_handler() -> DecisionMakerHandler
Get the decision maker handler.
start
| start() -> None
Start the decision maker.
stop
| stop() -> None
Stop the decision maker.
execute
| execute() -> None
Execute the decision maker.
Performs the following while not stopped:
- gets internal messages from the in queue and calls handle() on them
Returns:
None
handle
| handle(message: Message) -> None
Handle an internal message from the skills.
Arguments:
message
: the internal message
Returns:
None