Skip to content

Implement Pareto module wrapping Metaheuristics.jl #26

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions