There exists a number of problems which involve multiple sources of knowledge and, thereby, can best be addressed using a multi-agent system - a computational system composed of several interacting agents which cooperate with one another to solve complex tasks. Furthermore, the deployment of multi-agent systems permits to benefit from a number of advantages - such as parallelism, robustness or scalability - that a single agent working isolatedly can not offer itself.
Currently, we are partners of the SMASH project, a collective, joint effort involving several research institutions that addresses the construction of a general-purpose heterogeneous rational multi-agent architecture, and the development -on a computational implementation of this architecture- of prototype multi-agent systems with learning capabilities that cooperate in the solution of complex problems in hospital environments. The development of such type of multi-agent systems poses the question of how to integrate a set of heterogeneous agents - agents developed by different people for different purposes and in different languages - within a common setting. In order to achieve this goal, two major issues need to be addressed: (highly flexible) communication and coordination among the agents composing the multi-agent system. Instead of letting agents deal themselves with such issues, we opts for introducing an autonomous software agent that we call interagent which handles (intermediates) the communication and coordination between specific agents and the agent society wherein they are situated (see Figure 1). According to our proposal, interagents constitute the sole and exclusive means through which agents within a multi-agent scenario interact.
In our proposal, the functionality provided by an interagent will highly depend on the role played by the agent interacting with it. Thus we distinguish two distinct roles for agents making use of interagents: i) the user of an interagent regards it as the sole and exclusive means through which it can interact with the agent society thanks to the set of communication and coordination services provided by the interagent, but previously defined by the owner; ii) the owner of an interagent is provided with a wide range of facilities to either load or program into the interagent the communication and coordination services that the user is allowed to employ. Needless to say, an agent can possibly play both roles at the same time.
Figure: Fishmarket: A multi-agent system using interagents
In this work, we present JIM, a general-purpose interagent which provides agents with a highly versatile range of programmable --before and during the agent's run-time-- communication and coordination services. JIM is being implemented in Java in order to ensure platform independence.
The remainder of this paper is organized as follows. Section 2 analyzes which features distinguish interagents from related approaches. Section 3 describes the communication services offered by interagents, while Section 4 presents the coordination services. In section 5 we illustrate how JIM is being used in different agent-based applications, and finally, Section 6 draws some concluding remarks.