Total Complexity | 3 |
Total Lines | 26 |
Duplicated Lines | 0 % |
Changes | 3 | ||
Bugs | 2 | Features | 0 |
1 | """Implementation of Ackley function.""" |
||
7 | class Ackley(object): |
||
8 | |||
9 | @classmethod |
||
10 | def function(cls): |
||
11 | def evaluate(D, sol): |
||
12 | |||
13 | a = 20 # Recommended variable value |
||
14 | b = 0.2 # Recommended variable value |
||
15 | c = 2 * math.pi # Recommended variable value |
||
16 | |||
17 | val = 0.0 |
||
18 | val1 = 0.0 |
||
19 | val2 = 0.0 |
||
20 | |||
21 | for i in range(D): |
||
22 | val1 += math.pow(sol[i], 2) |
||
23 | val2 += math.cos(c * sol[i]) |
||
24 | |||
25 | temp1 = -b * math.sqrt(val1 / D) |
||
26 | temp2 = val2 / D |
||
27 | |||
28 | val = -a * math.exp(temp1) - math.exp(temp2) + a + math.exp(1) |
||
29 | |||
30 | return val |
||
31 | |||
32 | return evaluate |
||
33 |