Contract Net Protocol
From Wikipedia, the free encyclopedia
The Contract Net Protocol (CNP) is a task-sharing protocol in multi-agent systems, introduced in 1980 by Reid G. Smith.[1] It is used to allocate tasks among autonomous agents. It is close to sealed auctions protocols. It mainly relies on the Subcontractor: a manager proposes a task to several agents. The latter make a proposal among which the manager chooses to allocate the task. This task can then be divided and subcontracted.
The formalization of the protocol can be performed through the speech act theory. In this protocol, each agent can be either manager or contractor
- The protocol is initialized by the manager, who sends a call-for-proposals to the contractors
- The contractors can send either a proposal if they are interested or a reject if they are not. This proposal is provided with all the elements required by the manager to make its choice.
- The manager chooses among the proposals the one that suits it best and sends to the corresponding contractor an accept. It sends a reject to the other contractors to inform them of its decision.
- Once the contract has been accomplished, the contractor informs the manager using an inform message. If there is a result to communicate, it is also communicated through the inform message. If the contractor cannot fulfill its engagement, it informs the manager through a cancel message.
The Contract Net Protocol can be represented using the AUML formalism:

This protocol can be used to implement hierarchical organizations, where a manager assigns tasks to contractors, who in turn decompose into lower-level task and assign them to the lower level. This kind of organization can be used when agents are cooperative, i.e. when their objectives are identical. In this situation, it is possible to make sure that the contractors do not lie to the manager when they make their proposal. When the agents are competitive, the protocol ends up in a marketplace organization, very similar to auctions.[2]
Implementation
The protocol has been implemented by the FIPA in the ACL (Agent Communication Language).[3]
The Contract Net Protocol has been implemented for various problems and contexts. The original article describes a sensor network use case. Subsequent work showed its utility in this context.[4] It has also been used for Multi-Robot Task Allocation.[5] It has also been used as a negotiation protocol both for e commerce marketplaces [6] and for supply chains.[7]
