.. _method-moga-niching_type:

""""""""""""
niching_type
""""""""""""


Specify the type of niching pressure


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

   method-moga-niching_type-radial
   method-moga-niching_type-distance
   method-moga-niching_type-max_designs


**Specification**

- *Alias:* None

- *Arguments:* None

- *Default:* No niche pressure


**Child Keywords:**

+-------------------------+--------------------+--------------------+-----------------------------------------------+
| Required/Optional       | Description of     | Dakota Keyword     | Dakota Keyword Description                    |
|                         | Group              |                    |                                               |
+=========================+====================+====================+===============================================+
| Required (Choose One)   | Niching Type       | `radial`__         | Set niching distance to percentage of         |
|                         |                    |                    | non-dominated range                           |
|                         |                    +--------------------+-----------------------------------------------+
|                         |                    | `distance`__       | Enforce minimum Euclidean distance between    |
|                         |                    |                    | designs                                       |
|                         |                    +--------------------+-----------------------------------------------+
|                         |                    | `max_designs`__    | Limit number of solutions to remain in the    |
|                         |                    |                    | population                                    |
+-------------------------+--------------------+--------------------+-----------------------------------------------+

.. __: method-moga-niching_type-radial.html
__ method-moga-niching_type-distance.html
__ method-moga-niching_type-max_designs.html



**Description**


The purpose of niching is to encourage differentiation along the
Pareto frontier and thus a more even and uniform sampling.

This is typically accomplished by discouraging clustering of design
points in the performance space.  In JEGA, the application of niche
pressure occurs as a secondary selection operation. The nicher is
given a chance to perform a pre-selection operation prior to the
operation of the selection (replacement) operator, and is then called
to perform niching on the set of designs that were selected by the
selection operator.

The radial nicher takes information input from the user to compute a
minimum allowable distance between designs in the performance space
and acts as a secondary selection operator whereby it enforces this
minimum distance. The distance nicher requires that solutions must be
separated from other solutions by a minimum distance in each dimension
(vs. Euclidean distance for the radial niching). After niching is
complete, all designs in the population will be at least the minimum
distance from one another in all directions.

The ``radial`` niche pressure applicator works by enforcing a minimum
Euclidean distance between designs in the performance space at each
generation. The algorithm proceeds by starting at the (or one of the)
extreme designs along objective dimension 0 and marching through the
population removing all designs that are too close to the current
design. One exception to the rule is that the algorithm will never
remove an extreme design which is defined as a design that is maximal
or minimal in all but 1 objective dimension (for a classical 2
objective problem, the extreme designs are those at the tips of the
non-dominated frontier). The ``distance`` nicher enforces a minimimum
distance in each dimension.

The designs that are removed by the nicher are not discarded. They are
buffered and re-inserted into the population during the next
pre-selection operation. This way, the selector is still the only
operator that discards designs and the algorithm will not waste time
"re-filling" gaps created by the nicher.

The ``radial`` nicher requires as input a vector of fractions with
length equal to the number of objectives. The elements of the vector
are interpreted as percentages of the non-dominated range for each
objective defining a minimum distance to all other designs. All values
should be in the range (0, 1). The minimum allowable distance between
any two designs in the performance space is the Euclidian (simple
square-root-sum-of-squares calculation) distance defined by these
percentages. The ``distance`` nicher has a similar input vector
requirement, only the distance is the minimum distance in each
dimension.

The ``max_designs`` niche pressure applicator is designed to choose a
limited number of solutions to remain in the population. That number
is specified by ``num_designs``. It does so in order to balance the
tendency for populations to grow very large and thus consuming too
many computer resources. It operates by ranking designs according to
their fitness standing and a computed count of how many other designs
are too close to them. Too close is a function of the supplied
niche_vector, which specifies the minimum distance between any two
points in the performance space along each dimension individually.
Once the designs are all ranked, the top c\ num_designs designs are
kept in the population and the remaining ones are bufferred or
discarded. Note that like other niching operators, this one will not
discard an extreme design.


