Changelog
Source:NEWS.md
Coreset 1.0.0 (2026-09-09)
Coreset selects a representative subset of a fixed candidate set under an arbitrary distance, solving four discrete location objectives on a distance matrix, a coordinate matrix, or an on-demand distance-column oracle.
Max-Min diversity (MMDP / discrete p-dispersion)
Maximises the minimum pairwise distance within a subset of size k.
-
FarFirst(): greedy farthest-first selection (Gonzalez 1985), with a choice of peripheral seeding strategies, distinct-seed random restarts (nSeeds), and a robust ensemble default. -
DropAdd(): DropAdd tabu search (Porumbel et al. 2011), which can compute distances between pairs on the fly rather than needing a complete matrix a priori. -
Grasp(): GRASP with path relinking (Resende et al. 2010), attaining the highestT_kof the package’s heuristics on small to medium instances. -
ExactMaxMin(): exact node-packing optimum (Sayyady & Fathi 2016), decided by clique search.
Max-Mean dispersion
-
MaxMean(): reinforcement-learning-guided tabu search (Nijimbere et al. 2020), selecting a subset of unrestricted size that maximises the mean pairwise distance.
Discrete k-centre
Minimises the largest distance from any element to its nearest selected centre.
-
KCentre(): the CDSh covering heuristic (Garcia-Diaz et al. 2017, 2019). -
ExactKCentre(): exact minimum-cover optimum.
Max-Sum diversity and maximum entropy
-
ExactMaxSum(): exact solver for the Max-Sum Diversity Problem (requires ‘highs’). -
MaxEntropy(): maximum-entropy (maxdet) selection — the mode of a determinantal point process — by greedy pivoted-Cholesky selection, and by exact enumeration for small instances.
Scoring and utilities
-
MinDist(),MeanDist()andKCentreRadius()score an arbitrary selection under the max-min, max-mean and k-centre objectives respectively. -
PickPoint()exposes the peripheral seed indices directly. -
DropAdd()andGrasp()accept amaxCandidatescomposable-coreset cap, thinning the candidate set withFarFirst()before the expensive search and mapping the chosen indices back to the original numbering. - Each solver returns a classed object with
print(),format()and (where informative)summary()methods giving a terse or detailed report of the selection, the achieved objective, and the search effort. - Solver behaviour is tunable through
options(Coreset.symmetryTolerance = ), which sets how large a rounding discrepancy betweend[i, j]andd[j, i]is repaired rather than refused, andoptions(Coreset.progress = ).