Pareto¶
Multi-objective Pareto front analysis.
trade_study.extract_front(scores, directions, weights=None)
¶
Extract Pareto-optimal indices from a score matrix.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
scores
|
NDArray[floating[Any]]
|
Array of shape (n_trials, n_objectives). |
required |
directions
|
list[Direction]
|
Optimization direction for each objective. |
required |
weights
|
list[float] | None
|
Optional objective scaling. Strictly positive weights preserve dominance and front membership; they do not encode preferences. |
None
|
Returns:
| Type | Description |
|---|---|
NDArray[intp]
|
Integer array of row indices on the Pareto front. |
Examples:
>>> scores = np.array([[1.0, 1.0], [2.0, 2.0], [0.5, 3.0]])
>>> directions = [Direction.MINIMIZE, Direction.MINIMIZE]
>>> sorted(extract_front(scores, directions).tolist())
[0, 2]
Source code in src/trade_study/_pareto.py
trade_study.pareto_rank(scores, directions, weights=None)
¶
Assign Pareto rank to each trial (0 = front, 1 = next layer, ...).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
scores
|
NDArray[floating[Any]]
|
Array of shape (n_trials, n_objectives). |
required |
directions
|
list[Direction]
|
Optimization direction for each objective. |
required |
weights
|
list[float] | None
|
Optional per-objective weights. |
None
|
Returns:
| Type | Description |
|---|---|
NDArray[intp]
|
Integer array of ranks, shape (n_trials,). |
Examples:
>>> scores = np.array([[1.0, 1.0], [2.0, 2.0]])
>>> pareto_rank(scores, [Direction.MINIMIZE] * 2).tolist()
[0, 1]
Source code in src/trade_study/_pareto.py
trade_study.hypervolume(front, ref_point, directions=None, weights=None)
¶
Compute hypervolume indicator for a Pareto front.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
front
|
NDArray[floating[Any]]
|
Array of shape (n_points, n_objectives) on the front. |
required |
ref_point
|
NDArray[floating[Any]]
|
Reference point worse than all front points in every objective after direction normalization. |
required |
directions
|
list[Direction] | None
|
If provided, flips maximize objectives before computing. |
None
|
weights
|
list[float] | None
|
Optional per-objective weights applied after direction flip. |
None
|
Returns:
| Type | Description |
|---|---|
float
|
Hypervolume value. |
Source code in src/trade_study/_pareto.py
trade_study.igd_plus(front, reference, directions=None, weights=None)
¶
Compute IGD+ indicator.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
front
|
NDArray[floating[Any]]
|
Obtained Pareto front. |
required |
reference
|
NDArray[floating[Any]]
|
Reference Pareto front. |
required |
directions
|
list[Direction] | None
|
Optimization directions. |
None
|
weights
|
list[float] | None
|
Optional per-objective weights applied after direction flip. |
None
|
Returns:
| Type | Description |
|---|---|
float
|
IGD+ value (lower is better). |