Total Complexity | 7 |
Total Lines | 43 |
Duplicated Lines | 23.26 % |
Changes | 0 |
Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.
Common duplication problems, and corresponding solutions are:
1 | # Author: Simon Blanke |
||
2 | # Email: [email protected] |
||
3 | # License: MIT License |
||
4 | |||
5 | import numpy as np |
||
6 | |||
7 | from gradient_free_optimizers import RandomRestartHillClimbingOptimizer |
||
8 | |||
9 | n_iter = 100 |
||
10 | |||
11 | |||
12 | def get_score(pos_new): |
||
13 | return -(pos_new[0] * pos_new[0]) |
||
14 | |||
15 | |||
16 | space_dim = np.array([10]) |
||
17 | init_positions = [np.array([0]), np.array([1]), np.array([2]), np.array([3])] |
||
18 | |||
19 | |||
20 | View Code Duplication | def _base_test(opt, init_positions): |
|
|
|||
21 | for nth_init in range(len(init_positions)): |
||
22 | pos_new = opt.init_pos(nth_init) |
||
23 | score_new = get_score(pos_new) |
||
24 | opt.evaluate(score_new) |
||
25 | |||
26 | for nth_iter in range(len(init_positions), n_iter): |
||
27 | pos_new = opt.iterate(nth_iter) |
||
28 | score_new = get_score(pos_new) |
||
29 | opt.evaluate(score_new) |
||
30 | |||
31 | |||
32 | def _test_RandomRestartHillClimbingOptimizer( |
||
33 | init_positions=init_positions, space_dim=space_dim, opt_para={} |
||
34 | ): |
||
35 | opt = RandomRestartHillClimbingOptimizer(init_positions, space_dim, opt_para) |
||
36 | _base_test(opt, init_positions) |
||
37 | |||
38 | |||
39 | def test_n_restarts(): |
||
40 | for n_restarts in [0, 1, 100]: |
||
41 | opt_para = {"n_restarts": n_restarts} |
||
42 | _test_RandomRestartHillClimbingOptimizer(opt_para=opt_para) |
||
43 |