Trait genotype::RangedParam[][src]

pub trait RangedParam {
    fn get(&self) -> Param;
fn get_mut(&mut self) -> &mut Param; fn range(&self) -> (Param, Param) { ... }
fn get_scaled(&self) -> Param { ... } }

Access to a gene's scaled value, i.e. the phenotype.

The unscaled value is clamped between 0.0 and 1.0.

Examples

struct Weight(Param); // kg

impl RangedParam for Weight {

    fn range(&self) -> (Param, Param) {
        (40.0, 100.0) // arbitrary weight range
    }

    fn get(&self) -> Param { self.0 }

    fn get_mut(&mut self) -> &mut Param {&mut self.0}
}

let mut weight = Weight(0.5);
assert_eq!(weight.get(), 0.5);
assert_eq!(weight.get_scaled(), 70.0);

// mutate the genotype a tad
*weight.get_mut() += 0.05;
assert_eq!(weight.get(), 0.55);
assert_eq!(weight.get_scaled(), 73.0);

Required Methods

Returns the unscaled parameter value.

Returns a mutable reference to the raw parameter value.

Provided Methods

The range of allowed values, in the form (min, max).

Examples

The value in phenotype space remains between 0 and 1 (default implementation):

fn range(&self) -> (Param, Param) {
    (0.0, 1.0)
}

The phenotype value is between 100 and 200:

fn range(&self) -> (Param, Param) {
    (100.0, 200.0)
}

Returns the parameter value scaled to the range returned by range i.e. the gene expressed in the phenotype.

Trait Implementations

impl<'a> AddAssign<Param> for &'a mut RangedParam
[src]

Performs the += operation.

Implementors