autoeq-de 0.2.52

Non linear optimisation library with own DE solvers and interface to NLOpt and MetaHeuristics
Documentation
use ndarray::Array1;
use rand::Rng;

pub(crate) fn binomial_crossover<R: Rng + ?Sized>(
    target: &Array1<f64>,
    mutant: &Array1<f64>,
    cr: f64,
    rng: &mut R,
) -> Array1<f64> {
    let n = target.len();
    let jrand = rng.random_range(0..n);
    let mut trial = target.clone();
    for j in 0..n {
        if j == jrand || rng.random::<f64>() < cr {
            trial[j] = mutant[j];
        }
    }
    trial
}