Multi-Agent Interaction LanguageSubmission to FIPA's CFP1
Overview of ProposalThis proposal addresses the First FIPA Call for Proposals in the technology areas as described by Sections 5.2 and 5.3 of the CfP. It proposes the Multi-Agent Interaction Language (MAIL), as originally developed in the IMAGINE Esprit Project (Nr. 5362), incorporating the latest developments by Siemens AG in the MAI2L/MECCA agent development framework. Background and TerminologyAgents in this proposal are considered to be autonomous entities (software or hardware) capable of perceiving and altering their environment in a rational manner. Each agent must react flexibly to its environment yet has to be predictable in its future course of activities in order to contribute to the system. Agents interact in a cooperative way to extend their individual capabilities and thus form complex systems. Agent interaction not only includes shared execution of tasks but also some preparative activities such as establishing common goals and elaborating shared plans (including their schedules). These concepts are used to model the problem solving process and must be shared among all participating agents. Furthermore, a common representation of the domain must exist. We do not, in this proposal, describe how the domain should be represented, indeed, this may vary from domain to domain, and is dependent upon the appropriate domain-specific standards. We also refrain from relying on and describing the agent's internal architecture, as this may vary among vendors. Environment Action Goal Task Plan Agent ManagementAgent Interface Description LanguageAn agent is described by its address, type and the public actions it can perform (capabilities). This information is registered with an appropriate Agent Directory Service, which makes the information available to other agents. An agent's address consists of
For example, an agent may be able to interact via e-mail and via direct TCP/IP connection. In the former case, the agent's e-mail address would be given, in the latter, the host and port number to which the agent is connected. Possible communication transport protocols with which agents may interact include: intra-process, TCP/IP, HTTP, E-mail, voice telephone and fax (the latter two contigent either on automated voice recognition or OCR or on presence of human agents). Asynchronous interaction is essential. It is suggested that Microsoft IDL be used for the representation of agent addresses. A capability of an agent is represented by an object consisting of the name, preconditions and effects of the action. The agent's public capabilities may be stored by the agent's ADS in an array associated with the agent's name. (How this is represented internally in the agent or in the ADS is immaterial.) Agent Lifecycle ModelAn agent is created by specifying its name, type, capabilities, available communication means and another agent called its Agent Directory Service (ADS). Upon initialisation of the appropriate processes, the agent initiates a register interaction protocol with its pre-specified ADS. This protocol consists of an order(assert(<agent-data>))message. order is used as a guarantee that the ADS indeed takes note of the agent. In principle any agent could act as an ADS, however, a hierarchy of ADS (ala Internet Domain Names) may be useful. The agent then tries to accomplish its active goals. Goals may be activated either by the environment, by a human user or by another agent in a propose(goal...) message. The agent may query its ADS to locate other agents to help it achieve its goals. (The search may be restricted to other agents registered with the same ADS, or to agents registered with other ADS' in the same domain.) It selects from and negotiates with these agents via appropriate interaction protocols (e.g. contract net). When an agent is finished, or needs to be terminated, it first (if possible) deregisters itself from its ADS via an order(retract(<agent-data>)) message. If it is not possible to deregister itself (e.g. its host machine was switched off unexpectedly), the ADS and other acquaintance agents must be able to deal with the situation via conventional error handling routines. During the course of its lifecycle, some of the agent's public attributes may change (e.g. host name, E-mail address). It notifies its ADS (and possibly any acquaintance agents) accordingly via an order(modify(<agent-data>)) message. Furthermore, an agent may even change its ADS (for reasons of minimizing communication overhead, etc.). In this case, the agent must de-register itself from its old ADS, then register itself with the new one. Agent/Agent CommunicationMessagesThroughout this proposal we rely on a message passing mechanism allowing
agents to send messages to individual agents as well as groups of agents.
It must also provide for receiving messages from individual agents as well
as from several agents with a timeout.
A message, thus, is an object containing the following keys: type : propose | refine | modify | accept | reject | order | query | inform name : msg_id (name) content : < see below > sender : < name of the sending agent >, s_role : < role of the sending agent >, recipient : < name of the receiving agent >, r_role : < role of the receiving agent >, coopid : < unique identifier (name) of the current interaction protocol, determined by the initiator >, protocol : < type of the current interaction protocol, e.g. 'contract_net >, [reply_by] : <optional key specifying the timepoint by which a reply is expected >, [reply_with] : < list of message types expected in the reply; if this slot is not specified, all valid response message types are allowed > [reply_to] : < optional key specifying the receiver of the reply; it defaults to the sender >, Message TypesThe following is the list of message types supported in this proposal. propose refine modify accept reject order query inform The valid combination of message types is discussed in the section Interaction Protocols. Message ContentGenerally, the message content is encoded as an object. The content of a message is either an entity in the domain (knowledge) or a problem-solving object. Domain objects can be encoded as described previously. The domain-independent problem-solving objects along with their attributes are defined in this section. This forms the basis for a domain-independent shared ontology. content ::= Goal | Plan | Task | Domain-dependent Type The message content contains a type key, a name key and further slots depending on its type.
The goal description is a predicate which the sender and the receiver can evaluate in their world states. A goal is acceptable if the evaluation of its description does not contradict other goals, plans etc.
A plan represents a script an agent has to follow, when the plan is executed. Plan scripts can be represented by the following syntactic elements reflecting the timely structure of the plan:
Appropriate synchronisation points (via messages if the tasks are to be carried out by two different agents) link task_sets.
Tasks may take input parameters and return results, thus execution of a task may be referred to as: O1,O2,... = Task(I1,I2,...) Note, that because we allow plans to be message contents, the number of message types can be held to a minimum. For example, a request by a client to a server for regular reports of certain information can be represented by the following: plan( 'name = 'inform_until, 'script = {while (CurrentTime < EndTime) do (inform(Client,Information))} ) and Client:order(Server,'inform_until) The action R:Msg = S:Type(R,Content) is shorthand for agent S sending a message with message type Type and content Content to agent R. Interaction Protocols |
Alternating sequences of sending and receiving messages form the basis for cooperative problem solving. A formal computational semantics of the message types can only be based on the internal agent architecture. However, the allowable answers to messages specify the semantics of the dialogue sufficiently for agent/agent interaction. As mentioned previously, when sending a message, a list of expected reply types may be given. The allowable reply types for a message of a particular type is given in the following table and figures.
Message type | Preceeding message type | Succeeding message type |
propose | - | refine, modify, accept, reject |
refine | propose, refine, modify | refine, modify, accept, reject |
modify | propose, refine, modify | refine, modify, accept, reject |
accept | propose, refine, modify | - |
reject | propose, refine, modify | - |
order | - | inform |
query | - | inform |
inform | order | - |
An interaction protocol is simply a (domain-independent) multi-agent plan which includes message passing actions in its script. This provides a framework for pre-specified dialogues (or interaction sequences) to be followed during the course of agent interaction. Note, that the sequences are not only composed of messages, but may also contain actions for individual agents to follow (e.g. cn_evaluate_bids in the contract net given below). The actions and messages are explicitely assigned to roles which are determined by the initiator of the plan. Furthermore, the expected replies need not be explicitely given, since they are already determined by the interaction protocol.
For example the contract net interaction protocol would be represented by the following plan.
plan(
'name = 'contract_net,
'chars = [Mgr, Bidders],
'script = {Mgr:Spec = cn_make_proposal(TaskType) ;
Bidders:CallForBids = Mgr:propose(Bidders,Spec,TimeOut) ;
Bidders:Bid = refine_bids(CallForBids.content) ;
Mgr:BidM = Bidders:refine(Mgr,Bid) ;
Mgr:WinningM,RestM = cn_evaluate_bids(BidM) ;
Bidders:NotifyM = Mgr:(accept(WinningM.sender,WinningM.content) |
reject(RestM.sender,RestM.content,) ) ;
Bidders:(if (NotifyM.type == 'reject)
then uncommit(Bid)) ;
Mgr:(Task = prepare_task(TaskType,WinningM) ;
new_cooperation('order_task,WinningM.sender,Task))
}
)
The concepts underlying this proposal are explained in more detail in:
Lux A., D. Steiner. Understanding Cooperation: an Agent's Perspective, in Proceedings of the First International Conference on Multi-Agent Systems (ICMAS'95). San Francisco, USA. 1995.
Steiner D., A. Burt, M. Kolb, C. Lerin. The Conceptual Framework of MAI2L, Proceedings of the 5th European Workshop on Modelling Autonomous Agents and Multi Agent Worlds (MAAMAW'93). Neuchâtel. Switzerland. August 24 - 27, 1993.
Haugeneder H. (ed.) IMAGINE Final Project Report , Esprit Project 5362. Munich. Germany. 1993.