conflict_level

negmas.preferences.conflict_level(u1, u2, outcomes, max_tests=10000)[source]

Finds the conflict level in these two ufuns.

Parameters:
  • u1 (UtilityFunction) – first utility function

  • u2 (UtilityFunction) – second utility function

Return type:

float

Examples

  • A nonlinear strictly zero sum case

>>> from negmas.preferences.crisp.mapping import MappingUtilityFunction
>>> from negmas.preferences import conflict_level
>>> outcomes = [(_,) for _ in range(10)]
>>> u1 = MappingUtilityFunction(
...     dict(zip(outcomes, np.random.random(len(outcomes))))
... )
>>> u2 = MappingUtilityFunction(
...     dict(zip(outcomes, 1.0 - np.array(list(u1.mapping.values()))))
... )
>>> print(conflict_level(u1=u1, u2=u2, outcomes=outcomes))
1.0
  • The same ufun

>>> print(conflict_level(u1=u1, u2=u1, outcomes=outcomes))
0.0
  • A linear strictly zero sum case

>>> outcomes = [(i,) for i in range(10)]
>>> u1 = MappingUtilityFunction(
...     dict(zip(outcomes, np.linspace(0.0, 1.0, len(outcomes), endpoint=True)))
... )
>>> u2 = MappingUtilityFunction(
...     dict(zip(outcomes, np.linspace(1.0, 0.0, len(outcomes), endpoint=True)))
... )
>>> print(conflict_level(u1=u1, u2=u2, outcomes=outcomes))
1.0