pymetaheuristic

July 12, 2026 · View on GitHub

Logo

pymetaheuristic

A Python library for metaheuristic optimization and collaborative search, bringing together 400 optimization algorithms across swarm, evolutionary, trajectory, physics-inspired, nature-inspired, human-inspired, and mathematical families. pymetaheuristic makes metaheuristics observable, comparable, cooperative, and benchmarkable through single optimizers, island systems, adaptive orchestration, diagnostics, and scientific benchmark studies.

A. Version Note

This README targets pymetaheuristic-v5+. It can be installed with:

pip install pymetaheuristic

For legacy, the old library can still be installed with:

pip install pymetaheuristic==1.9.5

B. pymetaheuristic Lab

New to Python or prefer a graphical interface? The pymetaheuristic Lab provides a convenient Web App to run optimizations without writing extensive code.

import pymetaheuristic

# Start the web service using:
pymetaheuristic.web_app()

# Terminate the web service using:
pymetaheuristic.web_stop()

Lab

This Google Colab Demo is intended for quick demos only. For the best experience, run the Web UI locally or open it directly in a full browser.

C. Summary

  1. Introduction
  2. Installation and Package Overview
  3. Algorithm Details
  4. Test Functions --- [Colab Demo] ---
  5. Other Libraries

1. Introduction

Back to Summary

pymetaheuristic is a Python optimization library built around metaheuristics, benchmark functions, stepwise execution, telemetry, cooperation, rule-based orchestration, constraint-aware evaluation, composable termination criteria, typed variable spaces, chaotic initialization, transfer functions, hyperparameter tuning, and benchmark sweeps. The package provides:

  • a broad collection of metaheuristic algorithms
  • benchmark functions for testing and visualization
  • a stepwise engine API for controlled execution
  • telemetry, export helpers, evaluation-indexed convergence data, and save/load for experiments
  • EvoMapX explainability with Levels 1--4, explicit internal probe labels, OAM/PEG/CDS diagnostics, population snapshots, lineage metadata, and non-intrusive operator attribution
  • cooperative multi-island optimization through cooperative_optimize
  • clean object-based island systems through IslandSystem, Island, TopologyConfig, and MigrationConfig
  • adaptive orchestration through fixed, rule-based, bandit, and portfolio-adaptive controllers
  • island diagnostics, including migration matrices, contribution tables, island roles, action effectiveness, and topology summaries
  • built-in constrained optimization support plus named repair strategies (clip, wang, reflect, rand, limit_inverse)
  • composable Termination object with five independent stopping conditions
  • automatic per-step diversity and exploration/exploitation tracking in history
  • plotly-based diversity, convergence, runtime, and explore/exploit charts, including evaluation-indexed convergence plots
  • typed variable space (FloatVar, IntegerVar, CategoricalVar, PermutationVar, BinaryVar)
  • ten chaotic maps plus lhs, obl, and sobol population initialization presets
  • eight transfer functions and BinaryAdapter for binary/discrete optimization
  • HyperparameterTuner for grid/random hyperparameter search
  • BenchmarkRunner for lightweight multi-algorithm × multi-problem sweeps
  • BenchmarkStudy for scientific benchmarking of algorithms, island systems, and orchestration controllers, with rank tables, statistical tests, convergence plots, ECDFs, performance profiles, and result persistence
  • save_result, load_result, save_checkpoint, load_checkpoint for persistence
  • callback system with lifecycle hooks and callback-driven early stopping
  • object-based Problem API with parametrized bounds, latex_code(), and curated test-problem wrappers
  • human-readable algorithm.info() metadata

2. Installation and Package Overview


2.1 Installation

Standard installation:

pip install pymetaheuristic

2.2 Package Overview

Back to Summary

AreaMain objects / functionsWhat it covers
Core Optimizationoptimize, list_algorithms, get_algorithm_info, create_optimizerSingle-algorithm optimization, algorithm discovery, and inspection of default parameters
TerminationTermination, EarlyStopping, callbacksComposable stopping criteria: max_steps, max_evaluations, max_time, max_early_stop, target_fitness, and callback-driven stops
Constraints and Feasibilityoptimize(..., constraints=..., constraint_handler=...)Constrained optimization with inequality/equality constraints, feasibility-aware evaluation
Benchmarks and Plots (Plotly)FUNCTIONS, get_test_function, plot_function, plot_convergence, compare_convergence, plot_benchmark_summary, plot_island_dynamics, plot_collaboration_network, plot_population_snapshotBuilt-in benchmark functions and plotly-based landscape, convergence, and cooperation visualizations
History Charts (Plotly)plot_global_best_chart, plot_diversity_chart, plot_explore_exploit_chart, plot_runtime_chart, plot_run_dashboard, plot_diversity_comparisonPer-step diversity, exploration/exploitation, runtime, and convergence charts using plotly
Telemetry and Exportsummarize_result, export_history_csv, export_population_snapshots_json, convergence_dataExperiment summarization, evaluation-indexed convergence extraction, and export of history and snapshots
EvoMapX Explainabilityget_evomapx_profile, get_evomapx_operators, result.evomapx_analysis, result.explain_evomapx, result.plot_evomapx_attribution, result.plot_evomapx_cds, result.plot_evomapx_peg, result.export_evomapx_json, result.export_evomapx_csvPassive explainability layer with explicit internal probe labels, OAM/IAM attribution matrices, CDS rankings, PEG lineage graphs, population snapshots, and Levels 1--4 diagnostics
IO (Persistence)save_result, load_result, save_checkpoint, load_checkpoint, result_to_json, result_from_jsonSave and restore results; checkpoint-and-resume for long runs
Typed Variable SpaceFloatVar, IntegerVar, BinaryVar, CategoricalVar, PermutationVar, build_problem_spec, decode_position, encode_positionDefine mixed-type search spaces; automatic encode/decode to/from continuous representation
Problem ObjectsProblem, FunctionalProblem, SphereProblem, RastriginProblem, AckleyProblem, RosenbrockProblem, ZakharovProblem, get_test_problemN-dimensional object-based problem definitions with parametrized bounds and latex_code()
Chaotic MapsChaoticMap, chaotic_sequence, chaotic_population, AVAILABLE_CHAOTIC_MAPSTen chaotic maps for diversity-preserving population initialisation and perturbation
Initialisation Presetsuniform_population, lhs_population, obl_population, sobol_population, get_init_function, AVAILABLE_INIT_STRATEGIESComposable initialisation strategies for any algorithm through init_function= or init_name=
Transfer Functionsapply_transfer, binarize, BinaryAdapter, vstf_01vstf_04, sstf_01sstf_04, AVAILABLE_TRANSFER_FUNCTIONSEight transfer functions mapping continuous positions to binary probabilities for binary optimization
Repair and Random Utilitieslimit, limit_inverse, wang, rand, reflect, get_repair_function, levy_flightNamed bound-repair policies and a reusable Lévy-flight sampler
Hyperparameter TunerHyperparameterTunerGrid or random search over algorithm hyperparameters across multiple trials
Benchmark RunnerBenchmarkRunnerLightweight multi-algorithm × multi-problem sweeps with summary aggregation and plotly-based benchmark charts
Benchmark StudyBenchmarkStudy, BenchmarkResult, BenchmarkProblem, ProblemSuite, ExperimentRecord, load_benchmarkScientific benchmarking of algorithms, island systems, and orchestration controllers with long-format records, ranks, statistical tests, convergence plots, ECDFs, performance profiles, rank heatmaps, and JSON persistence
Cooperationcooperative_optimize, replay_cooperative_result, IslandSystem, Island, TopologyConfig, MigrationConfig, ExecutionConfigDirect and object-based multi-island cooperative optimization with configurable topology, migration interval, migration size, and migration policy
Orchestrationorchestrated_optimize, OrchestrationSpec, CollaborativeConfig, RulesConfig, BanditConfig, PortfolioConfig, OrchestrationConfigCheckpoint-driven cooperation with fixed, rule-based, bandit, and portfolio-adaptive orchestration
Island Diagnosticsmigration_matrix, topology_summary, island_contribution, island_roles, action_effectiveness, diagnostics_summaryPost-run interpretation of island systems, including communication patterns, donor/receiver behavior, island roles, and controller action effectiveness
Referenceprint_root_exports, print_reference, search_referenceProgrammatic argument reference for all callables

To quickly inspect parameters:

import pymetaheuristic

# List
pymetaheuristic.print_root_exports()

# Detail
pymetaheuristic.print_reference("optimize")

2.3 Optimization, Telemetry, Export, and Plotting Example

Back to Summary

optimize is the main high-level entry point for running a single metaheuristic on a user-defined objective function. The user specifies the algorithm, search bounds, and computational budget, while optional keyword arguments configure the selected optimizer and control diagnostics, such as history storage and population snapshots. The function returns a structured result object containing the best solution found, its objective value, and optional run traces that can later be summarized, exported, or plotted. In the example below, optimize applies Particle Swarm Optimization (PSO) to the Easom function over a bounded two-dimensional domain, stores the optimization trajectory, and then summarizes the run with summarize_result.

When store_history and store_population_snapshots are enabled, the returned result object contains enough information to support post-run analysis, reproducibility, and visualization. The history can be exported as a tabular CSV file, population states can be saved as JSON snapshots for later inspection, and convergence can be visualized directly with the built-in plotting utilities. In the example below, PSO is applied to the Easom function, the optimization trace is exported to disk, and the convergence behavior is plotted for immediate inspection.

import numpy as np
import pymetaheuristic

# To use a built-in test function instead, uncomment the next line:
# easom = pymetaheuristic.get_test_function("easom")

# Or define your own objective function.
# The input must be a list (or array-like) of variable values,
# and its length corresponds to the problem dimension.

def easom(x = [0, 0]):
    x1, x2 = x
    return -np.cos(x1) * np.cos(x2) * np.exp(-(x1 - np.pi) ** 2 - (x2 - np.pi) ** 2)

result = pymetaheuristic.optimize(
					algorithm                  = "pso",
					target_function            = easom,
					min_values                 = (-5, -5),
					max_values                 = ( 5,  5),
					max_steps                  = 30,
					seed                       = 42,
					store_history              = True,
					store_population_snapshots = True,
				)

print(result.best_fitness)
print(len(result.history))
print(pymetaheuristic.summarize_result(result))

pymetaheuristic.export_history_csv(result, "population_history.csv")
pymetaheuristic.export_population_snapshots_json(result, "population_snapshots.json")
fig = pymetaheuristic.plot_convergence(result)

2.4 Termination Criteria

Back to Summary

Termination is a composable stopping-criteria object that replaces (or extends) the individual max_steps, max_evaluations, max_time, max_early_stop, and target_fitness keyword arguments. The first condition that triggers, ends the run.

Five independent condition types are supported:

  • MG (max_steps): maximum number of macro-steps / iterations.
  • FE (max_evaluations): maximum number of objective-function evaluations.
  • TB (max_time): wall-clock time bound in seconds.
  • ES (max_early_stop): early stopping — halt if the global best has not improved by more than epsilon for this many consecutive steps.
  • TF (target_fitness): stop when the direction-aware target fitness is reache
import numpy as np
import pymetaheuristic

def easom(x = [0, 0]):
    x1, x2 = x
    return -np.cos(x1) * np.cos(x2) * np.exp(-(x1 - np.pi) ** 2 - (x2 - np.pi) ** 2)

# Build a composable termination with multiple conditions
# The run stops as soon as ANY condition is triggered.
term = pymetaheuristic.Termination(
		max_steps       = 1000,
		max_evaluations = 50000,
		max_time        = 30.0,       # 30-second wall-clock limit
		max_early_stop  = 25,         # stop if no improvement for 25 steps
		epsilon         = 1e-8,
	   )

result = pymetaheuristic.optimize(
		algorithm       = "pso",
		target_function = easom,
		min_values      = (-5, -5),
		max_values      = ( 5,  5),
		termination     = term,
		seed            = 42,
	 )

print(f"Best fitness:        {result.best_fitness:.6f}")
print(f"Steps run:           {result.steps}")
print(f"Evaluations:         {result.evaluations}")
print(f"Termination reason:  {result.termination_reason}")


2.5 Constraint Handling Example

Back to Summary

This example illustrates how optimize can be applied to constrained optimization problems. The user provides one or more constraint functions alongside the objective, and the solver evaluates candidate solutions by combining objective quality with constraint satisfaction according to the selected handling strategy. In this case, the "deb" constraint handler applies feasibility-based comparison rules, so feasible solutions are preferred over infeasible ones, and among infeasible candidates, those with smaller violations are favored. The returned result, therefore, includes not only the best position and penalized search outcome but also metadata describing the raw objective value, the magnitude of constraint violation, and whether the final solution is feasible.

import pymetaheuristic 

# ─────────────────────────────────────────────────────────────────────────────
# Variables: 1) wire diameter d, 2) mean coil diameter D, 3) number of coils N
# Solution:  f* ≈ 0.012665
# ─────────────────────────────────────────────────────────────────────────────

def tension_spring(x = [0, 0, 0]):
    d, D, N = x[0], x[1], x[2]
    return (N + 2) * D * d**2

constraints = [
			  lambda x: 1 - (x[1]**3 * x[2]) / (71785 * x[0]**4),
			  lambda x: (4*x[1]**2 - x[0]*x[1]) / (12566*(x[1]*x[0]**3 - x[0]**4)) + 1/(5108*x[0]**2) - 1,
			  lambda x: 1 - 140.45*x[0] / (x[1]**2 * x[2]),
			  lambda x: (x[0] + x[1]) / 1.5 - 1,
              ]

result = pymetaheuristic.optimize(
			algorithm          = "pso",
			target_function    = tension_spring,
			min_values         = (0.05, 0.25,  2.0),
			max_values         = (2.00, 1.30, 15.0),
			constraints        = constraints,
			constraint_handler = "deb",
			max_steps          = 2500,
			seed               = 42,
				 )

print(result.best_position)
print(result.best_fitness)
print(result.metadata["best_raw_fitness"])
print(result.metadata["best_violation"])
print(result.metadata["best_is_feasible"])

Other constraints examples:

import numpy as np

# Example 1
constraints = [lambda x: x[0] + x[1] - 1.0]                    # x0 + x1 <= 1

# Example 2
constraints = [
				lambda x:  x[0]**2 + x[1]**2 - 4.0,            # x$0^{2}$ + x$1^{2}$ <= 4
				lambda x: -x[0],                               # x0 >= 0
				lambda x: -x[1],                               # x1 >= 0
				lambda x:  x[2] - 5.0,                         # x2 <= 5
				lambda x:  2.0 - x[2],                         # x2 >= 2
				lambda x:  abs(x[0] - x[1]) - 0.5,             # |x0 - x1| <= 0.5
				lambda x:  max(x[0], x[1]) - 3.0,              # max(x0, x1) <= 3
				lambda x:  x[0]*x[1] - 2.0,                    # x0*x1 <= 2
				lambda x:  np.sin(x[0]) + x[1] - 1.5,          # sin(x0) + x1 <= 1.5
				lambda x: {"type": "eq", "value": x[0] - x[1]} # x0 = x1
              ]

# Example 3
def c1(x):
    return x[0] + x[1] - 1.0                     # x0 + x1 <= 1

def c2(x):
    return -x[0]                                 # x0 >= 0

def c3(x):
    return {"type": "eq", "value": x[0] - x[1]}  # x0 = x1

constraints = [c1, c2, c3]

2.6 Cooperative Multi-island Example

Back to Summary

cooperative_optimize extends the framework from single-optimizer execution to a collaborative multi-island setting, where several heterogeneous metaheuristics explore the same search space in parallel and periodically exchange information. This interface is useful when the user wants to combine complementary search behaviors—for example, swarm-based, evolutionary, and trajectory-based methods—within a single optimization run. The migration mechanism controls when candidate solutions are shared, how many are transferred, and how communication is structured through a topology such as a ring. In the example below, PSO, GA, SA, and ABCO are executed as cooperating islands on the Easom function, with periodic migration events that allow promising solutions discovered by one method to influence the others.

import numpy as np
import pymetaheuristic

def easom(x = [0, 0]):
    x1, x2 = x
    return -np.cos(x1) * np.cos(x2) * np.exp(-(x1 - np.pi) ** 2 - (x2 - np.pi) ** 2)

result = pymetaheuristic.cooperative_optimize(
	islands            = [
							{"algorithm": "pso",  "config": {"swarm_size": 25}},
							{"algorithm": "ga",   "config": {}},
							{"algorithm": "sa",   "config": {"temperature_iterations": 20}},
							{"algorithm": "abco", "config": {}},
						  ],
	target_function    = easom,
	min_values         = (-5, -5),
	max_values         = ( 5,  5),
	max_steps          = 20,
	migration_interval = 5,
	migration_size     = 2,
	topology           = "ring",
	seed               = 42,
			   )

print(result.best_fitness)
print(len(result.events))

2.7 Orchestrated Cooperation Example

Back to Summary

orchestrated_optimize adds an adaptive decision layer atop cooperative multi-island optimization. Instead of relying only on fixed migration schedules, the run is periodically inspected at predefined checkpoints, and an orchestration policy decides whether corrective actions such as rebalancing, perturbation, restarting, or waiting should be applied. This interface is useful when the user wants cooperation to become state-aware and responsive to signals such as stagnation, loss of diversity, or uneven progress across islands. In the example below, PSO, GA, and SA cooperate on the Easom function under a rule-based orchestration policy, and the resulting object records not only the best solution found but also the sequence of checkpoints and the decisions taken during the run.

import numpy as np
import pymetaheuristic  

def easom(x = [0, 0]):
    x1, x2 = x
    return -np.cos(x1) * np.cos(x2) * np.exp(-(x1 - np.pi) ** 2 - (x2 - np.pi) ** 2)

config = pymetaheuristic.CollaborativeConfig(
	orchestration = pymetaheuristic.OrchestrationSpec(
														mode                       = "rules",
														checkpoint_interval        = 5,
														max_actions_per_checkpoint = 2,
														warmup_checkpoints         = 1,
													 ),
	rules         = pymetaheuristic.RulesConfig(
													stagnation_threshold     = 4,
													low_diversity_threshold  = 0.05,
													high_diversity_threshold = 0.25,
													perturbation_sigma       = 0.05,
											   ),
	)

result    = pymetaheuristic.orchestrated_optimize(
	islands         = [
						{"label": "pso", "algorithm": "pso", "config": {"swarm_size": 20}},
						{"label": "ga",  "algorithm": "ga",  "config": {"population_size": 20}},
						{"label": "sa",  "algorithm": "sa",  "config": {"temperature": 10.0}},
					  ],
	target_function = easom,
	min_values      = (-5, -5),
	max_values      = ( 5,  5),
	max_steps       = 20,
	seed            = 42,
	config          = config,
	)

print(result.best_fitness)
print(len(result.checkpoints))
print(len(result.decisions))

2.8 Island System Unified Interface

Back to Summary

IslandSystem is the object-based interface for defining collaborative optimization systems. It wraps the direct APIs cooperative_optimize and orchestrated_optimize into a cleaner architecture where islands, topology, migration, orchestration, and execution settings are declared as reusable configuration objects. This interface is recommended when the same island portfolio must be reused across cooperative, rule-based, bandit, portfolio-adaptive, or benchmarked runs.

import numpy as np
import pymetaheuristic

def easom(x = [0, 0]):
    x1, x2 = x
    return -np.cos(x1) * np.cos(x2) * np.exp(-(x1 - np.pi) ** 2 - (x2 - np.pi) ** 2)

system      = pymetaheuristic.IslandSystem(
    islands = [
        pymetaheuristic.Island(
            label     = "pso_explorer",
            algorithm = "pso",
            role      = "explorer",
            config    = {"swarm_size": 25},
        ),
        pymetaheuristic.Island(
            label     = "ga_diversity",
            algorithm = "ga",
            role      = "diversity_keeper",
            config    = {"population_size": 30},
        ),
        pymetaheuristic.Island(
            label     = "sa_refiner",
            algorithm = "sa",
            role      = "local_refiner",
            config    = {"temperature": 10.0},
        ),
        pymetaheuristic.Island(
            label     = "abco_explorer",
            algorithm = "abco",
            role      = "swarm_explorer",
            config    = {},
        ),
    ],
    topology     = pymetaheuristic.TopologyConfig(name = "ring",),
    migration    = pymetaheuristic.MigrationConfig(
        interval = 5,
        size     = 2,
        mode     = "elite",
        policy   = "push",
    ),
    orchestration = pymetaheuristic.OrchestrationConfig(
        checkpoint_interval        = 5,
        warmup_checkpoints         = 1,
        max_actions_per_checkpoint = 2,
    ),
    rules = pymetaheuristic.RulesConfig(
        stagnation_threshold     = 4,
        low_diversity_threshold  = 0.05,
        high_diversity_threshold = 0.25,
        perturbation_sigma       = 0.05,
    ),
    objective = "min",
    max_steps = 250,
    seed      = 42,
)

result = system.optimize(
    target_function = easom,
    min_values      = (-5, -5),
    max_values      = ( 5,  5),
    mode            = "cooperative",
)

print(result.best_fitness)
print(result.best_position)
print(len(result.events))

Island diagnostics transform cooperative and orchestrated runs into interpretable collaborative-search reports. After a run, the result object can summarize migration flows, topology structure, island contributions, island roles, and the effectiveness of orchestration actions. These diagnostics are useful for understanding whether cooperation helped, which island acted as the best refiner, which island donated useful candidates, and whether adaptive interventions were beneficial.

import pandas as pd

# Migration matrix: how many candidates moved between islands.
migration_df = pd.DataFrame(result.migration_matrix(value = "migrants")).fillna(0)
print(migration_df)

# Contribution table: final fitness, improvement, donor/receiver behavior.
contribution_df = pd.DataFrame(result.island_contribution()).T
print(contribution_df)

# Interpretable island roles.
roles_df = pd.DataFrame(result.island_roles()).T
print(roles_df)

# Topology and communication summary.
topology = result.topology_summary()
print(topology)

# Action effectiveness for cooperative migration or orchestrated decisions.
actions = result.action_effectiveness()
print(actions)

Diagnostic plots are also available:

result.plot_migration_network(value = "migrants", show = True, renderer = "colab")
result.plot_island_fitness(show = True, renderer = "colab")

2.9 Adaptive Orchestration Policies

Back to Summary

The orchestration layer supports multiple coordination policies. The "cooperative" mode uses fixed migration, "rules" applies checkpoint-based rules, "bandit" uses a multi-armed bandit controller to select actions based on previous rewards, and "portfolio_adaptive" changes behavior according to the optimization phase and island-state indicators.

import numpy as np
import pymetaheuristic

def easom(x = [0, 0]):
    x1, x2 = x
    return -np.cos(x1) * np.cos(x2) * np.exp(-(x1 - np.pi) ** 2 - (x2 - np.pi) ** 2)


system = pymetaheuristic.IslandSystem(
    islands=[
        {"label": "pso", "algorithm": "pso", "config": {"swarm_size": 25}},
        {"label": "ga",  "algorithm": "ga",  "config": {"population_size": 30}},
        {"label": "sa",  "algorithm": "sa",  "config": {"temperature": 10.0}},
    ],
    max_steps = 250,
    seed      = 42,
)

modes   = ["cooperative", "rules", "bandit", "portfolio_adaptive"]
results = {}

for mode in modes:
    results[mode] = system.optimize(
        target_function = easom,
        min_values      = (-5, -5),
        max_values      = ( 5,  5),
        mode            = mode,
    )

for mode, res in results.items():
    print(mode,
         "best_fitness = ", res.best_fitness,
         "events       = ", len(getattr(res, "events", []) or []),
         "checkpoints  = ", len(getattr(res, "checkpoints", []) or []),
         "decisions    = ", len(getattr(res, "decisions", []) or []),
    )

Bandit orchestration can be configured explicitly:

config = pymetaheuristic.CollaborativeConfig(
    orchestration = pymetaheuristic.OrchestrationSpec(
        mode                       = "bandit",
        checkpoint_interval        = 5,
        max_actions_per_checkpoint = 2,
        warmup_checkpoints         = 1,
    ),
    rules = pymetaheuristic.RulesConfig(
        stagnation_threshold       = 3,
        low_diversity_threshold    = 0.10,
        perturbation_sigma         = 0.05,
    ),
    bandit = pymetaheuristic.BanditConfig(
        policy                     = "ucb",
        exploration                = 0.5,
        action_cost_penalty        = 0.05,
    ),
)

result = pymetaheuristic.orchestrated_optimize(
    islands = [
        {"label": "pso", "algorithm": "pso", "config": {"swarm_size": 25}},
        {"label": "ga",  "algorithm": "ga",  "config": {"population_size": 30}},
        {"label": "sa",  "algorithm": "sa",  "config": {"temperature": 10.0}},
    ],
    target_function = easom,
    min_values      = (-5, -5),
    max_values      = ( 5,  5),
    max_steps       = 25,
    seed            = 42,
    config          = config,
)

print(result.best_fitness)
print(result.action_effectiveness())

2.10 Chaotic Maps, Initialisation Presets, and Transfer Functions

Back to Summary

Chaotic maps are initializations based on deterministic chaotic sequences that improve early population diversity and help avoid premature convergence. Ten maps are available: logistic, tent, bernoulli, chebyshev, circle, cubic, icmic, piecewise, sine, gauss. The default for population initialization is random. Transfer functions map continuous positions to bit-flip probabilities, enabling any continuous metaheuristic to solve binary or Boolean problems. Four V-shaped (v1v4) and four S-shaped (s1s4) functions are available. BinaryAdapter wraps any algorithm and automatically applies the transfer function.

import itertools
import numpy as np
import pymetaheuristic

# Knapsack Instance
weights  = np.array([23, 31, 29, 44, 53, 38, 63, 85, 89, 82], dtype = int)
values   = np.array([92, 57, 49, 68, 60, 43, 67, 84, 87, 72], dtype = int)
capacity = 165
n_items  = len(weights)

# Known Optimum
# x      = [1, 1, 1, 1, 0, 1, 0, 0, 0, 0]
# profit = 309
# weight = 165

# Target Function:
def knapsack(bits):
    bits    = np.asarray(bits, dtype = int)
    total_w = np.sum(weights * bits)
    total_v = np.sum(values  * bits)
    if total_w > capacity:
        return 1000.0 + (total_w - capacity)  
    return -float(total_v)  

# Optimize
engine = pymetaheuristic.create_optimizer(
                                          algorithm       = "ga",
                                          target_function = knapsack,
                                          min_values      = [0.0] * n_items,
                                          max_values      = [1.0] * n_items,
                                          population_size = 15,    
                                          max_steps       = 300,
                                          seed            = 42,
                                          init_name       = "chaotic:tent",
                                         )

# Results
adapter      = pymetaheuristic.BinaryAdapter(engine, transfer_fn = "v2")
result       = adapter.run()
found_profit = -result.best_fitness
print("\nMetaheuristic result")
print("Best profit:", found_profit)
print("Binary solution reported:", result.metadata.get("binary_best_position"))

In addition to ordinary uniform random initialization, pymetaheuristic supports composable population initialization presets. These presets can be selected by name through init_name= or passed directly as a callable through init_function=. Available initialization strategies include:

StrategyName / aliasDescription
Uniform random"uniform"Standard independent uniform sampling inside the search bounds.
Latin Hypercube Sampling"lhs", "latin_hypercube", "lhs_population"Stratified sampling that spreads the initial population more evenly across each dimension.
Opposition-Based Learning"obl"Generates opposition-aware candidates to increase initial search coverage.
Sobol sequence"sobol"Low-discrepancy quasi-random sampling for space-filling initialization.
Chaotic initialization"chaotic:<map>"Uses one of the available chaotic maps, e.g. "chaotic:tent" or "chaotic:logistic".
import pymetaheuristic
print(pymetaheuristic.AVAILABLE_INIT_STRATEGIES)

def sphere(x):
    return sum(v * v for v in x)

result = pymetaheuristic.optimize(
    algorithm       = "pso",
    target_function = sphere,
    min_values      = [-5.0] * 10,
    max_values      = [ 5.0] * 10,
    max_steps       = 100,
    seed            = 42,
    init_name       = "lhs",
)

print(result.best_fitness)
print(result.best_position)


2.11 Hyperparameter Tuner

Back to Summary

HyperparameterTuner performs grid or random search over an algorithm's hyperparameters. It runs each configuration for n_trials independent trials, aggregates results, and returns a DataFrame (if pandas is available) or a list of dicts. The best_params and best_fitness attributes summarise the optimal configuration found.

import numpy as np
import pymetaheuristic

def easom(x = [0, 0]):
    x1, x2 = x
    return -np.cos(x1) * np.cos(x2) * np.exp(-(x1 - np.pi) ** 2 - (x2 - np.pi) ** 2)

tuner = pymetaheuristic.HyperparameterTuner(
		algorithm       = "pso",
		param_grid      = {
							  "swarm_size": [20, 50, 100],
							  "w":          [0.4, 0.7, 0.9],
							  "c1":         [1.5, 2.0],
							  "c2":         [1.5, 2.0],
							  "init_name":  ["uniform", "chaotic:tent"],
						  },
		target_function = easom,
		min_values      = [-5, -5],
		max_values      = [ 5,  5],
		termination     = pymetaheuristic.Termination(max_steps = 200),
		n_trials        = 5,
		objective       = "min",
		seed            = 42,
		search          = "grid",
		)

df      = tuner.run()
summary = tuner.summary()

print(f"Best params:  {tuner.best_params}")
print(f"Best fitness: {tuner.best_fitness:.6f}")
print(summary.head())


2.12 Save, Load, and Checkpoint

Back to Summary

The IO module provides a set of functions for persisting results and resuming interrupted runs.

  • save_result / load_result: pickle a completed OptimizationResult to disk.
  • result_to_json / result_from_json: export a human-readable JSON summary.
  • save_checkpoint / load_checkpoint: pickle a running (engine, state) pair; resume by calling engine.step(state) in a loop.
import numpy as np
import pymetaheuristic

# Easom: 
def easom(x = [0, 0]):
    x1, x2 = x
    return -np.cos(x1) * np.cos(x2) * np.exp(-(x1 - np.pi) ** 2 - (x2 - np.pi) ** 2)

# Optimize - Run
result = pymetaheuristic.optimize(
                                  algorithm                  = 'pso',
                                  target_function            = easom,
                                  min_values                 = (-5, -5),
                                  max_values                 = ( 5,  5),
                                  max_steps                  = 25, # iterations
                                  seed                       = 42,
                                  store_history              = True,
                                  store_population_snapshots = True,
                                )

# Save & Load a Completed Result
pymetaheuristic.save_result(result, "easom_pso.pkl")
r2 = pymetaheuristic.load_result("easom_pso.pkl")
print(f"Reloaded best fitness:  {r2.best_fitness:.6f}")
print(f"Reloaded best position: {r2.best_position}")

# Export and Read a JSON Summary
pymetaheuristic.result_to_json(result, "easom_pso.json")
summary = pymetaheuristic.result_from_json("easom_pso.json")
print(f"JSON best_fitness:  {summary['best_fitness']}")
print(f"JSON best_position: {summary['best_position']}")

# Checkpoint and Resume
engine = pymetaheuristic.create_optimizer(
                                            algorithm                  = 'pso',
                                            target_function            = easom,
                                            min_values                 = (-5, -5),
                                            max_values                 = ( 5,  5),
                                            max_steps                  = 25, # iterations
                                            seed                       = 42,
                                            store_history              = True,
                                            store_population_snapshots = True,
                                          )

state = engine.initialize()

# Run the first 25 iterations, then save a resumable checkpoint.
for _ in range(0, 25):
    state = engine.step(state)

pymetaheuristic.save_checkpoint(engine, state, "easom_checkpoint.pkl")
print(f"Checkpoint saved at step {state.step}, best = {state.best_fitness:.6f}")

# Resume from Checkpoint
engine2, state2 = pymetaheuristic.load_checkpoint("easom_checkpoint.pkl")

while not engine2.should_stop(state2):
    state2 = engine2.step(state2)

result_resumed = engine2.finalize(state2)
print(f"Resumed best fitness:  {result_resumed.best_fitness:.6f}")
print(f"Resumed best position: {result_resumed.best_position}")

2.13 Benchmark Runner

Back to Summary

BenchmarkRunner is the lightweight benchmark interface for multi-algorithm × multi-problem comparative sweeps. It executes every algorithm on every problem for a configurable number of independent trials, records the best fitness and wall-clock time for each run, and captures failed trials without interrupting the sweep. The raw results are returned as a tidy DataFrame that can be aggregated into summary statistics, rank tables, and publication-quality compact tables. For a more complete scientific benchmarking workflow involving algorithms, island systems, orchestration controllers, statistical tests, convergence plots, ECDFs, performance profiles, and persistence, use BenchmarkStudy.

import pandas as pd
import pymetaheuristic

# Algorithms
algorithms = ["acgwo", "gwo", "i_gwo", "fox", "tlbo"]

# Problems
rastrigin  = pymetaheuristic.get_test_function("rastrigin")
rosenbrock = pymetaheuristic.get_test_function("rosenbrocks_valley")

problems = [
               {
                   "name":            "Rastrigin-5D",
                   "target_function": rastrigin,
                   "min_values":      [-5.12] * 5,
                   "max_values":      [ 5.12] * 5,
                   "objective":       "min",
               },
               {
                   "name":            "Rosenbrock-5D",
                   "target_function": rosenbrock,
                   "min_values":      [-30.0] * 5,
                   "max_values":      [ 30.0] * 5,
                   "objective":       "min",
               },
           ]

# Runner
termination = pymetaheuristic.Termination(max_steps = 250)
runner      = pymetaheuristic.BenchmarkRunner(
                                               algorithms  = algorithms,
                                               problems    = problems,
                                               termination = termination,
                                               n_trials    = 5,
                                               seed        = 42,
                                               n_jobs      = 1,
                                             ) 
raw_df = runner.run(show_progress = True)

# Raw Results
failed_df  = raw_df[raw_df["error"].notna()].copy()
valid_df   = raw_df[raw_df["error"].isna()].copy()
summary_df = runner.summary().copy()

# Rank Table
rank_table                 = summary_df.pivot(index = "algorithm", columns = "problem", values = "rank")
rank_table["average_rank"] = rank_table.mean(axis = 1)
rank_table                 = rank_table.sort_values("average_rank")


2.14 Benchmark Study

Back to Summary

BenchmarkStudy is the scientific benchmarking interface. Unlike BenchmarkRunner, which focuses on lightweight algorithm sweeps, BenchmarkStudy can compare ordinary algorithms, island systems, and orchestration controllers under the same experimental protocol. It stores long-format experiment records, supports repeated trials, computes rank tables and statistical tests, and provides benchmark plots such as convergence curves, ECDFs, performance profiles, and rank heatmaps.

import pymetaheuristic

# Benchmark problems.
problems = pymetaheuristic.ProblemSuite.from_names(["sphere", "rastrigin", "ackley", "rosenbrock"], dimensions = 2)

system      = pymetaheuristic.IslandSystem(
    islands = [
        pymetaheuristic.Island(
            label     = "pso_explorer",
            algorithm = "pso",
            role      = "explorer",
            config    = {"swarm_size": 25},
        ),
        pymetaheuristic.Island(
            label     = "ga_diversity",
            algorithm = "ga",
            role      = "diversity_keeper",
            config    = {"population_size": 30},
        ),
        pymetaheuristic.Island(
            label     = "sa_refiner",
            algorithm = "sa",
            role      = "local_refiner",
            config    = {"temperature": 10.0},
        ),
        pymetaheuristic.Island(
            label     = "abco_explorer",
            algorithm = "abco",
            role      = "swarm_explorer",
            config    = {},
        ),
    ],
    topology     = pymetaheuristic.TopologyConfig(name = "ring",),
    migration    = pymetaheuristic.MigrationConfig(
        interval = 5,
        size     = 2,
        mode     = "elite",
        policy   = "push",
    ),
    orchestration = pymetaheuristic.OrchestrationConfig(
        checkpoint_interval        = 5,
        warmup_checkpoints         = 1,
        max_actions_per_checkpoint = 2,
    ),
    rules = pymetaheuristic.RulesConfig(
        stagnation_threshold     = 4,
        low_diversity_threshold  = 0.05,
        high_diversity_threshold = 0.25,
        perturbation_sigma       = 0.05,
    ),
    objective = "min",
    max_steps = 250,
    seed      = 42,
)

benchmark_system_rules     = {"type": "island_system", "name": "islands_rules",              "system": system, "mode": "rules",}
benchmark_system_bandit    = {"type": "island_system", "name": "islands_bandit",             "system": system, "mode": "bandit",}
benchmark_system_portfolio = {"type": "island_system", "name": "islands_portfolio_adaptive", "system": system, "mode": "portfolio_adaptive",}

study = pymetaheuristic.BenchmarkStudy(
    candidates = [
        {
            "name":      "pso",
            "type":      "algorithm",
            "algorithm": "pso",
            "config":    {"swarm_size": 30},
        },
        {
            "name":      "ga",
            "type":      "algorithm",
            "algorithm": "ga",
            "config":    {"population_size": 40},
        },
        {
            "name":      "de",
            "type":      "algorithm",
            "algorithm": "de",
            "config":    {"population_size": 40},
        },
		  benchmark_system_rules,
		  benchmark_system_bandit,
		  benchmark_system_portfolio,
    ],
    problems        = problems,
    n_trials        = 5,
    max_evaluations = 5000,
    seed            = 42,
)

benchmark_result = study.run()

# Long-format experiment table.
df = benchmark_result.to_dataframe()
print(df.head())

# Summary and ranking.
print(benchmark_result.summary())
print(benchmark_result.rank_table())
print(benchmark_result.scientific_summary())

# Statistical tests.
print(benchmark_result.friedman_test())
print(benchmark_result.wilcoxon_pairwise())

# Save and reload.
benchmark_result.save("benchmark_demo.json")
loaded = pymetaheuristic.load_benchmark("benchmark_demo.json")
print(loaded.summary())

Benchmark plots:

benchmark_result.plot_convergence(show = True, renderer = "colab")
benchmark_result.plot_ecdf(show = True, renderer = "colab")
benchmark_result.plot_performance_profile(show = True, renderer = "colab")
benchmark_result.plot_rank_heatmap(show = True, renderer = "colab")

Use BenchmarkRunner when you want a quick multi-algorithm × multi-problem sweep and a compact DataFrame summary. Use BenchmarkStudy when you need a scientific experimental protocol with repeated trials, fixed budgets, algorithm and island-system candidates, rank tables, statistical tests, convergence plots, ECDFs, performance profiles, rank heatmaps, and save/load support.


2.15 EvoMapX Explainability

Back to Summary

pymetaheuristic includes a package-wide EvoMapX Explainability layer for ordinary optimizers, cooperative island systems, and orchestrated island systems. It helps answer a question that convergence curves alone cannot answer: which algorithm, island, migration event, or operator mechanism drove the improvement? The current implementation uses a probe architecture. The probes observe optimizer execution but do not replace the original engine logic. They do not call the objective function independently, consume random numbers, reorder candidates, alter stopping criteria, change the evaluation budget, or modify the optimization trajectory. EvoMapX currently provides three complementary diagnostics:

  • Operator / Island Attribution Matrix (OAM/IAM): A time-indexed contribution matrix. Rows are attribution units and columns are optimization steps. The attribution unit can be an explicit internal operator label, an algorithm, an island, a migration event, or an agent.
  • Convergence Driver Score (CDS): An aggregate score derived from the attribution matrix. It ranks the units that contributed most to convergence.
  • Population Evolution Graph (PEG): A graph representation of population continuity, parent-child relationships when available, inferred lineage, and migration links.

Per-operator attribution is computed from population lineage: the signed parent->child fitness change of each candidate is grouped by the operator that produced it, which requires no extra evaluations. Diagnostic or model-update operators may be recorded through counts and metadata while receiving zero direct fitness attribution. The fidelity building blocks are::

Support levelMeaning
Lineage Δf telemetrySigned, operator-level Δf computed passively from parent-to-child fitness changes.
Operator countsPer-step counts showing how many times each operator was applied.
Population lineageParent -> child metadata used to build PEG ancestry edges instead of nearest-neighbour fallback edges.
Profile metadataDeclared operator taxonomy used for documentation, web-app summaries, and support tables.

The explainability layer supports four levels:

EvoMapX levelMain purposeWhat is recorded
1Population snapshotsCopied population states over time, avoiding reference aliasing to the final population
2Operator attributionExplicit probe labels, signed fitness deltas, operator counts, and OAM/CDS-ready contribution records
3Lineage tracingLevel 2 plus candidate IDs, parent IDs, and PEG-ready ancestry metadata
4Full activity diagnosticsLevel 3 plus diversity change, displacement, changed-count, inferred acceptance rate, dominant operator, and candidate-evaluation summaries

EvoMapX uses signed objective-consistent fitness changes. For minimization, a positive contribution means improvement; a negative contribution means deterioration. This preserves the true contribution pattern of each operator instead of clipping losses to zero.

Inspecting EvoMapX:

import pymetaheuristic

profile = pymetaheuristic.get_evomapx_profile("wca")
labels  = pymetaheuristic.get_evomapx_operators("wca")
print(profile.to_dict())
print(labels)

Single Algorithm EvoMapX:

import pymetaheuristic

def sphere(x):
    return sum(v * v for v in x)

result = pymetaheuristic.optimize(
    "woa",
    target_function = sphere,
    min_values      = [-5.0] * 10,
    max_values      = [ 5.0] * 10,
    objective       = "min",
    max_steps       = 40,
    seed            = 42,
    store_history   = True,
    evomapx         = True,
    evomapx_level   = 4,
)

print("Best fitness:",  result.best_fitness)
print("Best position:", result.best_position)
report = result.evomapx_analysis(level = "operator")
print(result.explain_evomapx(level = "operator"))

# Interactive Plot
result.plot_evomapx_attribution(level = "operator", filepath = "woa_oam.html")
result.plot_evomapx_cds(level = "operator", filepath = "woa_cds.html")
result.plot_evomapx_peg(filepath = "woa_peg.html")

# Exports
result.export_evomapx_json("woa_evomapx.json", level = "operator")
result.export_evomapx_csv("woa_oam.csv",       level = "operator")

Island EvoMapX:

import pymetaheuristic

def sphere(x):
    return sum(v * v for v in x)

result = pymetaheuristic.cooperative_optimize(
    islands = [
        {"algorithm": "de",  "label": "DE explorer", "config": {"size": 25}},
        {"algorithm": "pso", "label": "PSO swarm",   "config": {"size": 25}},
        {"algorithm": "cem", "label": "CEM modeler", "config": {"size": 30, "k_samples": 6}},
    ],
    target_function            = sphere,
    min_values                 = [-5.0] * 10,
    max_values                 = [ 5.0] * 10,
    objective                  = "min",
    max_steps                  = 50,
    migration_interval         = 5,
    migration_size             = 3,
    topology                   = "ring",
    seed                       = 42,
    store_history              = True,
    store_population_snapshots = True,
    evomapx                    = True,
    evomapx_level              = 4,
)

# Which Island drove convergence?
print(result.explain_evomapx(level = "island"))

# Which explicit internal operators drove convergence?
print(result.explain_evomapx(level = "operator"))
result.plot_evomapx_attribution(level = "island", filepath = "island_oam.html")
result.plot_evomapx_cds(level = "island", filepath = "island_cds.html")
result.plot_evomapx_peg(filepath = "population_evolution_graph.html")

3. Algorithm Details

Back to Summary

You can inspect the default parameters of any metaheuristic in the library using get_algorithm_info().

import pymetaheuristic
from pprint import pprint

# Get Info
algorithm_id = "pso"   # change this to any ID from the table, e.g. "de", "ga", "gwo", "woa"
algo_info    = pymetaheuristic.get_algorithm_info(algorithm_id)

# Results
print("Algorithm ID:",   algo_info["algorithm_id"])
print("Algorithm Name:", algo_info["algorithm_name"])
print("")
print("Default Parameters:")
pprint(algo_info["defaults"])

Output:

Algorithm ID:   pso
Algorithm Name: Particle Swarm Optimization

Default Parameters:
{'c1': 2.0, 'c2': 2.0, 'decay': 0, 'swarm_size': 30, 'w': 0.9}

The table below summarizes the optimization engines currently available in the library. Click an algorithm name to open its primary reference or original source. All algorithms support checkpointing through the library framework, while constraint handling is provided by the framework-level constraint machinery.

  • Algorithm reports the conventional algorithm name,
  • ID gives the identifier used in the codebase,
  • Family provides a coarse methodological grouping,
  • Population indicates whether the algorithm maintains an explicit candidate population and can also show population snapshots,
  • Candidate Injection indicates whether the algorithm is currently marked as able to absorb external candidates during cooperative or orchestrated workflows,
  • Restart shows whether native restart support is declared,
  • EvoMapX lists the semantic operator labels used by the passive EvoMapX resolver. Each label names an interpretable operator region of the algorithm (for example, gwo.alpha_guidance, woa.spiral_bubble_net, or wca.evaporation_raining). Direct operators are attributed from already-evaluated parent-to-child fitness changes, while diagnostic operators may report activity with zero direct fitness attribution. No additional objective evaluations are introduced.

AlgorithmIDFamilyPopulationCandidate InjectionRestartEvoMapX
Adam (Adaptive Moment Estimation)adammathNoNoNoadam.candidate_generation
adam.selection
adam.search_direction
adam.step_acceptance
adam.initialization
Adam Gradient Descent OptimizeragdomathYesNoNoagdo.progressive_gradient_momentum_dynamic_interaction
agdo.system_optimization_operator
🔍 View complete Metaheuristic reference table
AlgorithmIDFamilyPopulationCandidate InjectionRestartEvoMapX
Adam (Adaptive Moment Estimation)adammathNoNoNoadam.candidate_generation
adam.selection
adam.search_direction
adam.step_acceptance
adam.initialization
Adam Gradient Descent OptimizeragdomathYesNoNoagdo.progressive_gradient_momentum_dynamic_interaction
agdo.system_optimization_operator
Adaptive Aquila OptimizeraaoswarmYesNoNoaao.adaptive_aquila_guidance
aao.position_update
aao.elite_local_refinement
aao.selection
Adaptive Chaotic Grey Wolf OptimizeracgwoswarmYesYesNoacgwo.selection
acgwo.adaptive_weighted_pack_update
acgwo.alpha_guidance_trial
acgwo.beta_guidance_trial
acgwo.delta_guidance_trial
Adaptive Equilibrium Optimizationadaptive_eophysicsYesNoNoadaptive_eo.selection
adaptive_eo.adaptive_local_refinement
adaptive_eo.equilibrium_pool_guided_update
Adaptive Exploration State-Space Particle Swarm OptimizationaesspsoswarmYesYesNoaesspso.adaptive_velocity_position_update
Adaptive Inertia Weight Particle Swarm Optimizationaiw_psoswarmYesNoNoaiw_pso.position_update
aiw_pso.selection
aiw_pso.velocity_update
aiw_pso.elite_local_refinement
Adaptive Gaining-Sharing Knowledge Based AlgorithmagskhumanYesYesNoagsk.parameter_setting_sampling
agsk.junior_gaining_sharing
agsk.senior_gaining_sharing
agsk.midpoint_bound_repair
agsk.greedy_selection
agsk.parameter_adaptation
agsk.linear_population_size_reduction
Adaptive Random SearcharstrajectoryYesYesNoars.small_step
ars.large_step
African Vultures Optimization AlgorithmavoaswarmYesYesNoavoa.exploration_vulture_soaring
avoa.random_roost_exploration
avoa.convergent_competition_exploitation
avoa.levy_food_exploitation
avoa.aggressive_siege_exploitation
avoa.spiral_siege_exploitation
Aitken OptimizeratkmathYesNoNoatk.aitken_acceleration_search
atk.random_weighted_exponential_search
atk.aitken_refinement
atk.greedy_selection
atk.reflective_bound_repair
atk.historical_best_update
Ali Baba and the Forty ThievesafthumanYesYesNoaft.best_guided_tracking
aft.random_treasure_search
aft.opposition_tracking
Anarchic Society OptimizationasoswarmYesYesNoaso.anarchic_social_position_update
Animated Oat Optimization AlgorithmaooswarmYesNoNoaoo.mean_wind_animation_update
aoo.best_wind_animation_update
aoo.self_wind_animation_update
aoo.rolling_levy_animation_update
aoo.projectile_jump_animation_update
Ant Colony Optimization (Continuous)acorswarmYesYesNoacor.archive_kernel_sampling_update
Ant Colony OptimizationacoswarmYesNoNoaco.pheromone_weighted_perturbation_in_each_dimension
Ant Lion OptimizeraloswarmYesYesNoalo.random_walk
alo.state_update
alo.candidate_generation
alo.selection
alo.combine
Aquila OptimizeraoswarmYesYesNoao.high_soar_vertical_stoop
ao.contour_flight_exploration
ao.low_flight_attack
ao.walk_and_grab_prey
Archerfish Hunting OptimizerahoswarmYesYesNoaho.single_shot_prey_projection
aho.double_shot_prey_projection
aho.levy_stagnation_rescue
Archimedes Optimization Algorithmarch_oaphysicsYesYesNoarch_oa.archimedes_density_volume_acceleration_update
Arithmetic Optimization AlgorithmaoaswarmYesYesNoaoa.arithmetic_operator_position_update
Artemisinin Optimizationartemisinin_onatureYesYesNoartemisinin_o.self_growth_update
artemisinin_o.best_growth_update
artemisinin_o.differential_mutation_update
artemisinin_o.self_reset_mutation
artemisinin_o.best_reset_mutation
artemisinin_o.boundary_best_repair
Artificial Algae AlgorithmaaaswarmYesNoNoaaa.recombination
aaa.selection
aaa.adaptation_most_starving_colony_moves_toward
aaa.is_replaced_by_corresponding_cell_biggest
Artificial Bee Colony OptimizationabcoswarmYesYesNoabco.employed
abco.onlooker
abco.scout
Artificial Ecosystem OptimizationaeonatureYesYesNoaeo.selection
aeo.consumer_decomposer_update
aeo.production_worst_agent
Artificial Electric Field AlgorithmaefaphysicsYesYesNoaefa.electric_field_force_update
Artificial Fish Swarm AlgorithmafsaswarmYesYesNoafsa.leap
Artificial Gorilla Troops OptimizeragtoswarmYesYesNoagto.migration
agto.exploration
agto.state_update
agto.exploitation
Artificial Hummingbird AlgorithmahaswarmYesYesNoaha.guided_foraging
aha.territorial_foraging
aha.migration
Artificial Lemming AlgorithmalaswarmYesYesNoala.high_energy_digging_walk
ala.high_energy_lemming_migration
ala.low_energy_spiral_foraging
ala.low_energy_levy_escape
Artificial Protozoa OptimizeraposwarmYesYesNoapo.dormancy_random_restart
apo.dormancy_local_perturbation
apo.foraging_reproduction_update
apo.autotrophic_foraging_update
Artificial Rabbits OptimizationaroswarmYesYesNoaro.detour_foraging
aro.random_hiding
Atom Search Optimizationaso_atomphysicsYesYesNoaso_atom.do_not_move_current_elites_unless
Automated Design of Variation OperatorsautovevolutionaryYesYesNoautov.learned_variation_operator_update
Bacterial Chemotaxis OptimizerbconatureYesYesNobco.swim_refinement_update
Bacterial Colony Optimizationbacterial_colony_onatureYesNoNobacterial_colony_o.migration
bacterial_colony_o.position_update
bacterial_colony_o.recombination
bacterial_colony_o.selection
bacterial_colony_o.current_colony_best_accept_only_it
bacterial_colony_o.implementation_but_only_as_bounded_macro
Bacterial Foraging OptimizationbfoswarmYesYesNobfo.chemotaxis_tumble_update
bfo.selection
Bald Eagle SearchbesswarmYesYesNobes.candidate_generation
bes.selection
bes.candidate_search
Barnacles Mating OptimizerbmoswarmYesYesNobmo.barnacle_recombination
bmo.random_barnacle_drift
Basin Hoppingbasin_hoppingtrajectoryNoYesYesbasin_hopping.update
Basketball Team Optimization AlgorithmbtoahumanYesNoNobtoa.position_update
btoa.selection
btoa.defensive_play_refinement
btoa.dynamic_position_candidate
btoa.offensive_play_update
Bat Algorithmbat_aswarmYesYesNobat_a.candidate_generation
bat_a.selection
bat_a.force_or_velocity_update
bat_a.position_update
bat_a.acceptance
bat_a.state_update
bat_a.initialization
Battle Royale OptimizationbrohumanYesYesNobro.find_nearest_neighbour
bro.battle_damage_relocation_update
bro.selection
Bees AlgorithmbeaswarmYesYesNobea.elite_site_neighbourhood_search
bea.selected_site_neighbourhood_search
bea.scout_site_global_search
BFGS Quasi-Newton MethodbfgsmathNoNoNobfgs.update
Binary Space Partition Tree Genetic AlgorithmbspgaevolutionaryYesYesNobspga.binary_partition_tree_variation_update
Biogeography-Based OptimizationbboevolutionaryYesYesNobbo.migration_mutation_selection_update
BIPOP-CMA-ESbipop_cmaesevolutionaryYesYesYesbipop_cmaes.cmaes_sampling
bipop_cmaes.elite_recombination
bipop_cmaes.distribution_update
bipop_cmaes.step_size_adaptation
bipop_cmaes.large_population_restart
bipop_cmaes.small_population_restart
bipop_cmaes.budget_regime_selection
bipop_cmaes.termination_check
bipop_cmaes.boundary_repair
bipop_cmaes.candidate_injection
Bird Swarm AlgorithmbsaswarmYesYesNobsa.foraging_flight_update
bsa.vigilance_flight_update
bsa.producer_guided_flight_update
bsa.scrounger_random_flight_update
Birds-of-Paradise SearchbpsswarmYesNoNobps.long_distance_flight
bps.local_tree_movement
bps.best_tree_attraction
Black Widow OptimizationbwoevolutionaryYesYesNobwo.crossover
bwo.mutation
bwo.procreation
bwo.candidate_generation
bwo.selection
Black-winged Kite AlgorithmbkaswarmYesYesNobka.sine_soaring_update
bka.random_soaring_update
bka.peer_repulsion_cauchy_update
bka.leader_attraction_cauchy_update
Bonobo OptimizerbonoswarmYesYesNobono.social_guidance_phase
bono.exploratory_directional_move
Boxelder Bug Search OptimizationbbsoswarmYesNoNobbso.coordinated_following_trial
bbso.self_following_trial
Brain Storm OptimizationbsohumanYesYesNobso.single_cluster_center_idea
bso.single_cluster_member_idea
bso.empty_cluster_center_idea
bso.two_cluster_center_blend
bso.two_cluster_member_blend
Brown-Bear Optimization AlgorithmbboaswarmYesYesNobboa.selection
bboa.2_sniffing
bboa.pedal_marking_update
Butterfly Optimization AlgorithmboaswarmYesYesNoboa.global_fragrance_attraction
boa.local_fragrance_random_walk
Camel AlgorithmcamelswarmYesYesNocamel.endurance_temperature_update
camel.selection
Capuchin Search AlgorithmcapsaswarmYesYesNocapsa.jumping_global_motion
capsa.long_jump_global_motion
capsa.velocity_swing_update
capsa.best_swing_update
capsa.velocity_memory_update
capsa.random_tree_leap
capsa.group_following_update
Cat Swarm Optimizationcat_soswarmYesYesNocat_so.seeking_mode_expansive_copy_update
cat_so.seeking_mode_contracting_copy_update
cat_so.tracing_mode_velocity_update
Catch Fish Optimization AlgorithmcfoaswarmYesNoNocfoa.individual_foraging_update
cfoa.group_foraging_update
cfoa.late_gaussian_capture_update
Cauchy-Gaussian mutation and improved search strategy GWOcg_gwoswarmYesNoNocg_gwo.selection
cg_gwo.elite_local_refinement
cg_gwo.leader_guided_population_update
Chameleon Swarm Algorithmchameleon_saswarmYesYesNochameleon_sa.social_pbest_gbest_update
chameleon_sa.random_global_exploration
Chaos Game OptimizationcgomathYesYesNocgo.current_seed_attractor
cgo.best_seed_attractor
cgo.mean_group_seed_attractor
cgo.dimension_mutation_seed
Chaotic-based Grey Wolf Optimizerchaotic_gwoswarmYesNoNochaotic_gwo.selection
chaotic_gwo.elite_local_refinement
chaotic_gwo.leader_guided_population_update
Cheetah Based OptimizationcddoswarmYesYesNocddo.cheetah_chase_position_update
Cheetah OptimizercdoswarmYesYesNocdo.alpha_cheetah_attack_component
cdo.beta_cheetah_attack_component
cdo.gamma_cheetah_attack_component
Chernobyl Disaster Optimizercdo_chernobylphysicsYesYesNocdo_chernobyl.alpha_beta_gamma_radiation_update
cdo_chernobyl.cdo_chernobyl_position_update
cdo_chernobyl.selection
Chicken Swarm Optimizationchicken_soswarmYesNoNochicken_so.selection
chicken_so.chicken_so_semantic_update
Child Drawing Development Optimization Algorithmcddo_childhumanYesYesNocddo_child.child_drawing_development_update
Chimp Optimization AlgorithmchoaswarmYesYesNochoa.chimp_hunting_position_update
Chinese Pangolin OptimizercposwarmYesNoNocpo.aroma_luring_trial
cpo.predation_feeding_trial
Circle-Based Search Algorithmcircle_samathYesYesNocircle_sa.circle_position_update
Circulatory System Based OptimizationcsbonatureYesYesNocsbo.systolic
csbo.diastolic
Clonal Selection AlgorithmclonalgevolutionaryYesYesNoclonalg.candidate_generation
clonalg.selection
clonalg.cloning
clonalg.hypermutation
Coati Optimization Algorithmcoati_oaswarmYesYesNocoati_oa.candidate_generation
coati_oa.selection
coati_oa.behavioral_move
Cockroach Swarm Optimizationcockroach_soswarmYesYesNocockroach_so.dispersal
cockroach_so.replacement
cockroach_so.state_update
Compact Genetic Algorithmcompact_gadistributionNoNoNocompact_ga.model_update
compact_ga.sampling
compact_ga.selection
compact_ga.state_update
compact_ga.compact_genetic_algorithm_semantic_update
Competitive Swarm OptimizercsoswarmYesYesNocso.mean_all_positions
Coot Bird OptimizationcootswarmYesYesNocoot.chain_movement_update
Coral Reefs OptimizationcroevolutionaryYesYesNocro.broadcast_spawning_recombination
cro.brooding_clone_mutation
cro.depredation_random_reseeding
Coronavirus Herd Immunity OptimizationchiohumanYesYesNochio.infected_contact_update
chio.susceptible_contact_update
chio.immune_contact_update
Cosmic Evolution Optimizationceo_cosmicphysicsYesYesNoceo_cosmic.exploration_attraction_alignment
ceo_cosmic.global_collision_update
ceo_cosmic.resonance_refinement_update
Covariance Matrix Adaptation Evolution StrategycmaesevolutionaryYesYesNocmaes.offspring_sampling
cmaes.parent_selection
cmaes.evolution_path_update
cmaes.covariance_update
cmaes.step_size_update
cmaes.boundary_repair
cmaes.initialization
cmaes.candidate_injection
Coyote Optimization AlgorithmcoaswarmYesYesNocoa.alpha_social_condition_update
coa.tendency_social_condition_update
coa.pup_birth_replacement
coa.migration_exchange
Crayfish Optimization Algorithmcrayfish_oaswarmYesYesNocrayfish_oa.high_temperature_shelter_update
crayfish_oa.high_temperature_competition_update
crayfish_oa.food_competition_update
crayfish_oa.food_intake_update
Cross Entropy MethodcemdistributionYesYesNocem.model_sampling_elite_distribution_update
Crow Search AlgorithmcsaswarmYesYesNocsa.memory_following_update
csa.awareness_random_relocation
csa.mixed_memory_random_update
Cuckoo Catfish OptimizerccoswarmYesYesNocco.candidate_search
cco.selection
cco.candidate_generation
Cuckoo Searchcuckoo_sswarmYesYesNocuckoo_s.levy_flight
cuckoo_s.replacement
cuckoo_s.candidate_generation
cuckoo_s.selection
Cultural AlgorithmcaevolutionaryYesYesNoca.cultural_belief_guided_update
Dandelion Optimizerdo_dandelionswarmYesYesNodo_dandelion.rising_seed_phase
do_dandelion.descent_diffusion_phase
do_dandelion.elite_landing_phase
do_dandelion.candidate_generation
do_dandelion.selection
Deep Sleep OptimiserdsohumanYesYesNodso.deep_sleep_decay_update
dso.slow_wave_recovery_update
Deer Hunting Optimization AlgorithmdoahumanYesYesNodoa.hunting
doa.search
doa.state_update
doa.exploitation_move
doa.replacement
Delta PlusdpmathYesNoNodp.delta_operation
Dhole Optimization Algorithmdhole_oaswarmYesNoNodhole_oa.searching_stage
dhole_oa.encircling_stage
dhole_oa.large_prey_attack
dhole_oa.small_prey_kill
Differential Evolution JADEjadeevolutionaryYesNoNojade.candidate_generation
jade.selection
jade.mutation
jade.crossover
jade.initialization
Differential Evolution MTShdeevolutionaryYesYesNohde.candidate_search
hde.selection
hde.differential_evolution_update
Differential Evolution with Self-Adaptive Populationssap_deevolutionaryYesNoNosap_de.selection
sap_de.elite_local_refinement
sap_de.self_adaptive_parameter_de_update
Differential EvolutiondeevolutionaryYesYesNode.mutation
de.crossover
de.selection
de.bound_repair
Dispersive Fly OptimizationdfoswarmYesYesNodfo.dispersive_fly_neighbour_update
dfo.elite_disturbance_update
dfo.selection
Diversity enhanced Strategy based Grey Wolf Optimizerds_gwoswarmYesNoNods_gwo.selection
ds_gwo.elite_local_refinement
ds_gwo.leader_guided_population_update
Divine Religions AlgorithmdrahumanYesNoNodra.selection
dra.dialectic_interaction_update
Dolphin Echolocation Optimizationdeo_dolphinswarmYesYesNodeo_dolphin.elite_reference_echo_guidance
deo_dolphin.elite_jitter_echo_guidance
deo_dolphin.peer_reference_echo_guidance
deo_dolphin.peer_jitter_echo_guidance
Dragonfly AlgorithmdaswarmYesYesNoda.neighbour_alignment_update
da.levy_flight_exploration
da.food_enemy_swarm_update
Dream Optimization Algorithmdream_oahumanYesNoNodream_oa.dream_generation_refinement_update
Dung Beetle OptimizerdboswarmYesYesNodbo.foraging
dbo.selection
dbo.state_update
dbo.ball_rolling_dance_update
Dwarf Mongoose Optimization AlgorithmdmoaswarmYesYesNodmoa.selection
dmoa.3_baby_sitter_eviction
dmoa.scalar_broadcast
dmoa.scout_phase
Dynamic Differential Annealed OptimizationddaophysicsYesYesNoddao.exploration
ddao.selection
ddao.state_update
ddao.dynamic_annealed_refinement_update
Dynamic Virtual Bats AlgorithmdvbaswarmYesYesNodvba.force_or_velocity_update
dvba.position_update
dvba.random_walk
dvba.state_update
dvba.candidate_generation
dvba.selection
Earthworm Optimization AlgorithmeoaswarmYesYesNoeoa.crossover
eoa.state_update
eoa.mutation
eoa.candidate_generation
eoa.selection
eoa.reproduction
Ecological Cycle Optimizerecological_cycle_oswarmYesYesNoecological_cycle_o.selection
ecological_cycle_o.ecological_cycle_transition_update
ecological_cycle_o.eval_accept_group
Educational Competition OptimizerecohumanYesYesNoeco.primary_competition_update
eco.sine_cosine_learning_update
eco.best_weighted_learning_update
eco.levy_exam_update
Eel and Grouper Optimizereel_grouper_oswarmYesNoNoeel_grouper_o.eel_weighted_hunting_update
eel_grouper_o.grouper_weighted_hunting_update
Efficient and Robust Grey Wolf Optimizerer_gwoswarmYesNoNoer_gwo.selection
er_gwo.elite_local_refinement
er_gwo.leader_guided_population_update
Efficient Global OptimizationegodistributionYesYesNoego.expected_improvement_candidate_generation
Egret Swarm Optimization AlgorithmesoaswarmYesYesNoesoa.behavioral_move
esoa.selection
esoa.egret_sit_and_wait_update
Electric Charged Particles OptimizationecpophysicsYesYesNoecpo.electric_charge_random_perturbation
Electric Eel Foraging OptimizationeefoswarmYesNoNoeefo.interaction_migration
eefo.resting_area_update
eefo.levy_hunting_update
eefo.prey_capture_update
Electrical Storm OptimizationesophysicsYesYesNoeso.electric_storm_field_update
Electromagnetic Field OptimizationefophysicsYesYesNoefo.electromagnetic_field_update
efo.random_field_reinitialization
efo.dimension_reset_mutation
Elephant Herding OptimizationehoswarmYesYesNoeho.long_range_clan_best_guided_update
eho.short_range_clan_best_guided_update
eho.matriarch_center_update
eho.separating_random_relocation
Elk Herd Optimizerelk_hoswarmYesYesNoelk_ho.selection
elk_ho.family_mating_position_update
Emperor Penguin ColonyepcswarmYesYesNoepc.spiral_attraction_update
epc.thermal_mutation_update
Energy Valley OptimizerevophysicsYesYesNoevo.exploration
evo.state_update
evo.exploitation
Enhanced Artificial Ecosystem-Based Optimizationenhanced_aeonatureYesNoNoenhanced_aeo.selection
enhanced_aeo.ecosystem_producer_consumer_update
enhanced_aeo.enhanced_decomposition_refinement
Enhanced Tug of War Optimizationenhanced_twophysicsYesNoNoenhanced_two.candidate_generation
enhanced_two.selection
enhanced_two.force_update
enhanced_two.state_update
enhanced_two.initialization
Enzyme Activity OptimizereaonatureYesYesNoeao.sinusoidal_best_substrate_update
eao.vector_scaled_differential_substrate_update
eao.scalar_scaled_differential_substrate_update
Equilibrium OptimizereophysicsYesYesNoeo.equilibrium_position_update
Escape AlgorithmeschumanYesYesNoesc.escape_from_worst_update
esc.move_toward_best_update
esc.random_exploration_update
Evolution Strategy (Mu + Lambda)esevolutionaryYesYesNoes.parent_survivor
es.large_step_mutation_offspring
es.small_step_mutation_offspring
Evolutionary ProgrammingepevolutionaryYesYesNoep.parent_survivor
ep.large_strategy_mutation_offspring
ep.small_strategy_mutation_offspring
Expanded Grey Wolf Optimizerex_gwoswarmYesNoNoex_gwo.selection
ex_gwo.elite_local_refinement
ex_gwo.leader_guided_population_update
Exponential Distribution OptimizeredomathYesYesNoedo.distribution_update
edo.candidate_generation
edo.state_update
Exponential-Trigonometric OptimizationetomathYesYesNoeto.exponential_orbit_update
eto.trigonometric_orbit_update
Extra-Trees Bayesian Optimizationet_bomathNoNoNoet_bo.extra_trees_surrogate_fit
et_bo.random_cutpoint_screening
et_bo.acquisition_search
et_bo.candidate_evaluation
et_bo.incumbent_update
Fast Evolutionary ProgrammingfepevolutionaryYesYesNofep.fast_mutation_tournament_selection_update
Fata Geophysics OptimizerfataphysicsYesYesNofata.random_refraction_update
fata.best_refraction_update
fata.peer_refraction_update
Feasibility Rule with Objective Function InformationfrofievolutionaryYesYesNofrofi.current_to_rand_de
frofi.rand_to_best_crossover_de
frofi.no_crossover_de
frofi.targeted_mutation
Fennec Fox OptimizerffoswarmYesYesNoffo.exploration
ffo.state_update
ffo.exploitation
Fick's Law AlgorithmflaphysicsYesYesNofla.forward_diffusion_transfer
fla.source_fluid_diffusion
fla.receiver_fluid_diffusion
fla.reverse_diffusion_transfer
fla.equilibrium_exploitation_update
Firefly Algorithmfirefly_aswarmYesYesNofirefly_a.attraction_dominant_move
firefly_a.randomization_dominant_move
Fireworks AlgorithmfwaswarmYesYesNofwa.selection
fwa.state_update
Fish School SearchfssswarmYesYesNofss.collective_volitive_movement
fss.selection
Fitness Dependent OptimizerfdoswarmYesYesNofdo.fitness_weighted_pace_update
fdo.best_guided_position_update
fdo.selection
Fletcher-Reeves Conjugate GradientfrcgmathNoNoNofrcg.update
Flood Algorithmflood_aphysicsYesYesNoflood_a.flood_flow_direction_update
flood_a.flood_recession_refinement_update
flood_a.selection
Flow Direction AlgorithmfdaswarmYesYesNofda.downhill_flow_direction_update
fda.neighbour_flow_direction_update
fda.elite_flow_direction_update
Flower Pollination AlgorithmfpaswarmYesYesNofpa.global_levy_pollination
fpa.local_pollination
Forensic-Based Investigation OptimizationfbiohumanYesYesNofbio.candidate_generation
fbio.selection
fbio.exploration
Forest Optimization AlgorithmfoaswarmYesYesNofoa.local_seeding_growth_update
foa.selection
Fossa Optimization Algorithmfoa_fossaswarmYesYesNofoa_fossa.prey_pursuit_update
foa_fossa.defensive_escape_update
Fox OptimizerfoxswarmYesYesNofox.prey_jump_exploitation
fox.current_to_random_walk_update
fox.best_radius_random_walk
Frilled Lizard OptimizationfloswarmYesYesNoflo.update
Fruit-Fly AlgorithmffaswarmYesYesNoffa.fruitfly_smell_search_update
Fuzzy Hierarchical Operator - Grey Wolf Optimizerfuzzy_gwoswarmYesNoNofuzzy_gwo.selection
fuzzy_gwo.elite_local_refinement
fuzzy_gwo.leader_guided_population_update
Gaining-Sharing Knowledge AlgorithmgskahumanYesYesNogska.gaining_sharing_knowledge_update
Gaussian Process Bayesian Optimizationgp_bomathNoNoNogp_bo.update
Gazelle Optimization Algorithmgazelle_oaswarmYesYesNogazelle_oa.brownian_foraging_update
gazelle_oa.levy_elite_transition_update
gazelle_oa.levy_foraging_update
gazelle_oa.random_patch_avoidance_update
gazelle_oa.peer_difference_escape_update
Gekko Japonicus AlgorithmgjaswarmYesYesNogja.levy_wall_search
gja.gaussian_wall_search
Generalized Normal Distribution OptimizergndomathYesYesNogndo.generalized_normal_local_update
gndo.difference_vector_global_update
Genetic AlgorithmgaevolutionaryYesYesNoga.candidate_generation
ga.selection
ga.breed
ga.mutate
Genghis Khan Shark OptimizergksoswarmYesYesNogkso.genghis_khan_crossover_exploration
gkso.shark_hunting_pso_update
Geometric Mean OptimizergmomathYesYesNogmo.marketing_guidance_update
Germinal Center OptimizationgcohumanYesYesNogco.dark_zone_mutation_update
Geyser Inspired AlgorithmgeaphysicsYesYesNogea.neighbour_geyser_eruption_update
gea.pressure_random_eruption_update
Giant Pacific Octopus OptimizergpooswarmYesYesNogpoo.octopus_tentacle_prey_position_update
Giant Trevally OptimizergtoswarmYesYesNogto.candidate_search
gto.selection
gto.candidate_generation
gto.behavioral_move
Glider Snake Optimizationgso_glider_snakeswarmYesNoNogso_glider_snake.glider_snake_position_update
Glowworm Swarm OptimizationgsoswarmYesYesNogso.glowworm_luciferin_movement_update
Golden Jackal OptimizergjoswarmYesYesNogjo.male_female_exploitation
gjo.male_female_exploration
Gradient-Based OptimizergbomathYesYesNogbo.gradient_search_rule_update
gbo.local_escaping_operator_update
Gradient-Based Particle Swarm OptimizationgpsoswarmYesYesNogpso.velocity_position_update
Gradient-Boosted Regression Trees Bayesian Optimizationgbrt_bomathNoNoNogbrt_bo.update
Grasshopper Optimization AlgorithmgoaswarmYesYesNogoa.grasshopper_social_force_update
Gravitational Search AlgorithmgsaphysicsYesYesNogsa.gravitational_force_acceleration_update
Greedy Randomized Adaptive Search ProceduregrasptrajectoryNoYesYesgrasp.update
Grey Wolf OptimizergwoswarmYesYesNogwo.alpha_guidance
gwo.beta_guidance
gwo.delta_guidance
gwo.position_update
Greylag Goose OptimizationggoswarmYesYesNoggo.initialization
ggo.dynamic_group_update
ggo.exploration_leader_move_eq1
ggo.exploration_paddling_mutation_eq2
ggo.exploration_spiral_move_eq4
ggo.flock_local_search_eq7
ggo.exploitation_sentry_guidance_eq5_6
ggo.elitist_selection
ggo.boundary_repair
ggo.role_shuffle
ggo.stagnation_group_boost
ggo.candidate_injection
Growth Optimizergo_growthswarmYesYesNogo_growth.growth_phase_update
go_growth.maturity_phase_update
go_growth.selection
Harmony Search AlgorithmhsatrajectoryYesNoNohsa.harmony_memory_improvisation_update
Harris Hawks OptimizationhhoswarmYesYesNohho.exploration
hho.soft_besiege
hho.hard_besiege
hho.soft_besiege_rapid_dive
hho.hard_besiege_rapid_dive
hho.levy_rapid_dive_refinement
Heap-Based OptimizerhbohumanYesYesNohbo.heap_rank_pressure_update
Henry Gas Solubility OptimizationhgsophysicsYesYesNohgso.cluster_best_solubility_update
hgso.global_best_solubility_update
hgso.worst_agent_random_reset
Hiking Optimization Algorithmhiking_oahumanYesYesNohiking_oa.hiking_slope_velocity_update
Hill Climb AlgorithmhctrajectoryNoNoNohc.update
Hippopotamus Optimization Algorithmho_hipposwarmYesYesNoho_hippo.exploitation
ho_hippo.selection
ho_hippo.state_update
ho_hippo.group_defense_position_update
ho_hippo.predator_defense_update
ho_hippo.river_pond_position_update
Honey Badger Algorithmhba_honeyswarmYesYesNohba_honey.digging_phase_update
hba_honey.honey_phase_update
Horse Herd Optimization Algorithmhorse_oaswarmYesYesNohorse_oa.dominant_stallion_update
horse_oa.experienced_horse_social_update
horse_oa.middle_rank_grazing_update
horse_oa.foal_exploration_update
Human Conception OptimizerhcohumanYesYesNohco.conception_growth_update
Human Evolutionary Optimization AlgorithmheoahumanYesYesNoheoa.elite_local_refinement
heoa.learner_levy_best_attraction
heoa.explorer_centroid_escape
heoa.follower_best_contraction
heoa.risk_taker_best_sampling
Hunger Games SearchhgsnatureYesYesNohgs.random_hunger_exploration
hgs.hunger_weighted_approach
hgs.hunger_weighted_retreat
Hunting Search AlgorithmhusswarmYesYesNohus.update
Hybrid Bat AlgorithmhbaswarmYesYesNohba.bat_frequency_movement
hba.de_local_search
Hybrid Grey Wolf - Whale Optimization Algorithmgwo_woaswarmYesNoNogwo_woa.selection
gwo_woa.elite_local_refinement
gwo_woa.leader_guided_population_update
Hybrid Improved Whale Optimization Algorithmhi_woaswarmYesNoNohi_woa.selection
hi_woa.elite_local_refinement
hi_woa.whale_position_update
Hybrid Self-Adaptive Bat AlgorithmhsabaswarmYesYesNohsaba.local_bat_random_walk
hsaba.velocity_bat_update
hsaba.differential_evolution_refinement
iLSHADE-RSPilshade_rspevolutionaryYesYesNoilshade_rsp.mutation
ilshade_rsp.crossover
ilshade_rsp.selection
ilshade_rsp.archive_update
ilshade_rsp.success_history_update
ilshade_rsp.population_reduction
ilshade_rsp.rank_selective_pressure
ilshade_rsp.weighted_pbest_scaling
ilshade_rsp.cauchy_target_perturbation
Imperialist Competitive AlgorithmicahumanYesYesNoica.assimilation
ica.imperialist_revolution
ica.colony_revolution
ica.intra_empire_competition
Improved Adaptive Grey Wolf OptimizationiagwoswarmYesNoNoiagwo.adaptive_alpha_beta_delta_update
Improved Artificial Ecosystem-based Optimizationimproved_aeonatureYesNoNoimproved_aeo.selection
improved_aeo.ecosystem_producer_consumer_update
improved_aeo.improved_decomposition_refinement
Improved Artificial Rabbits OptimizationiaroswarmYesNoNoiaro.improved_rabbit_global_update
iaro.elite_local_refinement
iaro.selection
Improved Grey Wolf Optimizeri_gwoswarmYesYesNoi_gwo.selection
i_gwo.alpha_guidance_trial
i_gwo.beta_guidance_trial
i_gwo.delta_guidance_trial
i_gwo.mean_leader_position_update
Improved Kepler Optimization AlgorithmikoaphysicsYesYesNoikoa.selection
ikoa.assignment_matching_position_update
ikoa.improved_matching_refinement_update
Improved L-SHADEilshadeevolutionaryYesYesNoilshade.current_to_pbest_mutation
ilshade.binomial_crossover
ilshade.greedy_selection
ilshade.external_archive_update
ilshade.success_history_update
ilshade.linear_population_size_reduction
ilshade.pbest_schedule
ilshade.fixed_memory_cell
ilshade.early_parameter_control
ilshade.midpoint_bound_repair
Improved Multi-Operator Differential EvolutionimodeevolutionaryYesYesNoimode.candidate_generation
imode.selection
imode.state_update
imode.initialization
imode.mutation
imode.crossover
Improved Opposite-based Learning Grey Wolf Optimizeriobl_gwoswarmYesNoNoiobl_gwo.selection
iobl_gwo.elite_local_refinement
iobl_gwo.leader_guided_population_update
Improved Queuing Search Algorithmimproved_qsahumanYesNoNoimproved_qsa.selection
improved_qsa.queue_business_one_update
improved_qsa.queue_business_two_refinement
Improved Teaching-Learning-based Optimizationimproved_tlohumanYesNoNoimproved_tlo.selection
improved_tlo.elite_local_refinement
improved_tlo.teacher_learner_population_update
Improved Whale Optimization Algorithmi_woaswarmYesYesNoi_woa.polynomial_breeding_refinement
Incremental model-based Grey Wolf Optimizerincremental_gwoswarmYesNoNoincremental_gwo.selection
incremental_gwo.elite_local_refinement
incremental_gwo.leader_guided_population_update
Invasive Weed OptimizationiwonatureYesYesNoiwo.seed_dispersal_colonization_update
IPOP-CMA-ESipop_cmaesevolutionaryYesYesYesipop_cmaes.initialization
ipop_cmaes.cmaes_sampling
ipop_cmaes.elite_recombination
ipop_cmaes.distribution_update
ipop_cmaes.population_restart
ipop_cmaes.boundary_penalty
ipop_cmaes.candidate_injection
Iterated Local SearchilstrajectoryNoYesYesils.update
Ivy AlgorithmivyanatureYesYesNoivya.neighbor_growth_update
ivya.best_growth_update
j2020j2020evolutionaryYesYesYesj2020.parameter_self_adaptation
j2020.big_population_mutation
j2020.small_population_mutation
j2020.binomial_crossover
j2020.bound_repair
j2020.crowding_replacement
j2020.greedy_selection
j2020.best_migration
j2020.big_population_restart
j2020.small_population_restart
j2020.candidate_injection
Jaya AlgorithmjymathYesYesNojy.best_away_from_worst_update
Jellyfish Search OptimizerjsoswarmYesYesNojso.ocean_current_swarm_motion_update
jSO Differential Evolutionjso_deevolutionaryYesYesNojso_de.mutation
jso_de.weighted_pbest_scaling
jso_de.crossover
jso_de.selection
jso_de.archive_update
jso_de.success_history_update
jso_de.population_reduction
jso_de.bound_resampling
Komodo Mlipir AlgorithmkmaswarmYesYesNokma.update
Krill Herd AlgorithmkhaswarmYesNoNokha.crossover
kha.diffusion
kha.mutation
kha.selection
kha.state_update
kha.induced_movement_update
L-SHADE (SHADE with Linear Population Size Reduction)lshadeevolutionaryYesYesNolshade.parameter_sampling
lshade.current_to_pbest_mutation
lshade.midpoint_bound_repair
lshade.binomial_crossover
lshade.greedy_selection
lshade.external_archive_update
lshade.success_history_update
lshade.linear_population_size_reduction
L-SRTDEl_srtdeevolutionaryYesNoNol_srtde.success_rate_f_adaptation
l_srtde.success_rate_pbest_control
l_srtde.rank_selective_pressure
l_srtde.r_new_to_ptop_mutation
l_srtde.binomial_crossover
l_srtde.bound_resampling
l_srtde.selection
l_srtde.newest_population_update
l_srtde.top_population_update
l_srtde.crossover_memory_update
l_srtde.linear_population_reduction
Leaf in Wind OptimizationliwophysicsYesYesNoliwo.breeze_spiral_translation
liwo.strong_wind_displacement
Life Choice-Based OptimizerlcohumanYesYesNolco.life_choice_boundary_reflection_update
Light Spectrum Optimizerlso_spectrumphysicsYesYesNolso_spectrum.light_spectrum_position_update
Linear Subspace Surrogate Modeling Evolutionary Algorithml2smeaevolutionaryYesYesNol2smea.lhs_initialization
l2smea.gaussian_subspace_construction
l2smea.linear_subspace_surrogate_fit
l2smea.multi_task_candidate_search
l2smea.bi_criteria_infill_selection
l2smea.expensive_evaluation_archive_update
l2smea.gaussian_parameter_update
Lion Optimization AlgorithmloaswarmYesYesNoloa.nomad_roaming_update
loa.pride_mating_recombination
loa.pride_leader_roaming_update
loa.nomad_roaming_update.mutation
loa.pride_mating_recombination.mutation
loa.pride_leader_roaming_update.mutation
loa.territorial_takeover_exchange
Liver Cancer AlgorithmlcanatureYesYesNolca.best_cell_replication
lca.peer_lateral_invasion
lca.angiogenesis_mutation
Love Evolution AlgorithmleahumanYesNoNolea.reflection_operation
lea.value_phase_reflection_operation
lea.value_phase_role_phase
LSHADE-cnEpSinlshade_cnepsinevolutionaryYesYesNolshade_cnepsin.cn_epsin_mutation_crossover_selection
LSHADE-EpSinlshade_epsinevolutionaryYesYesNolshade_epsin.mutation
lshade_epsin.crossover
lshade_epsin.selection
lshade_epsin.archive_update
lshade_epsin.success_history_update
lshade_epsin.population_reduction
lshade_epsin.sinusoidal_decreasing_f
lshade_epsin.sinusoidal_increasing_f
lshade_epsin.adaptive_frequency_update
lshade_epsin.lshade_second_phase_adaptation
lshade_epsin.gaussian_walk_local_search
lshade_epsin.bound_repair
LSHADE-RSPlshade_rspevolutionaryYesYesNolshade_rsp.mutation
lshade_rsp.weighted_pbest_scaling
lshade_rsp.crossover
lshade_rsp.selection
lshade_rsp.archive_update
lshade_rsp.success_history_update
lshade_rsp.population_reduction
lshade_rsp.rank_selective_pressure
lshade_rsp.bound_resampling
LSHADE-SPACMAlshade_spacmaevolutionaryYesYesNolshade_spacma.mutation
lshade_spacma.crossover
lshade_spacma.selection
lshade_spacma.archive_update
lshade_spacma.success_history_update
lshade_spacma.population_reduction
lshade_spacma.cma_es_sampling
lshade_spacma.cma_es_update
lshade_spacma.semi_parameter_adaptation
lshade_spacma.fcp_assignment
lshade_spacma.fcp_memory_update
lshade_spacma.lshade_branch
lshade_spacma.cma_branch
lshade_spacma.bound_repair
Lungs Performance-Based OptimizationlponatureYesYesNolpo.lichen_growth_propagation_update
Lyrebird Optimization Algorithmloa_lyrebirdswarmYesYesNoloa_lyrebird.better_bird_imitation_update
loa_lyrebird.escape_step_update
Lévy Flight and Selective Opposition Artificial Rabbit AlgorithmlaroswarmYesNoNolaro.candidate_search
laro.selection
laro.candidate_generation
laro.initialization
Lévy Flight DistributionlfddistributionYesYesNolfd.levy_flight_search
Lévy Flight Jaya Algorithmlevy_jadistributionYesNoNolevy_ja.candidate_search
levy_ja.selection
levy_ja.candidate_generation
levy_ja.initialization
Magnificent Frigatebird OptimizationmfoswarmYesNoNomfo.exploration_move
mfo.exploitation_move
mfo.replacement
Manta Ray Foraging OptimizationmrfoswarmYesYesNomrfo.chain_foraging
mrfo.cyclone_random_foraging
mrfo.cyclone_best_foraging
mrfo.somersault_foraging
Mantis Shrimp Optimization AlgorithmmshoaswarmYesYesNomshoa.smasher_attack_update
mshoa.spearer_circular_attack_update
mshoa.defense_position_update
Marine Predators AlgorithmmpaswarmYesYesNompa.brownian_exploration
mpa.brownian_transition
mpa.levy_transition
mpa.levy_exploitation
mpa.fads
Market Game Optimization Algorithmmgoa_markethumanYesYesNomgoa_market.market_gradient_position_update
Memetic Algorithmmemetic_aevolutionaryYesYesNomemetic_a.candidate_generation
memetic_a.selection
memetic_a.recombination
memetic_a.mutation
memetic_a.mutate
memetic_a.xhc
Mirage-Search OptimizermsophysicsYesYesNomso.superior_mirage_search_update
mso.inferior_mirage_search_update
mLSHADE-RL (Multi-operator Ensemble LSHADE with Restart and Local Search)mlshade_rlevolutionaryYesYesYesmlshade_rl.ms1_current_to_pbest_weight_archive
mlshade_rl.ms2_current_to_pbest_no_archive
mlshade_rl.ms3_current_to_ordpbest_weight
mlshade_rl.crossover
mlshade_rl.selection
mlshade_rl.strategy_probability_update
mlshade_rl.parameter_adaptation
mlshade_rl.archive_update
mlshade_rl.population_reduction
mlshade_rl.restart
mlshade_rl.local_search
Modified Artificial Ecosystem-Based Optimizationmodified_aeonatureYesNoNomodified_aeo.selection
modified_aeo.ecosystem_producer_consumer_update
modified_aeo.modified_decomposition_refinement
Modified Equilibrium Optimizermodified_eophysicsYesNoNomodified_eo.selection
modified_eo.modified_equilibrium_pool_update
modified_eo.modified_local_refinement
Monarch Butterfly OptimizationmboswarmYesYesNombo.monarch_migration_adjusting_update
Monkey King Evolution V1mkeevolutionaryYesYesNomke.king_learning_fluctuation_update
mke.peer_knowledge_difference_update
Moss Growth Optimizationmoss_gonatureYesYesNomoss_go.water_dispersal_growth_update
Most Valuable Player AlgorithmmvpahumanYesYesNomvpa.mvp_guided_player_update
Moth Flame AlgorithmmfaswarmYesYesNomfa.moth_flame_spiral_update
Moth Search Algorithmmsa_eswarmYesYesNomsa_e.golden_ratio_exploitation_update
Mountain Gazelle OptimizermgoswarmYesYesNomgo.territory_mountain_herding_update
Mountaineering Team-Based OptimizationmtbohumanYesNoNomtbo.team_leader_coordinated_movement
mtbo.avalanche_worst_avoidance
mtbo.team_mean_movement
mtbo.random_relocation_phase
mtbo.candidate_generation
mtbo.selection
Multi-Start Local SearchmslstrajectoryNoYesYesmsls.update
Multisurrogate-Assisted Ant Colony OptimizationmisacoswarmYesYesNomisaco.lhs_initialization
misaco.acomv_offspring_generation
misaco.rbf_fit_selection
misaco.lsbt_fit_selection
misaco.random_selection
misaco.sqp_rbf_local_search
misaco.expensive_candidate_evaluation
misaco.archive_update
Multi-Verse OptimizermvoswarmYesYesNomvo.candidate_generation
mvo.selection
mvo.exploitation_move
mvo.replacement
Multifactorial Evolutionary Algorithm ImfeaevolutionaryYesYesNomfea.unified_initialization
mfea.factorial_evaluation
mfea.factorial_rank_update
mfea.skill_factor_assignment
mfea.assortative_mating
mfea.intratask_sbx_crossover
mfea.intertask_sbx_transfer
mfea.parent_centric_gaussian_mutation
mfea.vertical_cultural_transmission
mfea.scalar_fitness_selection
mfea.elitist_replacement
mfea.boundary_repair
mfea.candidate_injection
Multifactorial Evolutionary Algorithm IImfea2evolutionaryYesYesNomfea2.unified_initialization
mfea2.skill_factor_assignment
mfea2.scalar_fitness_selection
mfea2.univariate_model_building
mfea2.online_rmp_matrix_learning
mfea2.intratask_sbx_crossover
mfea2.intertask_sbx_transfer
mfea2.parent_centric_polynomial_mutation
mfea2.elitist_scalar_replacement
mfea2.boundary_repair
mfea2.candidate_injection
Multiple Adaptation Differential Evolution (MadDE)maddeevolutionaryYesYesNomadde.parameter_sampling
madde.current_to_pbest_archive_mutation
madde.current_to_rand_archive_mutation
madde.weighted_rand_to_qbest_mutation
madde.midpoint_bound_repair
madde.binomial_crossover
madde.qbest_binomial_crossover
madde.greedy_selection
madde.external_archive_update
madde.success_history_update
madde.mutation_probability_adaptation
madde.linear_population_size_reduction
Multiple Trajectory SearchmtstrajectoryYesYesNomts.multiple_trajectory_local_search_update
Naked Mole-Rat AlgorithmnmraswarmYesYesNonmra.breeder_exploitation_update
nmra.worker_exploration_update
Narwhal OptimizernwoaswarmYesYesNonwoa.exploration_move
nwoa.exploitation_move
nwoa.replacement
Nelder-Mead MethodnmmtrajectoryYesYesNonmm.reflection_update
nmm.expansion_update
nmm.contraction_update
nmm.shrink_update
Neural Network-Based Dimensionality Reduction Evolutionary Algorithmnndrea_soevolutionaryYesYesNonndrea_so.nn_weight_de_stage
nndrea_so.solution_de_stage
New Caledonian Crow Learning AlgorithmncclaswarmYesNoNonccla.vertical_social_learning
nccla.horizontal_social_learning
nccla.individual_learning
nccla.juvenile_reinforcement
nccla.parent_reinforcement
nccla.parent_selection
Nizar Optimization AlgorithmnoamathYesYesNonoa.newton_position_update
NL-SHADE-LBCnlshade_lbcevolutionaryYesYesNonlshade_lbc.mutation
nlshade_lbc.crossover
nlshade_lbc.selection
nlshade_lbc.archive_update
nlshade_lbc.success_history_update
nlshade_lbc.population_reduction
nlshade_lbc.rank_selective_pressure
nlshade_lbc.linear_bias_change
nlshade_lbc.bound_resampling
nlshade_lbc.crossover_rate_sorting
NL-SHADE-RSP-Midpointnlshade_rsp_midpointevolutionaryYesYesYesnlshade_rsp_midpoint.mutation
nlshade_rsp_midpoint.crossover_binomial
nlshade_rsp_midpoint.crossover_exponential
nlshade_rsp_midpoint.crossover_rate_sorting
nlshade_rsp_midpoint.selection
nlshade_rsp_midpoint.archive_update
nlshade_rsp_midpoint.adaptive_archive_probability
nlshade_rsp_midpoint.success_history_update
nlshade_rsp_midpoint.nonlinear_population_reduction
nlshade_rsp_midpoint.rank_selective_pressure
nlshade_rsp_midpoint.bound_resampling
nlshade_rsp_midpoint.bound_random_repair_fallback
nlshade_rsp_midpoint.midpoint_evaluation
nlshade_rsp_midpoint.midpoint_replacement
nlshade_rsp_midpoint.kmeans_midpoint
nlshade_rsp_midpoint.midpoint_restart
nlshade_rsp_midpoint.bounds_restart
nlshade_rsp_midpoint.restart
NL-SHADE-RSPnlshade_rspevolutionaryYesYesNonlshade_rsp.mutation
nlshade_rsp.crossover_binomial
nlshade_rsp.crossover_exponential
nlshade_rsp.crossover_rate_sorting
nlshade_rsp.selection
nlshade_rsp.archive_update
nlshade_rsp.adaptive_archive_probability
nlshade_rsp.success_history_update
nlshade_rsp.nonlinear_population_reduction
nlshade_rsp.rank_selective_pressure
nlshade_rsp.bound_random_repair
NLAPSMjSO-EDAnlapsmjso_edaevolutionaryYesNoNonlapsmjso_eda.sampling
nlapsmjso_eda.selection
nlapsmjso_eda.state_update
nlapsmjso_eda.non_linear_population_analysis_update
Northern Goshawk OptimizationngoswarmYesYesNongo.phase_one_update
ngo.pursuit_exploitation_update
ngo.selection
Nuclear Reaction OptimizationnrophysicsYesYesNonro.nuclear_fission_update
nro.nuclear_fusion_update
nro.selection
Numeric Crunch AlgorithmncamathYesYesNonca.acceleration_hyperbolic_contraction_random_subset_components
Opposition-based Coral Reefs OptimizationocroevolutionaryYesNoNoocro.candidate_generation
ocro.selection
ocro.position_update
ocro.state_update
ocro.initialization
Opposition-based learning Grey Wolf OptimizerogwoswarmYesNoNoogwo.selection
ogwo.elite_local_refinement
ogwo.leader_guided_population_update
Optimal Foraging AlgorithmofaswarmYesYesNoofa.owl_neighbour_flight_update
Osprey Optimization AlgorithmooaswarmYesYesNoooa.hunting
ooa.search
ooa.selection
ooa.state_update
ooa.fish_carrying_local_update
Parameter-Free Bat AlgorithmplbaswarmYesYesNoplba.path_looping_bat_update
Parent-Centric Crossover (G3-PCX style)pcxevolutionaryYesYesNopcx.parent_centric_crossover_update
Pareto Sequential SamplingpssmathYesYesNopss.prominent_domain_sampling_update
pss.full_domain_sampling_update
pss.mixed_domain_sampling_update
Parrot Optimizerparrot_oswarmYesYesNoparrot_o.flight_area_search_update
Particle Swarm OptimizationpsoswarmYesYesNopso.inertia_velocity_update
pso.cognitive_memory_update
pso.social_global_update
Pathfinder AlgorithmpfaswarmYesYesNopfa.pathfinder_position_update
Pelican Optimization AlgorithmpoaswarmYesYesNopoa.prey_pursuit_update
poa.water_surface_winging_update
Philoponella prominens OptimizerpposwarmYesNoNoppo.escape_sexual_cannibalism_juvenile_generation
ppo.escape_predation_local_search
Physical Education Teacher Inspired OptimizationpetiohumanYesYesNopetio.performance_evaluation_teaching_update
Pied Kingfisher OptimizerpkoswarmYesYesNopko.diving_beating_rate_update
pko.crest_angle_foraging_update
pko.hovering_attack_update
pko.population_escape_update
Polar Fox Optimizationpfa_polar_foxswarmYesNoNopfa_polar_fox.exploitation
pfa_polar_fox.selection
pfa_polar_fox.state_update
pfa_polar_fox.experience_phase
pfa_polar_fox.leader_guided_refinement_update
pfa_polar_fox.leader_phase
Polar Lights OptimizerplophysicsYesYesNoplo.aurora_global_local_update
plo.polar_light_collision_update
Political Optimizerpolitical_ohumanYesYesNopolitical_o.candidate_generation
political_o.selection
political_o.parliamentary
Poor and Rich Optimization AlgorithmprohumanYesYesNopro.learning
pro.state_update
pro.candidate_generation
pro.selection
Population-Based Incremental LearningpbildistributionNoNoNopbil.update
Prairie Dog Optimization AlgorithmpdoswarmYesYesNopdo.prairie_dog_burrow_alarm_update
Puma Optimizerpuma_oswarmYesYesNopuma_o.update
Python Snake Optimization Algorithm (PySOA)pysoaswarmYesYesNopysoa.searching_for_prey
pysoa.attacking_prey
pysoa.random_agent_redirection
pysoa.sensory_scanning
pysoa.temperature_cooling
QLE Sine Cosine Algorithmqle_scamathYesNoNoqle_sca.candidate_generation
qle_sca.selection
qle_sca.learning
qle_sca.state_update
qle_sca.initialization
Quadratic Interpolation OptimizationqiomathYesYesNoqio.three_point_quadratic_interpolation
qio.two_point_reflection_interpolation
Queuing Search AlgorithmqsahumanYesYesNoqsa.business1
qsa.business2
qsa.business3
Rain-Cloud Condensation OptimizerrccophysicsYesNoNorcco.rain_cloud_convection_update
rcco.cloud_collision_local_update
rcco.selection
Random Forest Bayesian Optimizationrf_bomathNoNoNorf_bo.update
Random Searchrandom_strajectoryYesYesNorandom_s.random_sampling_update
Rat Swarm OptimizerrsoswarmYesYesNorso.long_chasing_update
rso.short_chasing_update
RDEx-SOPrdex_sopevolutionaryYesYesNordex_sop.standard_branch_mutation
rdex_sop.exploitation_biased_mutation
rdex_sop.binomial_crossover
rdex_sop.cauchy_local_perturbation
rdex_sop.greedy_selection
rdex_sop.dynamic_pbest_selection
rdex_sop.hybrid_rate_update
rdex_sop.success_history_update
rdex_sop.linear_population_reduction
rdex_sop.bound_resampling
Reconstructed Differential EvolutionrdeevolutionaryYesYesNorde.mutation_current_to_pbest
rde.mutation_current_to_order_pbest
rde.strategy_resource_allocation
rde.extended_rank_selective_pressure
rde.crossover
rde.cauchy_target_perturbation
rde.selection
rde.archive_update
rde.success_history_update
rde.linear_population_reduction
rde.bound_repair
Red-billed Blue Magpie OptimizerrbmoswarmYesYesNorbmo.update
Remora Optimization AlgorithmroaswarmYesYesNoroa.remora_attempt_update
Reptile Search AlgorithmrsaswarmYesYesNorsa.reptile_hunting_encircling_update
RIME-ice AlgorithmrimephysicsYesYesNorime.hard_rime_puncture_update
RMSProprmspropmathNoNoNormsprop.candidate_generation
rmsprop.selection
rmsprop.search_direction
rmsprop.step_acceptance
rmsprop.initialization
Rock Hyraxes Swarm OptimizationrhsoswarmYesYesNorhso.rhinoceros_herd_position_update
RRT-based OptimizerrrtoswarmYesNoNorrto.adaptive_step_size_wandering
rrto.absolute_difference_step
rrto.boundary_based_step
RUNge Kutta OptimizerrunmathYesYesNorun.selection
run.enhanced_solution_quality_update
run.runge_kutta_position_update
Rüppell's Fox OptimizerrfoswarmYesYesNorfo.red_fox_smell_search_update
Sailfish OptimizersfoswarmYesYesNosfo.behavioral_move
sfo.selection
Salp Swarm AlgorithmssaswarmYesYesNossa.leader_plus_food_guidance
ssa.leader_minus_food_guidance
ssa.follower_front_chain_update
ssa.follower_rear_chain_update
Sammon Mapping Assisted Differential Evolutionsade_sammonevolutionaryYesYesNosade_sammon.sammon_surrogate_de_selection_update
Sand Cat Swarm OptimizationscsoswarmYesYesNoscso.exploration_move
scso.replacement
scso.selection
scso.exploitation_move
scso.candidate_generation
Satin Bowerbird OptimizersboswarmYesYesNosbo.bowerbird_mutation_update
Sea Lion OptimizationsloswarmYesYesNoslo.best_encircling_update
slo.random_peer_encircling_update
slo.spiral_attack_update
Seagull Optimization AlgorithmsoaswarmYesYesNosoa.seagull_spiral_attack_update
Seahorse OptimizerseahoswarmYesYesNoseaho.candidate_generation
seaho.selection
seaho.recombination
Search And Rescue OptimizationsarohumanYesYesNosaro.candidate_generation
saro.selection
saro.individual
saro.candidate_search
saro.social
Search Space Independent Operator Based Deep Reinforcement Learningssio_rlevolutionaryYesYesNossio_rl.update
Secant Optimization Algorithmsecant_oamathYesYesNosecant_oa.secant_update
secant_oa.stochastic_exploitation
secant_oa.mutation_gate
secant_oa.selection
Secretary Bird Optimization AlgorithmsboaswarmYesYesNosboa.update
Self-Adaptive Bat AlgorithmsabaswarmYesYesNosaba.self_adaptive_bat_update
Self-Adaptive Differential EvolutionsadeevolutionaryYesNoNosade.selection
sade.adaptive_strategy_de_update
sade.elite_local_refinement
Self-Adaptive Differential EvolutionjdeevolutionaryYesYesNojde.de_trial
jde.f_self_adaptation_trial
jde.cr_self_adaptation_trial
jde.f_cr_self_adaptation_trial
Sequential Quadratic ProgrammingsqpmathNoNoNosqp.update
Serval Optimization Algorithmserval_oaswarmYesYesNoserval_oa.hunting
serval_oa.selection
serval_oa.state_update
Shuffle-based Runner-Root AlgorithmsrsrswarmYesYesNosrsr.exploration
srsr.selection
srsr.1_accumulation_new_positions_via_gaussian
Siberian Tiger OptimizationstoswarmYesYesNosto.prey_hunting_update
sto.range_reduction_update
Simple Optimization AlgorithmsoptdistributionYesYesNosopt.statistical_population_selection_update
Simulated AnnealingsatrajectoryNoYesYessa.update
Sine Cosine Algorithmsine_cosine_amathYesYesNosine_cosine_a.sine_position_update
sine_cosine_a.cosine_position_update
Singer Optimization Algorithmsinger_oahumanYesYesNosinger_oa.imitation_mimicry_phase
singer_oa.creation_perturbation_phase
Sinh Cosh OptimizerschomathYesYesNoscho.scholar_chess_position_update
Slime Mould AlgorithmsmanatureYesYesNosma.random_dispersion_update
sma.best_weighted_oscillation_update
sma.contracting_vibration_update
Snake Optimizerso_snakeswarmYesYesNoso_snake.male_snake_update
so_snake.female_snake_update
so_snake.selection
Snow Ablation Optimizersnow_oaphysicsYesYesNosnow_oa.exploration_group_update
snow_oa.development_group_update
Social Ski-Driver OptimizationssdohumanYesYesNossdo.sine_velocity_update
ssdo.cosine_velocity_update
Social Spider Algorithmsspider_aswarmYesYesNosspider_a.social_spider_vibration_update
Social Spider Swarm OptimizerssoswarmYesYesNosso.female_spider_position_update
sso.male_spider_position_update
Sparrow Search Algorithmsparrow_saswarmYesYesNosparrow_sa.producer_safe_foraging
sparrow_sa.producer_alarm_random_walk
sparrow_sa.scrounger_worst_avoidance
sparrow_sa.scrounger_best_following
sparrow_sa.awareness_best_escape
sparrow_sa.awareness_worst_escape
Spider Monkey OptimizationsmoswarmYesYesNosmo.local_leader_phase
smo.global_leader_phase
smo.local_leader_decision
Spotted Hyena Inspired OptimizershioswarmYesYesNoshio.first_iguana_guidance
shio.second_iguana_guidance
shio.third_iguana_guidance
Spotted Hyena OptimizershoswarmYesYesNosho.spotted_hyena_hunting_update
Squirrel Search Algorithmsquirrel_saswarmYesYesNosquirrel_sa.acorn_to_hickory_glide
squirrel_sa.normal_to_acorn_glide
squirrel_sa.normal_to_hickory_glide
squirrel_sa.predator_random_relocation
Starfish Optimization AlgorithmsfoaswarmYesYesNosfoa.foraging
sfoa.state_update
sfoa.exploitation_move
sfoa.replacement
sfoa.exploration
Steepest DescentsdmathNoNoNosd.candidate_generation
sd.selection
sd.search_direction
sd.step_acceptance
sd.initialization
Stellar Oscillator OptimizationsoophysicsYesYesNosoo.selection
soo.1_oscillatory_position
soo.2_top_3_average_oscillatory
Student Psychology Based OptimizationspbohumanYesYesNospbo.groups
spbo.selection
spbo.average_student_phase_update
spbo.best_student
spbo.excellent_student_phase_update
Success-History Adaptive Differential EvolutionshadeevolutionaryYesYesNoshade.success_history_mutation_crossover_selection
Success-History Intelligent Optimizershio_successswarmYesYesNoshio_success.best_history_guidance
shio_success.second_history_guidance
shio_success.third_history_guidance
Superb Fairy-wren Optimization Algorithmsuperb_foaswarmYesYesNosuperb_foa.global_smell_random_update
superb_foa.levy_food_attraction
superb_foa.best_food_convergence
Supply-Demand-Based Optimizationsupply_dohumanYesYesNosupply_do.quantity_equilibrium_update
supply_do.price_equilibrium_update
Surrogate-Assisted Cooperative Co-Evolutionary Algorithm of Minamo IIsacc_eam2evolutionaryYesYesNosacc_eam2.even_subcomponent_de_update
sacc_eam2.odd_subcomponent_de_update
Surrogate-Assisted Cooperative Swarm OptimizationsacososwarmYesYesNosacoso.cognitive_swarm_update
sacoso.social_swarm_update
Surrogate-Assisted DE with Adaptive Multi-Subspace Searchsade_amssevolutionaryYesYesNosade_amss.lhs_initialization
sade_amss.adaptive_strategy_switch
sade_amss.random_original_subspace_construction
sade_amss.pca_mapping_subspace_construction
sade_amss.cubic_rbf_fit_predict
sade_amss.de_best_1_binomial
sade_amss.bound_repair
sade_amss.exact_evaluation_archive_update
Surrogate-Assisted DE with Adaptive Training Data Selection Criterionsade_atdscevolutionaryYesYesNosade_atdsc.adaptive_trial_distribution_selection_update
Surrogate-Assisted Multiswarm OptimizationsamsoswarmYesYesNosamso.lhs_initialization
samso.rbf_model_fit
samso.rbf_optimum_infill
samso.s_swarm_pso_update
samso.l_swarm_tlbo_learner_update
samso.prescreen_exact_evaluation
samso.archive_update
Surrogate-Assisted Partial OptimizationsapoevolutionaryYesYesNosapo.lhs_initialization
sapo.partial_selection_f_g_to_g
sapo.partial_selection_g_to_f
sapo.de_rand_1_binomial
sapo.de_best_1_binomial
sapo.reflection_bound_repair
sapo.cubic_rbf_fit_predict
sapo.feasibility_rule_selection
sapo.expensive_evaluation_archive_update
Swarm Robotics Search And Rescuesrsr_roboticsswarmYesNoNosrsr_robotics.candidate_generation
srsr_robotics.selection
srsr_robotics.guidance
srsr_robotics.state_update
srsr_robotics.exploration
Symbiotic Organisms SearchsosswarmYesYesNosos.candidate_generation
sos.selection
sos.mutualism
sos.comensalism
sos.parasitism
Tabu SearchtstrajectoryNoNoNots.update
Tasmanian Devil OptimizationtdoswarmYesYesNotdo.exploration
tdo.state_update
tdo.hunting
tdo.exploitation
Teaching Learning Based OptimizationtlbohumanYesYesNotlbo.teacher_phase
tlbo.learner_phase
Teamwork Optimization AlgorithmtoahumanYesYesNotoa.stage_1_supervisor_guidance
toa.learning
toa.state_update
toa.candidate_generation
toa.selection
Termite Life Cycle OptimizertlcoswarmYesYesNotlco.teacher_phase_update
tlco.learner_phase_update
tlco.selection
Tianji Horse Racing OptimizerthrohumanYesYesNothro.initialization
thro.competition_scenario_1_slowest_vs_slowest
thro.competition_scenario_2_slowest_vs_fastest
thro.competition_scenario_3_fastest_vs_fastest
thro.competition_scenario_4_slowest_vs_fastest
thro.competition_scenario_5_tie_slowest_vs_fastest
thro.training_random_peer_difference
thro.training_fastest_guidance
thro.greedy_selection
thro.random_bound_repair
thro.candidate_injection
Tornado Optimizer with Coriolis ForcetocphysicsYesYesNotoc.fitness_proportional_assignment
toc.coriolis_velocity_update
toc.windstorm_to_tornado_evolution
toc.windstorm_to_thunderstorm_evolution
toc.thunderstorm_to_tornado_evolution
toc.random_windstorm_formation
toc.role_exchange_replacement
Tree Physiology OptimizationtponatureYesYesNotpo.carbon_nutrient_leaf_update
Tree-Seed Algorithmtree_seed_anatureYesNoNotree_seed_a.toward_best_seed
tree_seed_a.away_random_seed
Triangulation Topology Aggregation OptimizerttaomathYesYesNottao.crossover
ttao.selection
ttao.state_update
ttao.extra_candidate_diversification_update
ttao.random_population_refresh_update
Tug of War OptimizationtwophysicsYesYesNotwo.tug_of_war_weight_force_update
Tuna Swarm OptimizationtsoswarmYesYesNotso.leader_spiral_update
tso.random_migration_update
tso.spiral_following_update
tso.parabolic_foraging_update
Tunicate Swarm AlgorithmtsaswarmYesYesNotsa.toward_best_tunicate_update
tsa.away_best_tunicate_update
tsa.swarm_chain_averaging_update
Turbulent Flow of Water-based OptimizationtfwophysicsYesNoNotfwo.effect_of_objects
tfwo.random_object_relocation
tfwo.effect_of_whirlpools
tfwo.best_whirlpool_preservation
tfwo.object_whirlpool_exchange
tfwo.state_structure_update
Variable Neighborhood SearchvnstrajectoryNoYesYesvns.update
Virus Colony SearchvcsswarmYesYesNovcs.virus_diffusion
vcs.host_cell_infection
vcs.immune_response
Walrus Optimization AlgorithmwaoaswarmYesYesNowaoa.feeding_exploration_update
waoa.range_narrowing_exploitation
War Strategy OptimizationwarsohumanYesYesNowarso.attack_strategy_update
warso.defense_strategy_update
Water Cycle AlgorithmwcanatureYesYesNowca.stream_toward_river
wca.stream_river_exchange
wca.river_toward_sea
wca.evaporation_raining
Water Uptake and Transport in PlantswutpnatureYesYesNowutp.horizontal_water_transport_update
Wave Optimization Algorithmwo_wavephysicsYesYesNowo_wave.wave_propagation_position_update
Wavelet Mutation and Quadratic Interpolation MRFOwmqimrfoswarmYesNoNowmqimrfo.selection
wmqimrfo.elite_local_refinement
wmqimrfo.weighted_multi_quadratic_mrfo_update
Weighting and Inertia Random Walk OptimizerinfomathYesYesNoinfo.best_weighted_mean_rule
info.random_weighted_mean_rule
Whale Fruit-fly Optimization Algorithmwhale_foaswarmYesNoNowhale_foa.selection
whale_foa.elite_local_refinement
whale_foa.whale_position_update
Whale Optimization AlgorithmwoaswarmYesYesNowoa.search_for_prey
woa.encircling_prey
woa.spiral_bubble_net
White Shark OptimizerwsoswarmYesYesNowso.white_shark_swarm_position_update
Wildebeest Herd OptimizationwhoswarmYesYesNowho.selection
who.1_local_movement_milling
who.2_herd_instinct
who.social_memory
Wind Driven OptimizationwdophysicsYesYesNowdo.wind_velocity_position_update
Wolverine Optimization AlgorithmwooaswarmYesYesNowooa.scavenging_predator_following
wooa.prey_attack_update
wooa.fight_chase_local_update
Young's Double-Slit Experiment OptimizerydsephysicsYesYesNoydse.central_bright_fringe_update
ydse.bright_fringe_interference_update
ydse.dark_fringe_interference_update
Yukthi OpusyotrajectoryYesNoNoyo.mcmc_burn_in
yo.post_burnin_selection
yo.mcmc_proposal
yo.greedy_refinement
yo.simulated_annealing_acceptance
yo.blacklist_filter
yo.adaptive_reheating
yo.elite_update
Zebra Optimization AlgorithmzoaswarmYesYesNozoa.behavioral_move
zoa.selection
zoa.candidate_generation


4. Test Functions

Back to Summary

The graph module can be used with the built-in benchmark functions or with any user-defined scalar objective function that follows the same interface f(x) -> float. The unified plotting function automatically adapts the visualization to the number of variables:

**1D**: Line Plot                                  (1  Variable, `plot_function_1d`)
**2D**: Contour Map and Heatmap                    (2  Variables,`plot_function_2d`)
**3D**: Interactive Surface Plot                   (2  Variables,`plot_function_3d`)
**ND**: Parallel-coordinates Plot & PCA Projection (3+ Variables,`plot_function_nd`)

import pymetaheuristic

rastrigin = pymetaheuristic.get_test_function("rastrigin")

# Plot
pymetaheuristic.plot_function_3d(
								  rastrigin,
                                  min_values = (-5.12, -5.12),
                                  max_values = ( 5.12,  5.12),
                                  solutions  = ([   0,    0]),
								  title      = "Rastrigin",
								  filepath   = "out.html",  # also supports .png / .svg / .pdf  
							    )

The table below summarizes the benchmark functions currently available in the library. The Function column reports the conventional function name, ID gives the callable identifier used in the codebase (when importing from pymetaheuristic.src.test_functions), Domain and Global Minimum describes, when applicable, the corresponding decision vector, and the known global optimum in terms of objective value.

Benchmark Function Optima

All functions below use the minimization convention.

Notation

SymbolMeaning
DNumber of decision variables.
x*Global minimizer.
f*Global minimum value.
0DD-dimensional vector of zeros.
1DD-dimensional vector of ones.

2-Dimensional Functions

FunctionIDDomainGlobal Minimum
Ackleyackley[-32.768, 32.768]2f(x1, x2) = 0; (x1, x2) = (0, 0)
Bealebeale[-4.5, 4.5]2f(x1, x2) = 0; (x1, x2) = (3, 0.5)
Bohachevsky F1bohachevsky_1[-100, 100]2f(x1, x2) = 0; (x1, x2) = (0, 0)
Bohachevsky F2bohachevsky_2[-100, 100]2f(x1, x2) = 0; (x1, x2) = (0, 0)
Bohachevsky F3bohachevsky_3[-100, 100]2f(x1, x2) = 0; (x1, x2) = (0, 0)
Boothbooth[-10, 10]2f(x1, x2) = 0; (x1, x2) = (1, 3)
Branin RCOSbranin_rcosx1 ∈ [-5, 10], x2 ∈ [0, 15]f(x1, x2) = 0.3978873577; (x1, x2) = (-π, 12.275); (π, 2.275); (3π, 2.475)
Bukin F6bukin_6x1 ∈ [-15, -5], x2 ∈ [-3, 3]f(x1, x2) = 0; (x1, x2) = (-10, 1)
Cross-in-Traycross_in_tray[-10, 10]2f(x1, x2) ≈ -2.0626118708; (x1, x2) = (±1.349406609, ±1.349406609)
Drop-Wavedrop_wave[-5.12, 5.12]2f(x1, x2) = -1; (x1, x2) = (0, 0)
Easomeasom[-100, 100]2f(x1, x2) = -1; (x1, x2) = (π, π)
Eggholdereggholder[-512, 512]2f(x1, x2) ≈ -959.6407; (x1, x2) ≈ (512, 404.2319)
Goldstein-Pricegoldstein_price[-2, 2]2f(x1, x2) = 3; (x1, x2) = (0, -1)
Himmelblauhimmelblau[-5, 5]2f(x1, x2) = 0; (x1, x2) = (3, 2); (-2.805118, 3.131312); (-3.779310, -3.283186); (3.584428, -1.848126)
Hölder Tableholder_table[-10, 10]2f(x1, x2) ≈ -19.208502568; (x1, x2) = (±8.055023472, ±9.664590029)
Levi F13levi_13[-10, 10]2f(x1, x2) = 0; (x1, x2) = (1, 1)
Matyasmatyas[-10, 10]2f(x1, x2) = 0; (x1, x2) = (0, 0)
McCormickmccormickx1 ∈ [-1.5, 4], x2 ∈ [-3, 4]f(x1, x2) ≈ -1.913222955; (x1, x2) ≈ (-0.54719756, -1.54719756)
Schaffer F2schaffer_2[-100, 100]2f(x1, x2) = 0; (x1, x2) = (0, 0)
Schaffer F4schaffer_4[-100, 100]2f(x1, x2) ≈ 0.292578632; (x1, x2) = (0, ±1.25313), (±1.25313, 0)
Schaffer F6schaffer_6[-100, 100]2f(x1, x2) = 0; (x1, x2) = (0, 0)
Six-Hump Camel Backsix_hump_camel_backx1 ∈ [-3, 3], x2 ∈ [-2, 2]f(x1, x2) ≈ -1.031628453; (x1, x2) = (0.089842, -0.712656); (-0.089842, 0.712656)
Three-Hump Camel Backthree_hump_camel_back[-5, 5]2f(x1, x2) = 0; (x1, x2) = (0, 0)

D-Dimensional Functions

FunctionIDDomainGlobal Minimum
Alpine 1alpine_1[-10, 10]Df(x) = 0; xi = 0, i = 1, ..., D
Alpine 2alpine_2[0, 10]Df(x) ≈ -(2.808131180)D; xi ≈ 7.917052698 [N1]
Axis Parallel Hyper-Ellipsoidaxis_parallel_hyper_ellipsoid[-5.12, 5.12]Df(x) = 0; xi = 0, i = 1, ..., D
Bent Cigarbent_cigar[-100, 100]Df(x) = 0; x = 0D
Chung-Reynoldschung_reynolds[-100, 100]Df(x) = 0; x = 0D
Cosine Mixturecosine_mixture[-1, 1]Df(x) = -0.1D; x = 0D [N1]
Csendescsendes[-1, 1]Df(x) = 0; x = 0D
De Jong F1 / Spherede_jong_1[-5.12, 5.12]Df(x) = 0; x = 0D
Discusdiscus[-100, 100]Df(x) = 0; x = 0D
Dixon-Pricedixon_price[-10, 10]Df(x) = 0; xi = 2-((2i - 2) / 2i), i = 1, ..., D
Ellipticelliptic[-100, 100]Df(x) = 0; x = 0D
Expanded Griewank plus Rosenbrockexpanded_griewank_plus_rosenbrock[-5, 5]Df(x) = 0; x = 1D
Griewankgriewangk_8[-600, 600]Df(x) = 0; x = 0D
Happy Cathappy_cat[-100, 100]Df(x) = 0; x = -1D
HGBathgbat[-100, 100]Df(x) = 0; x = -1D
Katsuurakatsuura[-100, 100]Df(x) = 0; x = 0D [N2]
Levylevy[-10, 10]Df(x) = 0; x = 1D
Michalewiczmichalewicz[0, π]DDimension- and m-dependent [N3]
Modified Schwefelmodified_schwefel[-100, 100]Df(x) = 0; x = 0D [N4]
Perm 0,d,betaperm[-D, D]Df(x) = 0; xi = 1 / i, i = 1, ..., D
Pinterpinter[-10, 10]Df(x) = 0; x = 0D
Powellpowell[-4, 5]Df(x) = 0; x = 0D [N5]
Qingqing[-500, 500]Df(x) = 0; xi = ±√i, i = 1, ..., D
Quinticquintic[-10, 10]Df(x) = 0; each xi ∈ {-1, 2}
Rastriginrastrigin[-5.12, 5.12]Df(x) = 0; x = 0D
Ridgeridge[-100, 100]Df(x) = 0; x = 0D [N6]
Rosenbrock Valleyrosenbrocks_valley[-5, 10]Df(x) = 0; x = 1D
Salomonsalomon[-100, 100]Df(x) = 0; x = 0D
Schumer-Steiglitzschumer_steiglitz[-100, 100]Df(x) = 0; x = 0D
Schwefelschwefel[-500, 500]Df(x) = 0; xi ≈ 420.968746228, i = 1, ..., D
Schwefel 2.21schwefel_221[-100, 100]Df(x) = 0; x = 0D
Schwefel 2.22schwefel_222[-100, 100]Df(x) = 0; x = 0D
Sphere 2 / Sum of Different Powerssphere_2[-1, 1]Df(x) = 0; x = 0D
Sphere 3 / Rotated Hyper-Ellipsoidsphere_3[-65.536, 65.536]Df(x) = 0; x = 0D
Stepstep[-100, 100]Df(x) = 0; abs(xi) < 1 [N7]
Step 2step_2[-100, 100]Df(x) = 0; -0.5 ≤ xi < 0.5 [N7]
Step 3step_3[-100, 100]Df(x) = 0; abs(xi) < 1 [N7]
Stepintstepint[-5.12, 5.12]Df(x) = 25 - 6D; xi ∈ [-5.12, -5) [N8]
Styblinski-Tangstyblinski_tang[-5, 5]Df(x) ≈ -39.166165704D; xi ≈ -2.903534028
Tridtrid[-D2, D2]Df(x) = -D(D + 4)(D - 1) / 6; xi = i(D + 1 - i)
Weierstrassweierstrass[-0.5, 0.5]Df(x) = 0; x = 0D
Whitleywhitley[-10.24, 10.24]Df(x) = 0; x = 1D
Zakharovzakharov[-5, 10]Df(x) = 0; x = 0D

CEC 2022 Functions

FunctionIDDomainGlobal Minimum
CEC 2022 F1cec_2022_f01[-100, 100]D, D = 2, 10, 20f(x) = 300
CEC 2022 F2cec_2022_f02[-100, 100]D, D = 2, 10, 20f(x) = 400
CEC 2022 F3cec_2022_f03[-100, 100]D, D = 2, 10, 20f(x) = 600
CEC 2022 F4cec_2022_f04[-100, 100]D, D = 2, 10, 20f(x) = 800
CEC 2022 F5cec_2022_f05[-100, 100]D, D = 2, 10, 20f(x) = 900
CEC 2022 F6cec_2022_f06[-100, 100]D, D = 10, 20f(x) = 1800
CEC 2022 F7cec_2022_f07[-100, 100]D, D = 10, 20f(x) = 2000
CEC 2022 F8cec_2022_f08[-100, 100]D, D = 10, 20f(x) = 2200
CEC 2022 F9cec_2022_f09[-100, 100]D, D = 2, 10, 20f(x) = 2300
CEC 2022 F10cec_2022_f10[-100, 100]D, D = 2, 10, 20f(x) = 2400
CEC 2022 F11cec_2022_f11[-100, 100]D, D = 2, 10, 20f(x) = 2600
CEC 2022 F12cec_2022_f12[-100, 100]D, D = 2, 10, 20f(x) = 2700

BBOB Functions

The 24 noiseless BBOB functions are deterministic instance-based benchmarks. Use get_bbob_function(function_id, dimension, instance) to retrieve a callable function and get_bbob_optimum(function_id, dimension, instance) to retrieve the corresponding shifted optimizer and optimum value.

FunctionIDDomainGlobal Minimum
BBOB F01: Spherebbob_f01[-5, 5]D, D ≥ 2get_bbob_optimum(1, dimension, instance)
BBOB F02: Ellipsoidalbbob_f02[-5, 5]D, D ≥ 2get_bbob_optimum(2, dimension, instance)
BBOB F03: Rastriginbbob_f03[-5, 5]D, D ≥ 2get_bbob_optimum(3, dimension, instance)
BBOB F04: Bueche-Rastriginbbob_f04[-5, 5]D, D ≥ 2get_bbob_optimum(4, dimension, instance)
BBOB F05: Linear Slopebbob_f05[-5, 5]D, D ≥ 2get_bbob_optimum(5, dimension, instance)
BBOB F06: Attractive Sectorbbob_f06[-5, 5]D, D ≥ 2get_bbob_optimum(6, dimension, instance)
BBOB F07: Step Ellipsoidalbbob_f07[-5, 5]D, D ≥ 2get_bbob_optimum(7, dimension, instance)
BBOB F08: Rosenbrockbbob_f08[-5, 5]D, D ≥ 2get_bbob_optimum(8, dimension, instance)
BBOB F09: Rosenbrock Rotatedbbob_f09[-5, 5]D, D ≥ 2get_bbob_optimum(9, dimension, instance)
BBOB F10: Ellipsoidal Rotatedbbob_f10[-5, 5]D, D ≥ 2get_bbob_optimum(10, dimension, instance)
BBOB F11: Discusbbob_f11[-5, 5]D, D ≥ 2get_bbob_optimum(11, dimension, instance)
BBOB F12: Bent Cigarbbob_f12[-5, 5]D, D ≥ 2get_bbob_optimum(12, dimension, instance)
BBOB F13: Sharp Ridgebbob_f13[-5, 5]D, D ≥ 2get_bbob_optimum(13, dimension, instance)
BBOB F14: Different Powersbbob_f14[-5, 5]D, D ≥ 2get_bbob_optimum(14, dimension, instance)
BBOB F15: Rastrigin Rotatedbbob_f15[-5, 5]D, D ≥ 2get_bbob_optimum(15, dimension, instance)
BBOB F16: Weierstrassbbob_f16[-5, 5]D, D ≥ 2get_bbob_optimum(16, dimension, instance)
BBOB F17: Schaffers F7, condition 10bbob_f17[-5, 5]D, D ≥ 2get_bbob_optimum(17, dimension, instance)
BBOB F18: Schaffers F7, condition 1000bbob_f18[-5, 5]D, D ≥ 2get_bbob_optimum(18, dimension, instance)
BBOB F19: Griewank-Rosenbrockbbob_f19[-5, 5]D, D ≥ 2get_bbob_optimum(19, dimension, instance)
BBOB F20: Schwefelbbob_f20[-5, 5]D, D ≥ 2get_bbob_optimum(20, dimension, instance)
BBOB F21: Gallagher 101 Peaksbbob_f21[-5, 5]D, D ≥ 2get_bbob_optimum(21, dimension, instance)
BBOB F22: Gallagher 21 Peaksbbob_f22[-5, 5]D, D ≥ 2get_bbob_optimum(22, dimension, instance)
BBOB F23: Katsuurabbob_f23[-5, 5]D, D ≥ 2get_bbob_optimum(23, dimension, instance)
BBOB F24: Lunacek bi-Rastriginbbob_f24[-5, 5]D, D ≥ 2get_bbob_optimum(24, dimension, instance)

Engineering Design Benchmarks

Engineering benchmarks expose an objective function, along with bounds and constraints. Use get_engineering_benchmark("<id>") to retrieve objective, constraints, min_values, max_values, and best-known metadata. Constraint functions follow the package convention g(x) ≤ 0. [N9]

FunctionIDDomainGlobal MinimumConstraints
Cantilever beam designcantilever_beamxi ∈ [0.01, 100], i = 1, ..., 5f(x) ≈ 1.339956; x ≈ (6.016016, 5.309173, 4.494330, 3.501475, 2.152665)1 inequality
Gear train designgear_traininteger xi ∈ [12, 60], i = 1, ..., 4f(x) ≈ 2.700857 × 10-12; x = (16, 19, 43, 49) [N10]box + integrality
Pressure vessel design, continuous relaxationpressure_vesselTs, Th ∈ [0, 99], R ∈ [10, 200], L ∈ [10, 240]f(x) ≈ 5804.376217; (Ts, Th, R, L) ≈ (0.727591, 0.359649, 37.699012, 240) [N11]4 inequalities
Pressure vessel design, discrete thicknesspressure_vessel_discreteTs, Th rounded upward to multiples of 1/16; R ∈ [10, 200], L ∈ [10, 240]f(x) ≈ 6059.714335; (Ts, Th, R, L) ≈ (0.8125, 0.4375, 42.098446, 176.636596) [N11]4 inequalities
Speed reducer designspeed_reducer7 bounded design variablesf(x) ≈ 2994.471066; x ≈ (3.5, 0.7, 17, 7.3, 7.71532, 3.35021, 5.28665)11 inequalities
Tension/compression spring designtension_springd ∈ [0.05, 2], D ∈ [0.25, 1.30], N ∈ [2, 15]f(x) ≈ 0.012665; (d, D, N) ≈ (0.05169, 0.35675, 11.2871)4 inequalities
Three-bar truss designthree_bar_trussA1, A2 ∈ [0, 1]f(x) ≈ 263.895843; (A1, A2) ≈ (0.788675, 0.408248)3 inequalities
Welded beam designwelded_beamh ∈ [0.1, 2], l ∈ [0.1, 10], t ∈ [0.1, 10], b ∈ [0.1, 2]f(x) ≈ 1.724852; (h, l, t, b) ≈ (0.20573, 3.47049, 9.03662, 0.20573)7 inequalities

Notes

Note Meaning
N1 Alpine 2 and Cosine Mixture have sign-convention traps in the literature. This package uses minimization-compatible signs.
N2 Katsuura is implemented as the product expression minus 1, so the exposed minimum is 0 at the origin.
N3 Michalewicz has no single dimension-free closed-form optimum. For m = 10, common reference values are approximately:
D = 2, f* = −1.8013;
D = 5, f* = −4.6877;
D = 10, f* = −9.6602.
N4 Modified Schwefel is exposed in shifted CEC-style coordinates, so the visible optimizer is 0D.
N5 Powell requires D to be a multiple of 4.
N6 This is the cumulative ridge implementation, not the BBOB sharp-ridge function.
N7 Step functions have optimizer intervals, not isolated optimizer points.
N8 Stepint is bound-dependent. With bounds [−5.12, 5.12]D, f* = 25 − 6D; without bounds, it is unbounded below.
N9 Engineering-design rows are constrained benchmarks. The Python module exposes get_engineering_benchmark(id), so users can pass the returned objective, bounds, and constraints directly to pymetaheuristic.optimize.
N10 Gear train is a discrete integer benchmark. The implementation rounds variables to the nearest integer tooth counts by default.
N11 Pressure vessel has two common variants. pressure_vessel is the continuous relaxation; pressure_vessel_discrete rounds shell/head thickness upward to multiples of 1/16 before objective and constraint evaluation.

5. Other Libraries

Back to Summary

Acknowledgement

This section is dedicated to everyone who helped improve or correct the code. Thank you very much!