Computing Library › Applications
Applications

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

Kronos motion — design envelope

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.

python
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.