MOEA/D

This algorithm is implemented based on [3]. 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, ParallelMOEAD
from pymoo.factory import get_problem, get_visualization, get_reference_directions
from pymoo.optimize import minimize

problem = get_problem("dtlz2")

ref_dirs = get_reference_directions("das-dennis", 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)

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

API

class pymoo.algorithms.moo.moead.MOEAD(self, ref_dirs, n_neighbors=20, decomposition='auto', prob_neighbor_mating=0.9, sampling=FloatRandomSampling(), crossover=SimulatedBinaryCrossover(prob=1.0, eta=20), mutation=PolynomialMutation(prob=None, eta=20), display=MultiObjectiveDisplay(), **kwargs)
Parameters
ref_dirs
n_neighbors
decomposition
prob_neighbor_mating
display
kwargs