Blurb::
Evolutionary Algorithm
Description::
Evolutionary Algorithm

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

\c coliny_pattern_search supports concurrency up to the size of 
the population

The random \c seed control provides a mechanism for making a
stochastic optimization repeatable. That is, the use of the same
random seed in identical studies will generate identical results. The
\c population_size control specifies how many individuals will
comprise the EA's population. 

The \c initialization_type defines the type of initialization for the
population of the EA. There are three types: \c simple_random, \c
unique_random, and \c flat_file. \c simple_random creates initial
solutions with random variable values according to a uniform random
number distribution. It gives no consideration to any previously
generated designs. The number of designs is specified by the \c
population_size. \c unique_random is the same as \c simple_random,
except that when a new solution is generated, it is checked against
the rest of the solutions. If it duplicates any of them, it is
rejected. \c flat_file allows the initial population to be read from
a flat file. If \c flat_file is specified, a file name must be given.

The \c fitness_type controls how strongly differences in "fitness"
(i.e., the objective function) are weighted in the process of
selecting "parents" for crossover:

\li the \c linear_rank setting uses a linear scaling of probability of
selection based on the rank order of each individual's objective
function within the population

\li the \c merit_function setting uses a proportional scaling of
probability of selection based on the relative value of each
individual's objective function within the population

The \c replacement_type controls how current populations and newly
generated individuals are combined to create a new population. Each
of the \c replacement_type selections accepts an integer value, which
is referred to below as the \c replacement_size.

\li The \c random setting creates a new population using
(a) \c replacement_size randomly selected individuals from the current
population, and (b) \c population_size - \c replacement_size
individuals randomly selected from among the newly generated
individuals (the number of which is optionally specified using \c
new_solutions_generated) that are created for each generation (using
the selection, crossover, and mutation procedures).

\li The \c chc setting creates a new population using (a) the \c
replacement_size best individuals from the \e combination of the
current population and the newly generated individuals, and (b) \c
population_size - \c replacement_size individuals randomly selected
from among the remaining individuals in this combined pool. The \c
chc setting is the preferred selection for many engineering problems.

\li The \c elitist (default) setting creates a new population using
(a) the \c replacement_size best individuals from the current
population, (b) and \c population_size - \c replacement_size
individuals randomly selected from the newly generated individuals.
It is possible in this case to lose a good solution from the newly
generated individuals if it is not randomly selected for replacement;
however, the default \c new_solutions_generated value is set such that
the entire set of newly generated individuals will be selected for
replacement.

Note that \c new_solutions_generated is not recognized by %Dakota as a
valid keyword unless \c replacement_type has been specified.



<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::
The basic steps of an evolutionary algorithm are depicted in Figure
5.2.

\image html ga.jpg "Figure 5.2 Depiction of evolutionary algorithm"
\image latex ga.eps "Depiction of evolutionary algorithm" width=10cm

They can be enumerated as follows:
<ol>
<li> Select an initial population randomly and perform function 
evaluations on these individuals
<li> Perform selection for parents based on relative fitness
<li> Apply crossover and mutation to generate \c 
new_solutions_generated new individuals from the selected parents
   <ul>
   <li> Apply crossover with a fixed probability from two 
   selected parents
   <li> If crossover is applied, apply mutation to the newly 
   generated individual with a fixed probability
   <li> If crossover is not applied, apply mutation with a fixed
   probability to a single selected parent
   </ul>
<li> Perform function evaluations on the new individuals
<li> Perform replacement to determine the new population
<li> Return to step 2 and continue the algorithm until convergence
criteria are satisfied or iteration limits are exceeded
</ol>

Faq::
See_Also::	method-coliny_beta, method-coliny_direct, method-coliny_pattern_search, method-coliny_cobyla, method-coliny_solis_wets
