Pareto Utilities¶
pareto
¶
Pareto-front utilities for bi-objective minimization.
This module provides basic tools to identify non-dominated solutions (Pareto-optimal points) in a multi-objective optimization problem.
All objectives are assumed to be minimized.
pareto_mask(objectives)
¶
Identify non-dominated solutions using pairwise comparisons.
A solution is considered non-dominated if no other solution is strictly better in at least one objective while being no worse in all others.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
objectives
|
ndarray
|
Array of shape |
required |
Returns:
| Type | Description |
|---|---|
ndarray
|
np.ndarray: Boolean array of shape |
ndarray
|
that the corresponding solution is non-dominated (Pareto-efficient). |
Raises:
| Type | Description |
|---|---|
ValueError
|
If |
Notes
This implementation performs a quadratic number of comparisons (O(n²)), which is sufficient for moderate-sized datasets typical of this project.
The dominance relation used is:
- solution A dominates solution B if:
- A is no worse than B in all objectives, and
- A is strictly better in at least one objective.
Source code in src\tramway_optimization\pareto.py
pareto_front(objectives)
¶
Return indices of Pareto-optimal solutions.
This function extracts the non-dominated solutions and sorts them according to the first objective for easier visualization (e.g. plotting a Pareto curve).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
objectives
|
ndarray
|
Array of shape |
required |
Returns:
| Type | Description |
|---|---|
ndarray
|
np.ndarray: Indices of non-dominated solutions, sorted in ascending order |
ndarray
|
of the first objective. |
Notes
Sorting by the first objective is convenient for visualization but does not affect the dominance relation itself.