raviq / Genon

Genon is a generator of nonlinear preferences for intelligent artificial agents.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Genon License: GPL v3

  1. Description
  2. Prerequisites
  3. Generating a utility space for one agent
    4.1. Usage
    4.2. Example
  4. Generating utility spaces for two agent
    5.1. Usage
    5.2. Example
    5.3. Compatibility with Genius
  5. Citation
  6. Licence & Copyright

Description

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:

  1. Uniform : All constraints have the same cardinality.

  2. Power-law: A small fraction of constraints involve most of the issues while the rest of the constraints involve fewer issues.

  3. 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.

Prerequisites

Generating a utility space for one agent

Usage

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 

Example

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

Generating utility spaces for two 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.

Competitiveness

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).

Usage

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

Example

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

Compatibility

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.

Citation

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.

Licence & Copyright

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

About

Genon is a generator of nonlinear preferences for intelligent artificial agents.

License:GNU General Public License v3.0


Languages

Language:Python 100.0%