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>
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.