Skip to content

Implement Pareto module wrapping Metaheuristics.jl #26

@jc-macdonald

Description

@jc-macdonald

Summary

Port pareto.py functionality using Metaheuristics.jl (JOSS published, NSGA-II/III, HV, IGD+, non-dominated sorting).

Functions to Implement

Function Description Metaheuristics.jl API
extract_front(costs, directions) Extract Pareto-optimal rows non_dominated_sort
pareto_rank(costs, directions) Assign Pareto rank to each row non_dominated_sort
hypervolume(front, ref) Hypervolume indicator HV indicator
igd_plus(front, reference_front) IGD+ indicator IGDPlus indicator

Design Notes

  • Direction flipping (MAXIMIZE → negate before sorting) should mirror the Python implementation.
  • Metaheuristics.jl provides all needed indicators natively: GD, IGD, IGD+, HV, spacing, Δₚ.
  • Lazy-load via package extension if Metaheuristics.jl is heavy.

Dependencies

[deps]
Metaheuristics = "..."

[compat]
Metaheuristics = "3"

Acceptance Criteria

  • All four functions exported and documented
  • Direction handling tested (minimize + maximize mixed)
  • Property tests: front ⊆ input rows, ranks ≥ 1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions