- Description
- Prerequisites
- Generating a utility space for one agent
4.1. Usage
4.2. Example - Generating utility spaces for two agent
5.1. Usage
5.2. Example
5.3. Compatibility with Genius - Citation
- Licence & Copyright
Genon is a generator of nonlinear preferences for intelligent artificial agents. Nonlinear preferences are mathematically formulated using nonlinear utility spaces. In Genon, a nonlinear utility space is defined using multidimensional constraints.
A utility space is characterised by
- n issues
- m constraints
- A distribution π mapping constraints to issues
Issues are the "things" that the agent is reasoning about.
Constraints are the "glue" that the agent is using to structure the issues according to his preferences. We distinguish three types of preferences, modelled using cubic, bell, and conic constraints:
The distribution π specifies the number of issues involved in one particular constraint. Genon supports three types of distributions:
-
Uniform : All constraints have the same cardinality.
-
Power-law: A small fraction of constraints involve most of the issues while the rest of the constraints involve fewer issues.
-
Random : The cardinality of a constraint is randomly chosen from [1,n].
The distribution π controls the complexity of a preference profile and how it affects the agent's computational abilities in solving any given problem (negotiation, coordination, etc.).
Note that a utility space corresponds to a utility hypergraph where nodes represent the issues and hyperedges represent the constraints:
Theoretical details are found in citation.
-
Python3.6
python src/genon.py
NumberofIssues (n)
NumberofConstraints (m)
ConstraintIssueDistribution (pi) in [complete | random | pl]
ConstraintWeightDistribution in [complete | random | pl]
Competitiveness in [complete | random | pl]
MaxUtilityPerConstraint
CompleteWeight
CompleteCard
NumberOfIterations
ProfileName
ProfileDirectory
python src/genon.py 2 5 pl random random 100 2 5 100 sample sample/
The output is stored in sample/
and contains:
File | Description |
---|---|
2-5-pl-random-domain.xml | Domain of the negotiation: issues, types, and bounds |
Constraint-Issue_distribution.csv | Distribution π |
Constraint-Weight_distribution.csv | Weights of the constraints |
description_sample.txt | General description of the utility space |
figure_sample.png | Hypergraph representation of the utility space |
sample.xml | Utility space of the agent |
In the bilateral case, two self-intersted agents 1 and 2 have two utility spaces (n, m1, π1 ) and (n, m2, π2 ). When generating such profiles, we can diversify them along the following lines. First, we assume that an agent’s utility space is built using the three types of constraints: linear (hyperplane), bell, or conic. Secondly, it is possible to adjust the complexity of any given utility space by specifying the constraint-issue distribution using the π distribution. Such connectivity affects the computational difficuty required to optimise over any given utility space. Utility spaces with randomised sets in particular, render the search for optimal solution more difficult.
Each constraint from agent 1's utility space is used to generate a new constraint (in agent 2's utility space) having the same utility. The generation is done based on different sampling methods:
-
Zerosum: disjoint sets. E.g. for 1-dimensional constraints, c1=[0,1] and c2=[5,8].
-
Within: any constraint of agent 2 is a subset of the original constraint of agent 1, with the same utility. E.g. for 1-dimensional constraints, c1=[0,7] and c2=[1,4].
-
Random: any possible configuration (default mode).
python src/genon2.py
NumberofIssues
NumberofConstraints
ConstraintIssueDistribution (Pi) in [complete | random | pl]
ConstraintWeightDistribution in [complete | random | pl]
Competitivenss in [complete | random | pl]
MaxUtilityPerConstraint
CompleteWeight
CompleteCard
NumberOfIterations
python src/genon2.py 2 5 random random random 100 2 5 100
The output will be stored in scenarios/2-5-random-random-random/
and contains:
File | Description |
---|---|
2-5-random-random-domain.xml | Domain of the negotiation: issues, types, and bounds |
Constraint-Issue_distribution.csv | Distribution π |
Constraint-Weight_distribution.csv | Weights of the constraints |
description.txt | General description of the utility space |
pareto.png | Pareto Frontier (image) |
pareto.xml | Pareto Frontier (list of points) |
profile-1.xml | Utility space of agent 1 |
profile-2.xml | Utility space of agent 2 |
The generated profiles are compatible with Genius and were used for the bilateral automated negotiations of the ANAC2014 competition.
Aydogan, Reyhan, et al. "A baseline for non-linear bilateral negotiations: the full results of the agents competing in ANAC 2014." (2016): 1-25.
Hadfi, Rafik, and Takayuki Ito. "Complex multi-issue negotiation using utility hyper-graphs." Journal of Advanced Computational Intelligence Vol 19.4 (2015).
Hadfi, Rafik, and Takayuki Ito. "Constraint-Based Preferences via Utility Hyper-Graphs." MPREF@ AAAI. 2014.
Hadfi, Rafik, and Takayuki Ito. "Modeling complex nonlinear utility spaces using utility hyper-graphs." Modeling Decisions for Artificial Intelligence. Springer, Cham, 2014.
Hadfi, Rafik, and Takayuki Ito. "Cognition as a game of complexity." Proc. 12th International Conference on Cognitive Modeling (ICCM). 2013.
This software was developed in the hope that it would be of some use to the agent research community, and is freely available for redistribution and/or modification under the terms of the GNU General Public Licence. It is distributed WITHOUT WARRANTY; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License for more details.
If you find this code to be of any use, please let me know. I would also welcome any feedback.
Copyright (c) 2015--2018 Rafik Hadfi, rafik.hadfi@gmail.com