Completed
Push — master ( 00a279...3d8385 )
by Grega
8s
created

Ackley   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 26
Duplicated Lines 0 %

Importance

Changes 3
Bugs 2 Features 0
Metric Value
wmc 3
c 3
b 2
f 0
dl 0
loc 26
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
B function() 0 24 3
A evaluate() 0 20 2
1
"""Implementation of Ackley function."""
2
import math
3
4
__all__ = ['Ackley']
5
6
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