algorithm.bend relies on unsafe/foreign
raw source on the hub · import 0x2bc7fb472c80bd6a0e04725c117edb2a/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
MkConfig@dirs:List<&2, List<&2, F32>> -> @pop_size:Nat -> @gens:Nat -> @seed:Nat -> @mode:0x2bc7fb472c80bd6a0e04725c117edb2a/tournament.Mode -> @elim_dups:Bool -> Config
type IHold source · line 113 · raw
Data
IH@rng:0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State -> @acc:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> IHold
type FHold source · line 209 · raw
Data
FH@rng:0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State -> @acc:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> FHold
type OHold source · line 295 · raw
Data
OH@need:Nat -> @pair:Nat -> @rng:0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State -> @acc:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @seen:List<&2, List<&2, F32>> -> OHold
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.
UH@rng:0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State -> @acc:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @seen:List<&2, List<&2, F32>> -> @need:Nat -> UHold
type GHold source · line 453 · raw
Data
GH@st:0x2bc7fb472c80bd6a0e04725c117edb2a/normalization.State -> @xs:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @rng:0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State -> GHold
Definitions
def mk source · line 46 · raw
@+dirs:List<&2, List<&2, F32>> -> @+pop_size:Nat -> @+gens:Nat -> @+seed:Nat -> @+mode:0x2bc7fb472c80bd6a0e04725c117edb2a/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 -> 0x2bc7fb472c80bd6a0e04725c117edb2a/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, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @i:Nat -> 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual
def rand_xs.go source · line 93 · raw
@+box:0x2bc7fb472c80bd6a0e04725c117edb2a/bounds.Box -> @fuel:Nat -> @+i:Nat -> @rng:0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State -> @acc:List<&2, F32> -> Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State, List<&2, F32>)
def rand_xs source · line 110 · raw
@+box:0x2bc7fb472c80bd6a0e04725c117edb2a/bounds.Box -> @rng:0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State -> Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State, List<&2, F32>)
def init_next.xs source · line 119 · raw
@+n_obj:Nat -> @acc:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @pair:Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State, List<&2, F32>) -> IHold
def init_next source · line 123 · raw
@+box:0x2bc7fb472c80bd6a0e04725c117edb2a/bounds.Box -> @+n_obj:Nat -> @hold:IHold -> IHold
def init_loop source · line 128 · raw
@fuel:Nat -> @hold:IHold -> @+box:0x2bc7fb472c80bd6a0e04725c117edb2a/bounds.Box -> @+n_obj:Nat -> Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State, List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>)
def init_pop source · line 135 · raw
@+prob:0x2bc7fb472c80bd6a0e04725c117edb2a/problems.Problem -> @n:Nat -> @rng:0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State -> Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State, List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>)
def vars_of.go source · line 138 · raw
@xs:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @acc:List<&2, List<&2, F32>> -> List<&2, List<&2, F32>>
def vars_of source · line 145 · raw
@xs:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> List<&2, List<&2, F32>>
def try_add.go source · line 148 · raw
@+acc:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @+child:0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual -> @+seen:List<&2, List<&2, F32>> -> @+key:List<&2, F32> -> @skip:Bool -> Pair(List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>, Pair(List<&2, List<&2, F32>>, Bool))
def try_add source · line 155 · raw
@+acc:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @+child:0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual -> @+seen:List<&2, List<&2, F32>> -> @elim:Bool -> Pair(List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/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, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @pair:Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual) -> FHold
def fallback_next source · line 219 · raw
@+parents:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @+prob:0x2bc7fb472c80bd6a0e04725c117edb2a/problems.Problem -> @+mut_p:F32 -> @hold:FHold -> FHold
def fallback_loop source · line 226 · raw
@need:Nat -> @hold:FHold -> @+parents:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @+prob:0x2bc7fb472c80bd6a0e04725c117edb2a/problems.Problem -> @+mut_p:F32 -> Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State, List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>)
def offs_add2.hit source · line 233 · raw
@+need1:Nat -> @trip:Pair(List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>, Pair(List<&2, List<&2, F32>>, Bool)) -> Pair(Nat, Pair(List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>, List<&2, List<&2, F32>>))
def offs_add2.rest source · line 237 · raw
@+need1:Nat -> @+elim:Bool -> @+c2:0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual -> @acc1:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @seen1:List<&2, List<&2, F32>> -> @done:Bool -> Pair(Nat, Pair(List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>, List<&2, List<&2, F32>>))
def offs_add2 source · line 244 · raw
@+need:Nat -> @acc:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @seen:List<&2, List<&2, F32>> -> @+elim:Bool -> @+c2:0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual -> @trip:Pair(List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>, Pair(List<&2, List<&2, F32>>, Bool)) -> Pair(Nat, Pair(List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>, List<&2, List<&2, F32>>))
def offs_pair.done source · line 256 · raw
@rng3:0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State -> @trip:Pair(Nat, Pair(List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>, List<&2, List<&2, F32>>)) -> Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State, Pair(Nat, Pair(List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>, List<&2, List<&2, F32>>)))
def offs_pair.m2 source · line 260 · raw
@+need:Nat -> @+acc:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @+seen:List<&2, List<&2, F32>> -> @+elim:Bool -> @+m1:0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual -> @pair:Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual) -> Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State, Pair(Nat, Pair(List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>, List<&2, List<&2, F32>>)))
def offs_pair.m1 source · line 264 · raw
@+need:Nat -> @+acc:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @+seen:List<&2, List<&2, F32>> -> @+prob:0x2bc7fb472c80bd6a0e04725c117edb2a/problems.Problem -> @+mut_p:F32 -> @+elim:Bool -> @+c2:0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual -> @pair:Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual) -> Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State, Pair(Nat, Pair(List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>, List<&2, List<&2, F32>>)))
def offs_pair.sbx source · line 268 · raw
@+need:Nat -> @+acc:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @+seen:List<&2, List<&2, F32>> -> @+prob:0x2bc7fb472c80bd6a0e04725c117edb2a/problems.Problem -> @+mut_p:F32 -> @+elim:Bool -> @trip:Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State, Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual)) -> Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State, Pair(Nat, Pair(List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>, List<&2, List<&2, F32>>)))
def offs_pair source · line 272 · raw
@+parents:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @+pair:Nat -> @+need:Nat -> @+acc:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @+seen:List<&2, List<&2, F32>> -> @rng:0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State -> @+prob:0x2bc7fb472c80bd6a0e04725c117edb2a/problems.Problem -> @+mut_p:F32 -> @+elim:Bool -> Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State, Pair(Nat, Pair(List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>, List<&2, List<&2, F32>>)))
def offs_next.q source · line 304 · raw
@+pair0:Nat -> @quad:Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State, Pair(Nat, Pair(List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>, List<&2, List<&2, F32>>))) -> OHold
def offs_next source · line 308 · raw
@+parents:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @+prob:0x2bc7fb472c80bd6a0e04725c117edb2a/problems.Problem -> @+mut_p:F32 -> @+elim:Bool -> @hold:OHold -> OHold
def u_have source · line 323 · raw
@hold:UHold -> Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State, List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>)
def u_fallback source · line 328 · raw
@+parents:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @+prob:0x2bc7fb472c80bd6a0e04725c117edb2a/problems.Problem -> @+mut_p:F32 -> @hold:UHold -> Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State, List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>)
def u_step.hold source · line 333 · raw
@+rng:0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State -> @+need:Nat -> @trip:Pair(List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>, Pair(List<&2, List<&2, F32>>, Bool)) -> UHold
def u_step.child source · line 337 · raw
@+elim:Bool -> @+acc:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @+seen:List<&2, List<&2, F32>> -> @+need:Nat -> @+rng:0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State -> @+child:0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual -> UHold
def u_step source · line 340 · raw
@+elim:Bool -> @+acc:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @+seen:List<&2, List<&2, F32>> -> @+need:Nat -> @pair:Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual) -> UHold
def u_next source · line 344 · raw
@+parents:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @+prob:0x2bc7fb472c80bd6a0e04725c117edb2a/problems.Problem -> @+mut_p:F32 -> @+elim:Bool -> @hold:UHold -> UHold
def u_loop source · line 351 · raw
@fuel:Nat -> @hold:UHold -> @+parents:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @+prob:0x2bc7fb472c80bd6a0e04725c117edb2a/problems.Problem -> @+mut_p:F32 -> @+elim:Bool -> Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State, List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>)
def offs_done source · line 367 · raw
@+parents:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @+prob:0x2bc7fb472c80bd6a0e04725c117edb2a/problems.Problem -> @+mut_p:F32 -> @+elim:Bool -> @+n:Nat -> @hold:OHold -> Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State, List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>)
def offs_have source · line 372 · raw
@hold:OHold -> Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State, List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>)
def offs_loop source · line 377 · raw
@fuel:Nat -> @hold:OHold -> @+parents:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @+prob:0x2bc7fb472c80bd6a0e04725c117edb2a/problems.Problem -> @+mut_p:F32 -> @+elim:Bool -> @+n:Nat -> Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State, List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>)
def seen_start source · line 396 · raw
@+survivors:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/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:0x2bc7fb472c80bd6a0e04725c117edb2a/problems.Problem -> @+survivors:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @+parents:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @+n:Nat -> @rng:0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State -> @+elim:Bool -> Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State, List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>)
def nd_front source · line 421 · raw
@+pop:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>
def feas_only.on source · line 426 · raw
@+h:0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual -> @rest:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @feas:Bool -> List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/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, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>
def feas_nd source · line 440 · raw
@+pop:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>
def emit_front source · line 443 · raw
@xs:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> IO(Unit)
def one_gen.prep source · line 460 · raw
@+rng:0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State -> @pair:Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/normalization.State, List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>) -> GHold
def one_gen.s source · line 464 · raw
@+prob:0x2bc7fb472c80bd6a0e04725c117edb2a/problems.Problem -> @+cfg:Config -> @trip:Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/normalization.State, Pair(List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>, 0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State)) -> GHold
def one_gen.o source · line 468 · raw
@+prob:0x2bc7fb472c80bd6a0e04725c117edb2a/problems.Problem -> @+cfg:Config -> @+pop:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @+state:0x2bc7fb472c80bd6a0e04725c117edb2a/normalization.State -> @trip:Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State, List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>) -> GHold
def one_gen.p source · line 482 · raw
@+prob:0x2bc7fb472c80bd6a0e04725c117edb2a/problems.Problem -> @+cfg:Config -> @+pop:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> @+state:0x2bc7fb472c80bd6a0e04725c117edb2a/normalization.State -> @trip:Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State, List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>) -> GHold
def one_gen source · line 486 · raw
@+prob:0x2bc7fb472c80bd6a0e04725c117edb2a/problems.Problem -> @+cfg:Config -> @hold:GHold -> GHold
def gen_pop source · line 491 · raw
@hold:GHold -> List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>
def gen_loop source · line 496 · raw
@fuel:Nat -> @hold:GHold -> @+prob:0x2bc7fb472c80bd6a0e04725c117edb2a/problems.Problem -> @+cfg:Config -> List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>
def run.after_prep source · line 503 · raw
@+prob:0x2bc7fb472c80bd6a0e04725c117edb2a/problems.Problem -> @+cfg:Config -> @rng:0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State -> @pair:Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/normalization.State, List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>) -> List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>
def run.go source · line 507 · raw
@+prob:0x2bc7fb472c80bd6a0e04725c117edb2a/problems.Problem -> @+cfg:Config -> @pair:Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State, List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>) -> List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>
def run.sized source · line 511 · raw
@+prob:0x2bc7fb472c80bd6a0e04725c117edb2a/problems.Problem -> @+cfg:Config -> @n:Nat -> List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>
def run source · line 518 · raw
@+prob:0x2bc7fb472c80bd6a0e04725c117edb2a/problems.Problem -> @+cfg:Config -> List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>
def replace_head source · line 526 · raw
@+xs:List<&2, F32> -> @+nm:Nat -> @pop:List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual> -> List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/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:0x2bc7fb472c80bd6a0e04725c117edb2a/problems.Problem -> @+cfg:Config -> @+seed_x:List<&2, F32> -> @pair:Pair(0x2bc7fb472c80bd6a0e04725c117edb2a/rng.State, List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>) -> List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>
def run_seeded.sized source · line 537 · raw
@+prob:0x2bc7fb472c80bd6a0e04725c117edb2a/problems.Problem -> @+cfg:Config -> @+seed_x:List<&2, F32> -> @n:Nat -> List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>
def run_seeded source · line 544 · raw
@+prob:0x2bc7fb472c80bd6a0e04725c117edb2a/problems.Problem -> @+cfg:Config -> @+seed_x:List<&2, F32> -> List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>
def run_zdt1_smoke source · line 548 · raw
List<&2, 0x2bc7fb472c80bd6a0e04725c117edb2a/individual.Individual>