/** * BATCH PLANNER — the physical world runs experiments in PARALLEL. A lab has eight reactors, a fab has eight * print heads, a greenhouse has eight plots, a cloud sweep has eight GPUs. A one-at-a-time optimizer wastes * them: it proposes a single next experiment and makes the other seven sit idle until the first comes back. * BATCH PLANNER proposes the k MOST VALUABLE experiments to run together — and, crucially, makes them * DIVERSE, so you aren't burning all eight machines on eight near-identical settings. * * It scores every candidate by optimistic potential (a Lipschitz upper bound from your data), then picks * greedily with a diversity penalty: once a setting is chosen, everything near it loses appeal, so the next * pick jumps to a different promising region. The result is a spread of high-potential experiments that * explore complementary parts of the space at once — same total experiments, k× fewer rounds of waiting. * * Honest by construction (DIAKRISIS): the value is wall-clock (you finish in fewer ROUNDS because the * machines run in parallel), not fewer total experiments; a purely sequential optimizer can use the * information between each run, which a batch cannot. BATCH PLANNER is for when you HAVE parallel capacity. * The gauntlet proves the batch is genuinely diverse — it covers separate optima instead of clustering. */ import { type Space, type Experiment } from "./space.js"; import { type Observation, type Goal } from "./engine.js"; /** Propose k diverse, high-potential experiments to run in PARALLEL this round. */ export declare function proposeBatch(space: Space, obs: ReadonlyArray, goal: Goal, k?: number, seed?: number): Experiment[]; export declare function batchGauntlet(): { score: 0 | 100; checks: Array<{ name: string; pass: boolean; detail: string; }>; }; //# sourceMappingURL=batch.d.ts.map