:py:mod:`desdeo_emo.EAs.BaseIndicatorEA`
========================================

.. py:module:: desdeo_emo.EAs.BaseIndicatorEA


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

Classes
~~~~~~~

.. autoapisummary::

   desdeo_emo.EAs.BaseIndicatorEA.BaseIndicatorEA




.. py:class:: BaseIndicatorEA(problem: desdeo_problem.MOProblem, population_size: int, selection_operator: Type[desdeo_emo.selection.SelectionBase.SelectionBase] = None, population_params: Dict = None, initial_population: desdeo_emo.population.Population.Population = None, a_priori: bool = False, interact: bool = False, n_iterations: int = 10, n_gen_per_iter: int = 100, total_function_evaluations: int = 0, use_surrogates: bool = False, fitnesses=None)

   Bases: :py:obj:`desdeo_emo.EAs.BaseEA`

   The Base class for indicator based EAs.

   This class contains most of the code to set up the parameters and operators.
   It also contains the logic of a indicator EA.

   :param problem: The problem class object specifying the details of the problem.
   :type problem: MOProblem
   :param selection_operator: The selection operator to be used by the EA, by default None.
   :type selection_operator: Type[SelectionBase], optional
   :param population_size: The desired population size, by default None, which sets up a default value
                           of population size depending upon the dimensionaly of the problem.
   :type population_size: int, optional
   :param population_params: The parameters for the population class, by default None. See
                             desdeo_emo.population.Population for more details.
   :type population_params: Dict, optional
   :param initial_population: An initial population class, by default None. Use this if you want to set up
                              a specific starting population, such as when the output of one EA is to be
                              used as the input of another.
   :type initial_population: Population, optional
   :param a_priori: A bool variable defining whether a priori preference is to be used or not.
                    By default False
   :type a_priori: bool, optional
   :param interact: A bool variable defining whether interactive preference is to be used or
                    not. By default False
   :type interact: bool, optional
   :param n_iterations: The total number of iterations to be run, by default 10. This is not a hard
                        limit and is only used for an internal counter.
   :type n_iterations: int, optional
   :param n_gen_per_iter: The total number of generations in an iteration to be run, by default 100.
                          This is not a hard limit and is only used for an internal counter.
   :type n_gen_per_iter: int, optional
   :param total_function_evaluations: Set an upper limit to the total number of function evaluations. When set to
                                      zero, this argument is ignored and other termination criteria are used.
   :type total_function_evaluations: int, optional
   :param use_surrogates: A bool variable defining whether surrogate problems are to be used or
                          not. By default False
   :type use_surrogates: bool, optional

   .. py:method:: end()

      Conducts non-dominated sorting at the end of the evolution process
      :returns:

                The first element is a 2-D array of the decision vectors of the non-dominated solutions.
                    The second element is a 2-D array of the corresponding objective values.
      :rtype: tuple


   .. py:method:: _next_gen()

      Run one generation of indicator based EA. Intended to be used by next_iteration.


   .. py:method:: _select() -> list

      Performs the selection, returns indices of selected individuals.

      :returns: List of indices of individuals to be selected.
      :rtype: list


   .. py:method:: manage_preferences(preference=None)

      Run the interruption phase of EA.

      Conducts the interaction with the user.


   .. py:method:: request_preferences() -> desdeo_tools.interaction.ReferencePointPreference


   .. py:method:: request_plot() -> desdeo_tools.interaction.SimplePlotRequest


   .. py:method:: requests() -> Tuple



