Original assignment description: https://brightspace.tudelft.nl/content/enforced/595347-CSE3210%2B2023%2B3/Projects-2024/Project-3/CollaborativeAI-2024-Project3.pdf
Original code base: https://github.com/brenting/ANL-2023-example-agent
In this report, we aim to design a negotiation agent for bilateral multi-issue negotiation that can learn from every previous opponent while the tournament progresses.
While trying to reach a mutual agreement with any sophisticated agent, we have an initial thought thanks to our experiences from previous negotiation experiences with that agent or similar agents. Then, we take into account opponent preferences about current issues and opponent’s behavior in new interactions.
The developed agent should be capable of making an opponent model in the current negotiation while learning from previous negotiations. Thus, we aim to provide as much flexibility as possible while. At every negotiation, agents obtain a directory path to save and load anything they want. This state is stored as a file on disk, and the path is passed to the agent every time a negotiation is initiated.
Every negotiation will be bilateral, i.e. between two agents. Both agents can negotiate over multiple issues, and each issue has a number of different values.
Let $\Omega$ denote the space for all possible bids (bid space), and let $b_p^r\in \Omega$ denote the bid made by agent $p$ in round $r\in\N$. The negotiation is presumed to be finite, so $r_m$ denotes the final round of the negotiation. Negotiations are time based, lasting each 10 seconds.
In every round, agents negotiate over set of issues $(m_1, \ldots, m_n)$. As our negotiations consist of multi-issue preference domains, $n>1$. Each of these issues have their own domain of possible values, $m_1\in \Omega_1, \ldots, m_n\in \Omega_n$, where it holds that $\Omega=\Omega_1\times\ldots\times \Omega_n$.
At every round each agent makes a bid $b\in\Omega$, also called negotiation outcome. A bid is a mapping from every issue $m_i\in b$ to a value $v\in \Omega_i$. For every bid $b$, we denote as $b(m_i)$ the corresponding value of the issue $m_i$ in the negotiation outcome $b$.
The scenario consists of a discrete outcome space (or domain). For every bid $b$, different agents may have different preferences. Hence we assume that every agent has a preference profile, informing what outcome the agent prefers.
To define the preference relation of agent $i$ we use (weighted) utility functions $U^i: \Omega\rightarrow [0, 1]$. These function assigns a real number to each possible outcome, i.e., utility functions describe the preference domains. Hence, if agent $i$ believes that outcome $o_1$ is at least as good as $o_2$, then $U^i(o_1)\ge U^i(o_2)$. I.e., the utility functions denotes the level of satisfaction of agent with a particular deal [10].
$U$ will return a value in $[0, 1]$, being $0$ and $1$ the worst and best utility, respectively, obtained by the agent. The negotiations are performed under incomplete information, meaning that the utility function of the opponent is unknown.
The expected utility function of an agent for a bid is defined as a linear additive utility function:
$$ U^j(b): \Omega\rightarrow [0, 1]=\sum^n_{i=1} w^j_i\cdot u^j_i(b) $$
Where $w^j_i$ is the weight that agent $j$ assigns to the issue $i$, and $u^j_i(b): \Omega_i\rightarrow [0, 1]$ is the $j$'s predicted utility of the value of issue $i$ in bid $b$.
Sometimes a discount factor $\delta$ is added when considering realt-time deadlines, but for our task we will assume there are no discount factors ($\delta=1$.)
Overall, we denote $U$ as the function that maps bids $b\in S$ to the 2-dimensional utility space $[0, 1]^2$ (as we only have 2 agents) spanned by utility functions of the negotiating agents [12]: