/** * ExperimentOrchestrator — Parameter sweep engine for simulation experiments. * * Takes a base config + parameter ranges, generates variants via ParameterSpace, * runs each through a solver, and tracks all runs via ProvenanceTracker. * * @see ParameterSpace — generates config variants * @see ResultsAnalyzer — post-processes sweep results */ import { type ParameterRange, type ParameterSample } from './ParameterSpace'; import { ProvenanceTracker } from '../provenance/index'; export interface ExperimentConfig { /** Human-readable experiment name */ name: string; /** Base solver config (overrides are merged into this) */ baseConfig: Record; /** Solver type identifier (registered in SolverFactoryRegistry) */ solverType: string; /** Parameter ranges to sweep */ parameters: ParameterRange[]; /** Sampling strategy */ sampling: 'grid' | 'lhs'; /** Number of samples for LHS (ignored for grid) */ sampleCount?: number; /** Max concurrent solver runs (default: 1 — sequential) */ concurrency?: number; /** Field name to extract as the primary result (e.g., "maxVonMises") */ objectiveField?: string; /** Progress callback */ onProgress?: (completed: number, total: number) => void; } export interface ExperimentRunResult { /** Parameter overrides for this run */ sample: ParameterSample; /** Solver stats */ stats: Record; /** Whether the solver converged */ converged: boolean; /** Extracted objective value (if objectiveField specified) */ objectiveValue?: number; /** Run timing in ms */ timeMs: number; } export interface ExperimentResult { /** Experiment name */ name: string; /** Total runs completed */ totalRuns: number; /** Individual run results */ runs: ExperimentRunResult[]; /** Total wall-clock time */ totalTimeMs: number; } export declare class ExperimentOrchestrator { private tracker; private solverFactory; /** * @param solverFactory — Creates a solver from type + config, returns a handle * with solve() and getStats(). This decouples the orchestrator from specific * solver implementations. * @param tracker — ProvenanceTracker for recording run metadata */ constructor(solverFactory: (type: string, config: Record) => SolverHandle, tracker?: ProvenanceTracker); /** * Run a full parameter sweep experiment. */ run(config: ExperimentConfig): Promise; private runSingle; /** Access the underlying ProvenanceTracker for run history. */ getTracker(): ProvenanceTracker; } /** * Minimal handle returned by the solver factory. * Matches the common methods of all HoloScript solvers. */ export interface SolverHandle { solve(): void | Promise; getStats(): Record; dispose(): void; } //# sourceMappingURL=ExperimentOrchestrator.d.ts.map