Messaging¶
This is the agent’s facility to send and receive messages. Messages can
either be sent to an individual with messaging.Messaging.message()
or to a group with
messaging.Messaging.message_to_group()
. The receiving agent can either get all messages
with messaging.Messaging.get_messages_all()
or messages with a specific topic with
messaging.Messaging.get_messages()
.
-
class
abce.messaging.
Messaging
(id, agent_parameters, simulation_parameters, group, trade_logging, database, check_unchecked_msgs, expiring, perishable, resource_endowment, start_round=None)[source]¶ Bases:
object
-
get_messages
(topic='m')[source]¶ self.messages() returns all new messages send with
message()
(topic=’m’). The order is randomized. self.messages(topic) returns all messages with a topic.A message is a string with the message. You can also retrieve the sender by message.sender_group and message.sender_id and view the topic with ‘message.topic’. (see example)
If you are sending a float or an integer you need to access the message content with message.content instead of only message.
! if you want to recieve a float or an int, you must msg.content
- Returns a message object:
- msg.content:
- returns the message content string, int, float, …
- msg:
- returns also the message content, but only as a string
- sender_group:
- returns the group name of the sender
- sender_id:
- returns the id of the sender
- topic:
- returns the topic
Example:
... agent_01 ... self.messages('firm_01', 'potential_buyers', 'hello message') ... firm_01 - one subround later ... potential_buyers = get_messages('potential_buyers') for msg in potential_buyers: print('message: ', msg) print('message: ', msg.content) print('group name: ', msg.sender_group) print('sender id: ', msg.sender_id) print('topic: ', msg.topic)
-
get_messages_all
()[source]¶ returns all messages irregardless of the topic, in a dictionary by topic
A message is a string with the message. You can also retrieve the sender by message.sender_group and message.sender_id and view the topic with ‘message.topic’. (see example)
If you are sending a float or an integer you need to access the message content with message.content instead of only message.
-
send
(receiver, topic, content)[source]¶ sends a message to agent. Agents receive it at the beginning of next round with
get_messages()
orget_messages_all()
.Args:
receiver: The name of the receiving agent a tuple (group, id). e.G. ('firm', 15) topic: string, with which this message can be received content: string, dictionary or class, that is send.
Example:
... household_01 ... self.message('firm', 01, 'quote_sell', {'good':'BRD', 'quantity': 5}) ... firm_01 - one subround later ... requests = self.get_messages('quote_sell') for req in requests: self.sell(req.sender, req.good, reg.quantity, self.price[req.good])
Example2:
self.message('firm', 01, 'm', "hello my message")
-