This project is an implementation of several popular optimization algorithms.
- Grey Wolf Algorithm
- Multi-Swarm Slime Mould Algorithm
- Bat Algorithm
- Butterfly Optimization Algorithm
- Particle Swarm Optimization
- Particle Swarm Optimization with modification from Differential Evolution (mutation and crossover)
- Differential Evolution
- Optimization: Use any of the above-listed algorithms to optimize functions within a given scope.
- Plotting: The program generates plots that track the best solution value for each iteration of the algorithm.
- Comparative Results: You can compare the results of SMA and GWO using custom functions over multiple iterations.
- Function Customization: Users can specify the mathematical function to optimize, along with its scope, dimensionality, and iterations.
The project uses Python and the following dependencies:
numpymatplotlibargparse- Custom modules for the optimization algorithms (
de.py,pso_de.py,ba.py,boa.py,sma.py,gwo.py)
You can run the script using the command line. The script accepts several arguments to customize the optimization process.
python main.py -a [algorithm] -f [function_id]Where algorithm can be one of the following:
de(Differential Evolution)pso(Particle Swarm Optimization)ba(Bat Algorithm)boa(Butterfly Optimization Algorithm)sma(Slime Mould Algorithm)gwo(Grey Wolf Optimizer)
python main.py -a de -f 1 -ps 50 -d 30 -i 200You can adjust several parameters depending on the algorithm and function:
-f,--function: Select which function to optimize (1–6)-sf,--scope_flag: Use default function scope-s,--scope: Define a custom scope as a tuple (min, max)-d,--dimensions: Number of dimensions (default: 20)-i,--iterations: Number of iterations (default: 100)-f,--function: Select which function to optimize (1–6)-sf,--scope_flag: Use default function scope-s,--scope: Define a custom scope as a tuple (min, max)-d,--dimensions: Number of dimensions (default: 20)-i,--iterations: Number of iterations (default: 100)-v,--verbose: Whether to print detailed information-dw,--differential_weight: Value of differential weight, PSO-DE ONLY (default: 0.5)-cp,--crossover_probability: Value of crossover probability, PSO-DE ONLY (default: 0.5)-ps,--population_size: Population size, DE/BA/BOA ONLY (default: 50)-pn,--particle_number: Number of particles, PSO ONLY (default: 30)-iw,--inertia_weight: Weight of inertia, PSO ONLY (default: 0.5)-cc,--cognitive_component: Value of cognitive component, PSO ONLY (default: 2)-sc,--social_component: Value of social component, PSO ONLY (default: 2)-l,--loudness: Initial value of loudness, BA ONLY (default: 0.7)-pr,--pulse_rate: Initial value of pulse emission rate, BA ONLY (default: 0.5)--alpha: Value of alpha parameter that affects balance between exploration and exploitation, BA ONLY (default: 0.9)--gamma: Value of gamma parameter that affects the convergence speed, BA ONLY (default: 0.9)--f_min: Minimum frequency value, BA ONLY (default: 0)--f_max: Maximum frequency value, BA ONLY (default: 2)-sm,--sensory_modality: Value of sensory modality, BOA ONLY (default: 0.4)-pe,--power_exponent: Value of power exponent, BOA ONLY (default: 0.8)-sp,--switch_probability: Value of switch probability, BOA ONLY (default: 0.8)-ss,--swarm_size: Size of swarm, SMA ONLY (default: 20)-ns,--num_swarms: Number of swarms, SMA ONLY (default: 10)-z,--z: Probability of random updating position, SMA ONLY (default: 0.6)-mt,--migration_threshold: Migration threshold, SMA ONLY (default: 0.4)-mr,--mutation_rate: Mutation rate, SMA/GWO ONLY (default: 0.4)-nil,--no_improve_limit: Limit for result stagnation, SMA/GWO ONLY (default: 30)