PETRI DISH GAMES

Selection

The Elo ranking that sorts the population, run as two parallel ladders whose blend decides which organisms breed and which die.

Selection is the ranking that sorts the population: every verdict a judge casts is scored as an Elo game, and an organism’s rating is its standing. Two ladders run in parallel over the same population, one written by the owner’s arena and one by the public surface, and both breeding and culling rank by a weighted blend of the two.

The Elo update

A verdict is a game between two organisms of one track. The expected score for A against B is 1 / (1 + 10 ^ ((Rb - Ra) / 400)), A’s rating moves by K * (score - expected), and B’s moves by the mirror of it. The score is 1 for a win and 0 for a loss. The formula admits a 0.5 draw and nothing passes one: no verdict the lab records is a draw.

A “not this one” verdict is scored asymmetrically. The rejected organism takes a loss against the other side’s rating, and the other side’s rating, games and wins are all left untouched.

A game is also charged to the prompt gene behind each organism, on the gene’s own ladder and at a smaller K, with the same asymmetry: a “not this one” moves only the rejected organism’s gene. A game between two organisms sharing one gene, or with a gene missing on either side, is skipped for the gene ladder and still counts on the organism ladder. Genes carry the same six rating columns organisms do.

LadderSubjectK
ArenaOrganismelo.k, currently 32
ArenaPrompt geneHalf of elo.k
PublicOrganismBy games played, below
PublicPrompt gene12

Both starting ratings are elo.start, currently 1200, which is also the column default. elo.k and elo.start are configuration, held in lab.config.json.

K by games played

The public organism ladder uses a provisional K that falls as an organism accumulates public games.

Public games playedK
Under 548
5 to 1432
15 and over20

Each side of a public game is updated with its own K, computed from its own game count, in two separate applications of the formula. The pair’s rating changes therefore do not sum to zero, and a veteran is not moved by the size of a newcomer’s provisional swing. The arena’s K does not vary: it is flat at elo.k for every organism at every game count.

The two ladders

The same rows carry both ladders in separate columns, and no verdict writes across.

Arena ladderPublic ladder
Columnsrating, games, winspub_rating, pub_games, pub_wins
Written byThe owner’s judging surfaceThe public vote surface
Duel row judgeownerpublic
CandidatesEvery alive organism with no recorded errorAlive, no error, and proven to render

An organism with no public games has never had pub_rating written, so the public side reads an effective public rating instead: pub_rating once pub_games is above zero, and the arena rating before that. The effective rating is the prior in every public Elo update and the sort key in public pairing, so the public ladder starts from the owner’s ordering and diverges from there rather than starting flat.

The seed reaches an organism that has never been judged on either ladder, because a newborn inherits the mean of its parents’ arena ratings at birth rather than the starting rating. Only an organism bred fresh, with no parents, begins at elo.start.

The blended rating

The blended rating, which the lab’s own code names fitness, is the single number it ranks by. It is a weighted mean of the two ladders, each weighted by the games it actually played, with the public side discounted by selection.publicVoteWeight, currently 0.6.

ConditionBlended rating
No public gamesThe arena rating
No arena gamesThe public rating
Both(rating * games + pub_rating * pub_games * w) / (games + pub_games * w)

At the current weight a public game counts 0.6 of an arena game toward the mean. A separate count sums games from every judge, arena plus public, and that sum is what decides whether an organism has been judged at all: it gates culling and the birth backlog.

Four things read the blended rating:

  • the parent tournament in breeding, which draws three candidates at random and keeps the highest
  • the crowding order in death, combined with genome redundancy
  • the track median that senescence measures against
  • the default order of the gallery

Pair selection

Both surfaces build a pair the same way: draw one organism, then draw its opponent from the organisms nearest it on the relevant ladder.

ArenaPublic
Candidates ordered bygames, then idpub_games, then id
First organismDrawn from the least-judged third, at least two rowsCoverage or resolution, below
Opponent poolSorted by absolute rating difference from the firstSorted by absolute effective-rating difference
Near-clonesDropped when anything distinct remainsDropped when anything distinct remains
OpponentDrawn from the nearest sixDrawn from the nearest six
PresentationThe two are ordered at randomThe two are ordered at random

The public draw splits between two intents, coverage and resolution. Provisional standing is six public games, and an organism below it is unread; coverage sends the first slot to one of the unread with probability 0.6, whenever any exists. Resolution otherwise takes a contender from the top quarter of the ladder, at least two rows. The unread set empties as votes accumulate, so the mix slides toward the top of the ladder as the pool settles. A public request may instead be dealt a canary, an unproven organism riding along to be rendered, in place of the coverage draw.

A public pair can be confined to one pool, in which case the candidate rows are filtered to a single phylum before either draw. Pools are a reading of ancestry, described under taxonomy.

Both rules follow from the shape of the update. The movement K * (score - expected) is largest when the expected score sits near 0.5, which is where two ratings are close; against a distant opponent the likely result moves both ratings by almost nothing, so the game spends a judgement and buys no ordering. Drawing the least-judged organism first sends the game to the rating with the least evidence behind it. The near-clone filter removes the remaining degenerate case: two organisms within the clone distance carry nearly the same code, so the verdict separates nothing while still moving both ratings. That threshold is the same one diversity uses elsewhere.

Bound to

The source this page's claims were read against, named by symbol and pinned by the digest of the file it lives in.

SymbolDigest
applyVote 2ee5143085a9
cull b72f4e12e72f
fitness 193eb96a460a
lab.config.json a095dd3b3dab
publicVote f14fffef049d

Near this subject

These are the subjects this one is joined to in the field. Step out of this card and they are the wells around the one you are standing in.