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

.. py:module:: desdeo_emo.EAs.MOEAD


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

Classes
~~~~~~~

.. autoapisummary::

   desdeo_emo.EAs.MOEAD.MOEA_D




.. py:class:: MOEA_D(problem: desdeo_problem.MOProblem, n_neighbors: int = 20, n_parents: int = 2, use_repair: bool = True, initial_population: desdeo_emo.population.Population.Population = None, population_size: int = None, population_params: Dict = None, lattice_resolution: int = None, interact: bool = False, n_iterations: int = 10, n_gen_per_iter: int = 100, use_surrogates: bool = False, total_function_evaluations: int = 0, scalarization_function: desdeo_tools.scalarization.MOEADSF = PBI(), keep_archive: bool = False, save_non_dominated: bool = False)

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

   Python implementation of MOEA/D

   .. Q. Zhang and H. Li, "MOEA/D: A Multiobjective Evolutionary Algorithm Based on Decomposition,"
   in IEEE Transactions on Evolutionary Computation, vol. 11, no. 6, pp. 712-731, Dec. 2007, doi: 10.1109/TEVC.2007.892759.

   :param problem: The problem class object specifying the details of the problem.
   :type problem: MOProblem
   :param scalarization_function: The scalarization function to compare the solutions. Some implementations
                                  can be found in desdeo-tools/scalarization/MOEADSF. By default it uses the
                                  PBI function.
   :type scalarization_function: MOEADSF
   :param n_neighbors: Number of reference vectors considered in the neighborhoods creation. The default
                       number is 20.
   :type n_neighbors: 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 lattice_resolution: The number of divisions along individual axes in the objective space to be
                              used while creating the reference vector lattice by the simplex lattice
                              design. By default None
   :type lattice_resolution: int, optional
   :param n_parents: Number of individuals considered for the generation of offspring solutions. The default
                     option is 2.
   :type n_parents: int, 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 use_surrogates: A bool variable defining whether surrogate problems are to be used or
                          not. By default False
   :type use_surrogates: 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

   .. py:method:: _next_gen()

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


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

      Describe a selection mechanism. Return indices of selected
      individuals.

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



