|
1
|
|
|
# Author: Simon Blanke |
|
2
|
|
|
# Email: [email protected] |
|
3
|
|
|
# License: MIT License |
|
4
|
|
|
|
|
5
|
|
|
from .util import merge_dicts |
|
6
|
|
|
from numpy.random import normal |
|
7
|
|
|
|
|
8
|
|
|
from .optimizers.sequence_model.surrogate_models import ( |
|
9
|
|
|
RandomForestRegressor, |
|
10
|
|
|
ExtraTreesRegressor, |
|
11
|
|
|
GPR, |
|
12
|
|
|
) |
|
13
|
|
|
|
|
14
|
|
|
tree_regressor = { |
|
15
|
|
|
"random_forst": RandomForestRegressor(), |
|
16
|
|
|
"extra_tree": ExtraTreesRegressor(), |
|
17
|
|
|
} |
|
18
|
|
|
|
|
19
|
|
|
|
|
20
|
|
|
class Arguments: |
|
21
|
|
|
def __init__(self, *args, **kwargs): |
|
22
|
|
|
kwargs_opt = { |
|
23
|
|
|
# HillClimbingOptimizer |
|
24
|
|
|
"epsilon": 0.05, |
|
25
|
|
|
"climb_dist": normal, |
|
26
|
|
|
"n_neighbours": 1, |
|
27
|
|
|
# StochasticHillClimbingOptimizer |
|
28
|
|
|
"p_down": 0.3, |
|
29
|
|
|
# TabuOptimizer |
|
30
|
|
|
"tabu_memory": 3, |
|
31
|
|
|
# RandomRestartHillClimbingOptimizer |
|
32
|
|
|
"n_restarts": 10, |
|
33
|
|
|
# RandomAnnealingOptimizer |
|
34
|
|
|
"epsilon_mod": 10, |
|
35
|
|
|
"annealing_rate": 0.99, |
|
36
|
|
|
# SimulatedAnnealingOptimizer |
|
37
|
|
|
"start_temp": 1, |
|
38
|
|
|
"norm_factor": "adaptive", |
|
39
|
|
|
# StochasticTunnelingOptimizer |
|
40
|
|
|
"gamma": 0.5, |
|
41
|
|
|
# ParallelTemperingOptimizer |
|
42
|
|
|
"system_temperatures": [0.1, 1, 10, 100], |
|
43
|
|
|
"n_swaps": 10, |
|
44
|
|
|
# ParticleSwarmOptimizer |
|
45
|
|
|
"n_particles": 10, |
|
46
|
|
|
"inertia": 0.5, |
|
47
|
|
|
"cognitive_weight": 0.5, |
|
48
|
|
|
"social_weight": 0.5, |
|
49
|
|
|
# EvolutionStrategyOptimizer |
|
50
|
|
|
"individuals": 10, |
|
51
|
|
|
"mutation_rate": 0.7, |
|
52
|
|
|
"crossover_rate": 0.3, |
|
53
|
|
|
# BayesianOptimizer |
|
54
|
|
|
"warm_start_smbo": False, |
|
55
|
|
|
"xi": 0.01, |
|
56
|
|
|
"gpr": GPR(), |
|
57
|
|
|
# TreeStructuredParzenEstimators |
|
58
|
|
|
"start_up_evals": 10, |
|
59
|
|
|
"gamma_tpe": 0.3, |
|
60
|
|
|
"tree_regressor": "random_forst", |
|
61
|
|
|
} |
|
62
|
|
|
|
|
63
|
|
|
self.kwargs_opt = merge_dicts(kwargs_opt, kwargs) |
|
64
|
|
|
|
|
65
|
|
|
def set_opt_args(self, n_iter): |
|
66
|
|
|
self.epsilon = self.kwargs_opt["epsilon"] |
|
67
|
|
|
self.climb_dist = self.kwargs_opt["climb_dist"] |
|
68
|
|
|
self.n_neighbours = self.kwargs_opt["n_neighbours"] |
|
69
|
|
|
|
|
70
|
|
|
self.p_down = self.kwargs_opt["p_down"] |
|
71
|
|
|
|
|
72
|
|
|
self.tabu_memory = self.kwargs_opt["tabu_memory"] |
|
73
|
|
|
|
|
74
|
|
|
self.n_restarts = self.kwargs_opt["n_restarts"] |
|
75
|
|
|
self.n_iter_restart = int(n_iter / self.n_restarts) |
|
76
|
|
|
|
|
77
|
|
|
self.epsilon_mod = self.kwargs_opt["epsilon_mod"] |
|
78
|
|
|
self.annealing_rate = self.kwargs_opt["annealing_rate"] |
|
79
|
|
|
self.start_temp = self.kwargs_opt["start_temp"] |
|
80
|
|
|
self.norm_factor = self.kwargs_opt["norm_factor"] |
|
81
|
|
|
self.gamma = self.kwargs_opt["gamma"] |
|
82
|
|
|
|
|
83
|
|
|
self.system_temperatures = self.kwargs_opt["system_temperatures"] |
|
84
|
|
|
self.n_swaps = self.kwargs_opt["n_swaps"] |
|
85
|
|
|
self.n_iter_swap = int(n_iter / self.n_swaps) |
|
86
|
|
|
|
|
87
|
|
|
self.n_particles = self.kwargs_opt["n_particles"] |
|
88
|
|
|
self.inertia = self.kwargs_opt["inertia"] |
|
89
|
|
|
self.cognitive_weight = self.kwargs_opt["cognitive_weight"] |
|
90
|
|
|
self.social_weight = self.kwargs_opt["social_weight"] |
|
91
|
|
|
|
|
92
|
|
|
self.individuals = self.kwargs_opt["individuals"] |
|
93
|
|
|
self.mutation_rate = self.kwargs_opt["mutation_rate"] |
|
94
|
|
|
self.crossover_rate = self.kwargs_opt["crossover_rate"] |
|
95
|
|
|
|
|
96
|
|
|
self.warm_start_smbo = self.kwargs_opt["warm_start_smbo"] |
|
97
|
|
|
self.xi = self.kwargs_opt["xi"] |
|
98
|
|
|
self.gpr = self.kwargs_opt["gpr"] |
|
99
|
|
|
|
|
100
|
|
|
self.start_up_evals = self.kwargs_opt["start_up_evals"] |
|
101
|
|
|
self.gamma_tpe = self.kwargs_opt["gamma_tpe"] |
|
102
|
|
|
self.tree_regressor = tree_regressor[self.kwargs_opt["tree_regressor"]] |
|
103
|
|
|
|