Skip to content

Add weight field to Observable for weighted Pareto analysis #90

@jc-macdonald

Description

@jc-macdonald

Summary

Add an optional weight: float = 1.0 field to Observable so users can express relative importance of objectives in Pareto analysis.

Motivation

Currently all observables are treated equally in non-dominated sorting. Users often care more about some objectives than others (e.g. MAE matters more than coverage). Weighted Pareto scales the objective space before NDS, preserving multi-objective structure while reflecting preferences.

Scope

  • Add weight: float = 1.0 to Observable dataclass
  • Propagate weights into extract_front(), pareto_rank(), hypervolume(), igd_plus()
  • Propagate through top_k_pareto_filter(), Study.front(), Study.front_hypervolume()
  • Propagate into run_adaptive() (scale optuna objective values)
  • Tests for weighted vs unweighted behavior
  • Backward compatible: default weight=1.0 preserves existing behavior

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2-mediumShould fixfeatureNew feature or enhancementparetopareto.py moduleprotocolsprotocols.py modulerunnerrunner.py modulestudystudy.py module

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions