MOEA/D

This algorithm is implemented based on [4]. The algorithm is based on Reference Directions which need to be provided when initializing the algorithm object.

[1]:
from pymoo.algorithms.moo.moead import MOEAD
from pymoo.optimize import minimize
from pymoo.problems import get_problem
from pymoo.util.ref_dirs import get_reference_directions
from pymoo.visualization.scatter import Scatter

problem = get_problem("dtlz2")

ref_dirs = get_reference_directions("uniform", 3, n_partitions=12)

algorithm = MOEAD(
    ref_dirs,
    n_neighbors=15,
    prob_neighbor_mating=0.7,
)

res = minimize(problem,
               algorithm,
               ('n_gen', 200),
               seed=1,
               verbose=False)

Scatter().add(res.F).show()
[1]:
<pymoo.visualization.scatter.Scatter at 0x7f842d593490>
../../_images/algorithms_moo_moead_2_1.png

API

class pymoo.algorithms.moo.moead.MOEAD(ref_dirs=None, n_neighbors=20, decomposition=None, prob_neighbor_mating=0.9, sampling=<pymoo.operators.sampling.rnd.FloatRandomSampling object>, crossover=<pymoo.operators.crossover.sbx.SBX object>, mutation=<pymoo.operators.mutation.pm.PM object>, output=<pymoo.util.display.multi.MultiObjectiveOutput object>, **kwargs)