def map_norm.go

unified-nsga-iii@0.2.2.0 · normalization.bend:151

import unified-nsga-iii@0.2.2.0/normalization.bend as Normalization
import Base
import unified-nsga-iii@0.2.2.0/individual.bend as Ind
import unified-nsga-iii@0.2.2.0/util.bend as Util

151# Independent per individual given ideal/nadir. Mid-split + parallel recurse.
152def map_norm.go(+ideal: List<&2, F32>, +nadir: List<&2, F32>, +fuel: Nat, pop: List<&2, Ind.Individual>) -> List<&2, List<&2, F32>>:
153  match fuel pop:
154    case 0n Nil{}:
155      Nil{}
156    case 0n h <> t:
157      map_norm.one(ideal, nadir, h) <> map_norm.go(ideal, nadir, 0n, t)
158    case 1n+p Nil{}:
159      Nil{}
160    case 1n+p h <> Nil{}:
161      map_norm.one(ideal, nadir, h) <> Nil{}
162    case 1n+p h <> t:
163      +all = {h <> t : List<&2, Ind.Individual>}
164      +mid = Nat.div(Util.list_len(Ind.Individual, all), 2n)
165      lo hi = map_norm.go(ideal, nadir, p, List.take(&2, Ind.Individual, all, mid)) map_norm.go(ideal, nadir, p, List.drop(&2, Ind.Individual, all, mid))
166      List.append(&2, List<&2, F32>, lo, hi)

Uses (10)

Used by (1)