When agents have similar goals, they can be organized into a team. Each agent then plays a separate role within the team. With such a benevolent team of agents, one must provide some method for assigning different agents to different roles. This assignment might be obvious if the agents are very specific and can each only do one thing. However in some domains, the agents are flexible enough to interchange roles.
The multiagent design of a steam pump is one such domain. Prasad et al. study design agents that can either initiate a design or extend a design [62]. In different situations, different agents are more effective at initiation and at extension. Thus a supervised learning technique is used to help agents learn what roles they should fill in different situations.
Although already mentioned above in the context of modeling other agents, Tambe's work deserves mention in this context as well. When an agent is faced with an opposing team of agents, it may be useful to model individual agents as filling roles within a team action rather than as acting independently [86].