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
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)