###
Optimization of Kriging parameters

A Kriging algorithm needs to optimize the scale parameters of its covariance model (here squared exponential).

If this optimization problem is difficult, it is helpful to use multiple starting points (i.e. multiple candidate values the optimization algorithm will start its search from).

In my version of your code, I decided to distribute them uniformly accross the optimization domain (hence the uniform distribution which appeared). Using a normal distribution makes little sense in this context because it will concentrate rather than spread points and make the optimization algorithmâ€™s task harder.

There is a trick, though: we do not actually sample from the uniform distribution, because independent samples can very easily form clusters. Here is an example with 50 points on the domain [-1,1] \times [-1,1]:

```
dist = ot.ComposedDistribution([ot.Uniform()] * 2)
dist.getSample(50)
```

Now with a `LowDiscrepancyExperiment`

based on a `SobolSequence`

:

```
ot.LowDiscrepancyExperiment(ot.SobolSequence(), dist, 50).generate()
```

###
Metamodel and calibration

I think you can extract your metamodel with the KrigingResult.getMetaModel() method and then use OpenTURNS calibration classes. I am no expert, but there are a few examples in the doc:

https://openturns.github.io/openturns/1.17/auto_calibration/index.html

There is something I do not understand, though. The metamodel does not depend on parameters, it is simply a function which takes a given input and produces a (deterministic) output. Which parameters do you want to calibrate?