:py:mod:`desdeo_emo.selection.NSGAIII_select`
=============================================

.. py:module:: desdeo_emo.selection.NSGAIII_select


Module Contents
---------------

Classes
~~~~~~~

.. autoapisummary::

   desdeo_emo.selection.NSGAIII_select.NSGAIII_select




.. py:class:: NSGAIII_select(pop: desdeo_emo.population.Population.Population, n_survive: int = None, selection_type: str = None)

   Bases: :py:obj:`desdeo_emo.selection.SelectionBase.InteractiveDecompositionSelectionBase`

   The NSGA-III selection operator. Code is heavily based on the version of nsga3 in
       the pymoo package by msu-coinlab.

   :param pop: [description]
   :type pop: Population
   :param n_survive: [description], by default None
   :type n_survive: int, optional

   .. py:method:: do(pop: desdeo_emo.population.Population.Population) -> List[int]

      Select individuals for mating for NSGA-III.

      :param pop: The current population.
      :type pop: Population

      :returns: List of indices of the selected individuals
      :rtype: List[int]


   .. py:method:: get_extreme_points_c(F, ideal_point, extreme_points=None)

      Taken from pymoo


   .. py:method:: get_nadir_point(extreme_points, ideal_point, worst_point, worst_of_front, worst_of_population)


   .. py:method:: niching(F, n_remaining, niche_count, niche_of_individuals, dist_to_niche)


   .. py:method:: associate_to_niches(F, ref_dirs, ideal_point, nadir_point, utopian_epsilon=0.0)


   .. py:method:: calc_niche_count(n_niches, niche_of_individuals)


   .. py:method:: calc_perpendicular_distance(N, ref_dirs)


   .. py:method:: _calculate_fitness(pop) -> numpy.ndarray



