def start
unified-nsga-iii@0.2.2.0 · sbx.bend:161
import unified-nsga-iii@0.2.2.0/sbx.bend as Sbx
import Base
import unified-nsga-iii@0.2.2.0/individual.bend as Ind
import unified-nsga-iii@0.2.2.0/bounds.bend as Bounds
import unified-nsga-iii@0.2.2.0/rng.bend as Rng
161def start(
162 +eta: F32,
163 +x1s: List<&2, F32>,
164 +x2s: List<&2, F32>,
165 +box: Bounds.Box,
166 rng: Rng.State,
167 +m: Nat,
168 n: Nat
169) -> Rng.State & Ind.Individual & Ind.Individual:
170 match n:
171 case 0n:
172 (rng, Ind.from_variables(x1s, m), Ind.from_variables(x2s, m))
173 case 1n+f:
174 +rng2 = Rng.next_double(rng)
175 finish(
176 m,
177 loop(
178 1n+f,
179 F32.is_gt(Rng.last_double(rng2), 0.5),
180 close_heads(x1s, x2s),
181 eta, x1s, x2s, Bounds.intervals_of(box), rng2, Nil{}, Nil{}
182 )
183 )