/** * INVERSE DESIGN — the question every optimizer refuses to answer. An optimizer finds the BEST. But real * specs are rarely "best" — they're "hit THIS value": a drug dissolving at exactly 80% in 30 min, an alloy * at precisely 600 MPa, a sensor reading dead-on 4.00 V, a model calibrated to a target false-positive rate. * "Maximize" is the wrong question; the right one is "give me every recipe that lands on my target — and * tell me how much freedom I have around each." * * INVERSE DESIGN inverts the map. Given your measurements and a target value, it finds the settings whose * outcome matches the target, returns SEVERAL distinct recipes (not just one — so you can pick the cheapest * or most convenient), measures how much wiggle-room each has, and proposes a fresh setting to probe the * target precisely. If the target lies outside what your data can produce, it says so and hands back the * closest you can actually reach — the same honest ceiling ACHIEVABILITY draws. * * Honest by construction (DIAKRISIS): the recipes it returns ARE your real measurements nearest the target * (their value is observed, not predicted — so the match is real), plus one interpolated probe to run next. * It abstains on thin data and never invents a recipe outside the evidence. */ import { type Space, type Experiment } from "./space.js"; import { type Observation } from "./engine.js"; export interface InverseSolution { experiment: Experiment; value: number; distanceToTarget: number; } export interface InverseReport { target: number; feasible: boolean; solutions: InverseSolution[]; recipeFreedom: "many" | "few" | "one" | "none"; proposedProbe: Experiment | null; closest: InverseSolution | null; note: string; } /** Find the settings whose measured outcome matches `target` — the inverse of optimization. */ export declare function inverseDesign(obs: ReadonlyArray, space: Space, target: number): InverseReport; export declare function inverseGauntlet(): { score: 0 | 100; checks: Array<{ name: string; pass: boolean; detail: string; }>; }; //# sourceMappingURL=inverse.d.ts.map