Files
Multi_Swarm_Coevolutive/tests/unit/test_genome_crossover.py
T
Adriano Dal Pastro b6539802e0 refactor(layout): rename multi_swarm → multi_swarm_core con doppia nidificazione uv workspace
- mv src/multi_swarm → src/multi_swarm_core/multi_swarm_core (member layout)
- sed-replace globale degli import: from/import multi_swarm.* → multi_swarm_core.*
- 115 occorrenze aggiornate in src/ scripts/ tests/
- multi_swarm_coevolutive (nome repo) preservato dal word boundary

Pre-condizione per il setup uv workspace della Fase 3.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 17:43:48 +00:00

45 lines
1.5 KiB
Python

import random
from multi_swarm_core.genome.crossover import uniform_crossover
from multi_swarm_core.genome.hypothesis import HypothesisAgentGenome, ModelTier
def make(name: str) -> HypothesisAgentGenome:
return HypothesisAgentGenome(
system_prompt=f"prompt-{name}",
feature_access=["close"] if name == "A" else ["close", "volume"],
temperature=0.7 if name == "A" else 1.1,
top_p=0.9,
model_tier=ModelTier.C,
lookback_window=100 if name == "A" else 300,
cognitive_style="physicist" if name == "A" else "biologist",
)
def test_crossover_lineage() -> None:
p1 = make("A")
p2 = make("B")
rng = random.Random(0)
child = uniform_crossover(p1, p2, rng)
assert sorted(child.parent_ids[-2:]) == sorted([p1.id, p2.id])
assert child.generation == max(p1.generation, p2.generation) + 1
def test_crossover_inherits_each_field_from_one_parent() -> None:
p1 = make("A")
p2 = make("B")
rng = random.Random(0)
child = uniform_crossover(p1, p2, rng)
assert child.system_prompt in (p1.system_prompt, p2.system_prompt)
assert child.temperature in (p1.temperature, p2.temperature)
assert child.lookback_window in (p1.lookback_window, p2.lookback_window)
assert child.cognitive_style in (p1.cognitive_style, p2.cognitive_style)
def test_crossover_deterministic_with_same_seed() -> None:
p1 = make("A")
p2 = make("B")
c1 = uniform_crossover(p1, p2, random.Random(42))
c2 = uniform_crossover(p1, p2, random.Random(42))
assert c1.to_dict() == c2.to_dict()