/** * COST-AWARE — optimize per BAHT, not per experiment. Every other optimizer minimises the NUMBER of * experiments. But experiments don't cost the same: a high-temperature run burns more energy, a long assay * ties up the lab longer, a big-batch GPU sweep costs more compute. If you have a fixed BUDGET (money, * energy, machine-hours), the right goal is the best result per unit cost — and that can mean deliberately * avoiding an expensive region even when it looks slightly better. * * COST-AWARE proposes the next experiment by bang-per-buck: it weighs each candidate's optimistic potential * gain (a Lipschitz upper bound from your data) AGAINST its cost, and picks the best gain-per-cost. Within a * cost budget it reaches a strong result for far less spend than a cost-blind optimizer that wanders into * expensive corners. * * Honest by construction (DIAKRISIS): you supply the cost function; the gain is an optimistic estimate (it * over-weights unexplored regions, which is what you want for exploration); the win is measured, not claimed * — the gauntlet runs cost-aware vs cost-blind on the SAME cost budget and shows cost-aware reaches a higher * best. It is not guaranteed to find the global optimum if that optimum only lives in an unaffordably * expensive region — by design it won't bankrupt you chasing it. */ import { type Space, type Experiment } from "./space.js"; import { type Observation, type Goal } from "./engine.js"; type CostFn = (e: Experiment) => number; /** Propose the next experiment by best optimistic-gain ÷ cost (bang-per-buck). */ export declare function proposeNextCostAware(space: Space, obs: ReadonlyArray, goal: Goal, costFn: CostFn, seed?: number): Experiment; export interface CostAwareResult { best: Observation; totalCost: number; evaluations: number; goal: Goal; } /** Run a cost-budgeted discovery: keep proposing the best bang-per-buck experiment until the cost budget runs out. */ export declare function costAwareDiscover(opts: { space: Space; oracle: (e: Experiment) => number; costFn: CostFn; costBudget: number; goal?: Goal; seed?: number; maxEvals?: number; }): CostAwareResult; export declare function costAwareGauntlet(): { score: 0 | 100; checks: Array<{ name: string; pass: boolean; detail: string; }>; }; export {}; //# sourceMappingURL=costaware.d.ts.map