Implementation of three nature-inspired search algorithms:
- Bees Algorithm [Pham et al., 2005]
- Bat Algorithm [Yang, 2010]
- Firefly Algorithm [Yang, 2008]
All three algorithms and their variants share a common interface. Basically, all one needs to do in order to use one of the algorithms for optimization, is invoking the search(objective, objective_fct, T)
method. The parameters all algorithms have in common (algorithm-independent parameters) are the following:
parameter | description | domain |
---|---|---|
objective | minimization or maximization problem | 'min' or 'max' |
objective_fct | python function or lambda to optimize | f: R^d -> R^1 |
d | dimensionality of solution-space | positive integer |
n | size of the population, i.e. related to amount of bees, bats and fireflies | positive integer |
range_min | lower bound of solution-space in all dimensions | real number |
range_max | upper bound of solution-space in all dimensions | real number |
T | number of iterations | positive integer |
parameter | description | domain |
---|---|---|
nb | number of best patches (smaller than or equal to n) | positive integer |
ne | number of elite patches (smaller than or equal to nb | positive integer |
nrb | number of recruited foragers per best patch (greater than 0) | positive integer |
nre | number of recruited foragers per elite patch (greater than nrb) | positive integer |
Additional parameters for the Improved Bees Algorithm that includes neighborhood shrinking and site abandonment:
parameter | description | domain |
---|---|---|
sf | factor for shrinking the patch size | (0, 1] |
sl | stagnation limit | positive integer |
parameter | description | domain |
---|---|---|
a | initial loudness of all bats | positive float |
r_max | maximum pulse rate of bats | positive float |
alpha | loudness decreasing factor | (0, 1] |
gamma | pulse rate increasing factor | (0, 1] |
f_min | minimum sampled frequency | positive float |
f_max | maximum sampled frequency | positive float |
parameter | description | domain |
---|---|---|
alpha | neighbor sphere radius | positive float |
beta_max | maximum attractivneness | positive float |
gamma | attractiveness descreasing factor | positive float |
You can find exemplary applications of these three implemented metaheuristics in the following few notebooks:
- notebook_function_test.ipynb: Simples minimization of benchmarking functions
- notebook_mle_cauchy.ipynb: Maximum Likelihood Estimation for randomly generated cauchy-distributed samples
- notebook_spring_design.ipynb: Spring weight minimization given some constraints
- notebook_visualize.ipynb: Example on how to visualize the algorithms in the two-dimensional case
- notebook_cluster.ipynb: Attempt to cluster iris data set and generated data set with the metaheuristics