conflict_level
- negmas.preferences.conflict_level(u1: UtilityFunction, u2: UtilityFunction, outcomes: int | Sequence[Outcome], max_tests: int = 10000) float[source]
Finds the conflict level in these two ufuns.
- Parameters:
u1 – first utility function
u2 – second utility function
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