def nearest_go

unified-nsga-iii@0.2.2.0 · survival.bend:245

import unified-nsga-iii@0.2.2.0/survival.bend as Survival
import Base

245# First-min on strict `<` (ties keep the lower index). Sequential over
246# dirs; associate_raw already mid-splits per individual.
247def nearest_go(+f: List<&2, F32>, dirs: List<&2, List<&2, F32>>, +i: Nat, +best_i: Nat, +best_d: F32) -> Assignment:
248  match dirs:
249    case Nil{}:
250      MkAssignment{best_i, best_d, 0n}
251    case +w <> ws:
252      +d = perp(f, w)
253      nearest_go(
254        f,
255        ws,
256        1n+i,
257        Bool.pick(Nat, F32.is_lt(d, best_d), i, best_i),
258        Bool.pick(F32, F32.is_lt(d, best_d), d, best_d)
259      )

Uses (7)

Used by (1)