society: the dynamic Lamarckian society — the vertical claim (E11 / C3)

The culmination. A finite population of agents (genotypes, L loci) evolves
on a rugged NK landscape that IS reality (knowledge/dynamic_society.py),
composing the four operators the whole study built toward: grounding,
directed recombination (sex), quality-diversity selection, and mutation.
Grounding is made load-bearing via the consensus-conformity (self-
consumption) mechanism (GG decision): selection acts on
g*true_fitness + (1-g)*conformity, where conformity = agreement with the
population's own consensus, so at g=0 the society optimises fitting-the-
crowd rather than reality.

4-arm ablation (12 reps), each breaking distinctly, only the full society
climbing (global_opt ~ 0.79):
- full         0.78  climbs to the optimum, diversity maintained longest
- no_sex       0.77  can't recombine to escape local optima
- no_diversity 0.74  greedy: collapses diversity fastest, worse local optimum
- no_grounding 0.48  self-consumption collapse to an unfit consensus
                     (trains on the crowd -> confident-but-wrong mean;
                      conformity-true gap ~ 0.5)

This integrates E1-E6 + the learning kernel + E7-E10 into one system and
shows the Lamarckian society needs ALL of grounding + directed sex +
diversity: on a rugged landscape you need diversity to explore basins, sex
to recombine them, and grounding to select on reality -- remove any one and
you fail differently. Closes the C3 vertical claim analytically; the LLM
rung remains the eventual empirical instantiation.

New: knowledge/dynamic_society.py, configs/layer1/E11.yaml, figures/
plot_E11.py, README, tests/test_dynamic_society.py (+5). kind:
dynamic_society dispatch; make layer1 wired. 122 tests green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Giorgio Gilestro 2026-07-05 12:34:01 +01:00
parent 48181a1c84
commit 0f7b775ae5
13 changed files with 460 additions and 5 deletions

40
configs/layer1/E11.yaml Normal file
View file

@ -0,0 +1,40 @@
experiment: E11
kind: dynamic_society
seed: 20260705
n_replicates: 12
# (The dynamic Lamarckian society — the vertical claim, C3): a finite population of agents (genotypes)
# evolves on a rugged NK fitness landscape that IS reality. The full society composes the four
# operators the whole study built toward — grounding, directed recombination (sex), quality-diversity
# selection, and mutation — and a 4-arm ablation shows each is load-bearing. Grounding is made load-
# bearing via the consensus-conformity (self-consumption) mechanism: selection acts on
# g*true_fitness + (1-g)*conformity, so at g=0 the society optimises agreement with its own majority
# rather than reality and drifts to a fit-looking but actually-poor consensus. Expect: FULL climbs to
# near the global optimum while maintaining diversity longest; NO_GROUNDING collapses to the unfit
# consensus; NO_SEX plateaus (can't recombine to escape local optima); NO_DIVERSITY (greedy) collapses
# diversity fast and stalls at a worse local optimum. Falsifier: an ablation matches the full society,
# or the full society fails to exceed every ablation.
society:
L: 12
K: 8 # landscape ruggedness (epistasis) — rugged enough that diversity + sex matter
N: 60 # population size
g: 0.85 # grounding fraction (overwritten to 0 in the no_grounding arm)
mu: 0.03 # per-locus mutation rate
novelty: 0.5 # quality-diversity weight (0 in the no_diversity/greedy arm)
n_off: 120 # directed-recombination offspring pool per generation
recomb_rate: 0.2 # crossover rate
sex: true # directed recombination on (false in the no_sex arm)
select: qd # quality-diversity survival (greedy in the no_diversity arm)
generations: 80
sweep:
- param: arm
values:
- {name: full, set: {}}
- {name: no_grounding, set: {society.g: 0.0}}
- {name: no_sex, set: {society.sex: false}}
- {name: no_diversity, set: {society.select: greedy, society.novelty: 0.0}}
output: {dir: results/E11}