|
1 | | -from model.optimizer.swarm import BFO, PSO |
2 | | -from model.optimizer.evolutionary import GA, DE, CRO |
| 1 | +#!/usr/bin/env python |
| 2 | +# ------------------------------------------------------------------------------------------------------% |
| 3 | +# Created by "Thieu Nguyen" at 18:10, 06/04/2020 % |
| 4 | +# % |
| 5 | + |
| 6 | +# Homepage: https://www.researchgate.net/profile/Thieu_Nguyen6 % |
| 7 | +# Github: https://github.com/thieunguyen5991 % |
| 8 | +# -------------------------------------------------------------------------------------------------------% |
| 9 | + |
| 10 | +from mealpy.swarm_based import PSO, BFO |
| 11 | +from mealpy.evolutionary_based import GA, DE, CRO |
3 | 12 | from model.root.hybrid.root_hybrid_mlnn import RootHybridMlnn |
4 | 13 |
|
5 | 14 |
|
6 | 15 | class GaMlnn(RootHybridMlnn): |
7 | 16 | def __init__(self, root_base_paras=None, root_hybrid_paras=None, ga_paras=None): |
8 | 17 | RootHybridMlnn.__init__(self, root_base_paras, root_hybrid_paras) |
9 | | - self.ga_paras = ga_paras |
10 | | - self.filename = "GA_MLNN-sliding_{}-nets_{}-ga_{}".format(root_base_paras["sliding"], |
11 | | - [root_hybrid_paras["epoch"], root_hybrid_paras["activations"], root_hybrid_paras["hidden_size"], |
12 | | - root_hybrid_paras["train_valid_rate"]], ga_paras) |
| 18 | + self.epoch = ga_paras["epoch"] |
| 19 | + self.pop_size = ga_paras["pop_size"] |
| 20 | + self.pc = ga_paras["pc"] |
| 21 | + self.pm = ga_paras["pm"] |
| 22 | + self.filename = "GA_MLNN-sliding_{}-{}".format(root_base_paras["sliding"], root_hybrid_paras["paras_name"]) |
13 | 23 |
|
14 | 24 | def _training__(self): |
15 | | - ga = GA.BaseGA(root_algo_paras=self.root_algo_paras, ga_paras = self.ga_paras) |
16 | | - self.solution, self.loss_train = ga._train__() |
17 | | - |
| 25 | + md = GA.BaseGA(self._objective_function__, self.problem_size, self.domain_range, self.print_train, self.epoch, self.pop_size, self.pc, self.pm) |
| 26 | + self.solution, self.best_fit, self.loss_train = md._train__() |
18 | 27 |
|
19 | 28 |
|
20 | 29 | class DeMlnn(RootHybridMlnn): |
21 | 30 | def __init__(self, root_base_paras=None, root_hybrid_paras=None, de_paras=None): |
22 | 31 | RootHybridMlnn.__init__(self, root_base_paras, root_hybrid_paras) |
23 | | - self.de_paras = de_paras |
24 | | - self.filename = "DE_MLNN-sliding_{}-nets_{}-de_{}".format(root_base_paras["sliding"], |
25 | | - [root_hybrid_paras["epoch"], root_hybrid_paras["activations"], root_hybrid_paras["hidden_size"], |
26 | | - root_hybrid_paras["train_valid_rate"]], de_paras) |
| 32 | + self.epoch = de_paras["epoch"] |
| 33 | + self.pop_size = de_paras["pop_size"] |
| 34 | + self.wf = de_paras["wf"] |
| 35 | + self.cr = de_paras["cr"] |
| 36 | + self.filename = "DE_MLNN-sliding_{}-{}".format(root_base_paras["sliding"], root_hybrid_paras["paras_name"]) |
27 | 37 |
|
28 | 38 | def _training__(self): |
29 | | - md = DE.BaseDE(root_algo_paras=self.root_algo_paras, de_paras = self.de_paras) |
30 | | - self.solution, self.loss_train = md._train__() |
31 | | - |
| 39 | + md = DE.BaseDE(self._objective_function__, self.problem_size, self.domain_range, self.print_train, self.epoch, self.pop_size, self.wf, self.cr) |
| 40 | + self.solution, self.best_fit, self.loss_train = md._train__() |
32 | 41 |
|
33 | 42 |
|
34 | | -class CroMlnn(RootHybridMlnn): |
35 | | - def __init__(self, root_base_paras=None, root_hybrid_paras=None, cro_paras=None): |
| 43 | +class PsoMlnn(RootHybridMlnn): |
| 44 | + def __init__(self, root_base_paras=None, root_hybrid_paras=None, pso_paras=None): |
36 | 45 | RootHybridMlnn.__init__(self, root_base_paras, root_hybrid_paras) |
37 | | - self.cro_paras = cro_paras |
38 | | - self.filename = "CRO_MLNN-sliding_{}-nets_{}-cro_{}".format(root_base_paras["sliding"], |
39 | | - [root_hybrid_paras["epoch"], root_hybrid_paras["activations"], root_hybrid_paras["hidden_size"], |
40 | | - root_hybrid_paras["train_valid_rate"]], cro_paras) |
| 46 | + self.epoch = pso_paras["epoch"] |
| 47 | + self.pop_size = pso_paras["pop_size"] |
| 48 | + self.c1 = pso_paras["c_minmax"][0] |
| 49 | + self.c2 = pso_paras["c_minmax"][1] |
| 50 | + self.w_min = pso_paras["w_minmax"][0] |
| 51 | + self.w_max = pso_paras["w_minmax"][1] |
| 52 | + self.filename = "PSO_MLNN-sliding_{}-{}".format(root_base_paras["sliding"], root_hybrid_paras["paras_name"]) |
41 | 53 |
|
42 | 54 | def _training__(self): |
43 | | - cro = CRO.BaseCRO(root_algo_paras=self.root_algo_paras, cro_paras = self.cro_paras) |
44 | | - self.solution, self.loss_train = cro._train__() |
| 55 | + md = PSO.BasePSO(self._objective_function__, self.problem_size, self.domain_range, self.print_train, |
| 56 | + self.epoch, self.pop_size, self.c1, self.c2, self.w_min, self.w_max) |
| 57 | + self.solution, self.best_fit, self.loss_train = md._train__() |
45 | 58 |
|
46 | 59 |
|
47 | | - |
48 | | -class OCroMlnn(RootHybridMlnn): |
49 | | - def __init__(self, root_base_paras=None, root_hybrid_paras=None, cro_paras=None, ocro_paras=None): |
| 60 | +class BfoMlnn(RootHybridMlnn): |
| 61 | + def __init__(self, root_base_paras=None, root_hybrid_paras=None, bfo_paras=None): |
50 | 62 | RootHybridMlnn.__init__(self, root_base_paras, root_hybrid_paras) |
51 | | - self.cro_paras = cro_paras |
52 | | - self.ocro_paras = ocro_paras |
53 | | - self.filename = "OCRO_MLNN-sliding_{}-nets_{}-cro_para_{}-ocro_{}".format(root_base_paras["sliding"], |
54 | | - [root_hybrid_paras["epoch"], root_hybrid_paras["activations"], root_hybrid_paras["hidden_size"], |
55 | | - root_hybrid_paras["train_valid_rate"]], cro_paras, ocro_paras) |
| 63 | + self.pop_size = bfo_paras["pop_size"] |
| 64 | + self.Ci = bfo_paras["Ci"] |
| 65 | + self.Ped = bfo_paras["Ped"] |
| 66 | + self.Ns = bfo_paras["Ns"] |
| 67 | + self.Ned = bfo_paras["Ned"] |
| 68 | + self.Nre = bfo_paras["Nre"] |
| 69 | + self.Nc = bfo_paras["Nc"] |
| 70 | + self.attract_repels = bfo_paras["attract_repels"] |
| 71 | + self.filename = "BFO_MLNN-sliding_{}-{}".format(root_base_paras["sliding"], root_hybrid_paras["paras_name"]) |
56 | 72 |
|
57 | 73 | def _training__(self): |
58 | | - cro = CRO.OCRO(root_algo_paras=self.root_algo_paras, cro_paras = self.cro_paras, ocro_paras=self.ocro_paras) |
59 | | - self.solution, self.loss_train = cro._train__() |
60 | | - |
61 | | - |
62 | | - |
63 | | - |
64 | | - |
| 74 | + md = BFO.BaseBFO(self._objective_function__, self.problem_size, self.domain_range, self.print_train, |
| 75 | + self.pop_size, self.Ci, self.Ped, self.Ns, self.Ned, self.Nre, self.Nc, self.attract_repels) |
| 76 | + self.solution, self.best_fit, self.loss_train = md._train__() |
65 | 77 |
|
66 | 78 |
|
67 | | - |
68 | | -class PsoMlnn(RootHybridMlnn): |
69 | | - def __init__(self, root_base_paras=None, root_hybrid_paras=None, pso_paras=None): |
| 79 | +class ABfoLSMlnn(RootHybridMlnn): |
| 80 | + def __init__(self, root_base_paras=None, root_hybrid_paras=None, abfols_paras=None): |
70 | 81 | RootHybridMlnn.__init__(self, root_base_paras, root_hybrid_paras) |
71 | | - self.pso_paras = pso_paras |
72 | | - self.filename = "PSO_MLNN-sliding_{}-nets_{}-pso_{}".format(root_base_paras["sliding"], |
73 | | - [root_hybrid_paras["epoch"], root_hybrid_paras["activations"], root_hybrid_paras["hidden_size"], |
74 | | - root_hybrid_paras["train_valid_rate"]], pso_paras) |
| 82 | + self.epoch = abfols_paras["epoch"] |
| 83 | + self.pop_size = abfols_paras["pop_size"] |
| 84 | + self.Ci = abfols_paras["Ci"] |
| 85 | + self.Ped = abfols_paras["Ped"] |
| 86 | + self.Ns = abfols_paras["Ns"] |
| 87 | + self.N_minmax = abfols_paras["N_minmax"] |
| 88 | + self.filename = "ABFOLS_MLNN-sliding_{}-{}".format(root_base_paras["sliding"], root_hybrid_paras["paras_name"]) |
75 | 89 |
|
76 | 90 | def _training__(self): |
77 | | - pso = PSO.BasePSO(root_algo_paras=self.root_algo_paras, pso_paras = self.pso_paras) |
78 | | - self.solution, self.loss_train = pso._train__() |
| 91 | + md = BFO.ABFOLS(self._objective_function__, self.problem_size, self.domain_range, self.print_train, |
| 92 | + self.epoch, self.pop_size, self.Ci, self.Ped, self.Ns, self.N_minmax) |
| 93 | + self.solution, self.best_fit, self.loss_train = md._train__() |
79 | 94 |
|
80 | | -class BfoMlnn(RootHybridMlnn): |
81 | | - def __init__(self, root_base_paras=None, root_hybrid_paras=None, bfo_paras=None): |
| 95 | + |
| 96 | +class CroMlnn(RootHybridMlnn): |
| 97 | + def __init__(self, root_base_paras=None, root_hybrid_paras=None, cro_paras=None): |
82 | 98 | RootHybridMlnn.__init__(self, root_base_paras, root_hybrid_paras) |
83 | | - self.bfo_paras = bfo_paras |
84 | | - self.filename = "BFO_MLNN-sliding_{}-nets_{}-bfo_{}".format(root_base_paras["sliding"], |
85 | | - [root_hybrid_paras["epoch"], root_hybrid_paras["activations"], root_hybrid_paras["hidden_size"], |
86 | | - root_hybrid_paras["train_valid_rate"]], bfo_paras) |
| 99 | + self.epoch = cro_paras["epoch"] |
| 100 | + self.pop_size = cro_paras["pop_size"] |
| 101 | + self.po = cro_paras["po"] |
| 102 | + self.Fb = cro_paras["Fb"] |
| 103 | + self.Fa = cro_paras["Fa"] |
| 104 | + self.Fd = cro_paras["Fd"] |
| 105 | + self.Pd = cro_paras["Pd"] |
| 106 | + self.G = cro_paras["G"] |
| 107 | + self.GCR = cro_paras["GCR"] |
| 108 | + self.k = cro_paras["k"] |
| 109 | + self.filename = "CRO_MLNN-sliding_{}-{}".format(root_base_paras["sliding"], root_hybrid_paras["paras_name"]) |
87 | 110 |
|
88 | 111 | def _training__(self): |
89 | | - md = BFO.BaseBFO(root_algo_paras=self.root_algo_paras, bfo_paras = self.bfo_paras) |
90 | | - self.solution, self.loss_train = md._train__() |
91 | | - |
| 112 | + md = CRO.BaseCRO(self._objective_function__, self.problem_size, self.domain_range, self.print_train, |
| 113 | + self.epoch, self.pop_size, self.po, self.Fb, self.Fa, self.Fd, self.Pd, self.G, self.GCR, self.k) |
| 114 | + self.solution, self.best_fit, self.loss_train = md._train__() |
92 | 115 |
|
93 | 116 |
|
94 | | -class ABfoLSMlnn(RootHybridMlnn): |
95 | | - def __init__(self, root_base_paras=None, root_hybrid_paras=None, abfols_paras=None): |
| 117 | +class OCroMlnn(RootHybridMlnn): |
| 118 | + def __init__(self, root_base_paras=None, root_hybrid_paras=None, ocro_paras=None): |
96 | 119 | RootHybridMlnn.__init__(self, root_base_paras, root_hybrid_paras) |
97 | | - self.abfols_paras = abfols_paras |
98 | | - self.filename = "ABfoLS_MLNN-sliding_{}-nets_{}-abfols_{}".format(root_base_paras["sliding"], |
99 | | - [root_hybrid_paras["epoch"], root_hybrid_paras["activations"], root_hybrid_paras["hidden_size"], |
100 | | - root_hybrid_paras["train_valid_rate"]], abfols_paras) |
| 120 | + self.epoch = ocro_paras["epoch"] |
| 121 | + self.pop_size = ocro_paras["pop_size"] |
| 122 | + self.po = ocro_paras["po"] |
| 123 | + self.Fb = ocro_paras["Fb"] |
| 124 | + self.Fa = ocro_paras["Fa"] |
| 125 | + self.Fd = ocro_paras["Fd"] |
| 126 | + self.Pd = ocro_paras["Pd"] |
| 127 | + self.G = ocro_paras["G"] |
| 128 | + self.GCR = ocro_paras["GCR"] |
| 129 | + self.k = ocro_paras["k"] |
| 130 | + self.restart_count = ocro_paras["restart_count"] |
| 131 | + self.filename = "OCRO_MLNN-sliding_{}-{}".format(root_base_paras["sliding"], root_hybrid_paras["paras_name"]) |
101 | 132 |
|
102 | 133 | def _training__(self): |
103 | | - md = BFO.ABFOLS(root_algo_paras=self.root_algo_paras, abfols_paras=self.abfols_paras) |
104 | | - self.solution, self.loss_train = md._train__() |
| 134 | + md = CRO.OCRO(self._objective_function__, self.problem_size, self.domain_range, self.print_train, |
| 135 | + self.epoch, self.pop_size, self.po, self.Fb, self.Fa, self.Fd, self.Pd, self.G, self.GCR, self.k, self.restart_count) |
| 136 | + self.solution, self.best_fit, self.loss_train = md._train__() |
105 | 137 |
|
106 | 138 |
|
0 commit comments