Facilitating negotiation between agents with Fetch.ai

Mar 7, 2019

In a traditional digital marketplace centralised authorities provide many important functions. These include:

  • Matching buyers and sellers
  • Ensuring participants can trade with confidence
  • Setting prices or providing a mechanism for prices to be set

Fetch.AI is building an ecosystem for machines to conduct decentralised trading and it provides many of the capabilities listed above. However, in this article we’re focussing on price setting, or in our case, negotiation. In a Fetch.AI world, people and machines are represented by autonomous agents that intelligently communicate and trade on their behalf. This removes significant friction, reduces costs and helps complex systems to function more efficiently. The negotiation stage takes place once an agent that has a service or good to offer is matched with an agent that may wish to purchase it.

Providing common capabilities for agents to effectively negotiate with one another is integral to how Fetch.AI works. If agents don’t speak a common language or don’t have the ability to reach agreement on the price of a good or service, economic activity is hindered. This is a cutting-edge problem that hasn’t been solved before.

Tackling the negotiation problem is non-trivial because the dialogue that agents require depends on the circumstance of the trade. Negotiations between agents might take the form of one-to-many in an auction, for example, multiple simultaneous bilateral negotiations or a simple one-to-one negotiation. In any given exchange, it’s also possible that one party has more urgency than the other. For example, imagine a consumer with excess solar panel energy but no storage facility. Her agent is likely to need to find a buyer much more quickly than a buyer needs that energy (as the buyer has access to the wholesale markets as a fall back). So how do you enable the two sides to come together to agree a fair price?

Common Dialogue Framework

The first step is to specify a common means for agents to communicate. Fetch.AI defines this dialogue framework which sets the language and rules within which agents negotiate. In the physical world, negotiating when one side only speaks Spanish and the other only Russian doesn’t work. Fetch.AI’s dialogue framework ensures agents all speak the same language.

The dialogue framework also specifies certain rules that protect the participants from attack. For example, limits can be placed on the number of exchanges between agents. This is one way of preventing an agent being ‘spammed’ by nonsensical messages from one side of the dialogue. Another way of achieving this is to require the agents to act rationally. If a selling agent opened negotiation with a price of $0.5 and the buying agent offered $0.25 it wouldn’t then make sense for the selling agent to increase the price to $0.75. Restricting the scope of the communications in this way can improve efficiency, which is especially important for complex negotiations.

Defining Agent Strategies

Agents within Fetch.AI can be thought of as selfish entities. They work on behalf of a person or ‘thing’ on the network to represent their interests. Therefore, an agent is effectively trying to achieve an outcome that benefits its creator from each negotiation it enters. In the case of the consumer with perishable solar energy, her agent is simply trying to maximise returns for her energy inventory. In that specific situation, and to deliver on the return maximisation strategy, the agent may decide to run an auction for the available energy as a means to ensure it is not wasted, but with a specific floor price.

More complex strategies include game theory and opponent modelling to incorporate predictions of your opponent’s behaviour so that your own agent can respond accordingly. It is worth highlighting that some agent strategies will be intentionally simple and do not need to use machine learning. Such strategies could, for example, instruct agents to sell data at a fixed price.

Fetch.AI is designed so that the developer community, IT service providers and corporations can develop agents to solve a wide range of problems. Using reinforcement learning it’s possible to build negotiation strategies that don’t require static rules to be specified at the outset. Rather, the agent will attempt to fulfil its objective by repeating or reinforcing the approaches that work while discarding those that don’t. This ensures agents are straightforward to create, have the flexibility to cope with dynamic markets and can operate with virtually no human involvement.

We’ve developed a set of standard algorithms for generic negotiation use cases to help the community build agents. So if you wanted to optimise your returns for a given asset that your agent is selling, there is a standard model for this strategy. We’ve also included an algorithm for opponent modelling. Of course, we anticipate the community will develop ever more sophisticated agent strategies — and Fetch.AI is designed to reward those that do.