Niche Identifier
Niche identification for the ISC global phase (Algorithm 2). Operating over the population (not all of the feasible region), it finds the niche centers L: population members that are at least as good as every one of their active neighbors. A member j is an active neighbor of i when the COMPASS halfway hyperplane separating i from j actively bounds i's most-promising area — i.e. it is not redundant given i's other halfway hyperplanes and the problem's original linear constraints. This is exactly the active-set structure the COMPASS pruner uses, so it is reused here via the same RedundantConstraintChecker.
From the centers it derives the niche radius r = ½ · min‖x_i − x_j‖ over the centers and the niche count q = |L|, then assigns each population member to the nearest center within r.
Because identification runs over the population (size m_G), the brute-force redundancy checker is tractable; the cost is O(m_G²) redundancy tests, each over O(m_G) half-spaces.
Parameters
the redundancy strategy used to decide which neighbors are active
Functions
Identifies the niches in population for problemDefinition. compareSolutions orders solutions best-first (negative when the first argument is better), matching the solver's ksl.simopt.solvers.Solver.compare.