EDA/UMDA Reference
Estimation of Distribution Algorithms using probabilistic models.
Module
use fugue_evo::algorithms::eda::{Umda, UmdaBuilder, UmdaConfig};
Overview
EDAs replace crossover/mutation with probabilistic model building:
- Select promising individuals
- Build probabilistic model from selected
- Sample new individuals from model
- Repeat
UMDA (Univariate Marginal Distribution Algorithm) assumes variables are independent.
Builder API
Required Configuration
| Method | Type | Description |
|---|---|---|
bounds(bounds) | MultiBounds | Search space bounds |
fitness(fit) | impl Fitness | Fitness function |
Optional Configuration
| Method | Type | Default | Description |
|---|---|---|---|
population_size(n) | usize | 100 | Population size |
selection_size(n) | usize | 50 | Individuals for model building |
max_generations(n) | usize | 100 | Max generations |
Usage
Basic Example
use fugue_evo::prelude::*;
let result = UmdaBuilder::<RealVector, f64, _>::new()
.population_size(100)
.selection_size(30) // Top 30% for model
.bounds(MultiBounds::symmetric(5.12, 10))
.fitness(Sphere::new(10))
.max_generations(200)
.build()?
.run(&mut rng)?;
Algorithm Details
Model Building (Univariate)
For continuous variables:
μᵢ = mean of selected individuals' gene i
σᵢ = std dev of selected individuals' gene i
Sampling
New individuals sampled from:
xᵢ ~ N(μᵢ, σᵢ²)
When to Use
Good for:
- Separable problems (variables independent)
- Problems where crossover is disruptive
- Understanding variable distributions
Not good for:
- Non-separable problems (use CMA-ES instead)
- Problems with variable interactions
Comparison with GA
| Aspect | GA | EDA (UMDA) |
|---|---|---|
| Variation | Crossover + Mutation | Model sampling |
| Interactions | Crossover preserves building blocks | Assumes independence |
| Parameters | Crossover rate, mutation rate | Selection ratio |
See Also
- Choosing an Algorithm
- CMA-ES - For non-separable problems