Search

A turn contains many interacting choices and reveals information as it unfolds. Two search systems share the same policy and judge: VCGS compares completed routes; BC-PUCT uses feedback to direct further exploration.

Two search systems

VCGS fits CPU-only Kaggle containers under a ten-minute limit. BC-PUCT supports larger budgets, offline training, and GPU-assisted evaluation.

VCGS: compare routes at the turn boundary

Retain root actions covering policy mass ρ, then follow up to B policy-proposed routes per action. At an information gate, sample K outcomes and evaluate their continuations at the turn boundary. Average those values before comparing routes; δ controls when search may replace the policy choice.

The submission used K = 4, B = 2, ρ = 0.90, and δ = 0.

BC-PUCT: let feedback guide exploration

Policy priors, estimated values, and an exploration bonus allocate effort. At an information gate, search samples K outcomes by fixing the random seed; each branch then proceeds under that belief. A global budget N caps total branches.

New positions are evaluated in GPU batches. Chance outcomes contribute probability-weighted averages; decision points compare continuations. Promising branches grow deeper until the budget is exhausted or the visit leader cannot be overtaken. Visit counts guide the final choice.

Averaging across sampled worlds stabilizes the value of high-variance draw actions. Unlike VCGS, BC-PUCT uses the judge’s feedback to decide what to explore next.

The above results show a significant improvement against raw policy across a 12-deck matchup matrix, with 2000 games of each matchup. The experiment used a maximum search budget of 1000 routes per decision (B1000), with an average tree depth of 6 decisions.

BC-PUCT scales significantly beyond this. We observed further gameplay improvements at B3000, B5000, and B10000 budgets, but gameplay is too slow to run a 144,000 game experiment. We tested search budgets up to 100,000 on NVIDIA RTX 3090, pushing our agent to spend nearly thirty minutes thinking about each game.

Inspect one recorded decision node by node. It illustrates a historical search run, not a fixed budget for every BC-PUCT evaluation.

Performance optimizations

Batching evaluates many positions in one GPU call. In a 10,000-game sample, caching avoided 68% of requested neural evaluations; retaining branches after a move cut whole-game time by 11.5%. Search is now CPU-bound.

Historical search diagnostics

These earlier implementation profiles retain their original budgets, confidence bypass, and promotion guard. They explain those runs; they are not additional hyperparameters of the revised search description or a controlled estimate of its winrate gain.

An earlier two-planner execution profile

GATE veto · shipped the policy acts unless search beats it PUCT chooser · research search builds its own answer from scratch Root: the legal actions here Policy proposes one action with a confidence in it confidence ≥ 0.80? yes Play it no search 35.7% of decisions no Build a beam of 2 median 4 routes per decision Settle each route to the turn horizon Price the opponent's reply promotion guard, 27.9% of decisions beats the incumbent? yes Override search wins 34.9% no Keep policy search defers 65.1% Root: the legal actions here Policy scores every action as a prior, not a proposal 32 simulations Descend by PUCT value + c_puct · prior · √N/(1+n) Expand a leaf one new node Evaluate it the value head, not a rollout Back up the value every node on the path repeat Pick the most VISITED action not the highest valued one Chosen action visits arbitrate, so the prior carries weight A move can score highest and still lose, if the search did not visit it enough. The final say: gate returns the policy’s action unless a value comparison unseats it; PUCT returns whatever it looked at most.
Same root, same policy. Gate keeps the policy’s action unless a settled value beats it, and skips search on 35.7% of decisions. PUCT spends 32 simulations building its own distribution and takes the most-visited action.

Promotion-guard measurements

A 129-decision sample of the submitted agent