.. _method-snowpac:

"""""""
snowpac
"""""""


Stochastic version of NOWPAC that incorporates error estimates and noise mitigation.


.. toctree::
   :hidden:
   :maxdepth: 1

   method-snowpac-seed
   method-snowpac-trust_region
   method-snowpac-max_iterations
   method-snowpac-max_function_evaluations
   method-snowpac-scaling
   method-snowpac-model_pointer


**Specification**

- *Alias:* None

- *Arguments:* None


**Child Keywords:**

+-------------------------+--------------------+------------------------------+-----------------------------------------------+
| Required/Optional       | Description of     | Dakota Keyword               | Dakota Keyword Description                    |
|                         | Group              |                              |                                               |
+=========================+====================+==============================+===============================================+
| Optional                                     | `seed`__                     | Seed of the random number generator           |
+----------------------------------------------+------------------------------+-----------------------------------------------+
| Optional                                     | `trust_region`__             | Use trust region as the globalization         |
|                                              |                              | strategy.                                     |
+----------------------------------------------+------------------------------+-----------------------------------------------+
| Optional                                     | `max_iterations`__           | Number of iterations allowed for optimizers   |
|                                              |                              | and adaptive UQ methods                       |
+----------------------------------------------+------------------------------+-----------------------------------------------+
| Optional                                     | `max_function_evaluations`__ | Number of function evaluations allowed for    |
|                                              |                              | optimizers                                    |
+----------------------------------------------+------------------------------+-----------------------------------------------+
| Optional                                     | `scaling`__                  | Turn on scaling for variables, responses, and |
|                                              |                              | constraints                                   |
+----------------------------------------------+------------------------------+-----------------------------------------------+
| Optional                                     | `model_pointer`__            | Identifier for model block to be used by a    |
|                                              |                              | method                                        |
+----------------------------------------------+------------------------------+-----------------------------------------------+

.. __: method-snowpac-seed.html
__ method-snowpac-trust_region.html
__ method-snowpac-max_iterations.html
__ method-snowpac-max_function_evaluations.html
__ method-snowpac-scaling.html
__ method-snowpac-model_pointer.html



**Description**


NOWPAC is a provably-convergent gradient-free optimization method from MIT that solves a series of trust region surrogate-based subproblems to generate improving steps.  The stochastic version is SNOWPAC, which incorporates noise estimates in its objective and inequality constraints.  SNOWPAC modifies its trust region controls and adds smoothing from a Gaussian process surrogate in order to mitigate noise.  SNOWPAC also supports a feasibility restoration mode, so it is not necessary to start from a feasible design.

Note: (S)NOWPAC is not configured with Dakota by default and requires a separate installation of the NOWPAC distribution from MIT, combined with its TPLs of Eigen and NLOPT.



**Examples**


Relative to the NOWPAC specification, SNOWPAC supports a seed control for repeatability of runs and also requires the return of error estimates from the underlying evaluator (e.g., UQ method such as Monte Carlo sampling).

.. code-block::

    method,
     snowpac
       seed = 2504
       max_function_evaluations = 1000
       convergence_tolerance = 1e-4
       trust_region
         initial_size = 0.10
         minimum_size = 1.0e-6
         contract_threshold = 0.25
         expand_threshold   = 0.75
         contraction_factor = 0.50
         expansion_factor   = 1.50




