genetic_algorithms 2.2.0

Library for solving genetic algorithm problems
Documentation
use genetic_algorithms::chromosomes::Binary as BinaryChromosome;
use genetic_algorithms::genotypes::Binary as BinaryGenotype;
use genetic_algorithms::traits::{ChromosomeT, GeneT};

#[cfg(test)]
#[test]
fn test_dna_from_string() {
    let dna = "11010010";
    let mut binary_chromosome = BinaryChromosome::new();
    binary_chromosome.dna_from_string(dna).unwrap();

    assert_eq!(binary_chromosome.dna().len(), 8);

    assert!(binary_chromosome.dna()[0].value);
    assert!(binary_chromosome.dna()[1].value);
    assert!(!binary_chromosome.dna()[2].value);
    assert!(binary_chromosome.dna()[3].value);
    assert!(!binary_chromosome.dna()[4].value);
    assert!(!binary_chromosome.dna()[5].value);
    assert!(binary_chromosome.dna()[6].value);
    assert!(!binary_chromosome.dna()[7].value);

    assert_eq!(binary_chromosome.dna()[0].id(), 0);
    assert_eq!(binary_chromosome.dna()[1].id(), 1);
    assert_eq!(binary_chromosome.dna()[2].id(), 2);
    assert_eq!(binary_chromosome.dna()[3].id(), 3);
    assert_eq!(binary_chromosome.dna()[4].id(), 4);
    assert_eq!(binary_chromosome.dna()[5].id(), 5);
    assert_eq!(binary_chromosome.dna()[6].id(), 6);
    assert_eq!(binary_chromosome.dna()[7].id(), 7);
}

#[test]
fn test_phenotype() {
    let dna = vec![
        BinaryGenotype {
            id: 1,
            value: false,
        },
        BinaryGenotype { id: 2, value: true },
        BinaryGenotype {
            id: 3,
            value: false,
        },
        BinaryGenotype { id: 4, value: true },
        BinaryGenotype {
            id: 5,
            value: false,
        },
    ];

    let mut binary_chromosome = BinaryChromosome::new();
    use std::borrow::Cow;
    binary_chromosome.set_dna(Cow::Borrowed(&dna));
    assert_eq!(binary_chromosome.phenotype(), "01010");
}