Normalization.normalize_mixed: def of unified-nsga-iii@0.2.2.0 Import: import unified-nsga-iii@0.2.2.0/normalization.bend as Normalization Lines 611-629 of unified-nsga-iii@0.2.2.0/normalization.bend: https://jend.leeeet.dev/read.txt?path=unified-nsga-iii@0.2.2.0/normalization.bend&start_line=611&end_line=629 import Base import unified-nsga-iii@0.2.2.0/individual.bend as Ind # Stats (ideal, worst, extremes, nadir) use the feasible subset. # Every member, including infeasible, is translated by that hyperplane. def normalize_mixed(state: State, +pop: List<&2, Ind.Individual>, nd: List<&2, Nat>) -> State & List<&2, List<&2, F32>>: match state: case MkState{n_objectives, ideal, worst, nadir, intercepts, extremes}: +stat = feas_inds(pop) +use = nd_mixed(pop, nd) +mn = col_min(stat) +mx = col_max(stat) +ideal2 = merge_ideal(ideal, mn) +worst2 = merge_worst(worst, mx) +front = col_max_idx(pop, use) +cand = List.append(&2, List<&2, F32>, extremes, gather_objs(pop, use)) +m = n_obj_pop(pop) +ext = pick_extremes(cand, ideal2, m) +nadir0 = nadir_from_maybe(try_intercepts(ext, ideal2), ideal2, worst2, front) +nadir1 = fallback_pop(nadir0, ideal2, mx) +nadir2 = fallback_unit(nadir1, ideal2) (MkState{m, ideal2, worst2, nadir2, spans_or_one(nadir2, ideal2), ext}, map_norm(ideal2, nadir2, pop)) Uses (24): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=F32 https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=List https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=List.append https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Pair https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Sigma https://jend.leeeet.dev/definition.txt?path=unified-nsga-iii@0.2.2.0/individual.bend&name=Individual https://jend.leeeet.dev/definition.txt?path=unified-nsga-iii@0.2.2.0/normalization.bend&name=State https://jend.leeeet.dev/definition.txt?path=unified-nsga-iii@0.2.2.0/normalization.bend&name=col_max https://jend.leeeet.dev/definition.txt?path=unified-nsga-iii@0.2.2.0/normalization.bend&name=col_max_idx https://jend.leeeet.dev/definition.txt?path=unified-nsga-iii@0.2.2.0/normalization.bend&name=col_min https://jend.leeeet.dev/definition.txt?path=unified-nsga-iii@0.2.2.0/normalization.bend&name=fallback_pop https://jend.leeeet.dev/definition.txt?path=unified-nsga-iii@0.2.2.0/normalization.bend&name=fallback_unit https://jend.leeeet.dev/definition.txt?path=unified-nsga-iii@0.2.2.0/normalization.bend&name=feas_inds https://jend.leeeet.dev/definition.txt?path=unified-nsga-iii@0.2.2.0/normalization.bend&name=gather_objs https://jend.leeeet.dev/definition.txt?path=unified-nsga-iii@0.2.2.0/normalization.bend&name=map_norm https://jend.leeeet.dev/definition.txt?path=unified-nsga-iii@0.2.2.0/normalization.bend&name=merge_ideal https://jend.leeeet.dev/definition.txt?path=unified-nsga-iii@0.2.2.0/normalization.bend&name=merge_worst https://jend.leeeet.dev/definition.txt?path=unified-nsga-iii@0.2.2.0/normalization.bend&name=n_obj_pop https://jend.leeeet.dev/definition.txt?path=unified-nsga-iii@0.2.2.0/normalization.bend&name=nadir_from_maybe https://jend.leeeet.dev/definition.txt?path=unified-nsga-iii@0.2.2.0/normalization.bend&name=nd_mixed https://jend.leeeet.dev/definition.txt?path=unified-nsga-iii@0.2.2.0/normalization.bend&name=pick_extremes https://jend.leeeet.dev/definition.txt?path=unified-nsga-iii@0.2.2.0/normalization.bend&name=spans_or_one https://jend.leeeet.dev/definition.txt?path=unified-nsga-iii@0.2.2.0/normalization.bend&name=try_intercepts