opposition_level

negmas.preferences.opposition_level(ufuns, max_utils=1.0, outcomes=None, issues=None, max_tests=10000)[source]

Finds the opposition level of the two ufuns defined as the minimum distance to outcome (1, 1)

Parameters
  • ufuns (list[UtilityFunction]) – A list of utility functions to use.

  • max_utils (Union[float, tuple[float, float]]) – A list of maximum utility value for each ufun (or a single number if they are equal).

  • outcomes (Union[int, list[tuple], None]) – A list of outcomes (should be the complete issue space) or an integer giving the number of outcomes. In the later case, ufuns should expect a tuple of a single integer.

  • issues (Optional[list[Issue]]) – The issues (only used if outcomes is None).

  • max_tests (int) – The maximum number of outcomes to use. Only used if issues is given and has more outcomes than this value.

Examples

  • Opposition level of the same ufun repeated is always 0

>>> from negmas.preferences.crisp.mapping import MappingUtilityFunction
>>> from negmas.preferences.ops import opposition_level
>>> u1, u2 = lambda x: x[0], lambda x: x[0]
>>> opposition_level([u1, u2], outcomes=10, max_utils=9)
0.0
  • Opposition level of two ufuns that are zero-sum

>>> u1, u2 = MappingUtilityFunction(lambda x: x[0]), MappingUtilityFunction(lambda x: 9 - x[0])
>>> opposition_level([u1, u2], outcomes=10, max_utils=9)
0.7114582486036499
Return type

float