#[derive(Clone)]
pub struct Individual {
genes: Vec<u16>,
fitness: i32,
}
impl Individual {
pub fn new(genes: Vec<u16>, fitness: i32) -> Individual {
Individual { genes, fitness }
}
pub fn update_fitness_score(&mut self, score: i32) {
self.fitness = score;
}
pub fn get_genes(&self) -> &Vec<u16> {
&self.genes
}
pub fn get_fitness(&self) -> &i32 {
&self.fitness
}
pub fn update_gene(&mut self, pos: usize, gene: u16) {
self.genes[pos] = gene;
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_individual() {
let individual = Individual::new(vec![1, 2, 3], i32::MIN);
let expected = vec![1, 2, 3];
let res: Vec<u16> = individual.genes.into_iter().collect();
assert_eq!(res, expected);
assert_eq!(individual.fitness, i32::MIN);
}
}