Completed
Push — master ( ce1e03...f67568 )
by Simon
14:21
created

args()   A

Complexity

Conditions 1

Size

Total Lines 26
Code Lines 26

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 26
nop 2
dl 0
loc 26
rs 9.256
c 0
b 0
f 0
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