-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathoptimization_test_functions.py
More file actions
78 lines (61 loc) · 2.04 KB
/
optimization_test_functions.py
File metadata and controls
78 lines (61 loc) · 2.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# -*- coding: utf-8 -*-
"""
Created on Thu Nov 19 16:25:17 2020
@author: qtckp
"""
import sys
sys.path.append('..')
import numpy as np
from geneticalgorithm2 import GeneticAlgorithm2 as ga
from OptimizationTestFunctions import Sphere, Ackley, AckleyTest, Rosenbrock, Fletcher, Griewank, Penalty2, Quartic, Rastrigin, SchwefelDouble, SchwefelMax, SchwefelAbs, SchwefelSin, Stairs, Abs, Michalewicz, Scheffer, Eggholder, Weierstrass
dim = 2
functions = [
Sphere(dim, degree = 2),
Ackley(dim),
AckleyTest(dim),
Rosenbrock(dim),
Fletcher(dim, seed = 1488),
Griewank(dim),
Penalty2(dim),
Quartic(dim),
Rastrigin(dim),
SchwefelDouble(dim),
SchwefelMax(dim),
SchwefelAbs(dim),
SchwefelSin(dim),
Stairs(dim),
Abs(dim),
Michalewicz(),
Scheffer(dim),
Eggholder(dim),
Weierstrass(dim)
]
for f in functions:
xmin, xmax, ymin, ymax = f.bounds
varbound = np.array([[xmin, xmax], [ymin, ymax]])
model = ga(function=f,
dimension = dim,
variable_type='real',
variable_boundaries=varbound,
algorithm_parameters = {
'max_num_iteration': 500,
'population_size': 100,
'mutation_probability': 0.1,
'elit_ratio': 0.01,
'crossover_probability': 0.5,
'parents_portion': 0.3,
'crossover_type':'uniform',
'mutation_type': 'uniform_by_center',
'selection_type': 'roulette',
'max_iteration_without_improv':100
}
)
model.run(no_plot = True,
stop_when_reached = (f.f_best + 1e-5/(xmax - xmin)) if f.f_best is not None else None
)
title = f"Optimization process for {type(f).__name__}"
model.plot_results(
title = title,
save_as = f"./output/opt_test_funcs/{title}.png",
main_color = 'green'
)