A comprehensive Python library for metaheuristic optimization, numeric methods, and NP-hard problem solving with powerful visualization capabilities.
Whether you're optimizing complex functions, solving combinatorial problems, or researching metaheuristic algorithms, ANMetaL provides battle-tested implementations with beautiful visualizations.
ANMetaL now includes powerful visualization capabilities that create animated videos of metaheuristic optimization processes!
- 12 Population-based Algorithms: ABC, ACO, AFSA, Bat, Black Hole, Cuckoo, Firefly, Harmony Search, PSO, Greedy, and more
- 2D & 3D Plotting: Watch particles move in 2D space or explore 3D fitness landscapes
- Automatic Video Generation: Creates smooth MP4 animations with customizable frame rates
- Multiple Test Functions: Visualize optimization on various benchmark problems
- Genetic Algorithm Visualization: Track evolution on categorical problems like Knapsack and Sudoku
Quick Start Visualization:
anmetal mh_graph_each_it --mh Firefly --problem Goldsteinprice --iterations 20 --plottype 3d --fps 30For complete documentation of all visualization commands and options, see the CLI Documentation section below.
Population-Based Algorithms (for continuous/real-valued problems):
- 🐝 ABC - Artificial Bee Colony
- 🐜 ACO - Ant Colony Optimization
- 🐟 AFSA - Artificial Fish Swarm Algorithm
- 🦇 Bat Algorithm - Echolocation-based optimization
- ⚫ Black Hole Algorithm - Gravitational search
- 🐦 Cuckoo Search - Lévy flight optimization
- 🔥 Firefly Algorithm - Bio-luminescence inspired
- 🎵 Harmony Search - Music-inspired optimization
- 🌊 PSO - Particle Swarm Optimization (with Leap variant)
- 🎯 Greedy Search (with Leap variant)
Evolutionary Algorithms (for categorical/discrete problems):
- 🧬 Genetic Algorithm - Evolution-inspired optimization (with Leap variant)
NP-Hard Problems:
- 🎒 Knapsack Problem - Classic combinatorial optimization
- 🔢 Sudoku Solver - Constraint satisfaction (standard & optimized)
- ⚖️ Partition Problem - Subset partitioning
- ➕ Subset Sum Problem - Target sum finding
Benchmark Functions (20+ optimization test functions):
- 2D Functions: Camelback, Goldstein-Price, Shubert variants, Quartic
- N-Dimensional: Sphere, Rosenbrock, Rastrigin, Griewank, Schwefel, and more
- 1D Functions: F1, F3 test functions
Single-Solution Iterative Methods:
- Newton Method
- Euler Method
Binary Optimization Utilities:
- 9 binarization functions (sShape1-4, vShape1-4, erf)
- 4 binarization strategies (standard, complement, static_probability, elitist)
- 2D and 3D plotting
- Multiple category visualization types (character, color, icon, number, value)
- Trajectory tracking and convergence analysis
- Automated video generation
- Customizable frame rates and plot styles
To install the core library:
pip install anmetalFor visualization and animation features, install with development dependencies:
pip install anmetal[test]
# or for development
pip install -e .[dev]Required dependencies for visualization:
matplotlib(plotting)opencv-python(video generation)numpy(numerical operations)
ANMetaL provides a powerful CLI for running optimizations and creating visualizations. All commands follow the pattern:
anmetal <command> [arguments]Available commands:
mh_graph_each_it- Create animated visualizations of metaheuristic optimizationgenetic_categorical_plot- Visualize genetic algorithm on categorical problemstrajectory_plot_npcomp- Plot trajectories for NP-complete problemsnonlinear_mh_optimization- Run metaheuristics on nonlinear functionsbasic_mh_optimization_npcomp- Run metaheuristics on NP-hard problemsbasic_math_it_optimization- Test iterative optimization methodscategorical_mh_optimization- Run genetic algorithms on categorical problems
See /pytests folder for additional examples of programmatic use.
# Example with Partition Problem
from anmetal.problems.nphard_real import Partition_Real
from anmetal.optimizer.population.PSO.PSOMH_Real import PSOMH_Real
# Create problem instance
problem = Partition_Real(seed=0, num_dims=200)
# Create and run metaheuristic
mh = PSOMH_Real(problem.min_x, problem.max_x, problem.ndim, False,
problem.objective_function, problem.repair_function,
problem.preprocess_function)
# Run optimization
fitness, solution = mh.run(verbose=True, iterations=100, population=30,
omega=0.8, phi_g=1, phi_p=0.5, seed=115)# Run from command line for visualization
anmetal mh_graph_each_it --mh PSO --problem Goldsteinprice --iterations 50 --plottype 3d
# This creates:
# - Individual iteration images
# - MP4 animation video
# - Real-time optimization visualizationFor more detailed command-line options, see the Command Line Interface section.
- Newton Method - Root finding and optimization
- Euler Method - Numerical differential equation solving
| Algorithm | Description | Variants |
|---|---|---|
| ABC | Artificial Bee Colony | Standard |
| ACO | Ant Colony Optimization | Standard |
| AFSA | Artificial Fish Swarm Algorithm | Standard |
| Bat | Bat Algorithm | Standard |
| Black Hole | Black Hole Algorithm | Standard |
| Cuckoo | Cuckoo Search | Standard |
| Firefly | Firefly Algorithm | Standard |
| Harmony Search | Harmony Search | Standard |
| PSO | Particle Swarm Optimization | Standard, With Leap |
| Greedy | Greedy Search | Standard, With Leap |
| Algorithm | Description | Variants |
|---|---|---|
| Genetic Algorithm | Evolution-based optimization | Standard, With Leap |
Real-Valued:
- Partition Problem - Divide set into equal-sum subsets
- Subset Sum Problem - Find subset with target sum
Categorical:
- Knapsack Problem - Maximize value within weight constraint
- Sudoku - Fill 9×9 grid with constraints (standard & optimized versions)
1-Dimensional Functions:
- F1, F3 (Ref)
2-Dimensional Functions:
- Camelback, Goldstein-Price, Pshubert1, Pshubert2, Shubert, Quartic (Ref)
N-Dimensional Functions:
- Brown1, Brown3, F10n, F15n (Ref)
- Sphere, Rosenbrock, Griewank, Rastrigin, Sumsquares, Michalewicz, Quartic, Schwefel, Penalty (Ref)
Transform continuous values to binary for discrete optimization:
- S-Shape family: sShape1, sShape2, sShape3, sShape4
- V-Shape family: vShape1, vShape2, vShape3, vShape4
- Error function: erf
Methods for applying binarization in optimization:
- standard - Basic threshold-based conversion
- complement - Inverted threshold
- static_probability - Fixed probability approach
- elitist - Elite-preserving conversion
Creates animated visualizations of population-based metaheuristic optimization processes with 2D or 3D plots.
Basic Usage:
anmetal mh_graph_each_it --mh <algorithm> --problem <function> [options]Common Arguments:
--folder <path>- Output folder for plots and videos (default:mh_graphs)--seed <int>- Random seed for reproducibility (default: 0)--mh <algorithm>- Algorithm to use (required)- Options:
AFSA,PSO,PSOWL,Greed,GreedWL,ABC,ACO,Bat,Blackhole,Cuckoo,Firefly,Harmony
- Options:
--problem <function>- Test function (required)- Options:
Camelback,Goldsteinprice,Pshubert1,Pshubert2,Shubert,Quartic
- Options:
--verbose <0|1>- Print optimization logs (default: 1)--iterations <int>- Number of iterations (default: 100)--population <int>- Population size (default: 30)--plottype <2d|3d>- Plot type (default:2d)--traces <all|none|smooth>- Trace visualization mode (default:none)--fps <int>- Video frame rate (default: 10)
Algorithm-Specific Parameters:
AFSA (Artificial Fish Swarm Algorithm):
--parameter-afsa-visualdistancepercentage <float> # Visual distance (default: 0.2)
--parameter-afsa-velocitypercentage <float> # Velocity (default: 0.3)
--parameter-afsa-npointstochoose <int> # Points to choose (default: 5)
--parameter-afsa-crowdedpercentage <float> # Crowded threshold (default: 0.8)
--parameter-afsa-itsstagnation <int> # Stagnation iterations (default: 7)
--parameter-afsa-leappercentage <float> # Leap distance (default: 0.2)
--parameter-afsa-stagnationvariation <float> # Variation threshold (default: 0.4)PSO (Particle Swarm Optimization):
--parameter-pso-omega <float> # Inertia weight (default: 0.5)
--parameter-pso-phig <float> # Global coefficient (default: 1.0)
--parameter-pso-phip <float> # Personal coefficient (default: 2.0)PSOWL (PSO with Leap):
--parameter-psowl-omega <float> # Inertia weight (default: 0.5)
--parameter-psowl-phig <float> # Global coefficient (default: 1.0)
--parameter-psowl-phip <float> # Personal coefficient (default: 2.0)
--parameter-psowl-stagnationvariation <float> # Variation threshold (default: 0.4)
--parameter-psowl-itsstagnation <int> # Stagnation iterations (default: 5)
--parameter-psowl-leappercentage <float> # Leap distance (default: 0.8)GreedWL (Greedy with Leap):
--parameter-greedwl-stagnationvariation <float> # Variation threshold (default: 0.4)
--parameter-greedwl-itsstagnation <int> # Stagnation iterations (default: 5)
--parameter-greedwl-leappercentage <float> # Leap distance (default: 0.8)ABC (Artificial Bee Colony):
--parameter-abc-limit <int> # Abandonment limit (default: 20)ACO (Ant Colony Optimization):
--parameter-aco-evaporationrate <float> # Pheromone evaporation (default: 0.1)
--parameter-aco-alpha <float> # Pheromone importance (default: 1.0)
--parameter-aco-beta <float> # Heuristic importance (default: 2.0)BAT Algorithm:
--parameter-bat-fmin <float> # Minimum frequency (default: 0.0)
--parameter-bat-fmax <float> # Maximum frequency (default: 2.0)
--parameter-bat-a <float> # Loudness (default: 0.9)
--parameter-bat-r0 <float> # Pulse rate (default: 0.9)CUCKOO Search:
--parameter-cuckoo-pa <float> # Abandonment probability (default: 0.25)FIREFLY Algorithm:
--parameter-firefly-alpha <float> # Randomness (default: 0.5)
--parameter-firefly-beta0 <float> # Attractiveness (default: 1.0)
--parameter-firefly-gamma <float> # Absorption coefficient (default: 1.0)HARMONY Search:
--parameter-harmony-hmcr <float> # Harmony Memory Considering Rate (default: 0.9)
--parameter-harmony-par <float> # Pitch Adjustment Rate (default: 0.3)
--parameter-harmony-bw <float> # Bandwidth (default: 0.2)Examples:
# 2D visualization with ABC algorithm
anmetal mh_graph_each_it --mh ABC --problem Camelback --iterations 20 --population 30
# 3D visualization with custom parameters
anmetal mh_graph_each_it --mh Firefly --problem Goldsteinprice --iterations 15 --plottype 3d --fps 30 --parameter-firefly-alpha 0.6
# PSO with traces and custom parameters
anmetal mh_graph_each_it --mh PSO --problem Quartic --traces all --parameter-pso-omega 0.7 --parameter-pso-phig 1.5
# Custom output folder
anmetal mh_graph_each_it --mh ABC --problem Shubert --folder ./my_results --iterations 50Visualize genetic algorithms on categorical problems like Knapsack and Sudoku.
Basic Usage:
anmetal genetic_categorical_plot --problem <problem> [options]Arguments:
--folder <path>- Output folder for plots and videos (default:mh_graphs)--seed <int>- Random seed (default: 0)--iterations <int>- Number of generations (default: 50)--population <int>- Population size (default: 20)--elitist <float>- Elitist percentage (default: 0.3)--mutability <float>- Mutation rate (default: 0.1)--fidelity <0|1>- Enable fidelity (default: 1)--parents_mutation <0|1>- Enable parent mutation (default: 1)--leap <0|1>- Use leap variant (default: 0)--categorytype <type>- Visualization type (default:character)- Options:
character,color,icon,number,value,colorvalue
- Options:
--fps <int>- Video frame rate (default: 5)--problem <problem>- Problem to solve (required)- Options:
knapsack,sudoku,sudoku_opt
- Options:
--dims <int>- Problem dimensions (for Knapsack, default: 20)
Examples:
# Knapsack with color visualization
anmetal genetic_categorical_plot --problem knapsack --dims 30 --categorytype color --iterations 100
# Sudoku with optimized version
anmetal genetic_categorical_plot --problem sudoku_opt --categorytype colorvalue --iterations 200 --population 50
# With leap variant
anmetal genetic_categorical_plot --problem knapsack --leap 1 --mutability 0.2 --elitist 0.4Plot fitness trajectories of metaheuristics on NP-complete problems (Partition and Subset Sum).
Basic Usage:
anmetal trajectory_plot_npcomp --algorithms <alg1> <alg2> ... [options]Arguments:
--folder <path>- Output folder for plots (default: current directory)--algorithms <list>- Algorithms to run (space-separated, required)- Options:
AFSA,Greedy,GreedyWL,PSO,PSOWL,ABC,ACO,BAT,BH,CUCKOO,FIREFLY,HS - Default:
PSO ABC ACO BAT FIREFLY HS
- Options:
--problem <problem>- Problem type (default:partition sum)- Options:
partition sum,subset sum
- Options:
--verbose <0|1|2>- Verbosity level (default: 0)- 0=quiet, 1=normal, 2=debug
--max-iterations <int>- Maximum iterations (default: 50)--population-size <int>- Population size (default: 20)--seed <int>- Random seed (default: 115)--ndims <int>- Problem dimensions (default: 500)
Algorithm-Specific Parameters:
All algorithm parameters from mh_graph_each_it are supported with the same names.
Examples:
# Compare PSO and ABC on partition problem
anmetal trajectory_plot_npcomp --algorithms PSO ABC --problem "partition sum" --max-iterations 100
# Run AFSA with custom parameters
anmetal trajectory_plot_npcomp --algorithms AFSA --parameter-afsa-visualdistancepercentage 0.6 --ndims 1000
# Multiple algorithms with custom settings
anmetal trajectory_plot_npcomp --algorithms PSO ABC ACO --folder ./results --ndims 1000 --seed 42 --verbose 1Run metaheuristics on various nonlinear benchmark functions. This is a Python script for testing and comparison - no CLI arguments.
The following commands are available for testing but don't require specific arguments (they use hardcoded test cases):
basic_mh_optimization_npcomp- Test metaheuristics on Partition/Subset Sum problemsbasic_math_it_optimization- Test Newton and Euler iterative methodscategorical_mh_optimization- Test genetic algorithms on categorical problems
Usage:
anmetal basic_mh_optimization_npcomp
anmetal basic_math_it_optimization
anmetal categorical_mh_optimizationEach metaheuristic has its own set of parameters. Here are some common ones:
-
Common Parameters
iterations: Number of iterationspopulation: Population sizeseed: Random seed for reproducibilityverbose: Whether to print progress
-
Algorithm-Specific Parameters
- ABC:
limit - ACO:
evaporation_rate,alpha,beta - BAT:
fmin,fmax,A,r0 - CUCKOO:
pa - FIREFLY:
alpha,beta0,gamma - GA:
mutation_rate,crossover_rate - HS:
hmcr,par,bw - PSO:
omega,phi_g,phi_p
- ABC:
For detailed parameter descriptions and recommended values, see the respective algorithm implementations in the source code.
OpenCV Installation Problems:
# If you encounter OpenCV issues, try:
pip install opencv-python-headlessMissing Dependencies:
# Install all visualization dependencies:
pip install matplotlib opencv-python numpy seaborn pandasVideo Generation Errors:
- Ensure you have write permissions in the output directory
- Check that OpenCV is properly installed
- Try reducing FPS if encountering codec issues
Parameter Tuning:
- Start with default parameters and adjust gradually
- Use smaller populations for testing (5-15 individuals)
- Reduce iterations for quick tests (5-20 iterations)
Performance:
- Use
--verbose 0to reduce console output - Lower FPS for faster video generation
- Consider 2D plotting for better performance