Passed
Push — master ( 9ff666...1a4396 )
by Simon
03:24
created

hyperactive.optimizers.monte_carlo.simulated_annealing.SimulatedAnnealingOptimizer._init_opt_positioner()   A

Complexity

Conditions 1

Size

Total Lines 2
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 2
dl 0
loc 2
rs 10
c 0
b 0
f 0
cc 1
nop 2
1
# Author: Simon Blanke
2
# Email: [email protected]
3
# License: MIT License
4
5
6
import numpy as np
7
8
from ..local import StochasticHillClimbingOptimizer
9
10
11
class SimulatedAnnealingOptimizer(StochasticHillClimbingOptimizer):
12
    def __init__(self, _main_args_, _opt_args_):
13
        super().__init__(_main_args_, _opt_args_)
14
        self.temp = 1
15
16
    # use _consider from StochasticHillClimbingOptimizer
17
18
    def _accept(self, _p_):
19
        return np.exp(-self._score_norm(_p_) / self.temp)
20
21
    def _iterate(self, i, _cand_, _p_):
22
        _cand_ = self._stochastic_hill_climb_iter(_cand_, _p_)
23
24
        self.temp = self.temp * self._opt_args_.annealing_rate
25
26
        return _cand_
27