~/bend-docscommunity

tournament.bend checks

raw source on the hub · import 0x527a2a4fa91b05a0250d7be0e11d232a/tournament.bend as Tournament

Mating tournament — C# TournamentSelection / TournamentMode. Default for algorithm A/B is PymooCompatible (pymoo comp_by_rank_and_ref_line_dist): same niche → rank then perp dist; else random. RankNicheDistance (C# WinnerRankNicheDistance) is rank → niche count → perpendicular distance → coin. This slice is unconstrained, so CV branches are unused (all individuals are treated feasible). A/B does not score this path; see src/trn_seed682.bend.

7 imports
import Base
import ./individual.bend as Ind
import ./non_dominated_sort.bend as NDS
import ./normalization.bend as Norm
import ./survival.bend as Surv
import ./rng.bend as Rng
import ./util.bend as Util

Types

type Mode source · line 17 · raw

Data

type PHold source · line 105 · raw

Data

Definitions

def pymoo source · line 21 · raw

Mode

def rank_niche source · line 24 · raw

Mode

def get_ind source · line 27 · raw

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

def coin source · line 30 · raw

@a:0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual -> @b:0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual -> @rng:0x527a2a4fa91b05a0250d7be0e11d232a/rng.State -> Pair(0x527a2a4fa91b05a0250d7be0e11d232a/rng.State, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual)

def cmp_pick source · line 34 · raw

@a:0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual -> @b:0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual -> @rng:0x527a2a4fa91b05a0250d7be0e11d232a/rng.State -> @ab:Bool -> @ba:Bool -> Pair(0x527a2a4fa91b05a0250d7be0e11d232a/rng.State, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual)

def by_dist source · line 43 · raw

@+a:0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual -> @+b:0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual -> @rng:0x527a2a4fa91b05a0250d7be0e11d232a/rng.State -> Pair(0x527a2a4fa91b05a0250d7be0e11d232a/rng.State, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual)

def by_rank.eq source · line 48 · raw

@+a:0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual -> @+b:0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual -> @rng:0x527a2a4fa91b05a0250d7be0e11d232a/rng.State -> @same:Bool -> Pair(0x527a2a4fa91b05a0250d7be0e11d232a/rng.State, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual)

def by_rank source · line 55 · raw

@+a:0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual -> @+b:0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual -> @rng:0x527a2a4fa91b05a0250d7be0e11d232a/rng.State -> Pair(0x527a2a4fa91b05a0250d7be0e11d232a/rng.State, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual)

def winner_pymoo.same source · line 58 · raw

@+a:0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual -> @+b:0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual -> @rng:0x527a2a4fa91b05a0250d7be0e11d232a/rng.State -> @same:Bool -> Pair(0x527a2a4fa91b05a0250d7be0e11d232a/rng.State, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual)

def winner_pymoo source · line 65 · raw

@+a:0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual -> @+b:0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual -> @rng:0x527a2a4fa91b05a0250d7be0e11d232a/rng.State -> Pair(0x527a2a4fa91b05a0250d7be0e11d232a/rng.State, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual)

def by_niche.eq source · line 70 · raw

@+a:0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual -> @+b:0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual -> @rng:0x527a2a4fa91b05a0250d7be0e11d232a/rng.State -> @same:Bool -> Pair(0x527a2a4fa91b05a0250d7be0e11d232a/rng.State, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual)

Equal niche counts fall through to perpendicular distance (then coin). A count tie used to coin immediately and skip distance.

def by_niche source · line 77 · raw

@+a:0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual -> @+b:0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual -> @rng:0x527a2a4fa91b05a0250d7be0e11d232a/rng.State -> Pair(0x527a2a4fa91b05a0250d7be0e11d232a/rng.State, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual)

def winner_rnd.eq source · line 80 · raw

@+a:0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual -> @+b:0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual -> @rng:0x527a2a4fa91b05a0250d7be0e11d232a/rng.State -> @same:Bool -> Pair(0x527a2a4fa91b05a0250d7be0e11d232a/rng.State, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual)

def winner_rnd source · line 87 · raw

@+a:0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual -> @+b:0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual -> @rng:0x527a2a4fa91b05a0250d7be0e11d232a/rng.State -> Pair(0x527a2a4fa91b05a0250d7be0e11d232a/rng.State, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual)

def winner source · line 90 · raw

@mode:Mode -> @+a:0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual -> @+b:0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual -> @rng:0x527a2a4fa91b05a0250d7be0e11d232a/rng.State -> Pair(0x527a2a4fa91b05a0250d7be0e11d232a/rng.State, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual)

def one source · line 97 · raw

@+mode:Mode -> @+pop:List<&2, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual> -> @rng:0x527a2a4fa91b05a0250d7be0e11d232a/rng.State -> Pair(0x527a2a4fa91b05a0250d7be0e11d232a/rng.State, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual)

def parents_next.w source · line 111 · raw

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

def parents_next source · line 115 · raw

@+mode:Mode -> @+pop:List<&2, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual> -> @hold:PHold -> PHold

def parents_loop source · line 120 · raw

@fuel:Nat -> @hold:PHold -> @+mode:Mode -> @+pop:List<&2, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual> -> Pair(0x527a2a4fa91b05a0250d7be0e11d232a/rng.State, List<&2, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual>)

def select_parents source · line 127 · raw

@+mode:Mode -> @+pop:List<&2, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual> -> @count:Nat -> @rng:0x527a2a4fa91b05a0250d7be0e11d232a/rng.State -> Pair(0x527a2a4fa91b05a0250d7be0e11d232a/rng.State, List<&2, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual>)

def parents_of source · line 130 · raw

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

def stamp_front source · line 134 · raw

@idxs:List<&2, Nat> -> @+pop:List<&2, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual> -> @+r:Nat -> List<&2, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual>

def stamp_ranks source · line 141 · raw

@fronts:List<&2, List<&2, Nat>> -> @pop:List<&2, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual> -> @+r:Nat -> List<&2, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual>

def stamp_asgs.one source · line 148 · raw

@+a:0x527a2a4fa91b05a0250d7be0e11d232a/survival.Assignment -> @+ind:0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual -> 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual

def stamp_asgs.go source · line 152 · raw

@+fuel:Nat -> @pop:List<&2, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual> -> @+asgs:List<&2, 0x527a2a4fa91b05a0250d7be0e11d232a/survival.Assignment> -> List<&2, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual>

Zip pop with assignments. Mid-split both lists at the same mid.

def stamp_asgs source · line 176 · raw

@+pop:List<&2, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual> -> @asgs:List<&2, 0x527a2a4fa91b05a0250d7be0e11d232a/survival.Assignment> -> List<&2, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual>

def prepare.with source · line 179 · raw

@+dirs:List<&2, List<&2, F32>> -> @+pop:List<&2, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual> -> @+fronts:List<&2, List<&2, Nat>> -> @pair:Pair(0x527a2a4fa91b05a0250d7be0e11d232a/normalization.State, List<&2, List<&2, F32>>) -> Pair(0x527a2a4fa91b05a0250d7be0e11d232a/normalization.State, List<&2, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual>)

def prepare source · line 186 · raw

@+pop:List<&2, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual> -> @+dirs:List<&2, List<&2, F32>> -> @state:0x527a2a4fa91b05a0250d7be0e11d232a/normalization.State -> Pair(0x527a2a4fa91b05a0250d7be0e11d232a/normalization.State, List<&2, 0x527a2a4fa91b05a0250d7be0e11d232a/individual.Individual>)

Recompute ranks + niche association (C# PrepareForSelection). Threads the persistent Normalization state.