D-NSGA-II: Dynamic Multi-Objective Optimization Using Modified NSGA-IIΒΆ

The algorithm is implemented based on [3]. D-NSGA-II modifies the commonly-used NSGA-II procedure in tracking a new Pareto-optimal front as soon as there is a change in the problem. The introduction of a few random solutions or a few mutated solutions provides some diversity and gives the algorithm a chance to escape from a local optimum over time.

[1]:
from pymoo.algorithms.moo.dnsga2 import DNSGA2
from pymoo.core.callback import CallbackCollection
from pymoo.optimize import minimize
from pymoo.problems.dyn import TimeSimulation
from pymoo.problems.dynamic.df import DF1

from pymoo.visualization.video.callback_video import ObjectiveSpaceAnimation

problem = DF1(taut=2, n_var=2)

algorithm = DNSGA2(version="A")

res = minimize(problem,
               algorithm,
               termination=('n_gen', 100),
               callback=TimeSimulation(),
               seed=1,
               verbose=False)