Differential Evolution is a population-based evolutionary algorithm that uses vector differences to explore the search space. It's particularly effective on multimodal and noisy functions, making it one of the most reliable global optimization methods available.
Implementation Details
| Component | Details | Links |
|---|---|---|
| Original Algorithm |
Rainer Storn & Kenneth Price Evolutionary algorithm using vector differences Population-based with mutation, crossover, and selection Published: 1997 |
📄 Paper |
| Humpday Python |
Python Implementation Uses SciPy's optimize.differential_evolution Highly optimized with multiple DE variants File: humpday/optimizers/scipycube.py |
🐍 Python Code |
| Humpday JavaScript |
Browser Implementation Pure JavaScript DE with classic DE/rand/1/bin strategy Population management and vector operations Class: DifferentialEvolution |
🌐 JavaScript Code |
| Library Dependencies |
Python: scipy.optimize, numpy JavaScript: None (pure JS implementation) |
📖 SciPy Docs |
🏁 Performance Characteristics
- Best for: Global optimization, multimodal and noisy functions
- Dimensions: Scales well from 2D to 100+ dimensions
- Function evaluations: Population-based, typically 1000+ evaluations
- Convergence: Reliable global convergence but can be slow
- Robustness: Excellent on discontinuous and highly multimodal landscapes
📚 Educational Resources
- Differential Evolution Wikipedia
- Northwestern Optimization Course
- Python Tutorial
- Original Author's Code
🧬 Algorithm Overview
Differential Evolution uses a simple yet powerful strategy:
- Population: Maintains multiple candidate solutions
- Mutation: Creates trial vectors using differences between population members
- Crossover: Combines target and trial vectors
- Selection: Keeps the better of target vs. trial
Classic DE/rand/1/bin strategy:
Trial = X_a + F × (X_b - X_c)
Where X_a, X_b, X_c are random population members and F is the scaling factor.