| 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 |