Skip to content

Commit 8c6a32a

Browse files
committed
Interface changes
1 parent 0ca4e7f commit 8c6a32a

File tree

3 files changed

+15
-21
lines changed

3 files changed

+15
-21
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ from fireflyalgorithm import FireflyAlgorithm
3131
def sphere(x):
3232
return np.sum(x ** 2)
3333

34-
FA = FireflyAlgorithm(function=sphere, dim=10, lb=-5, ub=5, max_evals=10000)
35-
best = FA.move()
34+
FA = FireflyAlgorithm()
35+
best = FA.run(function=sphere, dim=10, lb=-5, ub=5, max_evals=10000)
3636

3737
print(best)
3838
```

examples/run.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ def sphere(x):
66
return np.sum(x ** 2)
77

88

9-
FA = FireflyAlgorithm(function=sphere, dim=10, lb=-5, ub=5, max_evals=10000)
10-
best = FA.move()
9+
FA = FireflyAlgorithm()
10+
best = FA.run(function=sphere, dim=10, lb=-5, ub=5, max_evals=10000)
1111

1212
print(best)

fireflyalgorithm/fireflyalgorithm.py

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,34 @@
22
from numpy.random import default_rng
33

44

5-
class FireflyAlgorithm():
6-
def __init__(self, function, dim, lb, ub, max_evals, pop_size=20, alpha=1.0, betamin=1.0, gamma=0.01, seed=None):
7-
self.function = function
8-
self.dim = dim
9-
self.lb = lb
10-
self.ub = ub
11-
self.max_evals = max_evals
5+
class FireflyAlgorithm:
6+
def __init__(self, pop_size=20, alpha=1.0, betamin=1.0, gamma=0.01, seed=None):
127
self.pop_size = pop_size
138
self.alpha = alpha
149
self.betamin = betamin
1510
self.gamma = gamma
16-
self.seed = seed
11+
self.rng = default_rng(seed)
1712

18-
def move(self):
19-
rng = default_rng(self.seed)
20-
fireflies = rng.uniform(self.lb, self.ub, (self.pop_size, self.dim))
21-
intensity = np.apply_along_axis(self.function, 1, fireflies)
13+
def run(self, function, dim, lb, ub, max_evals):
14+
fireflies = self.rng.uniform(lb, ub, (self.pop_size, dim))
15+
intensity = np.apply_along_axis(function, 1, fireflies)
2216
best = np.min(intensity)
2317

2418
evaluations = self.pop_size
2519
new_alpha = self.alpha
26-
search_range = self.ub - self.lb
20+
search_range = ub - lb
2721

28-
while evaluations <= self.max_evals:
22+
while evaluations <= max_evals:
2923
new_alpha *= 0.97
3024
for i in range(self.pop_size):
3125
for j in range(self.pop_size):
3226
if intensity[i] >= intensity[j]:
3327
r = np.sum(np.square(fireflies[i] - fireflies[j]), axis=-1)
3428
beta = self.betamin * np.exp(-self.gamma * r)
35-
steps = new_alpha * (rng.random(self.dim) - 0.5) * search_range
29+
steps = new_alpha * (self.rng.random(dim) - 0.5) * search_range
3630
fireflies[i] += beta * (fireflies[j] - fireflies[i]) + steps
37-
fireflies[i] = np.clip(fireflies[i], self.lb, self.ub)
38-
intensity[i] = self.function(fireflies[i])
31+
fireflies[i] = np.clip(fireflies[i], lb, ub)
32+
intensity[i] = function(fireflies[i])
3933
evaluations += 1
4034
best = min(intensity[i], best)
4135
return best

0 commit comments

Comments
 (0)