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