MaxDivProblem
MaxDivProblem
dataclass
MaxDivProblem(
*, k: int, diversity_metric: DiversityMetric, constraints: list[Constraint]
)
Bases: ABC
Immutable definition of a Maximum Diversity Problem.
A problem consists of n items of which k must be selected, a diversity metric,
and optionally a list of fairness constraints. Two flavors exist, differing in how item
dissimilarity is defined:
VectorMaxDivProblem— items are vectors and distances are computed with a chosen distance metric; created vianew.DistanceMaxDivProblem— pairwise distances are supplied directly, for custom or non-Euclidean metrics; created viafrom_distances.
Use the new / from_distances factory methods to create instances with validation.
condensed_distances
abstractmethod
Return the condensed pairwise-distance vector (scipy layout), computing it if needed.
new
classmethod
new(
vectors: ndarray,
k: int,
distance_metric: DistanceMetric = L2_EUCLIDEAN,
diversity_metric: DiversityMetric = GEOMEAN_SEPARATION,
constraints: list[Constraint] | None = None,
) -> VectorMaxDivProblem
Create a new VectorMaxDivProblem with validation.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
vectors
|
ndarray
|
2D numpy array of shape |
required |
k
|
int
|
Number of items to select (must satisfy |
required |
distance_metric
|
DistanceMetric
|
Distance metric for pairwise distances. |
L2_EUCLIDEAN
|
diversity_metric
|
DiversityMetric
|
Diversity metric to maximize. |
GEOMEAN_SEPARATION
|
constraints
|
list[Constraint] | None
|
Optional list of fairness constraints. |
None
|
from_distances
classmethod
from_distances(
distances: ndarray,
k: int,
diversity_metric: DiversityMetric = GEOMEAN_SEPARATION,
constraints: list[Constraint] | None = None,
) -> DistanceMaxDivProblem
Create a new DistanceMaxDivProblem from precomputed pairwise distances, with validation.
Accepts either a square symmetric (n, n) distance matrix or a condensed distance
vector of length n*(n-1)/2 (scipy layout, as produced by scipy.spatial.distance.pdist).
Distances are converted to float32 internally.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
distances
|
ndarray
|
Square symmetric |
required |
k
|
int
|
Number of items to select (must satisfy |
required |
diversity_metric
|
DiversityMetric
|
Diversity metric to maximize. |
GEOMEAN_SEPARATION
|
constraints
|
list[Constraint] | None
|
Optional list of fairness constraints. |
None
|