def argmin_dist.go

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

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

461def argmin_dist.go(+asgs: List<&2, Assignment>, +fuel: Nat, cand: List<&2, Nat>) -> Nat:
462  match fuel cand:
463    case 0n Nil{}:
464      0n
465    case 0n +i <> Nil{}:
466      i
467    case 0n +i <> +j <> js:
468      argmin_join(asgs, i, argmin_dist.go(asgs, 0n, j <> js))
469    case 1n+p Nil{}:
470      0n
471    case 1n+p +i <> Nil{}:
472      i
473    case 1n+p h <> t:
474      +all = {h <> t : List<&2, Nat>}
475      +mid = Nat.div(Util.list_len(Nat, all), 2n)
476      lo hi = argmin_dist.go(asgs, p, List.take(&2, Nat, all, mid)) argmin_dist.go(asgs, p, List.drop(&2, Nat, all, mid))
477      argmin_join(asgs, lo, hi)

Uses (8)

Used by (1)