Currently the LOO error is not used directly in the surrogate-assisted RBDO framework implemented in UQLab. As Bruno said in the post you have mentioned, the LOO error is used for estimating the global error of the surrogate model, whereas the algorithms implemented in the module seek to find surrogates that are only locally accurate (that is in the close vicinity of the limit-state surface).
Regarding your questions:
- You can find the LOO error in the field
myMetamodel.Error.LOO. As of now you can’t use that information within the RBDO module but what you can do is build externally a surrogate model with your own custom enrichment scheme until the desired LOO error is reached. Then you can directly pass that model as the limit-state for the RBDO analysis (you shouldn’t specify any metamodel then)
RBDOOpts.LimitState.Model = myMetamodel;
- a. I wouldn’t recommend selecting a surrogate based on the LOO error as that is a global error and reaching a good accuracy for RBDO would probably require an extremely large number of model evaluations. You would be better off with adaptively enriching the metamodel.
b. As of which surrogate is better, I would recommend going for an interpolating one (that is, PCK or Kriging) rather than a regression model (e.g. PCE, SVR) as in the latter the rate of improvement of the local accuracy by adding experimental design points is much slower than in interpolation.
Generally speaking, I think it’s a good idea to add the LOO error as convergence criteria in the enrichment process. As of now, UQLab allows for custom convergence function but unfortunately the generic template function does not take as input the current metamodel so the LOO error can’t be accessed internally (if you really need to do that, I can tell you how to modify the
uq_activeMetamodel.m file to achieve this). We will update to allow for this in a later release. Actually, the current enrichment scheme in the RBDO module is quite basic but we plan to introduce more efficient methods… But that’s probably for v1.5