Passed
Push — master ( 16a37b...944f53 )
by Simon
01:23
created

hyperactive.hyperactive.try_ray_import()   A

Complexity

Conditions 3

Size

Total Lines 14
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 11
dl 0
loc 14
rs 9.85
c 0
b 0
f 0
cc 3
nop 0
1
# Author: Simon Blanke
2
# Email: [email protected]
3
# License: MIT License
4
5
import time
6
import warnings
7
8
from .main_args import MainArgs
9
from .opt_args import Arguments
10
from .distribution import dist
11
12
from .optimizers import (
13
    HillClimbingOptimizer,
14
    StochasticHillClimbingOptimizer,
15
    TabuOptimizer,
16
    RandomSearchOptimizer,
17
    RandomRestartHillClimbingOptimizer,
18
    RandomAnnealingOptimizer,
19
    SimulatedAnnealingOptimizer,
20
    StochasticTunnelingOptimizer,
21
    ParallelTemperingOptimizer,
22
    ParticleSwarmOptimizer,
23
    EvolutionStrategyOptimizer,
24
    BayesianOptimizer,
25
)
26
27
28
def stop_warnings():
29
    # because sklearn warnings are annoying when they appear 100 times
30
    def warn(*args, **kwargs):
31
        pass
32
33
    import warnings
34
35
    warnings.warn = warn
36
37
38
39
class Hyperactive:
40
    def __init__(
41
        self, X, y, memory="long", random_state=False, verbosity=3, warnings=False
42
    ):
43
        self.X = X
44
        self._main_args_ = MainArgs(X, y, memory, random_state, verbosity)
45
46
        if not warnings:
47
            stop_warnings()
48
49
        self.optimizer_dict = {
50
            "HillClimbing": HillClimbingOptimizer,
51
            "StochasticHillClimbing": StochasticHillClimbingOptimizer,
52
            "TabuSearch": TabuOptimizer,
53
            "RandomSearch": RandomSearchOptimizer,
54
            "RandomRestartHillClimbing": RandomRestartHillClimbingOptimizer,
55
            "RandomAnnealing": RandomAnnealingOptimizer,
56
            "SimulatedAnnealing": SimulatedAnnealingOptimizer,
57
            "StochasticTunneling": StochasticTunnelingOptimizer,
58
            "ParallelTempering": ParallelTemperingOptimizer,
59
            "ParticleSwarm": ParticleSwarmOptimizer,
60
            "EvolutionStrategy": EvolutionStrategyOptimizer,
61
            "Bayesian": BayesianOptimizer,
62
        }
63
64
    def search(
65
        self,
66
        search_config,
67
        n_iter=10,
68
        max_time=None,
69
        optimizer="RandomSearch",
70
        n_jobs=1,
71
        init_config=None,
72
    ):
73
74
        self._main_args_.search_args(
75
            search_config, max_time, n_iter, optimizer, n_jobs, init_config
76
        )
77
        self._opt_args_ = Arguments(**self._main_args_.opt_para)
78
        optimizer_class = self.optimizer_dict[self._main_args_.optimizer]
79
80
        dist(optimizer_class, self._main_args_, self._opt_args_)
81
82
83