Passed
Pull Request — master (#19)
by
unknown
01:08
created

Ackley.function()   B

Complexity

Conditions 3

Size

Total Lines 24

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 24
rs 8.9713
cc 3

1 Method

Rating   Name   Duplication   Size   Complexity  
A Ackley.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