Surrogate Models for Design
Fast approximations of slow simulations that let engineers explore, optimize, and quantify uncertainty at scale.
Why surrogates exist
A high-fidelity simulation can take hours or days per run. That is affordable for a handful of cases but impossible for the thousands of evaluations needed to optimize a design or map its uncertainty. A surrogate model is a fast approximation, trained on a limited set of expensive runs, that predicts the simulation's output for new inputs in milliseconds.
Common surrogate types
- Gaussian processes: smooth, and they report their own uncertainty
- Polynomial and spline response surfaces: simple and interpretable
- Neural networks: flexible for high-dimensional inputs, less transparent
- Reduced-order models: derived from the physics rather than fitted blindly
The uncertainty a surrogate should report
A surrogate is only an approximation, so it should tell you how much to trust each prediction. Gaussian processes do this naturally, returning a variance that grows in regions far from training data. That uncertainty is what makes surrogates safe to use in optimization: you know when the model is guessing and should be checked against the real simulation.
def optimize_with_surrogate(surrogate, real_sim, x0, refine_if):
x = x0
while True:
x = surrogate.propose_next(x)
mean, var = surrogate.predict(x)
if refine_if(var): # uncertain? verify with real sim
surrogate.add(x, real_sim(x))
else:
return x
The trust boundary
A surrogate is reliable inside the region it was trained on and unreliable outside it. Using one to extrapolate is a common and dangerous error. Sound practice restricts optimization to the trained region, verifies promising points with the full simulation, and retrains as the search moves.
Kronos use
Surrogates make design-space exploration and uncertainty quantification tractable for the breeder and burner, standing in for expensive plasma, neutronics, and structural codes during broad searches, with full-fidelity checks at the points that matter.