Performance indicators

Performance indicators for multi-objective RL algorithms.

We mostly rely on pymoo for the computation of axiomatic indicators (HV and IGD), but some are customly made.

morl_baselines.common.performance_indicators.cardinality(front: List[ndarray]) float

Cardinality Metric.

Cardinality of the Pareto front approximation.

Parameters:

front – current pareto front to compute the cardinality on

Returns:

float – cardinality metric

morl_baselines.common.performance_indicators.expected_utility(front: ~typing.List[~numpy.ndarray], weights_set: ~typing.List[~numpy.ndarray], utility: ~typing.Callable = <function dot>) float

Expected Utility Metric.

Expected utility of the policies on the PF for various weights. Similar to R-Metrics in MOO. But only needs one PF approximation. Paper: L. M. Zintgraf, T. V. Kanters, D. M. Roijers, F. A. Oliehoek, and P. Beau, “Quality Assessment of MORL Algorithms: A Utility-Based Approach,” 2015.

Parameters:
  • front – current pareto front to compute the eum on

  • weights_set – weights to use for the utility computation

  • utility – utility function to use (default: dot product)

Returns:

float – eum metric

morl_baselines.common.performance_indicators.hypervolume(ref_point: ndarray, points: List[_SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | bool | int | float | complex | str | bytes | _NestedSequence[bool | int | float | complex | str | bytes]]) float

Computes the hypervolume metric for a set of points (value vectors) and a reference point (from Pymoo).

Parameters:
  • ref_point (np.ndarray) – Reference point

  • points (List[np.ndarray]) – List of value vectors

Returns:

float – Hypervolume metric

morl_baselines.common.performance_indicators.igd(known_front: List[ndarray], current_estimate: List[ndarray]) float

Inverted generational distance metric. Requires to know the optimal front.

Parameters:
  • known_front – known pareto front for the problem

  • current_estimate – current pareto front

Returns:

a float stating the average distance between a point in current_estimate and its nearest point in known_front

morl_baselines.common.performance_indicators.maximum_utility_loss(front: ~typing.List[~numpy.ndarray], reference_set: ~typing.List[~numpy.ndarray], weights_set: ~numpy.ndarray, utility: ~typing.Callable = <function dot>) float

Maximum Utility Loss Metric.

Maximum utility loss of the policies on the PF for various weights. Paper: L. M. Zintgraf, T. V. Kanters, D. M. Roijers, F. A. Oliehoek, and P. Beau, “Quality Assessment of MORL Algorithms: A Utility-Based Approach,” 2015.

Parameters:
  • front – current pareto front to compute the mul on

  • reference_set – reference set (e.g. true Pareto front) to compute the mul on

  • weights_set – weights to use for the utility computation

  • utility – utility function to use (default: dot product)

Returns:

float – mul metric

morl_baselines.common.performance_indicators.sparsity(front: List[ndarray]) float

Sparsity metric from PGMORL.

(!) This metric only considers the points from the PF identified by the algorithm, not the full objective space. Therefore, it is misleading (e.g. learning only one point is considered good) and we recommend not using it when comparing algorithms.

Basically, the sparsity is the average distance between each point in the front.

Parameters:

front – current pareto front to compute the sparsity on

Returns:

float – sparsity metric