Grey Wolf Optimizer
Swarm Intelligence
Grey Wolf Optimizer (GWO) optimization algorithm.
Algorithm Overview
!!! warning
This module is still under development and is not yet ready for use.
This module implements the Grey Wolf Optimizer (GWO) algorithm. GWO is a metaheuristic optimization algorithm inspired by grey wolves. The algorithm mimics the leadership hierarchy and hunting mechanism of grey wolves in nature. Four types of grey wolves such as alpha, beta, delta, and omega are employed for simulating the hunting behavior.
The GWO algorithm is used to solve optimization problems by iteratively trying to improve a candidate solution with regard to a given measure of quality, or fitness function.
Usage
from opt.swarm_intelligence.grey_wolf_optimizer import GreyWolfOptimizer
from opt.benchmark.functions import sphere
optimizer = GreyWolfOptimizer(
func=sphere,
lower_bound=-5.12,
upper_bound=5.12,
dim=10,
max_iter=500,
population_size=50,
)
best_solution, best_fitness = optimizer.search()
print(f"Best solution: {best_solution}")
print(f"Best fitness: {best_fitness:.6e}")Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
func | Callable | Required | Objective function to minimize. |
lower_bound | float | Required | Lower bound of search space. |
upper_bound | float | Required | Upper bound of search space. |
dim | int | Required | Problem dimensionality. |
max_iter | int | 1000 | Maximum iterations. |
seed | int | None | None | Random seed for reproducibility. |
population_size | int | 100 | Pack size (number of wolves). |
track_history | bool | False | Track optimization history for visualization |
Algorithm Metadata
| Property | Value |
|---|---|
| Algorithm Name | Grey Wolf Optimizer |
| Acronym | GWO |
| Year Introduced | 2014 |
| Authors | Mirjalili, Seyedali; Mirjalili, Seyed Mohammad; Lewis, Andrew |
| Algorithm Class | Swarm Intelligence |
| Complexity | O(pack_size * dim * max_iter) |
| Properties | Population-based, Derivative-free, Nature-inspired |
| Implementation | Python 3.10+ |
| COCO Compatible | Yes |
Mathematical Formulation
Core update equations based on grey wolf hunting hierarchy:
Encircling prey:
Position update guided by alpha, beta, delta wolves:
where:
is the position of a grey wolf at iteration is the position of the prey (target) and linearly decreases from 2 to 0 are random vectors in [0,1] are positions based on
Constraint handling:
- Boundary conditions: Clamping to [lower_bound, upper_bound]
- Feasibility enforcement: Position updates respect hierarchy guidance
Hyperparameters
| Parameter | Default | BBOB Recommended | Description |
|---|---|---|---|
| pack_size | 20 | 10*dim | Number of wolves in pack |
| max_iter | 1000 | 10000 | Maximum iterations |
Sensitivity Analysis:
a: Parameter linearly decreases from 2 to 0 - High impact on exploration/exploitation balance- Pack size: Medium impact - larger packs improve exploration but increase computation
- Recommended tuning: Use default parameters for most problems
COCO/BBOB Benchmark Settings
Search Space:
- Dimensions tested:
2, 3, 5, 10, 20, 40 - Bounds: Function-specific (typically
[-5, 5]or[-100, 100]) - Instances: 15 per function (BBOB standard)
Evaluation Budget:
- Budget:
function evaluations - Independent runs: 15 (for statistical significance)
- Seeds:
0-14(reproducibility requirement)
Performance Metrics:
- Target precision:
1e-8(BBOB default) - Success rate at precision thresholds:
[1e-8, 1e-6, 1e-4, 1e-2] - Expected Running Time (ERT) tracking
Raises
ValueError: If search space is invalid or function evaluation fails.
Notes
- Modifies self.history if track_history=True
- Uses self.seed for all random number generation
- BBOB: Returns final best solution after max_iter or convergence
Computational Complexity:
- Time per iteration:
- Space complexity:
- BBOB budget usage: Typically uses 50-70% of dim*10000 budget for convergence
BBOB Performance Characteristics:
- Best function classes: Unimodal, Multimodal with regular structure
- Weak function classes: Highly ill-conditioned functions
- Typical success rate at 1e-8 precision: 45-55% (dim=5)
- Expected Running Time (ERT): Competitive with PSO and DE
Convergence Properties:
- Convergence rate: Exponential initially, linear near optimum
- Local vs Global: Excellent balance through hierarchy-based search
- Premature convergence risk: Low - adaptive parameter a prevents stagnation
Reproducibility:
- Deterministic: Yes - Same seed guarantees same results
- BBOB compliance: seed parameter required for 15 independent runs
- Initialization: Uniform random sampling in
[lower_bound, upper_bound] - RNG usage:
numpy.random.default_rng(self.seed)throughout
Implementation Details:
- Parallelization: Not supported in current implementation
- Constraint handling: Clamping to bounds after position updates
- Numerical stability: Uses NumPy operations for numerical stability
Known Limitations:
- Parameter 'a' uses linear decrease which may not be optimal for all problems
- Fixed hierarchy (alpha, beta, delta) throughout optimization
- BBOB known issues: May require more iterations on very high-dimensional problems
Version History:
- v0.1.0: Initial implementation
- Current: BBOB-compliant with seed parameter support
References
[1] Mirjalili, S., Mirjalili, S. M., Lewis, A. (2014). "Grey Wolf Optimizer." Advances in Engineering Software, 69, 46-61. https://doi.org/10.1016/j.advengsoft.2013.12.007
[2] Hansen, N., Auger, A., Ros, R., Mersmann, O., Tušar, T., Brockhoff, D. (2021). "COCO: A platform for comparing continuous optimizers in a black-box setting." Optimization Methods and Software, 36(1), 114-144. https://doi.org/10.1080/10556788.2020.1808977
COCO Data Archive:
- Benchmark results: https://coco-platform.org/testsuites/bbob/data-archive.html
- Algorithm data: https://seyedalimirjalili.com/gwo
- Code repository: https://github.com/Anselmoo/useful-optimizer
Implementation:
- Original MATLAB code: https://github.com/alimirjalili/GWO
- This implementation: Based on [1] with modifications for BBOB compliance
See Also
WhaleOptimizationAlgorithm: Also by Mirjalili, inspired by marine mammals BBOB Comparison: WOA and GWO have similar performance, WOA slightly better on unimodal
ParticleSwarm: Classic swarm intelligence algorithm BBOB Comparison: GWO often converges faster with better exploitation
SalpSwarmAlgorithm: Another marine-inspired algorithm by Mirjalili BBOB Comparison: GWO typically more robust across diverse problems
AbstractOptimizer: Base class for all optimizers opt.benchmark.functions: BBOB-compatible test functions
Related BBOB Algorithm Classes:
- Evolutionary: GeneticAlgorithm, DifferentialEvolution
- Swarm: ParticleSwarm, AntColony, WhaleOptimizationAlgorithm
- Gradient: AdamW, SGDMomentum
Benchmark Performance
Interactive fitness landscape of a representative multimodal benchmark function (drag to rotate, scroll to zoom):
Convergence, final-fitness distribution and performance profile on rastrigin (5D), averaged over independent runs (compared against representative baselines):
Related Pages
Source Code
View the implementation: grey_wolf_optimizer.py