def beta.pick

unified-nsga-iii@0.2.2.0 · sbx.bend:46

import unified-nsga-iii@0.2.2.0/sbx.bend as Sbx
import Base

46# C#: if rand <= 1/alpha then (rand*alpha)^(1/(η+1)) else (1/(2-rand*alpha))^(1/(η+1)).
47def beta.pick(+rand: F32, +alpha: F32, +inv: F32, lo: Bool) -> F32:
48  match lo:
49    case True{}:
50      F32.pow(F32.mul(rand, alpha), inv)
51    case False{}:
52      F32.pow(F32.div(1.0, F32.sub(2.0, F32.mul(rand, alpha))), inv)

Uses (6)

Used by (1)