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: Optimizer

The 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

  1. 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=())
evolve(epoch)[source]

The main operations (equations) of algorithm. Inherit from Optimizer class

Parameters

epoch (int) – The current iteration

class mealpy.system_based.AEO.EnhancedAEO(epoch: int = 10000, pop_size: int = 100, **kwargs: object)[source]

Bases: Optimizer

The 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

  1. 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=())
evolve(epoch)[source]

The main operations (equations) of algorithm. Inherit from Optimizer class

Parameters

epoch (int) – The current iteration

class mealpy.system_based.AEO.ImprovedAEO(epoch: int = 10000, pop_size: int = 100, **kwargs: object)[source]

Bases: OriginalAEO

The 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

  1. 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=())
evolve(epoch)[source]

The main operations (equations) of algorithm. Inherit from Optimizer class

Parameters

epoch (int) – The current iteration

class mealpy.system_based.AEO.ModifiedAEO(epoch: int = 10000, pop_size: int = 100, **kwargs: object)[source]

Bases: Optimizer

The 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

  1. 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=())
evolve(epoch)[source]

The main operations (equations) of algorithm. Inherit from Optimizer class

Parameters

epoch (int) – The current iteration

class mealpy.system_based.AEO.OriginalAEO(epoch: int = 10000, pop_size: int = 100, **kwargs: object)[source]

Bases: Optimizer

The 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

  1. https://doi.org/10.1007/s00521-019-04452-x

  2. https://www.mathworks.com/matlabcentral/fileexchange/72685-artificial-ecosystem-based-optimization-aeo

References

  1. 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=())
evolve(epoch)[source]

The main operations (equations) of algorithm. Inherit from Optimizer class

Parameters

epoch (int) – The current iteration

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: Optimizer

Our 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=())
evolve(epoch)[source]

The main operations (equations) of algorithm. Inherit from Optimizer class

Parameters

epoch (int) – The current iteration

initialize_variables()[source]
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: DevGCO

The 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

  1. 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=())
evolve(epoch)[source]

The main operations (equations) of algorithm. Inherit from Optimizer class

Parameters

epoch (int) – The current iteration

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: Optimizer

The 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

  1. 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=())
evolve(epoch)[source]

The main operations (equations) of algorithm. Inherit from Optimizer class

Parameters

epoch (int) – The current iteration

initialization()[source]