ctde_v0.run_roles_t2¶
run_roles_t2
¶
T2 role-picker baseline runner — flat vs hand-coded role split on the OPEN density ladder.
The T2 baseline asks a single clean question: does the hand-coded explorer/relay role split
(--role-picker expl_relay) beat the flat homogeneous shared explorer on the honest shared
spec, held FIXED across a density-pinned OPEN world ladder? Every run is trained FROM SCRATCH
(no warm-start, no inter-run deps) and graded on the two metrics the trainer logs every iter:
coverage_pct and the REAL connectivity bar connectivity_real (λ₂>0.5).
Belief: the fixed spec now carries the FULL 7-channel SLAM occupancy KB as the baseline belief
(--sense-walls --sense-free --boundary: free/occupied/unknown + occ_frontier + boundary),
so both arms see occupancy rather than the old 5-channel coverage-trail belief.
TWO axes, crossed in full (2 arms × 3 worlds = 6 units per seed):
ARM (2) — what coordinates the team: flat : the homogeneous shared explorer, no extra flags. The REFERENCE. role : the hand-coded explorer/relay split (--role-picker expl_relay).
WORLD (3) — density-pinned OPEN ladder (grid / n_agents / comm_r), all open terrain: o16 : 16×16, 4 agents, comm_r 5, open. o24 : 24×24, 6 agents, comm_r 5, open. o32 : 32×32, 10 agents, comm_r 5, open.
Per seed: 2 arms × 3 worlds = 6 units. With the DEFAULT --seeds 0,1,2 that is 18 runs.
Each unit's run-dir is <out>/seed{S}/{world}/{arm} (e.g. runs/roles_t2/seed0/o24/role).
Every unit is INDEPENDENT and FRESH: the run-dir is skipped once it holds a model.eqx;
nothing warm-starts anything (init_from=None, needs_dir=None for every unit). --jobs N runs
up to N train_ctde subprocesses at once (balthar is MEMORY-BOUND — keep N small if o32 is in
play). --dry-run prints the full 18-unit plan (id, grid/N, all extra flags) and launches
nothing.
# see the whole plan first (no training):
JAX_PLATFORMS=cpu PYTHONPATH=.:../../../FiedlerValueEstimation /Users/bijanmehr/Project.Zymera/zymera_lab/.venv/bin/python -m ctde_v0.run_roles_t2 --dry-run
# the real batch on balthar (drop JAX_PLATFORMS so it uses the GPU), 2 at a time:
PYTHONPATH=.:../../../FiedlerValueEstimation ~/ZymeraLab/.venv/bin/python -m ctde_v0.run_roles_t2 --out runs/roles_t2 --iters 1500 --rollouts 16 --jobs 2
===>>> This launcher LAUNCHES REAL TRAINING; run it deliberately. <<<===
Unit
¶
Unit(uid, run_dir, rung, seed, extra, init_from_dir, needs_dir)
One train_ctde run: an id, its run-dir, the extra flags, the seed/world, and the run-dir of a predecessor whose model.eqx must exist before it can start (here always None — every obstacle run is FRESH).
Source code in experiments/ctde_v0/run_roles_t2.py
106 107 108 109 110 111 112 113 114 | |