Profile
Back to NewsBack
GitHub Trending 28 min
Reader Mode
thieu1995/mealpy: A Collection Of The State-of-the-art Metaheuristic Algorithms In Python (Metaheuristic/Optimizer/Nature-inspired/Biology)

thieu1995/mealpy: A Collection Of The State-of-the-art Metaheuristic Algorithms In Python (Metaheuristic/Optimizer/Nature-inspired/Biology)

13 hours ago

MEALPY


GitHub release</a> PyPI version</a> !PyPI - Python Version Downloads</a> Tests & Publishes to PyPI</a> !GitHub Release Date Chat</a> Documentation Status</a> DOI</a> License: MIT</a>


MEALPY is the world's largest Python library, offering a comprehensive collection of cutting-edge meta-heuristic algorithms. These include nature-inspired algorithms, bio-inspired algorithms, black-box optimization, global search optimizers, iterative learning algorithms, continuous optimization, derivative-free optimization, gradient-free optimization, zeroth-order optimization, stochastic search optimization, and random search optimization. All these methods fall under the category of population-based metaheuristics (PBMs), which are among the most popular algorithms in the field of approximate optimization. For detailed updates in each new version, please refer to the ChangeLog file.

  • Free software: MIT license
  • Total algorithms: 233 (206 official (original, hybrid, variants), 27 developed)
  • Documentation: https://mealpy.readthedocs.io/en/latest/
  • Python versions: >=3.8x
  • Dependencies: numpy, scipy, pandas, matplotlib, tqdm

📌 Goals

Our goals are to implement all classical as well as the state-of-the-art nature-inspired algorithms, create a simple interface that helps researchers access optimization algorithms as quickly as possible, and share knowledge of the optimization field with everyone without a fee. What you can do with mealpy:

  • Analyse parameters of meta-heuristic algorithms.
  • Perform Qualitative and Quantitative Analysis of algorithms.
  • Analyse rate of convergence of algorithms.
  • Test and Analyse the scalability and the robustness of algorithms.
  • Save results in various formats (csv, json, pickle, png, pdf, jpeg)
  • Export and import models can also be done with Mealpy.
  • Solve any optimization problem

📄 Citation Request

Please include these citations if you plan to use this library:

``bibtex @article{van2023mealpy, title={MEALPY: An open-source library for latest meta-heuristic algorithms in Python}, author={Van Thieu, Nguyen and Mirjalili, Seyedali}, journal={Journal of Systems Architecture}, year={2023}, publisher={Elsevier}, doi={10.1016/j.sysarc.2023.102871} }

@article{van2023groundwater, title={Groundwater level modeling using Augmented Artificial Ecosystem Optimization}, author={Van Thieu, Nguyen and Barma, Surajit Deb and Van Lam, To and Kisi, Ozgur and Mahesha, Amai}, journal={Journal of Hydrology}, volume={617}, pages={129034}, year={2023}, publisher={Elsevier}, doi={https://doi.org/10.1016/j.jhydrol.2022.129034} }

@article{ahmed2021comprehensive, title={A comprehensive comparison of recent developed meta-heuristic algorithms for streamflow time series forecasting problem}, author={Ahmed, Ali Najah and Van Lam, To and Hung, Nguyen Duy and Van Thieu, Nguyen and Kisi, Ozgur and El-Shafie, Ahmed}, journal={Applied Soft Computing}, volume={105}, pages={107282}, year={2021}, publisher={Elsevier}, doi={10.1016/j.asoc.2021.107282} }

# ⚙️ Usage

<details><summary><h2>🛠️ Installation</h2></summary>

bash$ pip install mealpy --upgrade
* Install the alpha/beta version from PyPi
bash $ pip install mealpy==2.5.4a6
* Install the pre-release version directly from the source code:
bash $ git clone https://github.com/thieu1995/mealpy.git $ cd mealpy $ python setup.py install
* In case, you want to install the development version from Github:
bash $ pip install git+https://github.com/thieu1995/mealpy
After installation, check the version to ensure successful installation:
bash $ python
>> import mealpy
>> mealpy.__version__
>> print(mealpy.get_all_optimizers())
>> model = mealpy.get_optimizer_by_name("OriginalWOA")(epoch=100, pop_size=50)
</details>

💬 Decision Variables

Before we dive into some examples, let's briefly consider the type of problem you're aiming to solve with MEALPY. Understanding your specific problem and its desired solution can help you select the most appropriate approach.

To assist you in choosing the right tools, refer to the table below. It outlines different types of decision variables available in MEALPY, along with their syntax and common problem applications. This will guide you in defining your search space effectively.

<div align="center">

| Class | Syntax | Problem Types | |-------------------|-----------------------------------------------------------------------------------------------------------------|-----------------------------| | FloatVar | FloatVar(lb=(-10., )7, ub=(10., )7, name="delta") | Continuous Problem | | IntegerVar | IntegerVar(lb=(-10., )7, ub=(10., )7, name="delta") | LP, IP, NLP, QP, MIP | | StringVar | StringVar(valid_sets=(("auto", "backward", "forward"), ("leaf", "branch", "root")), name="delta") | ML, AI-optimize | | BinaryVar | BinaryVar(n_vars=11, name="delta") | Networks | | BoolVar | BoolVar(n_vars=11, name="delta") | ML, AI-optimize | | PermutationVar | PermutationVar(valid_set=(-10, -4, 10, 6, -2), name="delta") | Combinatorial Optimization | | CategoricalVar | CategoricalVar(valid_sets=(("auto", 2, 3, "backward", True), (0, "tournament", "round-robin")), name="delta") | MIP, MILP | | SequenceVar | SequenceVar(valid_sets=((1, ), {2, 3}, [3, 5, 1]), return_type=list, name='delta') | Hyper-parameter tuning | | TransferBoolVar | TransferBoolVar(n_vars=11, name="delta", tf_func="sstf_02") | ML, AI-optimize, Feature | | TransferBinaryVar | TransferBinaryVar(n_vars=11, name="delta", tf_func="vstf_04") | Networks, Feature Selection |

</div>

📚 Optimizer Classification

!MEALPY3-0-0

To explore the complete, up-to-date registry of supported optimizers and their categorical breakdown, please check out our Official Classification Table or consult the foundational research paper.

❌ Warning: Algorithms Suspected of Plagiarism

During our implementation and classification of metaheuristic optimization algorithms, we identified a set of methods that raise serious concerns regarding scientific integrity and originality. These algorithms are typically published under different names, but they appear to share:

  • The same core mathematical models, equations, and update rules.
  • Only superficial changes in naming, metaphors, or biological analogies.
  • Publications authored by the same or overlapping research groups.
  • Heavy criticism on public academic forums such as PubPeer, where many of these papers are flagged for self-plagiarism, redundant publication, or lack of novelty.
  • Some of these papers may be withdrawn or retracted in the future, as investigations unfold.
For these reasons, we strongly advise the exclusion of the following algorithms from scientific benchmarking, comparative studies, or any applications unless their originality is transparently validated.

**I have personally implemented these algorithms, which is why I can confidently say that they are nearly identical and likely cases of plagiarism. For this reason, I will no longer spend time coding such algorithms in the future. This warning is intended to help others avoid using or relying on these methods in their work.**

| Group | Name | Module | Class | Year | Paras | | --- | --- | --- | --- | --- |-------| | Swarm | Coati Optimization Algorithm | CoatiOA | OriginalCoatiOA | 2023 | 2 | | Swarm | Fennec For Optimization | FFO | OriginalFFO | 2022 | 2 | | Swarm | Northern Goshawk Optimization | NGO | OriginalNGO | 2021 | 2 | | Swarm | Osprey Optimization Algorithm | OOA | OriginalOOA | 2023 | 2 | | Swarm | Pelican Optimization Algorithm | POA | OriginalPOA | 2023 | 2 | | Swarm | Serval Optimization Algorithm | ServalOA | OriginalServalOA | 2022 | 2 | | Swarm | Siberian Tiger Optimization | STO | OriginalSTO | 2022 | 2 | | Swarm | Tasmanian Devil Optimization | TDO | OriginalTDO | 2022 | 2 | | Swarm | Walrus Optimization Algorithm | WaOA | OriginalWaOA | 2022 | 2 | | Swarm | Zebra Optimization Algorithm | ZOA | OriginalZOA | 2022 | 2 | | Human | Teamwork Optimization Algorithm | TOA | OriginalTOA | 2021 | 2 |

⚠️ Ethical Reminder

Researchers and students are urged to exercise caution when referencing or applying the algorithms listed above. Using unoriginal or unethical work can compromise the scientific credibility of any downstream research and introduce misleading experimental results.

> 🔗 Check PubPeer1 and PubPeer2 to > find ongoing discussions and critiques from the academic community.


<details><summary><h3>💻 Define All Optimizers</h3></summary>

python

from mealpy import (StringVar, FloatVar, BoolVar, PermutationVar, CategoricalVar, IntegerVar, BinaryVar, TransferBinaryVar, TransferBoolVar) from mealpy import Tuner, Multitask, Problem, Optimizer, Termination, ParameterGrid from mealpy import get_all_optimizers, get_optimizer_by_name

from mealpy import BBO, PSO, GA, ALO, AO, ARO, AVOA, BA, BBOA, BMO, EOA, IWO from mealpy import GJO, FOX, FOA, FFO, FFA, FA, ESOA, EHO, DO, DMOA, CSO, CSA, CoatiOA, COA, BSA from mealpy import HCO, ICA, LCO, WarSO, TOA, TLO, SSDO, SPBO, SARO, QSA, ArchOA, ASO, CDO, EFO, EO, EVO, FLA from mealpy import HGSO, MVO, NRO, RIME, SA, WDO, TWO, ABC, ACOR, AGTO, BeesA, BES, BFO, ZOA, WOA, WaOA, TSO from mealpy import PFA, OOA, NGO, NMRA, MSA, MRFO, MPA, MGO, MFO, JA, HHO, HGS, HBA, GWO, GTO, GOA from mealpy import SBO, SMA, SOA, SOS, TPO, TSA, VCS, WHO, AOA, CEM, CGO, CircleSA, GBO, HC, INFO, PSS, RUN, SCA from mealpy import SHIO, TS, HS, AEO, GCO, WCA, CRO, DE, EP, ES, FPA, MA, SHADE, BRO, BSO, CA, CHIO, FBIO, GSKA, HBO from mealpy import TDO, STO, SSpiderO, SSpiderA, SSO, SSA, SRSR, SLO, SHO, SFO, ServalOA, SeaHO, SCSO, POA

Newly added module in version 3.0.3

from mealpy import ESO, EPC, SMO, AFT, CDDO, SquirrelSA, FDO, LSHADEcnEpSin, IMODE

if __name__ == "__main__": model = BBO.OriginalBBO(epoch=10, pop_size=30, p_m=0.01, n_elites=2) model = PSO.OriginalPSO(epoch=100, pop_size=50, c1=2.05, c2=20.5, w=0.4) model = PSO.LDW_PSO(epoch=100, pop_size=50, c1=2.05, c2=20.5, w_min=0.4, w_max=0.9) model = PSO.AIW_PSO(epoch=100, pop_size=50, c1=2.05, c2=20.5, alpha=0.4) model = PSO.P_PSO(epoch=100, pop_size=50) model = PSO.HPSO_TVAC(epoch=100, pop_size=50, ci=0.5, cf=0.1) model = PSO.C_PSO(epoch=100, pop_size=50, c1=2.05, c2=2.05, w_min=0.4, w_max=0.9) model = PSO.CL_PSO(epoch=100, pop_size=50, c_local=1.2, w_min=0.4, w_max=0.9, max_flag=7) model = GA.BaseGA(epoch=100, pop_size=50, pc=0.9, pm=0.05, selection="tournament", k_way=0.4, crossover="multi_points", mutation="swap") model = GA.SingleGA(epoch=100, pop_size=50, pc=0.9, pm=0.8, selection="tournament", k_way=0.4, crossover="multi_points", mutation="swap") model = GA.MultiGA(epoch=100, pop_size=50, pc=0.9, pm=0.8, selection="tournament", k_way=0.4, crossover="multi_points", mutation="swap") model = GA.EliteSingleGA(epoch=100, pop_size=50, pc=0.95, pm=0.8, selection="roulette", crossover="uniform", mutation="swap", k_way=0.2, elite_best=0.1, elite_worst=0.3, strategy=0) model = GA.EliteMultiGA(epoch=100, pop_size=50, pc=0.95, pm=0.8, selection="roulette", crossover="uniform", mutation="swap", k_way=0.2, elite_best=0.1, elite_worst=0.3, strategy=0) model = ABC.OriginalABC(epoch=1000, pop_size=50, n_limits=50) model = ACOR.OriginalACOR(epoch=1000, pop_size=50, sample_count=25, intent_factor=0.5, zeta=1.0) model = AGTO.OriginalAGTO(epoch=1000, pop_size=50, p1=0.03, p2=0.8, beta=3.0) model = AGTO.MGTO(epoch=1000, pop_size=50, pp=0.03) model = ALO.OriginalALO(epoch=100, pop_size=50) model = ALO.DevALO(epoch=100, pop_size=50) model = AO.OriginalAO(epoch=100, pop_size=50) model = ARO.OriginalARO(epoch=100, pop_size=50) model = ARO.LARO(epoch=100, pop_size=50) model = ARO.IARO(epoch=100, pop_size=50) model = AVOA.OriginalAVOA(epoch=100, pop_size=50, p1=0.6, p2=0.4, p3=0.6, alpha=0.8, gama=2.5) model = BA.OriginalBA(epoch=100, pop_size=50, loudness=0.8, pulse_rate=0.95, pf_min=0.1, pf_max=10.0) model = BA.AdaptiveBA(epoch=100, pop_size=50, loudness_min=1.0, loudness_max=2.0, pr_min=-2.5, pr_max=0.85, pf_min=0.1, pf_max=10.) model = BA.DevBA(epoch=100, pop_size=50, pulse_rate=0.95, pf_min=0., pf_max=10.) model = BBOA.OriginalBBOA(epoch=100, pop_size=50) model = BMO.OriginalBMO(epoch=100, pop_size=50, pl=4) model = EOA.OriginalEOA(epoch=100, pop_size=50, p_c=0.9, p_m=0.01, n_best=2, alpha=0.98, beta=0.9, gama=0.9) model = IWO.OriginalIWO(epoch=100, pop_size=50, seed_min=3, seed_max=9, exponent=3, sigma_start=0.6, sigma_end=0.01) model = SBO.DevSBO(epoch=100, pop_size=50, alpha=0.9, p_m=0.05, psw=0.02) model = SBO.OriginalSBO(epoch=100, pop_size=50, alpha=0.9, p_m=0.05, psw=0.02) model = SMA.OriginalSMA(epoch=100, pop_size=50, p_t=0.03) model = SMA.DevSMA(epoch=100, pop_size=50, p_t=0.03) model = SOA.OriginalSOA(epoch=100, pop_size=50, fc=2) model = SOA.DevSOA(epoch=100, pop_size=50, fc=2) model = SOS.OriginalSOS(epoch=100, pop_size=50) model = TPO.DevTPO(epoch=100, pop_size=50, alpha=0.3, beta=50., theta=0.9) model = TSA.OriginalTSA(epoch=100, pop_size=50) model = VCS.OriginalVCS(epoch=100, pop_size=50, lamda=0.5, sigma=0.3) model = VCS.DevVCS(epoch=100, pop_size=50, lamda=0.5, sigma=0.3) model = WHO.OriginalWHO(epoch=100, pop_size=50, n_explore_step=3, n_exploit_step=3, eta=0.15, p_hi=0.9, local_alpha=0.9, local_beta=0.3, global_alpha=0.2, global_beta=0.8, delta_w=2.0, delta_c=2.0) model = AOA.OriginalAOA(epoch=100, pop_size=50, alpha=5, miu=0.5, moa_min=0.2, moa_max=0.9) model = CEM.OriginalCEM(epoch=100, pop_size=50, n_best=20, alpha=0.7) model = CGO.OriginalCGO(epoch=100, pop_size=50) model = CircleSA.OriginalCircleSA(epoch=100, pop_size=50, c_factor=0.8) model = GBO.OriginalGBO(epoch=100, pop_size=50, pr=0.5, beta_min=0.2, beta_max=1.2) model = HC.OriginalHC(epoch=100, pop_size=50, neighbour_size=50) model = HC.SwarmHC(epoch=100, pop_size=50, neighbour_size=10) model = INFO.OriginalINFO(epoch=100, pop_size=50) model = PSS.OriginalPSS(epoch=100, pop_size=50, acceptance_rate=0.8, sampling_method="LHS") model = RUN.OriginalRUN(epoch=100, pop_size=50) model = SCA.OriginalSCA(epoch=100, pop_size=50) model = SCA.DevSCA(epoch=100, pop_size=50) model = SCA.QleSCA(epoch=100, pop_size=50, alpha=0.1, gama=0.9) model = SHIO.OriginalSHIO(epoch=100, pop_size=50) model = TS.OriginalTS(epoch=100, pop_size=50, tabu_size=5, neighbour_size=20, perturbation_scale=0.05) model = HS.OriginalHS(epoch=100, pop_size=50, c_r=0.95, pa_r=0.05) model = HS.DevHS(epoch=100, pop_size=50, c_r=0.95, pa_r=0.05) model = AEO.OriginalAEO(epoch=100, pop_size=50) model = AEO.EnhancedAEO(epoch=100, pop_size=50) model = AEO.ModifiedAEO(epoch=100, pop_size=50) model = AEO.ImprovedAEO(epoch=100, pop_size=50) model = AEO.AugmentedAEO(epoch=100, pop_size=50) model = GCO.OriginalGCO(epoch=100, pop_size=50, cr=0.7, wf=1.25) model = GCO.DevGCO(epoch=100, pop_size=50, cr=0.7, wf=1.25) model = WCA.OriginalWCA(epoch=100, pop_size=50, nsr=4, wc=2.0, dmax=1e-6) model = CRO.OriginalCRO(epoch=100, pop_size=50, po=0.4, Fb=0.9, Fa=0.1, Fd=0.1, Pd=0.5, GCR=0.1, gamma_min=0.02, gamma_max=0.2, n_trials=5) model = CRO.OCRO(epoch=100, pop_size=50, po=0.4, Fb=0.9, Fa=0.1, Fd=0.1, Pd=0.5, GCR=0.1, gamma_min=0.02, gamma_max=0.2, n_trials=5, restart_count=50) model = DE.OriginalDE(epoch=100, pop_size=50, wf=0.7, cr=0.9, strategy=0) model = DE.JADE(epoch=100, pop_size=50, miu_f=0.5, miu_cr=0.5, pt=0.1, ap=0.1) model = DE.SADE(epoch=100, pop_size=50) model = DE.SAP_DE(epoch=100, pop_size=50, branch="ABS") model = EP.OriginalEP(epoch=100, pop_size=50, bout_size=0.05) model = EP.LevyEP(epoch=100, pop_size=50, bout_size=0.05) model = ES.OriginalES(epoch=100, pop_size=50, lamda=0.75) model = ES.LevyES(epoch=100, pop_size=50, lamda=0.75) model = ES.CMA_ES(epoch=100, pop_size=50) model = ES.Simple_CMA_ES(epoch=100, pop_size=50) model = FPA.OriginalFPA(epoch=100, pop_size=50, p_s=0.8, levy_multiplier=0.2) model = MA.OriginalMA(epoch=100, pop_size=50, pc=0.85, pm=0.15, p_local=0.5, max_local_gens=10, bits_per_param=4) model = SHADE.OriginalSHADE(epoch=100, pop_size=50, miu_f=0.5, miu_cr=0.5) model = SHADE.L_SHADE(epoch=100, pop_size=50, miu_f=0.5, miu_cr=0.5) model = BRO.OriginalBRO(epoch=100, pop_size=50, threshold=3) model = BRO.DevBRO(epoch=100, pop_size=50, threshold=3) model = BSO.OriginalBSO(epoch=100, pop_size=50, m_clusters=5, p1=0.2, p2=0.8, p3=0.4, p4=0.5, slope=20) model = BSO.ImprovedBSO(epoch=100, pop_size=50, m_clusters=5, p1=0.25, p2=0.5, p3=0.75, p4=0.6) model = CA.OriginalCA(epoch=100, pop_size=50, accepted_rate=0.15) model = CHIO.OriginalCHIO(epoch=100, pop_size=50, brr=0.15, max_age=10) model = CHIO.DevCHIO(epoch=100, pop_size=50, brr=0.15, max_age=10) model = FBIO.OriginalFBIO(epoch=100, pop_size=50) model = FBIO.DevFBIO(epoch=100, pop_size=50) model = GSKA.OriginalGSKA(epoch=100, pop_size=50, pb=0.1, kf=0.5, kr=0.9, kg=5) model = GSKA.DevGSKA(epoch=100, pop_size=50, pb=0.1, kr=0.9) model = HBO.OriginalHBO(epoch=100, pop_size=50, degree=3) model = HCO.OriginalHCO(epoch=100, pop_size=50, wfp=0.65, wfv=0.05, c1=1.4, c2=1.4) model = ICA.OriginalICA(epoch=100, pop_size=50, empire_count=5, assimilation_coeff=1.5, revolution_prob=0.05, revolution_rate=0.1, revolution_step_size=0.1, zeta=0.1) model = LCO.OriginalLCO(epoch=100, pop_size=50, r1=2.35) model = LCO.ImprovedLCO(epoch=100, pop_size=50) model = LCO.DevLCO(epoch=100, pop_size=50, r1=2.35) model = WarSO.OriginalWarSO(epoch=100, pop_size=50, rr=0.1) model = TOA.OriginalTOA(epoch=100, pop_size=50) model = TLO.OriginalTLO(epoch=100, pop_size=50) model = TLO.ImprovedTLO(epoch=100, pop_size=50, n_teachers=5) model = TLO.ETLBO(epoch=100, pop_size=50, elite_size=4) model = SSDO.OriginalSSDO(epoch=100, pop_size=50) model = SPBO.OriginalSPBO(epoch=100, pop_size=50) model = SPBO.DevSPBO(epoch=100, pop_size=50) model = SARO.OriginalSARO(epoch=100, pop_size=50, se=0.5, mu=50) model = SARO.DevSARO(epoch=100, pop_size=50, se=0.5, mu=50) model = QSA.OriginalQSA(epoch=100, pop_size=50) model = QSA.DevQSA(epoch=100, pop_size=50) model = QSA.OppoQSA(epoch=100, pop_size=50) model = QSA.LevyQSA(epoch=100, pop_size=50) model = QSA.ImprovedQSA(epoch=100, pop_size=50) model = ArchOA.OriginalArchOA(epoch=100, pop_size=50, c1=2, c2=5, c3=2, c4=0.5, acc_max=0.9, acc_min=0.1) model = ASO.OriginalASO(epoch=100, pop_size=50, alpha=50, beta=0.2) model = CDO.OriginalCDO(epoch=100, pop_size=50) model = EFO.OriginalEFO(epoch=100, pop_size=50, r_rate=0.3, ps_rate=0.85, p_field=0.1, n_field=0.45) model = EFO.DevEFO(epoch=100, pop_size=50, r_rate=0.3, ps_rate=0.85, p_field=0.1, n_field=0.45) model = EO.OriginalEO(epoch=100, pop_size=50) model = EO.AdaptiveEO(epoch=100, pop_size=50) model = EO.ModifiedEO(epoch=100, pop_size=50) model = EVO.OriginalEVO(epoch=100, pop_size=50) model = FLA.OriginalFLA(epoch=100, pop_size=50, C1=0.5, C2=2.0, C3=0.1, C4=0.2, C5=2.0, DD=0.01) model = HGSO.OriginalHGSO(epoch=100, pop_size=50, n_clusters=3) model = MVO.OriginalMVO(epoch=100, pop_size=50, wep_min=0.2, wep_max=1.0) model = MVO.DevMVO(epoch=100, pop_size=50, wep_min=0.2, wep_max=1.0) model = NRO.OriginalNRO(epoch=100, pop_size=50) model = RIME.OriginalRIME(epoch=100, pop_size=50, sr=5.0) model = SA.OriginalSA(epoch=100, pop_size=50, temp_init=100, step_size=0.1) model = SA.GaussianSA(epoch=100, pop_size=50, temp_init=100, cooling_rate=0.99, scale=0.1) model = SA.SwarmSA(epoch=100, pop_size=50, max_sub_iter=5, t0=1000, t1=1, move_count=5, mutation_rate=0.1, mutation_step_size=0.1, mutation_step_size_damp=0.99) model = WDO.OriginalWDO(epoch=100, pop_size=50, RT=3, g_c=0.2, alp=0.4, c_e=0.4, max_v=0.3) model = TWO.OriginalTWO(epoch=100, pop_size=50) model = TWO.EnhancedTWO(epoch=100, pop_size=50) model = TWO.OppoTWO(epoch=100, pop_size=50) model = TWO.LevyTWO(epoch=100, pop_size=50) model = ABC.OriginalABC(epoch=100, pop_size=50, n_limits=50) model = ACOR.OriginalACOR(epoch=100, pop_size=50, sample_count=25, intent_factor=0.5, zeta=1.0) model = AGTO.OriginalAGTO(epoch=100, pop_size=50, p1=0.03, p2=0.8, beta=3.0) model = AGTO.MGTO(epoch=100, pop_size=50, pp=0.03) model = BeesA.OriginalBeesA(epoch=100, pop_size=50, selected_site_ratio=0.5, elite_site_ratio=0.4, selected_site_bee_ratio=0.1, elite_site_bee_ratio=2.0, dance_radius=0.1, dance_reduction=0.99) model = BeesA.CleverBookBeesA(epoch=100, pop_size=50, n_elites=16, n_others=4, patch_size=5.0, patch_reduction=0.985, n_sites=3, n_elite_sites=1) model = BeesA.ProbBeesA(epoch=100, pop_size=50, recruited_bee_ratio=0.1, dance_radius=0.1, dance_reduction=0.99) model = BES.OriginalBES(epoch=100, pop_size=50, a_factor=10, R_factor=1.5, alpha=2.0, c1=2.0, c2=2.0) model = BFO.OriginalBFO(epoch=100, pop_size=50, Ci=0.01, Ped=0.25, Nc=5, Ns=4, d_attract=0.1, w_attract=0.2, h_repels=0.1, w_repels=10) model = BFO.ABFO(epoch=100, pop_size=50, C_s=0.1, C_e=0.001, Ped=0.01, Ns=4, N_adapt=2, N_split=40) model = ZOA.OriginalZOA(epoch=100, pop_size=50) model = WOA.OriginalWOA(epoch=100, pop_size=50) model = WOA.HI_WOA(epoch=100, pop_size=50, feedback_max=10) model = WaOA.OriginalWaOA(epoch=100, pop_size=50) model = TSO.OriginalTSO(epoch=100, pop_size=50) model = TDO.OriginalTDO(epoch=100, pop_size=50) model = STO.OriginalSTO(epoch=100, pop_size=50) model = SSpiderO.OriginalSSpiderO(epoch=100, pop_size=50, fp_min=0.65, fp_max=0.9) model = SSpiderA.DevSSpiderA(epoch=100, pop_size=50, r_a=1.0, p_c=0.7, p_m=0.1) model = SSO.OriginalSSO(epoch=100, pop_size=50) model = SSA.OriginalSSA(epoch=100, pop_size=50, ST=0.8, PD=0.2, SD=0.1) model = SSA.DevSSA(epoch=100, pop_size=50, ST=0.8, PD=0.2, SD=0.1) model = SRSR.OriginalSRSR(epoch=100, pop_size=50) model = SLO.OriginalSLO(epoch=100, pop_size=50) model = SLO.ModifiedSLO(epoch=100, pop_size=50) model = SLO.ImprovedSLO(epoch=100, pop_size=50, c1=1.2, c2=1.5) model = SHO.OriginalSHO(epoch=100, pop_size=50, h_factor=5.0, n_trials=10) model = SFO.OriginalSFO(epoch=100, pop_size=50, pp=0.1, AP=4.0, epsilon=0.0001) model = SFO.ImprovedSFO(epoch=100, pop_size=50, pp=0.1) model = ServalOA.OriginalServalOA(epoch=100, pop_size=50) model = SeaHO.OriginalSeaHO(epoch=100, pop_size=50) model = SCSO.OriginalSCSO(epoch=100, pop_size=50) model = POA.OriginalPOA(epoch=100, pop_size=50) model = PFA.OriginalPFA(epoch=100, pop_size=50) model = OOA.OriginalOOA(epoch=100, pop_size=50) model = NGO.OriginalNGO(epoch=100, pop_size=50) model = NMRA.OriginalNMRA(epoch=100, pop_size=50, pb=0.75) model = NMRA.ImprovedNMRA(epoch=100, pop_size=50, pb=0.75, pm=0.01) model = MSA.OriginalMSA(epoch=100, pop_size=50, n_best=5, partition=0.5, max_step_size=1.0) model = MRFO.OriginalMRFO(epoch=100, pop_size=50, somersault_range=2.0) model = MRFO.WMQIMRFO(epoch=100, pop_size=50, somersault_range=2.0, pm=0.5) model = MPA.OriginalMPA(epoch=100, pop_size=50) model = MGO.OriginalMGO(epoch=100, pop_size=50) model = MFO.OriginalMFO(epoch=100, pop_size=50) model = JA.OriginalJA(epoch=100, pop_size=50) model = JA.LevyJA(epoch=100, pop_size=50) model = JA.DevJA(epoch=100, pop_size=50) model = HHO.OriginalHHO(epoch=100, pop_size=50) model = HGS.OriginalHGS(epoch=100, pop_size=50, PUP=0.08, LH=10000) model = HBA.OriginalHBA(epoch=100, pop_size=50) model = GWO.OriginalGWO(epoch=100, pop_size=50) model = GWO.RW_GWO(epoch=100, pop_size=50) model = GTO.OriginalGTO(epoch=100, pop_size=50, A=0.4, H=2.0) model = GTO.Matlab101GTO(epoch=100, pop_size=50) model = GTO.Matlab102GTO(epoch=100, pop_size=50) model = GOA.OriginalGOA(epoch=100, pop_size=50, c_min=0.00004, c_max=1.0) model = GJO.OriginalGJO(epoch=100, pop_size=50) model = FOX.OriginalFOX(epoch=100, pop_size=50, c1=0.18, c2=0.82) model = FOA.OriginalFOA(epoch=100, pop_size=50) model = FOA.WhaleFOA(epoch=100, pop_size=50) model = FOA.DevFOA(epoch=100, pop_size=50) model = FFO.OriginalFFO(epoch=100, pop_size=50) model = FFA.OriginalFFA(epoch=100, pop_size=50, gamma=0.001, beta_base=2, alpha=0.2, alpha_damp=0.99, delta=0.05, exponent=2) model = FA.OriginalFA(epoch=100, pop_size=50, max_sparks=50, p_a=0.04, p_b=0.8, max_ea=40, m_sparks=50) model = ESOA.OriginalESOA(epoch=100, pop_size=50) model = EHO.OriginalEHO(epoch=100, pop_size=50, alpha=0.5, beta=0.5, n_clans=5) model = DO.OriginalDO(epoch=100, pop_size=50) model = DMOA.OriginalDMOA(epoch=100, pop_size=50, n_baby_sitter=3, peep=2) model = DMOA.DevDMOA(epoch=100, pop_size=50, peep=2) model = CSO.OriginalCSO(epoch=100, pop_size=50, mixture_ratio=0.15, smp=5, spc=False, cdc=0.8, srd=0.15, c1=0.4, w_min=0.4, w_max=0.9) model = CSA.OriginalCSA(epoch=100, pop_size=50, p_a=0.3) model = CoatiOA.OriginalCoatiOA(epoch=100, pop_size=50) model = COA.OriginalCOA(epoch=100, pop_size=50, n_coyotes=5) model = BSA.OriginalBSA(epoch=100, pop_size=50, ff=10, pff=0.8, c1=1.5, c2=1.5, a1=1.0, a2=1.0, fc=0.5)

## Newly added algorithms in version 3.0.3 model = GWO.GWO_WOA(epoch=100, pop_size=50) model = GWO.IGWO(epoch=1000, pop_size=50, a_min = 0.02, a_max = 2.2) model = GWO.ChaoticGWO(epoch=1000, pop_size=50, chaotic_name="chebyshev", initial_chaotic_value=0.7) model = GWO.FuzzyGWO(epoch=1000, pop_size=50, fuzzy_name="increase") model = GWO.IncrementalGWO(epoch=1000, pop_size=50, explore_factor=1.5) model = GWO.ExGWO(epoch=1000, pop_size=50) model = GWO.DS_GWO(epoch=1000, pop_size=50, explore_ratio=0.4, n_groups=5) model = GWO.IOBL_GWO(epoch=1000, pop_size=50) model = GWO.OGWO(epoch=1000, pop_size=50, miu_factor=2.0, jumping_rate=0.05) model = GWO.ER_GWO(epoch=1000, pop_size=50, a_initial=2.0, a_final=0.0, miu_factor=1.0001) model = GWO.CG_GWO(epoch=1000, pop_size=50) model = ESO.OriginalESO(epoch=1000, pop_size=50) model = AO.AAO(epoch=1000, pop_size=50, sharpness=10.0, sigmoid_midpoint=0.5) model = EPC.DevEPC(epoch=1000, pop_size=50, heat_damping_factor=0.95, mutation_factor=0.1, spiral_a=1.0, spiral_b=0.5) model = SMO.DevSMO(epoch=1000, pop_size=50, max_groups = 5, perturbation_rate = 0.7) model = SquirrelSA.OriginalSquirrelSA(epoch=1000, pop_size=50, n_food_sources=4, predator_prob=0.1, gliding_constant=1.9, scaling_factor=18, beta=1.5) model = AFT.OriginalAFT(epoch=1000, pop_size=50) model = CDDO.OriginalCDDO(epoch=1000, pop_size=50, pattern_size=10, creativity_rate=0.1) model = FDO.OriginalFDO(epoch=1000, pop_size=50, weight_factor=0.1) model = LSHADEcnEpSin.OriginalLSHADEcnEpSin(epoch=1000, pop_size=50, miu_f = 0.5, miu_cr = 0.5, freq = 0.5, memory_size = 5, ps = 0.5, pc = 0.4, pop_size_min = 10) model = IMODE.OriginalIMODE(epoch=1000, pop_size=50, memory_size=5, archive_size=20)

</details>

✅ Examples

Simple Benchmark Function

MEALPY allows you to define your optimization problem in a couple of ways.

1. Define Problem as a Dictionary

You can quickly define your problem using a Python dictionary. However, this approach is only valid for problems with float decision variables.

python from mealpy import FloatVar, SMA import numpy as np

def objective_function(solution): return np.sum(solution**2)

problem = { "obj_func": objective_function, "bounds": FloatVar(lb=(-100., )30, ub=(100., )30), "minmax": "min", "log_to": "console", }

Run the algorithm

model = SMA.OriginalSMA(epoch=100, pop_size=50, pr=0.03) g_best = model.solve(problem) print(f"Best solution: {g_best.solution}, Best fitness: {g_best.target.fitness}")
#### 2. Define a Custom Problem Class

For more complex scenarios, especially when your decision variables are not exclusively FloatVar, we recommend defining a custom class that inherits from the Problem class. Let's demonstrate this with a simple "Squared" class.

In the __init__ method of your custom Problem class (e.g., Squared class), you must set the bounds and minmax attributes of the problem.

+ bounds: Defines the search space and the type of decision variables (e.g., FloatVar, IntegerVar).

+ minmax: A string indicating whether the problem is a minimization ("min") or maximization ("max") problem.

After defining the initialization, you must override the abstract method obj_func(). This method is the core of your problem definition:

+ It takes a single parameter: solution (the encoded solution vector generated by the optimizer).

+ It must return the objective function value (or fitness) for the given solution.

The resulting code structure for a custom problem class would look similar to the snippet below. You can include any additional parameters you need in your custom class (like 'data' or 'name' in this example).

python from mealpy import Problem, FloatVar, BBO import numpy as np

Our custom problem class

class Squared(Problem): def __init__(self, bounds=None, minmax="min", data=None, **kwargs): super().__init__(bounds, minmax, **kwargs) self.data = data # This is additional variable use for passing data to objective function

def obj_func(self, solution): return np.sum(solution ** 2)

Now, we define an algorithm, and pass an instance of our Squared class as the problem argument.

bound = FloatVar(lb=(-10., )20, ub=(10., )20, name="my_var") # The
name of variable is important when decoding. problem = Squared(bounds=bound, minmax="min", name="Squared", data="Amazing") model = BBO.OriginalBBO(epoch=100, pop_size=20) g_best = model.solve(problem)

Show some attributes

print(g_best.solution) print(g_best.target.fitness) print(g_best.target.objectives) print(g_best) print(model.get_parameters()) print(model.get_name()) print(model.get_attributes()["g_best"]) print(model.problem.get_name()) print(model.problem.n_dims) print(model.problem.bounds) print(model.problem.lb) print(model.problem.ub)
``

We provide many examples for complicated applications that can use Mealpy to solve.

🚀 Mealpy Applications

MEALPY is a versatile library capable of solving a wide array of complex optimization problems across various domains. Below are examples showcasing its diverse applications.

1. General Optimization Problems

These examples demonstrate MEALPY's use in common optimization scenarios.

  1. Large-Scale Optimization example
  2. Distributed Optimization / Parallelization Optimization example
  3. Constrained Benchmark Function example
  4. Multi-objective Benchmark Function example

2. Machine Learning & AI Optimization

MEALPY can be effectively used to optimize various aspects of Machine Learning and AI models.

  1. Optimize Machine Learning Model (SVM) Hyperparameters example
  2. Optimize Linear Regression Model with Pytorch: example

3. Combinatorial Optimization Problems

MEALPY excels at solving complex combinatorial problems, which involve finding an optimal object from a finite set of objects.

  1. Traveling Salesman Problem (TSP) example
  2. Job Shop Scheduling Problem example
  3. Shortest Path Problem example
  4. Location Optimization example
  5. Supply Chain Optimization example
  6. Healthcare Workflow Optimization Problem example
  7. Production Optimization Problem example
  8. Employee Rostering Problem example
  9. Maintenance Scheduling example
  10. Cloud task scheduling example

4. Advanced Integration Examples

MEALPY's flexibility allows for integration into more specialized systems and workflows.

MEALPY + Neural Networks (Replacing Gradient Descent)

  • Time-series Problem:
* Traditional MLP Link * Hybrid code (Mealpy + MLP): Link
  • Classification Problem:
* Traditional MLP Link * Hybrid code (Mealpy + MLP): Link

MEALPY + Neural Network (Optimize Neural Network Hyper-parameter)

Code: Link

5. Dedicated Utility Classes

MEALPY includes specialized classes to streamline common optimization tasks.

  1. Tuner class (GridSearchCV/ParameterSearch, Hyper-parameter tuning) example
  2. Multitask class (Multitask solver) example
  3. Visualization Tutorials

6. External Projects & More Examples

Explore additional advanced examples and dedicated projects showcasing MEALPY's capabilities.

  • Travelling Salesman Problem: link
  • Feature selection problem: link
For more usage examples please look at examples folder. More advanced examples can also be found in the Mealpy-examples repository.

7. Tutorial Videos & Resources

All tutorial videos: Link

All code examples: Link

All visualization examples: Link

📚 Documents

📎 Official channels

🌟 MEALPY ecosystem

References

A

  • ABC - Artificial Bee Colony
* OriginalABC: Karaboga, D. (2005). An idea based on honey bee swarm for numerical optimization (Vol. 200, pp. 1-10). Technical report-tr06, Erciyes university, engineering faculty, computer engineering department.
  • ACOR - Ant Colony Optimization.
* OriginalACOR: Socha, K., & Dorigo, M. (2008). Ant colony optimization for continuous domains. European journal of operational research, 185(3), 1155-1173.
  • ALO - Ant Lion Optimizer
* OriginalALO: Mirjalili S (2015). “The Ant Lion Optimizer.” Advances in Engineering Software, 83, 80-98. doi: 10.1016/j.advengsoft.2015.01.010 * BaseALO: The developed version
  • AEO - Artificial Ecosystem-based Optimization
* OriginalAEO: Zhao, W., Wang, L., & Zhang, Z. (2019). Artificial ecosystem-based optimization: a novel nature-inspired meta-heuristic algorithm. Neural Computing and Applications, 1-43. * AugmentedAEO: 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. * ImprovedAEO: Rizk-Allah, R. M., & El-Fergany, A. A. (2020). Artificial ecosystem optimizer for parameters identification of proton exchange membrane fuel cells model. International Journal of Hydrogen Energy. * EnhancedAEO: Eid, A., Kamel, S., Korashy, A., & Khurshaid, T. (2020). An Enhanced Artificial Ecosystem-Based Optimization for Optimal Allocation of Multiple Distributed Generations. IEEE Access, 8, 178493-178513. * ModifiedAEO: Menesy, A. S., Sultan, H. M., Korashy, A., Banakhr, F. A., Ashmawy, M. G., & 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, 31892-31909.
  • ASO - Atom Search Optimization
* OriginalASO: Zhao, W., Wang, L., & Zhang, Z. (2019). Atom search optimization and its application to solve a hydrogeologic parameter estimation problem. Knowledge-Based Systems, 163, 283-304.
  • ArchOA - Archimedes Optimization Algorithm
* OriginalArchOA: Hashim, F. A., Hussain, K., Houssein, E. H., Mabrouk, M. S., & Al-Atabany, W. (2021). Archimedes optimization algorithm: a new metaheuristic algorithm for solving optimization problems. Applied Intelligence, 51(3), 1531-1551.
  • AOA - Arithmetic Optimization Algorithm
* OriginalAOA: Abualigah, L., Diabat, A., Mirjalili, S., Abd Elaziz, M., & Gandomi, A. H. (2021). The arithmetic optimization algorithm. Computer methods in applied mechanics and engineering, 376, 113609.
  • AO - Aquila Optimizer
* OriginalAO: Abualigah, L., Yousri, D., Abd Elaziz, M., Ewees, A. A., Al-qaness, M. A., & Gandomi, A. H. (2021). Aquila Optimizer: A novel meta-heuristic optimization Algorithm. Computers & Industrial Engineering, 157, 107250. * AAO: Al-Selwi, S. M., Hassan, M. F., Abdulkadir, S. J., Ragab, M. G., Alqushaibi, A., & Sumiea, E. H. (2024). Smart grid stability prediction using adaptive aquila optimizer and ensemble stacked bilstm. Results in Engineering, 24, 103261.
  • AVOA - African Vultures Optimization Algorithm
* OriginalAVOA: Abdollahzadeh, B., Gharehchopogh, F. S., & Mirjalili, S. (2021). African vultures optimization algorithm: A new nature-inspired metaheuristic algorithm for global optimization problems. Computers & Industrial Engineering, 158, 107408.
  • AGTO - Artificial Gorilla Troops Optimization
* OriginalAGTO: Abdollahzadeh, B., Soleimanian Gharehchopogh, F., & Mirjalili, S. (2021). Artificial gorilla troops optimizer: a new nature‐inspired metaheuristic algorithm for global optimization problems. International Journal of Intelligent Systems, 36(10), 5887-5958.
  • ARO - Artificial Rabbits Optimization:
* OriginalARO: Wang, L., Cao, Q., Zhang, Z., Mirjalili, S., & Zhao, W. (2022). Artificial rabbits optimization: A new bio-inspired meta-heuristic algorithm for solving engineering optimization problems. Engineering Applications of Artificial Intelligence, 114, 105082.
  • AFT - Ali baba and the Forty Thieves:
* OriginalAFT: Braik, M., Ryalat, M. H., & Al-Zoubi, H. (2022). A novel meta-heuristic algorithm for solving numerical optimization problems: Ali Baba and the forty thieves. Neural Computing and Applications, 34(1), 409-455.

B

  • BFO - Bacterial Foraging Optimization
* OriginalBFO: Passino, K. M. (2002). Biomimicry of bacterial foraging for distributed optimization and control. IEEE control systems magazine, 22(3), 52-67. * ABFO: Nguyen, T., Nguyen, B. M., & Nguyen, G. (2019, April). Building resource auto-scaler with functional-link neural network and adaptive bacterial foraging optimization. In International Conference on Theory and Applications of Models of Computation (pp. 501-517). Springer, Cham.
  • BeesA - Bees Algorithm
* OriginalBeesA: Pham, D. T., Ghanbarzadeh, A., Koc, E., Otri, S., Rahim, S., & Zaidi, M. (2005). The bees algorithm. Technical Note, Manufacturing Engineering Centre, Cardiff University, UK. * ProbBeesA: The probabilitic version of: Pham, D. T., Ghanbarzadeh, A., Koç, E., Otri, S., Rahim, S., & Zaidi, M. (2006). The bees algorithm—a novel tool for complex optimisation problems. In Intelligent production machines and systems (pp. 454-459). Elsevier Science Ltd.
  • BBO - Biogeography-Based Optimization
* OriginalBBO: Simon, D. (2008). Biogeography-based optimization. IEEE transactions on evolutionary computation, 12(6), 702-713. * BaseBBO: The developed version
  • BA - Bat Algorithm
* OriginalBA: Yang, X. S. (2010). A new metaheuristic bat-inspired algorithm. In Nature inspired cooperative strategies for optimization (NICSO 2010) (pp. 65-74). Springer, Berlin, Heidelberg. * AdaptiveBA: Wang, X., Wang, W. and Wang, Y., 2013, July. An adaptive bat algorithm. In International Conference on Intelligent Computing(pp. 216-223). Springer, Berlin, Heidelberg. * ModifiedBA: Dong, H., Li, T., Ding, R. and Sun, J., 2018. A novel hybrid genetic algorithm with granular information for feature selection and optimization. Applied Soft Computing, 65, pp.33-46.
  • BSO - Brain Storm Optimization
* OriginalBSO: . Shi, Y. (2011, June). Brain storm optimization algorithm. In International conference in swarm intelligence (pp. 303-309). Springer, Berlin, Heidelberg. * ImprovedBSO: El-Abd, M., 2017. Global-best brain storm optimization algorithm. Swarm and evolutionary computation, 37, pp.27-44.
  • BSA - Bird Swarm Algorithm
* OriginalBSA: Meng, X. B., Gao, X. Z., Lu, L., Liu, Y., & Zhang, H. (2016). A new bio-inspired optimisation algorithm:Bird Swarm Algorithm. Journal of Experimental & Theoretical Artificial Intelligence, 28(4), 673-687.
  • BMO - Barnacles Mating Optimizer:
* OriginalBMO: Sulaiman, M. H., Mustaffa, Z., Saari, M. M., Daniyal, H., Daud, M. R., Razali, S., & Mohamed, A. I. (2018, June). Barnacles mating optimizer: a bio-inspired algorithm for solving optimization problems. In 2018 19th IEEE/ACIS International Conference on Software Engineering, Artificial Intelligence, Networking and Parallel/Distributed Computing (SNPD) (pp. 265-270). IEEE.
  • BES - Bald Eagle Search
* OriginalBES: Alsattar, H. A., Zaidan, A. A., & Zaidan, B. B. (2019). Novel meta-heuristic bald eagle search optimisation algorithm. Artificial Intelligence Review, 1-28.
  • BRO - Battle Royale Optimization
* OriginalBRO: Rahkar Farshi, T. (2020). Battle royale optimization algorithm. Neural Computing and Applications, 1-19. * BaseBRO: The developed version

C

  • CA - Culture Algorithm
* OriginalCA: Reynolds, R.G., 1994, February. An introduction to cultural algorithms. In Proceedings of the third annual conference on evolutionary programming (Vol. 24, pp. 131-139). River Edge, NJ: World Scientific.
  • CEM - Cross Entropy Method
* OriginalCEM: Rubinstein, R. (1999). The cross-entropy method for combinatorial and continuous optimization. Methodology and computing in applied probability, 1(2), 127-190.
  • CSO - Cat Swarm Optimization
* OriginalCSO: Chu, S. C., Tsai, P. W., & Pan, J. S. (2006, August). Cat swarm optimization. In Pacific Rim international conference on artificial intelligence (pp. 854-858). Springer, Berlin, Heidelberg.
  • CSA - Cuckoo Search Algorithm
* OriginalCSA: Yang, X. S., & Deb, S. (2009, December). Cuckoo search via Lévy flights. In 2009 World congress on nature & biologically inspired computing (NaBIC) (pp. 210-214). Ieee.
  • CRO - Coral Reefs Optimization
* OriginalCRO: Salcedo-Sanz, S., Del Ser, J., Landa-Torres, I., Gil-López, S., & Portilla-Figueras, J. A. (2014). The coral reefs optimization algorithm: a novel metaheuristic for efficiently solving optimization problems. The Scientific World Journal, 2014. * OCRO: Nguyen, T., Nguyen, T., Nguyen, B. M., & Nguyen, G. (2019). Efficient time-series forecasting using neural network and opposition-based coral reefs optimization. International Journal of Computational Intelligence Systems, 12(2), 1144-1161.
  • COA - Coyote Optimization Algorithm
* OriginalCOA: Pierezan, J., & Coelho, L. D. S. (2018, July). Coyote optimization algorithm: a new metaheuristic for global optimization problems. In 2018 IEEE congress on evolutionary computation (CEC) (pp. 1-8). IEEE.
  • CHIO - Coronavirus Herd Immunity Optimization
* OriginalCHIO: Al-Betar, M. A., Alyasseri, Z. A. A., Awadallah, M. A., & Abu Doush, I. (2021). Coronavirus herd immunity optimizer (CHIO). Neural Computing and Applications, 33(10), 5011-5042. * BaseCHIO: The developed version
  • CGO - Chaos Game Optimization
* OriginalCGO: Talatahari, S., & Azizi, M. (2021). Chaos Game Optimization: a novel metaheuristic algorithm. Artificial Intelligence Review, 54(2), 917-1004.
  • CSA - Circle Search Algorithm
* OriginalCSA: Qais, M. H., Hasanien, H. M., Turky, R. A., Alghuwainem, S., Tostado-Véliz, M., & Jurado, F. (2022). Circle Search Algorithm: A Geometry-Based Metaheuristic Optimization Algorithm. Mathematics, 10(10), 1626.
  • CDDO - Child Drawing Development Optimization
* OriginalCDDO: Abdulhameed, S., Rashid, T.A. Child Drawing Development Optimization Algorithm Based on Child’s Cognitive Development. Arab J Sci Eng 47, 1337–1351 (2022). https://doi.org/10.1007/s13369-021-05928-6

D

  • DE - Differential Evolution
* BaseDE: Storn, R., & Price, K. (1997). Differential evolution–a simple and efficient heuristic for global optimization over continuous spaces. J

... (README truncated for length)

Chat with me