# GaussianProcessInitializer¶

class GaussianProcessInitializer(*, length_scale_bounds=None, bounds, rng_seed=None)

Configuration for the Gaussian process based optimizer. The optimizer first trains a Gaussian process model with the data you provide and then generates new test points from the model. The Gaussian process is defined by the kernel $$k({\mathbf x}_j, {\mathbf x}_k) = \exp \left(-\frac{1}{2} ( {\mathbf x}_j - {\mathbf x}_k )^\top \Sigma^{-2} ( {\mathbf x}_j - {\mathbf x}_k )\right)$$, where $${\mathbf x}_j$$ is a $$n$$ dimensional vector representing the $$j$$-th test point, $$\Sigma= {\rm diag}(l_1, \cdots, l_n)$$ is a $$n$$ by $$n$$ diagonal matrix. $$\{ l_j \}$$ are tunable while training the Gaussian process model. Use the length_scale_bounds option to set the bounds for them with the consideration of the properties of your system. Note that you must pass a non-empty list of results in the input to the initial step when using this initializer. It’s recommended to provide non-zero cost_uncertainty in CostFunctionResult when using this optimizer, otherwise you might encounter a numerical error when the optimizer tries to fit the kernel with your input data. If the error persists, try increasing the cost_uncertainty value. However, such numerical error is also an indication that your data might not be suitable to be modelled by a Gaussian process, and in that case, consider using other closed-loop optimizers.

Variables
• length_scale_bounds (List[qctrl.dynamic.types.closed_loop_optimization_step.BoxConstraint], optional) – The lower and upper bounds of the length scales $$\{ l_j \}$$ in the kernel. These bounds must be positive and set in the same order as parameters in CostFunctionResult. If not specified, defaults to a value derived from bounds by picking orders of magnitudes below/above the sidelength for each box axis.

• bounds (List[qctrl.dynamic.types.closed_loop_optimization_step.BoxConstraint]) – The per-parameter bounds on the test points. The bounds are defined by imposing a box constraint on each individual parameter. That is, for each parameter $$x_j$$, the optimizer is only allowed to search the next test point subject to the constraint such that $$x^{\rm lower}_j \leq x_j \leq x^{\rm upper}_j$$. These constraints must be in the same order as parameters in CostFunctionResult.

• rng_seed (int, optional) – Seed for the random number generator. Use this option to generate deterministic results from the optimizer.