Compute the dominated hypervolume of the rank-1 (Pareto) population at each recorded generation. Useful for diagnosing convergence — a flattening curve suggests further iterations are unlikely to expand the front.

hypervolume_history(
  object,
  ref = NULL,
  ref_buffer = 0.05,
  include_dominated = FALSE
)

# S4 method for class 'OptimizationResult'
hypervolume_history(
  object,
  ref = NULL,
  ref_buffer = 0.05,
  include_dominated = FALSE
)

Arguments

object

An OptimizationResult with non-empty nsga_history().

ref

Optional numeric reference point in user-facing direction. If NULL, derived from the final generation's Pareto set.

ref_buffer

Fractional outward shift applied per objective when ref is auto-computed. Default 0.05.

include_dominated

Logical; if TRUE, compute HV over the full generation population rather than only the rank-1 individuals. Default FALSE.

Value

A data frame with columns generation and hypervolume. The reference point used is attached as attr(., "ref").

Details

Requires the optimization to have been run with record_history = TRUE and the suggested emoa package to be installed. The reference point is held fixed across generations so HV values are comparable: if not supplied, the nadir of the final generation's Pareto set is used (with ref_buffer).

Methods (by class)

  • hypervolume_history(OptimizationResult): HV trajectory by generation.