Genius — A Genius way for automated negotiation simulation

If you are searching for an agent simulator for negotiation domains, don’t look beyond Genius[1]! Wanting just to implement and evaluate a bargaining strategy without an extra pain, I thought to give this a shot and immediately loved its straightforwardness. Genius, aka “General Environment for Negotiation with Intelligent multi-purpose Usage Simulation” is a tool that facilitates research in the area of bilateral multi-issue negotiation. It implements an architecture allowing easy development and integration of existing negotiating agents and the ability to extend the platform with new agents with different bargaining strategies. This post will cover running the genius product and steps of simulating a negotiation scenario with it.

Downloading and running the product

You can download the genius executable from here. Once the .jar file is downloaded, it can be executed with the following command by moving to the downloaded directory.

java -jar negosimulator.jar

Figure 1 : Running the product

The negotiation scenario

Lets assume we are bargaining over a laptop with the seller. Then we will be discussing negotiation issues such as processor, storage, VGA, RAM and the price of the device. If you are a gamer, you will prefer to have a computer with larger values for these variables though as typical buyers seeking for a littler price. Accordingly, we can identify processor, storage, VGA, RAM and the price as the issues in the negotiation space named laptop domain. Furthermore, assuming you are an Assassin’s Creed fan, a laptop with a larger VGA might be more appealing to you over a laptop with a huge storage. Hence, we can recognise the following preferences profile where we can define the biases toward each issue as fractions.

{VGA : 0.3, storage : 0.2, RAM : 0.2, processor : 0.2, price : 0.1}

The values for each variable come with different criterions. For an example, the overall utility increases when the VGA increases and the prices decreases. Therefore, we need to define functions that maps the real values to a score. Which can simply be a mapper function (for discrete variables such as RAM) or a proportionate of a reserved value (for continuous variables such as price).

Let’s assume we can have following scores according to the value of the RAM.

V(RAM) → {2 GB : 1, 4 GB: 2, 6 GB : 3, 8 GB : 4, 16 GB : 5}

Following the same criteria, we can define different mappers for each issue. The final utility of the agent can be defined as the product of the values of its scoring functions vector and the weights vector.

To simulate the negotiation with impatient agents aka agents with deadlines [2] we need to specify a discounting factor ( 0<β<=1). The discounting factor simply multiplies the final utility to produce the discounted utility for the agent. So with the time being an impatient agent will reduce it’s utility for even the similar proposals. If an agent does not want to concede below a particular threshold, it can be defined as the reservation value, (reservation utility indeed) for that agent.

In Genius, preferences profile specifies the particular agent’s biases toward each issue in the negotiation domain along with their scoring functions, discounting factors and the reservation value. You may select and edit a preferences profile from the left hand side pane as per your preferences. Here, I have edited the preferences profiles (Laptop-c-prof-1 and Laptop-c-prof-2)from the domain named “Laptop-c-domain” domain as below.


Simulating the negotiation

With Genius, you can graphically simulate a negotiation scenario. It facilitates viewing the offers that are being exchanged with each agent’s utility against the Pareto optimal line. To simulate a negotiation scenario between two agents, select File > Negotiation Session. It will direct you to the screen on the figure 1. The negotiation protocol shipped with Genius, typically is the Rubeinstein’s altering offers bargaining protocol[3][4].

Then select the edited preferences profiles from the next input field. Lets assign Laptop-c-prof-1 for Agent A, and Laptop-c-prof-2 for the agent B. Finally we need to select the agents for the negotiation. Lets select AgentLG as the agent A and IAMhaggler2012 as the agent B. Keep the time deadline as the 180 seconds as it is and click on the start button.

You will see the agents are sharing their proposals and their utilities on the graph as well as on the left side log pane.

AgentLG vs IAMhaggler2012

You can evaluate the results and find the which agent has the best bargaining strategy.

[1] Genius: An Integrated Environment for Supporting the Design of Generic Automated Negotiators
[2] Bargaining with Deadlines
[3] Perfect equilibrium in a bargaining model
[4]A bargaining model with incomplete information about time preferences