Blurb::
DIviding RECTangles method
Description::
The DIviding RECTangles (DIRECT) optimization algorithm is a
derivative free global optimization method that balances local search
in promising regions of the design space with global search in
unexplored regions. As shown in Figure 5.1, DIRECT adaptively
subdivides the space of feasible design points so as to guarantee that
iterates are generated in the neighborhood of a global minimum in
finitely many iterations.

\image html direct1.jpg "Figure 5.1 Design space partitioning with
DIRECT" \image latex direct1.eps "Design space partitioning with
DIRECT" width=10cm

In practice, DIRECT has proven an effective heuristic for engineering
design applications, for which it is able to quickly identify
candidate solutions that can be further refined with fast local
optimizers.

<b> See the page \ref topic-package_scolib for important information
regarding all SCOLIB methods </b>

The DIRECT algorithm supports concurrency up to twice the number of
variables being optimized.

DIRECT uses the \c solution_target, \c constraint_penalty and \c
show_misc_options specifications that are described in \ref
topic-package_scolib. Note, however, that DIRECT uses a fixed penalty
value for constraint violations (i.e. it is not dynamically adapted as
is done in \c coliny_pattern_search).

<b> Search Parameters </b>

The \c global_balance_parameter controls how much global search is
performed by only allowing a subregion to be subdivided if the size of
the subregion divided by the size of the largest subregion is at least
\c global_balance_parameter.  Intuitively, this forces large
subregions to be subdivided before the smallest subregions are
refined. The \c local_balance_parameter provides a tolerance for
estimating whether the smallest subregion can provide a sufficient
decrease to be worth subdividing; the default value is a small value
that is suitable for most applications.

<b> Stopping Critieria </b>

DIRECT can be terminated with:
 \li \ref method-coliny_direct-max_function_evaluations
 \li \ref method-coliny_direct-max_iterations
 \li \ref method-coliny_direct-convergence_tolerance
 \li \ref method-coliny_direct-solution_target
 \li \ref method-coliny_direct-max_boxsize_limit
 \li \ref method-coliny_direct-min_boxsize_limit - most effective in practice


<b>Expected HDF5 Output</b> 

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

- \ref hdf5_results-best_params 
- \ref hdf5_results-best_obj_fncs (when \ref responses-objective_functions) are specified) 
- \ref hdf5_results-best_constraints 
- \ref hdf5_results-calibration (when \ref responses-calibration_terms are specified) 

Topics::	package_scolib, package_coliny, global_optimization_methods
Examples::
Theory::
Faq::
See_Also::	method-coliny_beta, method-coliny_pattern_search, method-coliny_cobyla, method-coliny_ea, method-coliny_solis_wets, method-ncsu_direct
