The use of single function agents, or any other form of agents in a system brings with it the possibility of conflicts between agents. Although it may be possible to build a system where all conflicts are resolved during development time, in most design problems this is either impossible or extremely difficult.
In most cases, development time conflict resolution is not even desirable since there are many advantages of run time conflict resolution. The run time interaction between the agents supports concurrent engineering. Negotiation also causes the behavior of the system to emerge from the necessities of the particular problem at hand. So the system is more flexible and does not suffer from the brittleness problem of traditional expert systems. Run time conflict resolution requires the conflict resolution knowledge to be treated as first class knowledge in the agents just like domain knowledge and control knowledge [Klein 91]. So the separation and explicit representation of different knowledge types is enforced.
One way of resolving run time conflicts is for the agents to negotiate. This is the most general way of resolving conflicts. The negotiation process is very flexible and encompasses all other conflict resolution methods. A method where conflicts are resolved by some table lookup mechanism as in the I3D+ system [Victor & Brown 94], where the outcome of every conflict is stored may be seen as a restricted case of negotiation.
Therefore studying negotiation promises an overall understanding of conflict resolution.