-
Notifications
You must be signed in to change notification settings - Fork 41
Expand file tree
/
Copy path_repeat_lep.py
More file actions
65 lines (57 loc) · 2.61 KB
/
_repeat_lep.py
File metadata and controls
65 lines (57 loc) · 2.61 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
"""Repeat the following paper for `LEP`:
Lee, C.Y. and Yao, X., 2004.
Evolutionary programming using mutations based on the Lévy probability distribution.
IEEE Transactions on Evolutionary Computation, 8(1), pp.1-13.
https://ieeexplore.ieee.org/document/1266370
Luckily our Python code could repeat the data reported in the original paper *nearly well*.
Therefore, we argue that its repeatability could be **well-documented** (*at least partly*).
"""
import numpy as np
from pypop7.benchmarks.base_functions import sphere, rosenbrock, rastrigin, ackley
from pypop7.optimizers.ep.lep import LEP
if __name__ == '__main__':
ndim_problem = 30
problem = {'fitness_function': ackley,
'ndim_problem': ndim_problem,
'lower_boundary': -32*np.ones((ndim_problem,)),
'upper_boundary': 32*np.ones((ndim_problem,))}
options = {'max_function_evaluations': 1500*100,
'seed_rng': 0, # undefined in the original paper
'sigma': 3.0}
lep = LEP(problem, options)
results = lep.optimize()
print(results['best_so_far_y'])
# 0.09633170691380899 vs 0.974767
problem = {'fitness_function': sphere,
'ndim_problem': ndim_problem,
'lower_boundary': -100*np.ones((ndim_problem,)),
'upper_boundary': 100*np.ones((ndim_problem,))}
options = {'max_function_evaluations': 1500*100,
'seed_rng': 0, # undefined in the original paper
'sigma': 3.0}
lep = LEP(problem, options)
results = lep.optimize()
print(results['best_so_far_y'])
# 0.006244546982883647 vs 0.001979
problem = {'fitness_function': rosenbrock,
'ndim_problem': ndim_problem,
'lower_boundary': -30*np.ones((ndim_problem,)),
'upper_boundary': 30*np.ones((ndim_problem,))}
options = {'max_function_evaluations': 1500*100,
'seed_rng': 0, # undefined in the original paper
'sigma': 3.0}
lep = LEP(problem, options)
results = lep.optimize()
print(results['best_so_far_y'])
# 37.60584627168424 vs 72.343559
problem = {'fitness_function': rastrigin,
'ndim_problem': ndim_problem,
'lower_boundary': -5.12*np.ones((ndim_problem,)),
'upper_boundary': 5.12*np.ones((ndim_problem,))}
options = {'max_function_evaluations': 1500*100,
'seed_rng': 0, # undefined in the original paper
'sigma': 3.0}
lep = LEP(problem, options)
results = lep.optimize()
print(results['best_so_far_y'])
# 425.4823087914274 vs 38.266239