Passed
Push — master ( 626f23...be3b1e )
by Simon
01:48
created

RandomRestartHillClimbingOptimizer.iterate()   A

Complexity

Conditions 3

Size

Total Lines 12
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 9
nop 1
dl 0
loc 12
rs 9.95
c 0
b 0
f 0
1
# Author: Simon Blanke
2
# Email: [email protected]
3
# License: MIT License
4
5
6
from ..local_opt import HillClimbingOptimizer
7
from ...search import Search
8
9
10
class RandomRestartHillClimbingOptimizer(HillClimbingOptimizer, Search):
11
    name = "Random Restart Hill Climbing"
12
13
    def __init__(
14
        self,
15
        *args,
16
        epsilon=0.03,
17
        distribution="normal",
18
        n_neighbours=3,
19
        n_iter_restart=10,
20
        **kwargs,
21
    ):
22
        super().__init__(*args, **kwargs)
23
        self.epsilon = epsilon
24
        self.distribution = distribution
25
        self.n_neighbours = n_neighbours
26
        self.n_iter_restart = n_iter_restart
27
28
    @HillClimbingOptimizer.track_nth_iter
29
    @HillClimbingOptimizer.random_restart
30
    def iterate(self):
31
        notZero = self.nth_iter != 0
32
        modZero = self.nth_iter % self.n_iter_restart == 0
33
34
        if notZero and modZero:
35
            pos = self.move_random()
36
        else:
37
            pos = self._move_climb(self.pos_current)
38
39
        return pos
40