Disciplines · Compliance

Optimizer Card — psro-opponent-model v1.0.0

empirical-game best-response loop with a meta-solver and a best-response oracle.

9sections3 minread

On this page

1. Identity#

  • Optimizer name: psro-opponent-model
  • Algorithm family: Policy-Space Response Oracles (Lanctot et al. 2017) — empirical-game best-response loop with a meta-solver and a best-response oracle.
  • Implementation source: libs/nous/agreement-search/src/psro-opponent-model.ts.
  • Intended use: agent-to-agent negotiation (§179.7.6) and competitive commercial negotiation (§179.7.1) where the counterparty will adapt strategically to whatever the platform proposes. The recommended candidate must survive the counterparty's best response, not just optimize Pareto-product against fixed utilities.

2. Scoring rule#

  • Utility aggregation: game-theoretic — payoff tensor M_p[i, j] = party p's true utility under the deterministic proposal-arbitration simulator's outcome for policy pair (σ_A^i, σ_B^j).
  • Meta-solver: replicator dynamics (general-sum convergent), fictitious play (zero-sum provable), or uniform (sanity control).
  • Fairness metrics reported: Nash exploitability bound, per-party meta-strategy distribution, candidate marginal distribution.
  • Handling of hard constraints: filter gate runs on every candidate considered by every policy.
  • Handling of uncertainty: payoff modes posterior_mean | lcb | thompson against the §179.3.2.5 utility-uncertainty model. lcb penalizes over-fit to noisy preferences.

3. Inputs#

  • Policy parameter space: caller-defined; default uses an acceptance-threshold + concession-rate parameterization.
  • Best-response oracle: (1, λ)-evolution strategy with Gaussian perturbations; deterministic given seed.
  • Game simulator: caller-supplied simulateGame(σ_A, σ_B) → outcome. Default Concordia simulator intersects accepted candidate sets, picks the survivor by joint policy-weighted score, and falls back to BATNA on no-overlap.
  • Time / iteration budget: psroIterations × oracleSearchBudget.
  • Randomness: seeded mulberry32 for both meta-solver and oracle.

4. Outputs#

  • Accepted candidate contract: the most-robust candidate by marginal probability under Σ π_A(σ_A) π_B(σ_B) · 1[game(σ_A, σ_B) chose c].
  • Per-party meta-strategy distribution: π_A, π_B, ..., showing how the equilibrium mixes over policies.
  • Exploitability trace: Σ over parties of (BR payoff − meta payoff) decaying toward zero as the empirical game approaches an ε-Nash equilibrium.
  • Empirical payoff tensor: preserved for audit.

5. Evaluation#

Metric Value Evaluator card Date
Exploitability decay decays toward 0 within 5–10 PSRO n/a — psro-opponent-model.test.ts 2026-04-25
iterations on benchmark scenarios
Robustness vs adaptive recommended candidate stable under baseline-benchmark-gate 2026-04-25
counterparty counterparty re-optimization
Fairness (Nash / KS / max-min) reported per equilibrium candidate fairness-suite 2026-04-25
Specification-gaming resistance LCB payoff mode penalizes over-fit to fairness-suite 2026-04-25
noisy preferences
Runtime (typical) seconds for 5 policies / 5 iterations n/a — deterministic synchronous kernel 2026-04-25
Cost per run $0 LLM-free; with LLM oracle the cost n/a 2026-04-25
scales with oracle budget

6. Known limitations#

  • The proposal-arbitration simulator's fidelity bounds the result; a poorly-modeled simulator gives a misleading equilibrium.
  • General-sum convergence under replicator dynamics is empirical, not guaranteed; use fictitious play for zero-sum subproblems.
  • Best-response oracle is heuristic; may miss strict best responses if the policy space is poorly conditioned.
  • Compute cost grows with policy population; the practical limit is ~10 policies per party per run.

7. Guardrails#

  • Candidate safety gate: filterCandidates on every candidate evaluated under any policy.
  • Clause static validation: inside filterCandidates.
  • Redline separation: redlines apply per-party; PSRO cannot laundered them through equilibrium selection.
  • Authority bounds in agent-to-agent runs: the simulator's acceptance check enforces the §179.7.6.3 policy-constrained authority bounds; agent acceptance outside its authority is rejected before reaching equilibrium computation.

8. References#

  • libs/nous/agreement-search/src/psro-opponent-model.ts
  • Lanctot et al. (2017), "A Unified Game-Theoretic Approach to Multiagent Reinforcement Learning" (PSRO).
  • McMahan, Gordon, Blum (2003), "Planning in the presence of cost functions controlled by an adversary".
  • docs/research/bibliography.md §opponent-modeling