~ruther/ctu-fee-eoa

c5320f468ab9795ca8b9125f93b8088dc3f2b99a — Rutherther 2 months ago f5bf819
feat: add uniform constructor for RandomDistributionPerturbation
1 files changed, 10 insertions(+), 1 deletions(-)

M env/src/perturbation/mod.rs
M env/src/perturbation/mod.rs => env/src/perturbation/mod.rs +10 -1
@@ 1,6 1,6 @@
use nalgebra::SVector;
use rand::{distr::Distribution, Rng};
use rand_distr::{Normal, NormalError};
use rand_distr::{uniform, Normal, NormalError, Uniform};

use crate::binary_string::BinaryString;



@@ 46,6 46,15 @@ impl<const LEN: usize> RandomDistributionPerturbation<LEN, rand::rngs::ThreadRng
    }
}

impl<const LEN: usize> RandomDistributionPerturbation<LEN, rand::rngs::ThreadRng, Uniform<f64>> {
    pub fn uniform(range: f64) -> Result<Self, uniform::Error> {
        Ok(Self {
            distribution: Uniform::new(-range/2.0, range/2.0)?,
            rng: rand::rng()
        })
    }
}

impl<TRng: Rng, TDistribution: Distribution<f64>, const LEN: usize> PerturbationOperator for RandomDistributionPerturbation<LEN, TRng, TDistribution> {
    type Chromosome = SVector<f64, LEN>;