def niche_loop

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

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

659def niche_loop(fuel: Nat, k: Nat, rows: List<&2, NRow>, +counts: List<&2, Nat>, selected: List<&2, Nat>) -> List<&2, Nat>:
660  match fuel k rows:
661    case 0n kk r:
662      selected
663    case f 0n r:
664      selected
665    case f kk Nil{}:
666      selected
667    case 1n+f 1n+krest +r0 <> +rs:
668      +rows2 = {r0 <> rs : List<&2, NRow>}
669      +r = pick_ref.rows(counts, rows2)
670      +pick = pick_member.rows(counts, rows2, r)
671      niche_loop(
672        f,
673        krest,
674        drop_nrow(rows2, pick),
675        Util.inc_at(counts, r),
676        List.append(&2, Nat, selected, [pick])
677      )

Uses (8)

Used by (1)