mealpy.system_based package
mealpy.system_based.AEO module
- class mealpy.system_based.AEO.AugmentedAEO(epoch: int = 10000, pop_size: int = 100, **kwargs: object)[source]
Bases:
OptimizerThe original version of: Augmented Artificial Ecosystem Optimization (AAEO)
- Parameters
epoch (int) – Maximum number of iterations, default = 10000.
pop_size (int) – Number of population size, default = 100.
References
Van Thieu, N., Barma, S. D., Van Lam, T., Kisi, O., & Mahesha, A. (2022). Groundwater level modeling using Augmented Artificial Ecosystem Optimization. Journal of Hydrology, 129034. https://doi.org/10.1016/j.jhydrol.2022.129034
Examples
>>> import numpy as np >>> from mealpy import FloatVar, AEO >>> >>> def objective_function(solution): >>> return np.sum(solution**2) >>> >>> problem_dict = { >>> "bounds": FloatVar(lb=(-10.,) * 30, ub=(10.,) * 30, name="delta"), >>> "minmax": "min", >>> "obj_func": objective_function >>> } >>> >>> model = AEO.AugmentedAEO(epoch=1000, pop_size=50) >>> g_best = model.solve(problem_dict) >>> print(f"Solution: {g_best.solution}, Fitness: {g_best.target.fitness}") >>> print(f"Solution: {model.g_best.solution}, Fitness: {model.g_best.target.fitness}")
- OPT_INFO: ClassVar[OptInfo | None] = OptInfo(difficulty='medium', kind='variant', name='Augmented Artificial Ecosystem Optimization', year=2022, family=None, scientific_status='normal', concerns=(), evidence_urls=())
- class mealpy.system_based.AEO.EnhancedAEO(epoch: int = 10000, pop_size: int = 100, **kwargs: object)[source]
Bases:
OptimizerThe original version of: Enhanced Artificial Ecosystem-Based Optimization (EAEO)
- Parameters
epoch (int) – Maximum number of iterations, default = 10000.
pop_size (int) – Number of population size, default = 100.
References
Eid, A., Kamel, S., Korashy, A. and Khurshaid, T., 2020. An enhanced artificial ecosystem-based optimization for optimal allocation of multiple distributed generations. IEEE Access, 8, pp.178493-178513. https://doi.org/10.1109/ACCESS.2020.3027654
Examples
>>> import numpy as np >>> from mealpy import FloatVar, AEO >>> >>> def objective_function(solution): >>> return np.sum(solution**2) >>> >>> problem_dict = { >>> "bounds": FloatVar(lb=(-10.,) * 30, ub=(10.,) * 30, name="delta"), >>> "minmax": "min", >>> "obj_func": objective_function >>> } >>> >>> model = AEO.EnhancedAEO(epoch=1000, pop_size=50) >>> g_best = model.solve(problem_dict) >>> print(f"Solution: {g_best.solution}, Fitness: {g_best.target.fitness}") >>> print(f"Solution: {model.g_best.solution}, Fitness: {model.g_best.target.fitness}")
- OPT_INFO: ClassVar[OptInfo | None] = OptInfo(difficulty='medium', kind='variant', name='Enhanced Artificial Ecosystem-Based Optimization', year=2020, family=None, scientific_status='normal', concerns=(), evidence_urls=())
- class mealpy.system_based.AEO.ImprovedAEO(epoch: int = 10000, pop_size: int = 100, **kwargs: object)[source]
Bases:
OriginalAEOThe original version of: Improved Artificial Ecosystem-based Optimization (IAEO)
- Parameters
epoch (int) – Maximum number of iterations, default = 10000.
pop_size (int) – Number of population size, default = 100.
References
Rizk-Allah, R.M. and El-Fergany, A.A., 2021. Artificial ecosystem optimizer for parameters identification of proton exchange membrane fuel cells model. International Journal of Hydrogen Energy, 46(75), pp.37612-37627. https://doi.org/10.1016/j.ijhydene.2020.06.256
Examples
>>> import numpy as np >>> from mealpy import FloatVar, AEO >>> >>> def objective_function(solution): >>> return np.sum(solution**2) >>> >>> problem_dict = { >>> "bounds": FloatVar(lb=(-10.,) * 30, ub=(10.,) * 30, name="delta"), >>> "minmax": "min", >>> "obj_func": objective_function >>> } >>> >>> model = AEO.ImprovedAEO(epoch=1000, pop_size=50) >>> g_best = model.solve(problem_dict) >>> print(f"Solution: {g_best.solution}, Fitness: {g_best.target.fitness}") >>> print(f"Solution: {model.g_best.solution}, Fitness: {model.g_best.target.fitness}")
- OPT_INFO: ClassVar[OptInfo | None] = OptInfo(difficulty='medium', kind='variant', name='Improved Artificial Ecosystem-based Optimization', year=2021, family=None, scientific_status='normal', concerns=(), evidence_urls=())
- class mealpy.system_based.AEO.ModifiedAEO(epoch: int = 10000, pop_size: int = 100, **kwargs: object)[source]
Bases:
OptimizerThe original version of: Modified Artificial Ecosystem-Based Optimization (MAEO)
- Parameters
epoch (int) – Maximum number of iterations, default = 10000.
pop_size (int) – Number of population size, default = 100.
References
Menesy, A.S., Sultan, H.M., Korashy, A., Banakhr, F.A., Ashmawy, M.G. and Kamel, S., 2020. Effective parameter extraction of different polymer electrolyte membrane fuel cell stack models using a modified artificial ecosystem optimization algorithm. IEEE Access, 8, pp.31892-31909. https://doi.org/10.1109/ACCESS.2020.2973351
Examples
>>> import numpy as np >>> from mealpy import FloatVar, AEO >>> >>> def objective_function(solution): >>> return np.sum(solution**2) >>> >>> problem_dict = { >>> "bounds": FloatVar(lb=(-10.,) * 30, ub=(10.,) * 30, name="delta"), >>> "minmax": "min", >>> "obj_func": objective_function >>> } >>> >>> model = AEO.ModifiedAEO(epoch=1000, pop_size=50) >>> g_best = model.solve(problem_dict) >>> print(f"Solution: {g_best.solution}, Fitness: {g_best.target.fitness}") >>> print(f"Solution: {model.g_best.solution}, Fitness: {model.g_best.target.fitness}")
- OPT_INFO: ClassVar[OptInfo | None] = OptInfo(difficulty='medium', kind='variant', name='Modified Artificial Ecosystem-Based Optimization', year=2020, family=None, scientific_status='normal', concerns=(), evidence_urls=())
- class mealpy.system_based.AEO.OriginalAEO(epoch: int = 10000, pop_size: int = 100, **kwargs: object)[source]
Bases:
OptimizerThe original version of: Artificial Ecosystem-based Optimization (AEO)
- Parameters
epoch (int) – Maximum number of iterations, default = 10000.
pop_size (int) – Number of population size, default = 100.
Links
References
Zhao, W., Wang, L. and Zhang, Z., 2020. Artificial ecosystem-based optimization: a novel nature-inspired meta-heuristic algorithm. Neural Computing and Applications, 32(13), pp.9383-9425.
Examples
>>> import numpy as np >>> from mealpy import FloatVar, AEO >>> >>> def objective_function(solution): >>> return np.sum(solution**2) >>> >>> problem_dict = { >>> "bounds": FloatVar(lb=(-10.,) * 30, ub=(10.,) * 30, name="delta"), >>> "minmax": "min", >>> "obj_func": objective_function >>> } >>> >>> model = AEO.OriginalAEO(epoch=1000, pop_size=50) >>> g_best = model.solve(problem_dict) >>> print(f"Solution: {g_best.solution}, Fitness: {g_best.target.fitness}") >>> print(f"Solution: {model.g_best.solution}, Fitness: {model.g_best.target.fitness}")
- OPT_INFO: ClassVar[OptInfo | None] = OptInfo(difficulty='medium', kind='original', name='Artificial Ecosystem-based Optimization', year=2020, family=None, scientific_status='normal', concerns=(), evidence_urls=())
mealpy.system_based.GCO module
- class mealpy.system_based.GCO.DevGCO(epoch: int = 10000, pop_size: int = 100, cr: float = 0.7, wf: float = 1.25, **kwargs: object)[source]
Bases:
OptimizerOur developed version: Germinal Center Optimization (GCO)
- Parameters
epoch (int) – Maximum number of iterations, in range [1, 100000]. Default is 10000.
pop_size (int) – Number of population size, in range [5, 10000]. Default is 100.
cr (float) – Crossover rate (Same as DE algorithm), in range (0.0, 1.0). Default is 0.7.
wf (float) – Weighting factor (f in the paper) (Same as DE algorithm), in range (0.0, 3.0). Default is 1.25.
Note
In this version, the global best solution and 2 random solutions are used instead of randomizing 3 solutions
Examples
>>> import numpy as np >>> from mealpy import FloatVar, GCO >>> >>> def objective_function(solution): >>> return np.sum(solution**2) >>> >>> problem_dict = { >>> "bounds": FloatVar(lb=(-10.,) * 30, ub=(10.,) * 30, name="delta"), >>> "minmax": "min", >>> "obj_func": objective_function >>> } >>> >>> model = GCO.DevGCO(epoch=1000, pop_size=50, cr = 0.7, wf = 1.25) >>> g_best = model.solve(problem_dict) >>> print(f"Solution: {g_best.solution}, Fitness: {g_best.target.fitness}") >>> print(f"Solution: {model.g_best.solution}, Fitness: {model.g_best.target.fitness}")
- OPT_INFO: ClassVar[OptInfo | None] = OptInfo(difficulty='easy', kind='developed', name='Germinal Center Optimization (Dev)', year=None, family=None, scientific_status='normal', concerns=(), evidence_urls=())
- class mealpy.system_based.GCO.OriginalGCO(epoch: int = 10000, pop_size: int = 100, cr: float = 0.7, wf: float = 1.25, **kwargs: object)[source]
Bases:
DevGCOThe original version of: Germinal Center Optimization (GCO)
- Parameters
epoch (int) – Maximum number of iterations, in range [1, 100000]. Default is 10000.
pop_size (int) – Number of population size, in range [5, 10000]. Default is 100.
cr (float) – Crossover rate (Same as DE algorithm), in range (0.0, 1.0). Default is 0.7.
wf (float) – Weighting factor (f in the paper) (Same as DE algorithm), in range (0.0, 3.0). Default is 1.25.
References
Villaseñor, C., Arana-Daniel, N., Alanis, A.Y., López-Franco, C. and Hernandez-Vargas, E.A., 2018. Germinal center optimization algorithm. International Journal of Computational Intelligence Systems, 12(1), p.13. https://doi.org/10.2991/ijcis.2018.25905179
Examples
>>> import numpy as np >>> from mealpy import FloatVar, GCO >>> >>> def objective_function(solution): >>> return np.sum(solution**2) >>> >>> problem_dict = { >>> "bounds": FloatVar(lb=(-10.,) * 30, ub=(10.,) * 30, name="delta"), >>> "minmax": "min", >>> "obj_func": objective_function >>> } >>> >>> model = GCO.OriginalGCO(epoch=1000, pop_size=50, cr = 0.7, wf = 1.25) >>> g_best = model.solve(problem_dict) >>> print(f"Solution: {g_best.solution}, Fitness: {g_best.target.fitness}") >>> print(f"Solution: {model.g_best.solution}, Fitness: {model.g_best.target.fitness}")
- OPT_INFO: ClassVar[OptInfo | None] = OptInfo(difficulty='easy', kind='original', name='Germinal Center Optimization', year=2018, family=None, scientific_status='normal', concerns=(), evidence_urls=())
mealpy.system_based.WCA module
- class mealpy.system_based.WCA.OriginalWCA(epoch: int = 10000, pop_size: int = 100, nsr: int = 4, wc: float = 2.0, dmax: float = 1e-06, **kwargs: object)[source]
Bases:
OptimizerThe original version of: Water Cycle Algorithm (WCA)
- Parameters
epoch (int) – Maximum number of iterations, in range [1, 100000]. Default is 10000.
pop_size (int) – Number of population size, in range [5, 10000]. Default is 100.
nsr (int) – Number of rivers + sea (sea = 1), in range [2, int(pop_size/2)]. Default is 4.
wc (float) – Weighting coefficient (C in the paper), in range (1.0, 3.0). Default is 2.0.
dmax (float) – Evaporation condition constant, in range (0.0, 1.0). Default is 1e-6.
Caution
- The ideas are (almost the same as ICO algorithm):
1 sea is global best solution
a few river which are second, third, …
other left are stream (will flow directed to sea or river)
References
Eskandar, H., Sadollah, A., Bahreininejad, A. and Hamdi, M., 2012. Water cycle algorithm–A novel metaheuristic optimization method for solving constrained engineering optimization problems. Computers & Structures, 110, pp.151-166. https://doi.org/10.1016/j.compstruc.2012.07.010
Examples
>>> import numpy as np >>> from mealpy import FloatVar, WCA >>> >>> def objective_function(solution): >>> return np.sum(solution**2) >>> >>> problem_dict = { >>> "bounds": FloatVar(lb=(-10.,) * 30, ub=(10.,) * 30, name="delta"), >>> "minmax": "min", >>> "obj_func": objective_function >>> } >>> >>> model = WCA.OriginalWCA(epoch=1000, pop_size=50, nsr = 4, wc = 2.0, dmax = 1e-6) >>> g_best = model.solve(problem_dict) >>> print(f"Solution: {g_best.solution}, Fitness: {g_best.target.fitness}") >>> print(f"Solution: {model.g_best.solution}, Fitness: {model.g_best.target.fitness}")
- OPT_INFO: ClassVar[OptInfo | None] = OptInfo(difficulty='medium', kind='original', name='Water Cycle Algorithm', year=2012, family=None, scientific_status='questionable', concerns=(<ScientificConcern.SUSPECTED_PLAGIARISM: 'suspected_plagiarism'>, <ScientificConcern.AMBIGUOUS_METHODOLOGY: 'ambiguous_methodology'>), evidence_urls=())