Total Complexity | 3 |
Total Lines | 27 |
Duplicated Lines | 0 % |
Changes | 0 |
1 | import numpy as np |
||
2 | |||
3 | from ._base_function import BaseFunction |
||
4 | |||
5 | |||
6 | class AckleyFunction(BaseFunction): |
||
7 | def __init__(self): |
||
8 | self.A = 20 |
||
9 | self.angle = 2 * np.pi |
||
10 | |||
11 | def objective_function(self, para): |
||
12 | x = para["x0"] |
||
13 | y = para["x1"] |
||
14 | |||
15 | loss1 = -self.A * np.exp(-0.2 * np.sqrt(0.5 * (x * x + y * y))) |
||
16 | loss2 = -np.exp(0.5 * (np.cos(self.angle * x) + np.cos(self.angle * y))) |
||
17 | loss3 = np.exp(1) |
||
18 | loss4 = self.A |
||
19 | |||
20 | return loss1 + loss2 + loss3 + loss4 |
||
21 | |||
22 | @property |
||
23 | def search_space(self): |
||
24 | return { |
||
25 | "x0": np.arange(-5, 5, 0.1), |
||
26 | "x1": np.arange(-5, 5, 0.1), |
||
27 | } |
||
28 |