def by_niche.eq

unified-nsga-iii@0.2.2.0 · tournament.bend:99

import unified-nsga-iii@0.2.2.0/tournament.bend as Tournament
import Base
import unified-nsga-iii@0.2.2.0/individual.bend as Ind
import unified-nsga-iii@0.2.2.0/rng.bend as Rng

99# Equal niche counts fall through to perpendicular distance (then coin).
100# A count tie used to coin immediately and skip distance.
101def by_niche.eq(+a: Ind.Individual, +b: Ind.Individual, rng: Rng.State, same: Bool) -> Rng.State & Ind.Individual:
102  match same:
103    case True{}:
104      by_dist(a, b, rng)
105    case False{}:
106      cmp_pick(a, b, rng, Nat.is_lt(Ind.niche(a), Ind.niche(b)), Nat.is_lt(Ind.niche(b), Ind.niche(a)))

Uses (8)

Used by (1)