AutoEQ Differential Evolution
This crate provides a pure Rust implementation of Differential Evolution (DE) global optimization algorithm with advanced features.
Features
- Pure Rust Implementation: No external dependencies for core optimization
- Multiple DE Strategies: Various mutation and crossover strategies
- Constraint Handling: Linear and nonlinear constraint support
- Adaptive Parameters: Self-adjusting F and CR parameters
- Evaluation Recording: Track optimization progress and convergence
- Visualization Tools: Plot test functions and optimization traces
Optimization Strategies
Mutation Strategies
DE/rand/1:x_trial = x_r1 + F * (x_r2 - x_r3)DE/best/1:x_trial = x_best + F * (x_r1 - x_r2)DE/current-to-best/1: Combines current and best vectorsDE/rand/2: Uses five random vectors for mutation
Crossover Strategies
- Binomial: Random parameter-wise crossover
- Exponential: Sequential parameter crossover
Usage
use ;
use Array1;
// Example objective function (Rosenbrock)
let objective = ;
// Define bounds for 2D problem
let bounds = vec!;
let config = DEConfig ;
let result = differential_evolution;
println!;
println!;
Constraint Support
Linear Constraints
use ;
use ;
// Linear constraint: x1 + x2 <= 1.0
let constraint = LinearConstraintHelper ;
// Apply to configuration with penalty weight
let mut config = default;
constraint.apply_to; // penalty weight
Nonlinear Constraints
let nonlinear_constraint = ;
Visualization
The crate includes a plot_functions binary for visualizing test functions and optimization traces:
# Plot test functions as contour plots
# Show optimization traces from CSV files
Integration
This crate is part of the AutoEQ ecosystem:
- Used by
autoeqfor filter parameter optimization - Integrates with
autoeq-testfunctionsfor validation - Works with
autoeq-iirfor audio filter optimization
Examples
The crate includes several example programs demonstrating different DE capabilities:
basic_de: Simple unconstrained optimizationlinear_constraints: Linear constraint handlingnonlinear_constraints: Complex constraint optimization
References
License
GPL-3.0-or-later