| @@ 27-47 (lines=21) @@ | ||
| 24 | ||
| 25 | class FlowerPollinationAlgorithm(object): |
|
| 26 | # pylint: disable=too-many-instance-attributes |
|
| 27 | def __init__(self, D, NP, nFES, p, Lower, Upper, function): |
|
| 28 | self.D = D # dimension |
|
| 29 | self.NP = NP # population size |
|
| 30 | self.nFES = nFES # number of function evaluations |
|
| 31 | self.p = p # probability switch |
|
| 32 | self.Lower = Lower # lower bound |
|
| 33 | self.Upper = Upper # upper bound |
|
| 34 | self.Fun = Utility.itialize_benchmark(function) # function |
|
| 35 | ||
| 36 | self.f_min = 0.0 # minimum fitness |
|
| 37 | ||
| 38 | self.Lb = [0] * self.D # lower bound |
|
| 39 | self.Ub = [0] * self.D # upper bound |
|
| 40 | ||
| 41 | self.dS = [[0 for _i in range(self.D)] |
|
| 42 | for _j in range(self.NP)] # differential |
|
| 43 | self.Sol = [[0 for _i in range(self.D)] |
|
| 44 | for _j in range(self.NP)] # population of solutions |
|
| 45 | self.Fitness = [0] * self.NP # fitness |
|
| 46 | self.best = [0] * self.D # best solution |
|
| 47 | self.evaluations = 0 # evaluations counter |
|
| 48 | ||
| 49 | def best_flower(self): |
|
| 50 | i = 0 |
|
| @@ 23-43 (lines=21) @@ | ||
| 20 | """Firefly Algorithm implementation.""" |
|
| 21 | ||
| 22 | # pylint: disable=too-many-instance-attributes |
|
| 23 | def __init__(self, D, NP, nFES, alpha, betamin, gamma, Lower, Upper, function): |
|
| 24 | self.D = D # dimension of the problem |
|
| 25 | self.NP = NP # population size |
|
| 26 | self.nFES = nFES # number of function evaluations |
|
| 27 | self.alpha = alpha # alpha parameter |
|
| 28 | self.betamin = betamin # beta parameter |
|
| 29 | self.gamma = gamma # gamma parameter |
|
| 30 | # sort of fireflies according to fitness value |
|
| 31 | self.Index = [0] * self.NP |
|
| 32 | self.Fireflies = [[0 for _i in range(self.D)] |
|
| 33 | for _j in range(self.NP)] # firefly agents |
|
| 34 | self.Fireflies_tmp = [[0 for _i in range(self.D)] for _j in range( |
|
| 35 | self.NP)] # intermediate pop |
|
| 36 | self.Fitness = [0.0] * self.NP # fitness values |
|
| 37 | self.Intensity = [0.0] * self.NP # light intensity |
|
| 38 | self.nbest = [0.0] * self.NP # the best solution found so far |
|
| 39 | self.Lower = Lower # lower bound |
|
| 40 | self.Upper = Upper # upper bound |
|
| 41 | self.fbest = None # the best |
|
| 42 | self.evaluations = 0 |
|
| 43 | self.Fun = Utility.itialize_benchmark(function) |
|
| 44 | ||
| 45 | def init_ffa(self): |
|
| 46 | for i in range(self.NP): |
|
| @@ 24-45 (lines=22) @@ | ||
| 21 | class GreyWolfOptimizer(object): |
|
| 22 | ||
| 23 | # pylint: disable=too-many-instance-attributes |
|
| 24 | def __init__(self, D, NP, nFES, Lower, Upper, function): |
|
| 25 | self.D = D # dimension of the problem |
|
| 26 | self.NP = NP # population size; number of search agents |
|
| 27 | self.nFES = nFES # number of function evaluations |
|
| 28 | self.Lower = Lower # lower bound |
|
| 29 | self.Upper = Upper # upper bound |
|
| 30 | self.Fun = function |
|
| 31 | ||
| 32 | self.Positions = [[0 for _i in range(self.D)] # positions of search agents |
|
| 33 | for _j in range(self.NP)] |
|
| 34 | ||
| 35 | self.evaluations = 0 # evaluations counter |
|
| 36 | ||
| 37 | # TODO: "-inf" is in the case of maximization problems |
|
| 38 | self.Alpha_pos = [0] * self.D # init of alpha |
|
| 39 | self.Alpha_score = float("inf") |
|
| 40 | ||
| 41 | self.Beta_pos = [0] * self.D # init of beta |
|
| 42 | self.Beta_score = float("inf") |
|
| 43 | ||
| 44 | self.Delta_pos = [0] * self.D # init of delta |
|
| 45 | self.Delta_score = float("inf") |
|
| 46 | ||
| 47 | def initialization(self): |
|
| 48 | # initialization of positions |
|