60 lines
1.6 KiB
Python
60 lines
1.6 KiB
Python
from cProfile import label
|
|
from pymoo.algorithms.moo.nsga2 import NSGA2
|
|
from pymoo.algorithms.moo.ctaea import CTAEA
|
|
from pymoo.algorithms.moo.nsga3 import NSGA3
|
|
|
|
from pymoo.factory import get_reference_directions
|
|
from pymoo.optimize import minimize
|
|
|
|
from pymoo.visualization.scatter import Scatter
|
|
from reproblem import *
|
|
|
|
import time
|
|
|
|
# Define the problem
|
|
problem = CRE25() # CRE21() CRE22() CRE23() CRE24() CRE25()
|
|
|
|
ref_dirs = get_reference_directions("das-dennis", 2, n_partitions=64)
|
|
|
|
# Define Algorithms
|
|
nsga_2_alg = NSGA2(pop_size=100)
|
|
nsga_3_alg = NSGA3(pop_size=100, ref_dirs=ref_dirs)
|
|
ctaea_alg = CTAEA(ref_dirs=ref_dirs)
|
|
|
|
# C-TAEA
|
|
start = time.time()
|
|
res_ctaea = minimize(problem,
|
|
ctaea_alg,
|
|
('n_gen', 200),
|
|
seed=1,
|
|
verbose=False)
|
|
end = time.time()
|
|
print('CTAEA', end - start)
|
|
|
|
# NSGA-II
|
|
res_nsga_2 = minimize(problem,
|
|
nsga_2_alg,
|
|
('n_gen', 200),
|
|
seed=1,
|
|
verbose=False)
|
|
end = time.time()
|
|
print('NSGA2', end - start)
|
|
|
|
# NSGA-III
|
|
res_nsga_3 = minimize(problem,
|
|
nsga_3_alg,
|
|
('n_gen', 200),
|
|
seed=1,
|
|
verbose=False)
|
|
end = time.time()
|
|
print('NSGA3', end - start)
|
|
|
|
# Plot the results
|
|
plot = Scatter(title="Approximated Pareto fronts of the CRE2-4-5", legend=True)
|
|
|
|
plot.add(res_ctaea.F, facecolor="none", edgecolor="blue", label="C-TAEA")
|
|
plot.add(res_nsga_2.F, facecolor="none", edgecolor="red", label="NSGA-II")
|
|
plot.add(res_nsga_3.F, facecolor="none", edgecolor="yellow", label="NSGA-III")
|
|
|
|
plot.show()
|