Experimenty, agenti a trajektorie

Laboratoř hraje stejná pravidla jako stůl. Prohlížeč, CLI, strategie, externí agenti, ověřování replayů i inspektor rozhodnutí volají tentýž engine. Nic se neposílá do sítě.

Specifikace experimentu

{
  "config": {"themeId": "neutral", "seed": 62000, "scenarioId": "lab1"},
  "agents": ["greedy", "cooperative"],
  "repetitions": 200,
  "recording": "sample",
  "comparison": "previous",
  "variants": [{"id": "1", "config": {}}, {"id": "2", "config": {"scenarioId": "lab2"}}]
}
npm run experiment -- examples/tabletop/exploration.json output/experiments/exploration.json
npm run experiment -- --example                      # ukázka se sweepem
node scripts/summarize-experiment.mjs output/experiments/exploration.json docs/validation/tabletop-exploration.json

Souhrn vynechá řádky jednotlivých her a replaye, ale zachová sampleFingerprint. Stejné verze a seedy dají stejný otisk; tak ověříte, že se změnou kódu nezměnila pravidla.

Sweepy

expandSweep({effort: [8, 10], rounds: [6, 8]}) vytvoří kartézský součin jako varianty, nejvýše 64. Měnit lze jen klíče, které mají u stolu fyzický význam: rozpočet, kola, cíl, kapacitu, sloty, topologii, umisťování, scénář, transport, typy karet, balíčky, průzkum a jeho varianty, vyřazování. Seed ani verze sweep nemění. V laboratoři na stránce vložíte osy jako JSON a tlačítko přepíše varianty ve specifikaci.

Co report obsahuje

Strategie random, greedy, convoy, cooperative a scout jsou heuristiky, ne optimální hráči. Rozdíl variant dokládá účinek pro tyto strategie, ne vyváženost pro lidi.

Externí agenti

getAgentContext(state, actor) vrátí pozorování postavy, její legální akce a společné akce (konec kola, únik), cíle, posledních osm akcí a metadata. Kontext neobsahuje seed, pořadí balíčků ani skrytý obsah; se znalostí po postavách jen to, co ví daná postava. Odpověď {actionId, reason?} ověří validateSelection.

import {runAgentGame} from './src/agents.js';
const out=await runAgentGame({seed:23},{id:'my-agent',selectAction:async context=>({actionId:context.legalActions[0].id})},{recording:'actions'});

Na stránce stejnou výměnu obstarává panel Externí agent: zkopíruje kontext, přijme odpověď, ověří ji a zdůvodnění připojí k trajektorii jako komentář. Boti u stolu (src/assist.js) hrají přes stejný kontext a stejné akce jako lidé.

Trajektorie a větvení

trajectoryFromGame(state, 'actions' | 'full') uloží replay a otisk stavu po každé akci; full přidá úplné stavy včetně skrytého obsahu. replayTrajectory hru znovu přehraje a každý otisk porovná; nesoulad je chyba. Komentáře agentů do ověření nevstupují.

JSON Lines (trajectoryToJSONL, trajectoryFromJSONL) mají řádek hlavičky a pak jeden řádek na krok, takže dlouhé záznamy jdou číst po částech a porovnávat v diffu. Na stránce lze rozehrát hru od libovolného kroku historie; předchozí stav vrátí tlačítko Vrátit.

Inspektor rozhodnutí

Pro stav před vybranou akcí navzorkuje 1–32 alternativních světů jen z veřejných informací: zbývajícího multisetu karet, pozorovaných umístění, signálů a karet lícem dolů. Každou kandidátní akci dohraje zvolenou strategií na stejných světech a seedech. Výsledek je odhad úspěšnosti za dané strategie, ne optimální hodnota. Skrytou topologii inspektor nevzorkuje, protože neznámá geografie v pozorování není.