pub struct TreeGenome<T: Terminal = ArithmeticTerminal, F: Function = ArithmeticFunction> {
pub root: TreeNode<T, F>,
pub max_depth: usize,
}Expand description
Tree genome for genetic programming
Fields§
§root: TreeNode<T, F>Root node of the tree
max_depth: usizeMaximum allowed depth
Implementations§
Source§impl<T: Terminal, F: Function> TreeGenome<T, F>
impl<T: Terminal, F: Function> TreeGenome<T, F>
Sourcepub fn evaluate(&self, variables: &[f64]) -> f64
pub fn evaluate(&self, variables: &[f64]) -> f64
Evaluate the tree with given variable bindings
Sourcepub fn generate_full<R: Rng>(
rng: &mut R,
depth: usize,
max_depth: usize,
) -> Self
pub fn generate_full<R: Rng>( rng: &mut R, depth: usize, max_depth: usize, ) -> Self
Generate a random tree using the “full” method
Sourcepub fn generate_grow<R: Rng>(
rng: &mut R,
max_depth: usize,
terminal_prob: f64,
) -> Self
pub fn generate_grow<R: Rng>( rng: &mut R, max_depth: usize, terminal_prob: f64, ) -> Self
Generate a random tree using the “grow” method
Sourcepub fn generate_ramped_half_and_half<R: Rng>(
rng: &mut R,
min_depth: usize,
max_depth: usize,
) -> Self
pub fn generate_ramped_half_and_half<R: Rng>( rng: &mut R, min_depth: usize, max_depth: usize, ) -> Self
Generate using ramped half-and-half
Trait Implementations§
Source§impl<T: Clone + Terminal, F: Clone + Function> Clone for TreeGenome<T, F>
impl<T: Clone + Terminal, F: Clone + Function> Clone for TreeGenome<T, F>
Source§fn clone(&self) -> TreeGenome<T, F>
fn clone(&self) -> TreeGenome<T, F>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<T: Terminal, F: Function> CrossoverOperator<TreeGenome<T, F>> for SubtreeCrossover
impl<T: Terminal, F: Function> CrossoverOperator<TreeGenome<T, F>> for SubtreeCrossover
Source§fn crossover<R: Rng>(
&self,
parent1: &TreeGenome<T, F>,
parent2: &TreeGenome<T, F>,
rng: &mut R,
) -> OperatorResult<(TreeGenome<T, F>, TreeGenome<T, F>)>
fn crossover<R: Rng>( &self, parent1: &TreeGenome<T, F>, parent2: &TreeGenome<T, F>, rng: &mut R, ) -> OperatorResult<(TreeGenome<T, F>, TreeGenome<T, F>)>
Apply crossover to two parents and produce two offspring
Source§fn crossover_probability(&self) -> f64
fn crossover_probability(&self) -> f64
Get the probability of crossover being applied
Source§impl<'de, T: Terminal, F: Function> Deserialize<'de> for TreeGenome<T, F>
impl<'de, T: Terminal, F: Function> Deserialize<'de> for TreeGenome<T, F>
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl<T: Terminal, F: Function> EvolutionaryGenome for TreeGenome<T, F>
impl<T: Terminal, F: Function> EvolutionaryGenome for TreeGenome<T, F>
Source§type Phenotype = TreeGenome<T, F>
type Phenotype = TreeGenome<T, F>
The phenotype or decoded solution type
Source§fn to_trace(&self) -> Trace
fn to_trace(&self) -> Trace
Convert genome to Fugue trace for probabilistic operations. Read more
Source§fn from_trace(trace: &Trace) -> Result<Self, GenomeError>
fn from_trace(trace: &Trace) -> Result<Self, GenomeError>
Reconstruct genome from Fugue trace after evolutionary operations. Read more
Source§fn generate<R: Rng>(rng: &mut R, bounds: &MultiBounds) -> Self
fn generate<R: Rng>(rng: &mut R, bounds: &MultiBounds) -> Self
Generate a random genome within the given bounds
Source§fn trace_prefix() -> &'static str
fn trace_prefix() -> &'static str
Get the address prefix used for trace storage (default: “gene”)
Source§fn as_slice(&self) -> Option<&[Self::Allele]>
fn as_slice(&self) -> Option<&[Self::Allele]>
Get the genome’s genes as a slice (for numeric genomes)
Source§fn as_mut_slice(&mut self) -> Option<&mut [Self::Allele]>
fn as_mut_slice(&mut self) -> Option<&mut [Self::Allele]>
Get the genome’s genes as a mutable slice (for numeric genomes)
Source§impl<T: Terminal, F: Function> MutationOperator<TreeGenome<T, F>> for AdaptiveTreeMutation
impl<T: Terminal, F: Function> MutationOperator<TreeGenome<T, F>> for AdaptiveTreeMutation
Source§fn mutate<R: Rng>(&self, genome: &mut TreeGenome<T, F>, rng: &mut R)
fn mutate<R: Rng>(&self, genome: &mut TreeGenome<T, F>, rng: &mut R)
Apply mutation to a genome in place
Source§fn mutation_probability(&self) -> f64
fn mutation_probability(&self) -> f64
Get the mutation probability per gene
Source§impl<T: Terminal, F: Function> MutationOperator<TreeGenome<T, F>> for HoistMutation
impl<T: Terminal, F: Function> MutationOperator<TreeGenome<T, F>> for HoistMutation
Source§fn mutate<R: Rng>(&self, genome: &mut TreeGenome<T, F>, rng: &mut R)
fn mutate<R: Rng>(&self, genome: &mut TreeGenome<T, F>, rng: &mut R)
Apply mutation to a genome in place
Source§fn mutation_probability(&self) -> f64
fn mutation_probability(&self) -> f64
Get the mutation probability per gene
Source§impl<T: Terminal, F: Function> MutationOperator<TreeGenome<T, F>> for PointMutation
impl<T: Terminal, F: Function> MutationOperator<TreeGenome<T, F>> for PointMutation
Source§fn mutate<R: Rng>(&self, genome: &mut TreeGenome<T, F>, rng: &mut R)
fn mutate<R: Rng>(&self, genome: &mut TreeGenome<T, F>, rng: &mut R)
Apply mutation to a genome in place
Source§fn mutation_probability(&self) -> f64
fn mutation_probability(&self) -> f64
Get the mutation probability per gene
Source§impl<T: Terminal, F: Function> MutationOperator<TreeGenome<T, F>> for ShrinkMutation
impl<T: Terminal, F: Function> MutationOperator<TreeGenome<T, F>> for ShrinkMutation
Source§fn mutate<R: Rng>(&self, genome: &mut TreeGenome<T, F>, rng: &mut R)
fn mutate<R: Rng>(&self, genome: &mut TreeGenome<T, F>, rng: &mut R)
Apply mutation to a genome in place
Source§fn mutation_probability(&self) -> f64
fn mutation_probability(&self) -> f64
Get the mutation probability per gene
Source§impl<T: Terminal, F: Function> MutationOperator<TreeGenome<T, F>> for SubtreeMutation
impl<T: Terminal, F: Function> MutationOperator<TreeGenome<T, F>> for SubtreeMutation
Source§fn mutate<R: Rng>(&self, genome: &mut TreeGenome<T, F>, rng: &mut R)
fn mutate<R: Rng>(&self, genome: &mut TreeGenome<T, F>, rng: &mut R)
Apply mutation to a genome in place
Source§fn mutation_probability(&self) -> f64
fn mutation_probability(&self) -> f64
Get the mutation probability per gene
Source§impl<T: Terminal, F: Function> TreeGenomeType for TreeGenome<T, F>
impl<T: Terminal, F: Function> TreeGenomeType for TreeGenome<T, F>
impl<T: Terminal, F: Function> StructuralPartialEq for TreeGenome<T, F>
Auto Trait Implementations§
impl<T, F> Freeze for TreeGenome<T, F>
impl<T, F> RefUnwindSafe for TreeGenome<T, F>where
T: RefUnwindSafe,
F: RefUnwindSafe,
impl<T, F> Send for TreeGenome<T, F>
impl<T, F> Sync for TreeGenome<T, F>
impl<T, F> Unpin for TreeGenome<T, F>
impl<T, F> UnsafeUnpin for TreeGenome<T, F>where
T: UnsafeUnpin,
F: UnsafeUnpin,
impl<T, F> UnwindSafe for TreeGenome<T, F>where
T: UnwindSafe,
F: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.