~/bend-docscommunity

algorithm.bend relies on unsafe/foreign

raw source on the hub · import 0xd1de66b5d9157913a654c39186289f3d/algorithm.bend as Algorithm

Unsga3Algorithm.Run — C# Unsga3.Algorithm.Unsga3Algorithm. init → evaluate → loop: tournament parents → SBX (η=30, p=1.0) → polynomial mutation (η=20, p=1/n) → evaluate → survival Select with persistent Normalization. Defaults match C# operator defaults. Mating tournament for A/B is PymooCompatible. RankNicheDistance (C# ctor default) is rank → niche count → perpendicular distance → coin. Survival niching in Run threads rng (C# Select(..., rng): random among equal min-count niches). Empty niches take closest; extras are random among near-best on that ray. Uniform inNiche[Next] with this LCG collapsed oracle ZDT2. Duplicate keys round each decision variable to 12 decimal places (round(x*1e12)/1e12). That is not C# ToString("G12") (12 significant digits). Small variables diverge; see src/g12_key.bend. The seen set is the survivor population, then accepted offspring (C# CreateOffspring hashes population.Members). After pop*40 pair attempts, up to max(pop*20, 1) mutations must still be a new key; only then are duplicates accepted. Odd N: the last parent enters SBX, paired with parent 0. Even N pair lookups stay the monotonic cursor (reset to pair 0 once the cursor passes the last in-range start).

13 imports
import Base
import ./individual.bend as Ind
import ./non_dominated_sort.bend as NDS
import ./normalization.bend as Norm
import ./reference_directions.bend as Refs
import ./survival.bend as Surv
import ./bounds.bend as Bounds
import ./rng.bend as Rng
import ./sbx.bend as Sbx
import ./polynomial_mutation.bend as Poly
import ./problems.bend as Prob
import ./tournament.bend as Tour
import ./util.bend as Util

Types

type Config source · line 36 · raw

Data

type IHold source · line 113 · raw

Data

type FHold source · line 209 · raw

Data

type OHold source · line 295 · raw

Data

type UHold source · line 315 · raw

Data

Middle loop: mutation that must still be a new key. need is the remaining slots. Cap is max(pop*20, 1), counted in fuel.

type GHold source · line 453 · raw

Data

Definitions

def mk source · line 46 · raw

@+dirs:List<&2, List<&2, F32>> -> @+pop_size:Nat -> @+gens:Nat -> @+seed:Nat -> @+mode:0xd1de66b5d9157913a654c39186289f3d/tournament.Mode -> @+elim_dups:Bool -> Config

def cfg_dirs source · line 49 · raw

@c:Config -> List<&2, List<&2, F32>>

def cfg_pop source · line 54 · raw

@c:Config -> Nat

def cfg_gens source · line 59 · raw

@c:Config -> Nat

def cfg_seed source · line 64 · raw

@c:Config -> Nat

def cfg_mode source · line 69 · raw

@c:Config -> 0xd1de66b5d9157913a654c39186289f3d/tournament.Mode

def cfg_elim source · line 74 · raw

@c:Config -> Bool

def smoke_zdt1 source · line 80 · raw

Config

Smoke (not oracle): ZDT1 n=30, partitions=4 → 5 refs, pop=8, gens=3, seed=1.

def oracle_zdt1 source · line 84 · raw

Config

C# OracleCompare / EQUIVALENCE-style settings (not the smoke default).

def oracle_dtlz2 source · line 87 · raw

Config

def get_ind source · line 90 · raw

@+pop:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> @i:Nat -> 0xd1de66b5d9157913a654c39186289f3d/individual.Individual

def rand_xs.go source · line 93 · raw

@+box:0xd1de66b5d9157913a654c39186289f3d/bounds.Box -> @fuel:Nat -> @+i:Nat -> @rng:0xd1de66b5d9157913a654c39186289f3d/rng.State -> @acc:List<&2, F32> -> Pair(0xd1de66b5d9157913a654c39186289f3d/rng.State, List<&2, F32>)

def rand_xs source · line 110 · raw

@+box:0xd1de66b5d9157913a654c39186289f3d/bounds.Box -> @rng:0xd1de66b5d9157913a654c39186289f3d/rng.State -> Pair(0xd1de66b5d9157913a654c39186289f3d/rng.State, List<&2, F32>)

def init_next.xs source · line 119 · raw

@+n_obj:Nat -> @acc:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> @pair:Pair(0xd1de66b5d9157913a654c39186289f3d/rng.State, List<&2, F32>) -> IHold

def init_next source · line 123 · raw

@+box:0xd1de66b5d9157913a654c39186289f3d/bounds.Box -> @+n_obj:Nat -> @hold:IHold -> IHold

def init_loop source · line 128 · raw

@fuel:Nat -> @hold:IHold -> @+box:0xd1de66b5d9157913a654c39186289f3d/bounds.Box -> @+n_obj:Nat -> Pair(0xd1de66b5d9157913a654c39186289f3d/rng.State, List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>)

def init_pop source · line 135 · raw

@+prob:0xd1de66b5d9157913a654c39186289f3d/problems.Problem -> @n:Nat -> @rng:0xd1de66b5d9157913a654c39186289f3d/rng.State -> Pair(0xd1de66b5d9157913a654c39186289f3d/rng.State, List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>)

def vars_of.go source · line 138 · raw

@xs:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> @acc:List<&2, List<&2, F32>> -> List<&2, List<&2, F32>>

def vars_of source · line 145 · raw

@xs:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> List<&2, List<&2, F32>>

def try_add.go source · line 148 · raw

@+acc:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> @+child:0xd1de66b5d9157913a654c39186289f3d/individual.Individual -> @+seen:List<&2, List<&2, F32>> -> @+key:List<&2, F32> -> @skip:Bool -> Pair(List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>, Pair(List<&2, List<&2, F32>>, Bool))

def try_add source · line 155 · raw

@+acc:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> @+child:0xd1de66b5d9157913a654c39186289f3d/individual.Individual -> @+seen:List<&2, List<&2, F32>> -> @elim:Bool -> Pair(List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>, Pair(List<&2, List<&2, F32>>, Bool))

def pred_or_zero source · line 159 · raw

@n:Nat -> Nat

def dec_if source · line 166 · raw

@n:Nat -> @hit:Bool -> Nat

def wrap_pair.keep source · line 176 · raw

@+pair:Nat -> @last:Bool -> Nat

in_range: pair+1 < n → use pair (even-N sequence, and odd N before the last parent). last: pair+1 == n → keep pair so parent N-1 enters SBX. Otherwise reset to 0 (cursor already past the end).

def wrap_pair.go source · line 183 · raw

@+pair:Nat -> @in_range:Bool -> @last:Bool -> Nat

def wrap_pair source · line 190 · raw

@+pair:Nat -> @+n:Nat -> Nat

def pair_mate.go source · line 195 · raw

@+i:Nat -> @ok:Bool -> Nat

Second parent. In range: pair+1. At the end (odd N, first parent is N-1): parent 0. Even N never asks for a mate past N-1.

def pair_mate source · line 202 · raw

@+p0:Nat -> @+n:Nat -> Nat

def dup_fallback_cap source · line 206 · raw

@n:Nat -> Nat

C# fallback cap: max(pop * 20, 1). Unique-key stage before duplicates.

def fallback_next.m source · line 215 · raw

@acc:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> @pair:Pair(0xd1de66b5d9157913a654c39186289f3d/rng.State, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual) -> FHold

def fallback_next source · line 219 · raw

@+parents:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> @+prob:0xd1de66b5d9157913a654c39186289f3d/problems.Problem -> @+mut_p:F32 -> @hold:FHold -> FHold

def fallback_loop source · line 226 · raw

@need:Nat -> @hold:FHold -> @+parents:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> @+prob:0xd1de66b5d9157913a654c39186289f3d/problems.Problem -> @+mut_p:F32 -> Pair(0xd1de66b5d9157913a654c39186289f3d/rng.State, List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>)

def offs_add2.hit source · line 233 · raw

@+need1:Nat -> @trip:Pair(List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>, Pair(List<&2, List<&2, F32>>, Bool)) -> Pair(Nat, Pair(List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>, List<&2, List<&2, F32>>))

def offs_add2.rest source · line 237 · raw

@+need1:Nat -> @+elim:Bool -> @+c2:0xd1de66b5d9157913a654c39186289f3d/individual.Individual -> @acc1:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> @seen1:List<&2, List<&2, F32>> -> @done:Bool -> Pair(Nat, Pair(List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>, List<&2, List<&2, F32>>))

def offs_add2 source · line 244 · raw

@+need:Nat -> @acc:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> @seen:List<&2, List<&2, F32>> -> @+elim:Bool -> @+c2:0xd1de66b5d9157913a654c39186289f3d/individual.Individual -> @trip:Pair(List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>, Pair(List<&2, List<&2, F32>>, Bool)) -> Pair(Nat, Pair(List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>, List<&2, List<&2, F32>>))

def offs_pair.done source · line 256 · raw

@rng3:0xd1de66b5d9157913a654c39186289f3d/rng.State -> @trip:Pair(Nat, Pair(List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>, List<&2, List<&2, F32>>)) -> Pair(0xd1de66b5d9157913a654c39186289f3d/rng.State, Pair(Nat, Pair(List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>, List<&2, List<&2, F32>>)))

def offs_pair.m2 source · line 260 · raw

@+need:Nat -> @+acc:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> @+seen:List<&2, List<&2, F32>> -> @+elim:Bool -> @+m1:0xd1de66b5d9157913a654c39186289f3d/individual.Individual -> @pair:Pair(0xd1de66b5d9157913a654c39186289f3d/rng.State, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual) -> Pair(0xd1de66b5d9157913a654c39186289f3d/rng.State, Pair(Nat, Pair(List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>, List<&2, List<&2, F32>>)))

def offs_pair.m1 source · line 264 · raw

@+need:Nat -> @+acc:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> @+seen:List<&2, List<&2, F32>> -> @+prob:0xd1de66b5d9157913a654c39186289f3d/problems.Problem -> @+mut_p:F32 -> @+elim:Bool -> @+c2:0xd1de66b5d9157913a654c39186289f3d/individual.Individual -> @pair:Pair(0xd1de66b5d9157913a654c39186289f3d/rng.State, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual) -> Pair(0xd1de66b5d9157913a654c39186289f3d/rng.State, Pair(Nat, Pair(List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>, List<&2, List<&2, F32>>)))

def offs_pair.sbx source · line 268 · raw

@+need:Nat -> @+acc:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> @+seen:List<&2, List<&2, F32>> -> @+prob:0xd1de66b5d9157913a654c39186289f3d/problems.Problem -> @+mut_p:F32 -> @+elim:Bool -> @trip:Pair(0xd1de66b5d9157913a654c39186289f3d/rng.State, Pair(0xd1de66b5d9157913a654c39186289f3d/individual.Individual, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual)) -> Pair(0xd1de66b5d9157913a654c39186289f3d/rng.State, Pair(Nat, Pair(List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>, List<&2, List<&2, F32>>)))

def offs_pair source · line 272 · raw

@+parents:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> @+pair:Nat -> @+need:Nat -> @+acc:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> @+seen:List<&2, List<&2, F32>> -> @rng:0xd1de66b5d9157913a654c39186289f3d/rng.State -> @+prob:0xd1de66b5d9157913a654c39186289f3d/problems.Problem -> @+mut_p:F32 -> @+elim:Bool -> Pair(0xd1de66b5d9157913a654c39186289f3d/rng.State, Pair(Nat, Pair(List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>, List<&2, List<&2, F32>>)))

def offs_next.q source · line 304 · raw

@+pair0:Nat -> @quad:Pair(0xd1de66b5d9157913a654c39186289f3d/rng.State, Pair(Nat, Pair(List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>, List<&2, List<&2, F32>>))) -> OHold

def offs_next source · line 308 · raw

@+parents:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> @+prob:0xd1de66b5d9157913a654c39186289f3d/problems.Problem -> @+mut_p:F32 -> @+elim:Bool -> @hold:OHold -> OHold

def u_have source · line 323 · raw

@hold:UHold -> Pair(0xd1de66b5d9157913a654c39186289f3d/rng.State, List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>)

def u_fallback source · line 328 · raw

@+parents:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> @+prob:0xd1de66b5d9157913a654c39186289f3d/problems.Problem -> @+mut_p:F32 -> @hold:UHold -> Pair(0xd1de66b5d9157913a654c39186289f3d/rng.State, List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>)

def u_step.hold source · line 333 · raw

@+rng:0xd1de66b5d9157913a654c39186289f3d/rng.State -> @+need:Nat -> @trip:Pair(List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>, Pair(List<&2, List<&2, F32>>, Bool)) -> UHold

def u_step.child source · line 337 · raw

@+elim:Bool -> @+acc:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> @+seen:List<&2, List<&2, F32>> -> @+need:Nat -> @+rng:0xd1de66b5d9157913a654c39186289f3d/rng.State -> @+child:0xd1de66b5d9157913a654c39186289f3d/individual.Individual -> UHold

def u_step source · line 340 · raw

@+elim:Bool -> @+acc:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> @+seen:List<&2, List<&2, F32>> -> @+need:Nat -> @pair:Pair(0xd1de66b5d9157913a654c39186289f3d/rng.State, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual) -> UHold

def u_next source · line 344 · raw

@+parents:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> @+prob:0xd1de66b5d9157913a654c39186289f3d/problems.Problem -> @+mut_p:F32 -> @+elim:Bool -> @hold:UHold -> UHold

def u_loop source · line 351 · raw

@fuel:Nat -> @hold:UHold -> @+parents:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> @+prob:0xd1de66b5d9157913a654c39186289f3d/problems.Problem -> @+mut_p:F32 -> @+elim:Bool -> Pair(0xd1de66b5d9157913a654c39186289f3d/rng.State, List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>)

def offs_done source · line 367 · raw

@+parents:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> @+prob:0xd1de66b5d9157913a654c39186289f3d/problems.Problem -> @+mut_p:F32 -> @+elim:Bool -> @+n:Nat -> @hold:OHold -> Pair(0xd1de66b5d9157913a654c39186289f3d/rng.State, List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>)

def offs_have source · line 372 · raw

@hold:OHold -> Pair(0xd1de66b5d9157913a654c39186289f3d/rng.State, List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>)

def offs_loop source · line 377 · raw

@fuel:Nat -> @hold:OHold -> @+parents:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> @+prob:0xd1de66b5d9157913a654c39186289f3d/problems.Problem -> @+mut_p:F32 -> @+elim:Bool -> @+n:Nat -> Pair(0xd1de66b5d9157913a654c39186289f3d/rng.State, List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>)

def seen_start source · line 396 · raw

@+survivors:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> @elim:Bool -> List<&2, List<&2, F32>>

Hash the survivor population (not the mating sample). An individual who lost every tournament is still a duplicate of P.

def create_offspring source · line 403 · raw

@+prob:0xd1de66b5d9157913a654c39186289f3d/problems.Problem -> @+survivors:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> @+parents:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> @+n:Nat -> @rng:0xd1de66b5d9157913a654c39186289f3d/rng.State -> @+elim:Bool -> Pair(0xd1de66b5d9157913a654c39186289f3d/rng.State, List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>)

def nd_front source · line 421 · raw

@+pop:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>

def feas_only.on source · line 426 · raw

@+h:0xd1de66b5d9157913a654c39186289f3d/individual.Individual -> @rest:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> @feas:Bool -> List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>

Rank 0 is feasible whenever any feasible member exists (Deb). An all-infeasible front becomes empty here so a dump can skip it.

def feas_only source · line 433 · raw

@xs:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>

def feas_nd source · line 440 · raw

@+pop:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>

def emit_front source · line 443 · raw

@xs:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> IO(Unit)

def one_gen.prep source · line 460 · raw

@+rng:0xd1de66b5d9157913a654c39186289f3d/rng.State -> @pair:Pair(0xd1de66b5d9157913a654c39186289f3d/normalization.State, List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>) -> GHold

def one_gen.s source · line 464 · raw

@+prob:0xd1de66b5d9157913a654c39186289f3d/problems.Problem -> @+cfg:Config -> @trip:Pair(0xd1de66b5d9157913a654c39186289f3d/normalization.State, Pair(List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>, 0xd1de66b5d9157913a654c39186289f3d/rng.State)) -> GHold

def one_gen.o source · line 468 · raw

@+prob:0xd1de66b5d9157913a654c39186289f3d/problems.Problem -> @+cfg:Config -> @+pop:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> @+state:0xd1de66b5d9157913a654c39186289f3d/normalization.State -> @trip:Pair(0xd1de66b5d9157913a654c39186289f3d/rng.State, List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>) -> GHold

def one_gen.p source · line 482 · raw

@+prob:0xd1de66b5d9157913a654c39186289f3d/problems.Problem -> @+cfg:Config -> @+pop:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> @+state:0xd1de66b5d9157913a654c39186289f3d/normalization.State -> @trip:Pair(0xd1de66b5d9157913a654c39186289f3d/rng.State, List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>) -> GHold

def one_gen source · line 486 · raw

@+prob:0xd1de66b5d9157913a654c39186289f3d/problems.Problem -> @+cfg:Config -> @hold:GHold -> GHold

def gen_pop source · line 491 · raw

@hold:GHold -> List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>

def gen_loop source · line 496 · raw

@fuel:Nat -> @hold:GHold -> @+prob:0xd1de66b5d9157913a654c39186289f3d/problems.Problem -> @+cfg:Config -> List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>

def run.after_prep source · line 503 · raw

@+prob:0xd1de66b5d9157913a654c39186289f3d/problems.Problem -> @+cfg:Config -> @rng:0xd1de66b5d9157913a654c39186289f3d/rng.State -> @pair:Pair(0xd1de66b5d9157913a654c39186289f3d/normalization.State, List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>) -> List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>

def run.go source · line 507 · raw

@+prob:0xd1de66b5d9157913a654c39186289f3d/problems.Problem -> @+cfg:Config -> @pair:Pair(0xd1de66b5d9157913a654c39186289f3d/rng.State, List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>) -> List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>

def run.sized source · line 511 · raw

@+prob:0xd1de66b5d9157913a654c39186289f3d/problems.Problem -> @+cfg:Config -> @n:Nat -> List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>

def run source · line 518 · raw

@+prob:0xd1de66b5d9157913a654c39186289f3d/problems.Problem -> @+cfg:Config -> List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>

def replace_head source · line 526 · raw

@+xs:List<&2, F32> -> @+nm:Nat -> @pop:List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual> -> List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>

Replace the first random member with seed_x before evaluate. The rest of the initial population still consumes the seed RNG. C# places the seed first and does not draw RNG for it; this helper only guarantees a known feasible start for the constrained smoke.

def run_seeded.go source · line 533 · raw

@+prob:0xd1de66b5d9157913a654c39186289f3d/problems.Problem -> @+cfg:Config -> @+seed_x:List<&2, F32> -> @pair:Pair(0xd1de66b5d9157913a654c39186289f3d/rng.State, List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>) -> List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>

def run_seeded.sized source · line 537 · raw

@+prob:0xd1de66b5d9157913a654c39186289f3d/problems.Problem -> @+cfg:Config -> @+seed_x:List<&2, F32> -> @n:Nat -> List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>

def run_seeded source · line 544 · raw

@+prob:0xd1de66b5d9157913a654c39186289f3d/problems.Problem -> @+cfg:Config -> @+seed_x:List<&2, F32> -> List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>

def run_zdt1_smoke source · line 548 · raw

List<&2, 0xd1de66b5d9157913a654c39186289f3d/individual.Individual>