.. _method-nowpac:

""""""
nowpac
""""""


Gradient-free inequality-constrained optimization using Nonlinear Optimization With Path Augmented Constraints (NOWPAC).


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

   method-nowpac-trust_region
   method-nowpac-max_iterations
   method-nowpac-max_function_evaluations
   method-nowpac-scaling
   method-nowpac-model_pointer


**Specification**

- *Alias:* None

- *Arguments:* None


**Child Keywords:**

+-------------------------+--------------------+------------------------------+-----------------------------------------------+
| Required/Optional       | Description of     | Dakota Keyword               | Dakota Keyword Description                    |
|                         | Group              |                              |                                               |
+=========================+====================+==============================+===============================================+
| 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-nowpac-trust_region.html
__ method-nowpac-max_iterations.html
__ method-nowpac-max_function_evaluations.html
__ method-nowpac-scaling.html
__ method-nowpac-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.  Due to its use of an interior penalty scheme and enforcement of strict feasibility, it does not support linear or nonlinear *equality* constraints.  As opposed to the stochastic version (SNOWPAC), NOWPAC does not currently support a feasibility restoration mode, so it is 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**



.. code-block::

    method
      nowpac
        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




