GDE3: Generalized Differential Evolution 3

GDE3: Generalized Differential Evolution 3#

GDE3 extends Differential Evolution (DE) to multi-objective optimization. It generates offspring with the usual DE mutation and crossover (the variant controls the strategy, e.g. DE/rand/1/bin) and then selects survivors with NSGA-II’s non-dominated sorting and crowding distance. A one-to-one greedy comparison between a parent and its trial vector handles the cases where one dominates the other, which improves convergence on continuous problems.

Example#

[1]:
from pymoo.algorithms.moo.gde3 import GDE3
from pymoo.problems import get_problem
from pymoo.optimize import minimize
from pymoo.visualization.scatter import Scatter

problem = get_problem("zdt1")

algorithm = GDE3(pop_size=100, variant="DE/rand/1/bin", CR=0.5)

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

plot = Scatter()
plot.add(problem.pareto_front(), plot_type="line", color="black", alpha=0.7)
plot.add(res.F, facecolor="none", edgecolor="red")
plot.show()
[1]:
<pymoo.visualization.scatter.Scatter at 0x7db25677af90>
../../_images/algorithms_moo_gde3_6_1.png

pymoo also ships the GDE3 variants GDE3MNN, GDE32NN, and GDE3PCD, which replace the crowding metric used during survival with an alternative diversity estimator.

API#

class pymoo.algorithms.moo.gde3.GDE3(pop_size: int = 100, variant: str = 'DE/rand/1/bin', CR: float = 0.5, F: float | Tuple[float, float] | None = None, gamma: float = 0.0001, **kwargs)[source]

GDE3 (Generalized Differential Evolution 3) extends DE to multi-objective problems.

Each trial vector competes one-to-one with its parent: if the trial dominates, it replaces the parent; if the parent dominates, it is kept; otherwise both enter a combined pool that is trimmed to pop_size via the survival operator.

Derived classes GDE3MNN, GDE32NN, GDE3PCD use alternative crowding metrics.

Reference: Kukkonen & Lampinen (2005). GDE3: The third evolution step of generalized differential evolution. IEEE CEC 2005.

Parameters:
  • pop_size – Population size. Defaults to 100.

  • variant – DE strategy: “DE/selection/n/crossover”. Defaults to ‘DE/rand/1/bin’.

  • CR – Crossover rate in [0, 1]. Defaults to 0.5.

  • F – Scale factor(s). Defaults to randomized in (0, 1).

  • gamma – Jitter deviation. Defaults to 1e-4.

  • de_repair – Donor vector repair. Defaults to ‘bounce-back’.

  • survival – Survival operator applied when pool > pop_size. Defaults to RankAndCrowding().

  • **kwargs – Additional keyword arguments forwarded to the NSDE base class.

References#

Kukkonen, S., & Lampinen, J. (2005). GDE3: The third evolution step of generalized differential evolution. IEEE Congress on Evolutionary Computation (CEC), 443-450.