| @@ 24-67 (lines=44) @@ | ||
| 21 | """Bat Algorithm implementation.""" |
|
| 22 | ||
| 23 | # pylint: disable=too-many-instance-attributes |
|
| 24 | def __init__(self, D, NP, nFES, A, r, Qmin, Qmax, Lower, Upper, function): |
|
| 25 | """Initialize algorithm. |
|
| 26 | ||
| 27 | Arguments: |
|
| 28 | D {integer} -- dimension of problem |
|
| 29 | NP {integer} -- population size |
|
| 30 | nFES {integer} -- number of function evaluations |
|
| 31 | A {decimal} -- loudness |
|
| 32 | r {decimal} -- pulse rate |
|
| 33 | Qmin {decimal} -- minimum frequency |
|
| 34 | Qmax {decimal } -- maximum frequency |
|
| 35 | Lower {decimal} -- lower bound |
|
| 36 | Upper {decimal} -- upper bound |
|
| 37 | function {function} -- benchmark function |
|
| 38 | ||
| 39 | Raises: |
|
| 40 | TypeError -- Raised when given benchmark function which does not exists. |
|
| 41 | ||
| 42 | """ |
|
| 43 | ||
| 44 | self.D = D # dimension |
|
| 45 | self.NP = NP # population size |
|
| 46 | self.nFES = nFES # number of function evaluations |
|
| 47 | self.A = A # loudness |
|
| 48 | self.r = r # pulse rate |
|
| 49 | self.Qmin = Qmin # frequency min |
|
| 50 | self.Qmax = Qmax # frequency max |
|
| 51 | self.Lower = Lower # lower bound |
|
| 52 | self.Upper = Upper # upper bound |
|
| 53 | ||
| 54 | self.f_min = 0.0 # minimum fitness |
|
| 55 | ||
| 56 | self.Lb = [0] * self.D # lower bound |
|
| 57 | self.Ub = [0] * self.D # upper bound |
|
| 58 | self.Q = [0] * self.NP # frequency |
|
| 59 | ||
| 60 | self.v = [[0 for _i in range(self.D)] |
|
| 61 | for _j in range(self.NP)] # velocity |
|
| 62 | self.Sol = [[0 for _i in range(self.D)] for _j in range( |
|
| 63 | self.NP)] # population of solutions |
|
| 64 | self.Fitness = [0] * self.NP # fitness |
|
| 65 | self.best = [0] * self.D # best solution |
|
| 66 | self.evaluations = 0 # evaluations counter |
|
| 67 | self.Fun = Utility.itialize_benchmark(function) |
|
| 68 | ||
| 69 | def best_bat(self): |
|
| 70 | """Find best bat.""" |
|
| @@ 22-49 (lines=28) @@ | ||
| 19 | ||
| 20 | class HybridBatAlgorithm(object): |
|
| 21 | # pylint: disable=too-many-instance-attributes |
|
| 22 | def __init__(self, D, NP, nFES, A, r, Qmin, Qmax, Lower, Upper, function): |
|
| 23 | self.D = D # dimension |
|
| 24 | self.NP = NP # population size |
|
| 25 | self.nFES = nFES # number of function evaluations |
|
| 26 | self.A = A # loudness |
|
| 27 | self.r = r # pulse rate |
|
| 28 | self.Qmin = Qmin # frequency min |
|
| 29 | self.Qmax = Qmax # frequency max |
|
| 30 | self.Lower = Lower # lower bound |
|
| 31 | self.Upper = Upper # upper bound |
|
| 32 | self.Fun = Utility.itialize_benchmark(function) |
|
| 33 | ||
| 34 | self.f_min = 0.0 # minimum fitness |
|
| 35 | ||
| 36 | self.Lb = [0] * self.D # lower bound |
|
| 37 | self.Ub = [0] * self.D # upper bound |
|
| 38 | self.Q = [0] * self.NP # frequency |
|
| 39 | ||
| 40 | self.v = [[0 for _i in range(self.D)] |
|
| 41 | for _j in range(self.NP)] # velocity |
|
| 42 | self.Sol = [[0 for _i in range(self.D)] for _j in range( |
|
| 43 | self.NP)] # population of solutions |
|
| 44 | self.Fitness = [0] * self.NP # fitness |
|
| 45 | self.best = [0] * self.D # best solution |
|
| 46 | self.evaluations = 0 # evaluations counter |
|
| 47 | ||
| 48 | self.F = 0.5 |
|
| 49 | self.CR = 0.9 |
|
| 50 | ||
| 51 | def best_bat(self): |
|
| 52 | i = 0 |
|