Source code for openmdao.surrogate_models.surrogate_model

"""
Class definition for SurrogateModel, the base class for all surrogate models.
"""
from openmdao.utils.options_dictionary import OptionsDictionary


[docs] class SurrogateModel(object): """ Base class for surrogate models. Parameters ---------- **kwargs : dict Options dictionary. Attributes ---------- options : <OptionsDictionary> Dictionary with general pyoptsparse options. trained : bool True when surrogate has been trained. """
[docs] def __init__(self, **kwargs): """ Initialize all attributes. """ self.trained = False self.options = OptionsDictionary(parent_name=type(self).__name__) self._declare_options() self.options.update(kwargs)
[docs] def train(self, x, y): """ Train the surrogate model with the given set of inputs and outputs. Parameters ---------- x : array-like Training input locations.. y : array-like Model responses at given inputs. """ self.trained = True
[docs] def predict(self, x): """ Calculate a predicted value of the response based on the current trained model. Parameters ---------- x : array-like Point(s) at which the surrogate is evaluated. """ if not self.trained: msg = "{0} has not been trained, so no prediction can be made."\ .format(type(self).__name__) raise RuntimeError(msg)
[docs] def vectorized_predict(self, x): """ Calculate predicted values of the response based on the current trained model. Parameters ---------- x : array-like Vectorized point(s) at which the surrogate is evaluated. """ pass
[docs] def linearize(self, x): """ Calculate the jacobian of the interpolant at the requested point. Parameters ---------- x : array-like Point at which the surrogate Jacobian is evaluated. """ pass
def _declare_options(self): """ Declare options before kwargs are processed in the init method. """ pass
[docs] class MultiFiSurrogateModel(SurrogateModel): """ Base class for surrogate models using multi-fidelity training data. Parameters ---------- **kwargs : dict Options dictionary. """
[docs] def train(self, x, y): """ Train the surrogate model with the given set of inputs and outputs. Parameters ---------- x : array-like Point(s) at which the surrogate is evaluated. y : array-like Model responses at given inputs. """ super().train(x, y) self.train_multifi([x], [y])
[docs] def train_multifi(self, x, y): """ Train the surrogate model, based on the given multi-fidelity training data. Parameters ---------- x : list of double array_like elements A list of arrays with the input at which observations were made, from highest fidelity to lowest fidelity. Designs must be nested with X[i] = np.vstack([..., X[i+1]). y : list of double array_like elements A list of arrays with the observations of the scalar output to be predicted, from highest fidelity to lowest fidelity. """ pass