Dakota Reference Manual: approximate_control_variate

| Dakota Reference Manual Version 6.15 Explore and Predict with Confidence

- Main Page
- Related Pages

All Pages
approximate_control_variate

Approximate control variate (ACV) sampling methods for UQ

## Specification

Alias: acv_sampling

Argument(s): none

Child Keywords:

| Required/Optional | Description of Group | Dakota Keyword | Dakota Keyword Description
--- | --- | --- | --- | ---
| Required (Choose One) | Solution Approach (Group 1) | acv_independent_sampling | Approximate control variate (ACV) algorithm that employs independent samples per model
acv_multifidelity | Approximate control variate (ACV) algorithm that mimics MFMC by employing a nested pyramid sample pattern This ACV variant uses sample set definitions that are similar to multifidelity Monte Carlo (MFMC), in that sample sets are nested with each new level adding an increment on top of the previous.
acv_kl | Approximate control variate (ACV) algorithm that optimizes a mix of hierarchial and non-hierarchical schemes
| Optional | pilot_samples | Initial set of samples for multilevel/multifidelity sampling methods.
| Optional | solution_mode | Solution mode for multilevel/multifidelity methods
| Optional | truth_fixed_by_pilot | Option to suppress any increment to the number of truth samples
| Optional (Choose One) | Optimization Solver (Group 2) | sqp | Uses a sequential quadratic programming method for underlying optimization
nip | Uses a nonlinear interior point method for underlying optimization
| Optional | seed_sequence | Sequence of seed values for multi-stage random sampling
| Optional | fixed_seed | Reuses the same seed value for multiple random sampling sets
| Optional | sample_type | Selection of sampling strategy
| Optional | export_sample_sequence | Enable export of multilevel/multifidelity sample sequences to individual files
| Optional | convergence_tolerance | Stopping criterion based on relative error reduction
| Optional | max_iterations | Number of iterations allowed for optimizers and adaptive UQ methods
| Optional | max_function_evaluations | Stopping criterion based on maximum function evaluations
| Optional | final_moments | Output moments of the specified type and include them within the set of final statistics.
| Optional | distribution | Selection of cumulative or complementary cumulative functions
| Optional | rng | Selection of a random number generator
| Optional | model_pointer | Identifier for model block to be used by a method

## Description

An adaptive sampling method that utilizes multifidelity relationships in order to improve efficiency through variance reduction. It employs a non-hierarchical model to manage an unordered set of lower-fidelity approximations to a single truth model.

Compared to multifidelity Monte Carlo (MFMC), ACV relaxes the nested sampling of a recursive emulator, instead targeting the truth model's variance with each control variate pair. While the ensemble of control variates appears identical to MFMC:

the sample patterns used for the constituent estimators differ as depicted in Gorodetsky et al. (2020), Figure 2. Two ACV variants are currently implemented, ACV-MF and ACV-IS, with ACV-KL to follow.

Default Behavior

The `approximate_control_variate` method employs Monte Carlo sample sets by default, but this default can be overridden to use Latin hypercube sample sets using `sample_type` `lhs`.

Expected Output

The `approximate_control_variate` method reports estimates of the first four moments and a summary of the evaluations performed for each model fidelity and discretization level. The method does not support any level mappings (response, probability, reliability, generalized reliability) at this time.

Expected HDF5 Output

If Dakota was built with HDF5 support and run with the hdf5 keyword, this method writes the following results to HDF5:

- Sampling Moments (moments only, not confidence intervals)

In addition, the execution group has the attribute `equiv_hf_evals`, which records the equivalent number of high-fidelity evaluations.

Usage Tips

The `approximate_control_variate` method must be used in combination with a non-hierarchical model specification that defines either a model form sequence or a discretization level sequence. For a model form sequence, each model must provide a scalar `solution_level_cost`. For a discretization level sequence, `solution_level_control` must identify the variable string descriptor that controls the resolution levels and the associated array of relative costs must be provided using `solution_level_cost`.

## Examples

The following method block:

    method,
        model_pointer = 'NONHIER'
        approximate_control_variate
          acv_mf nip
          pilot_samples = 20 seed = 1237
          max_iterations = 10
          convergence_tolerance = .001

specifies ACV-MF using the nonlinear interior point (NIP) solver in combination with the model identified by the NONHIER pointer.

This NONHIER model specification provides a one-dimensional sequence, here defined by a single truth model and a set of unordered approximation models, each with a single (or default) discretization level:

    model,
        id_model = 'NONHIER'
        surrogate non_hierarchical
          truth_model = 'HF'
          unordered_model_fidelities = 'LF1' 'LF2'

    model,
        id_model = 'LF1'
        interface_pointer = 'LF1_INT'
        simulation
          solution_level_cost = 1

    model,
        id_model = 'LF2'
        interface_pointer = 'LF2_INT'
        simulation
          solution_level_cost = 16

    model,
        id_model = 'HF'
        interface_pointer = 'HF_INT'
        simulation
          solution_level_cost = 256.

Refer to `dakota/test/dakota_uq_diffusion_acv3_cost4.in` and `dakota/test/dakota_uq_tunable_acv.in` in the source distribution for this case as well as additional examples.

Refer to [Gorodetsky et al., JCP (408), 2020] for more detailed algorithm descriptions, theoretical considerations, and a helpful sample set diagram.

## See Also

These keywords may also be of interest:

- multifidelity_sampling