Trait revonet::problem::Problem
[−]
[src]
pub trait Problem { fn compute<T: Individual>(&self, ind: &mut T) -> f32; fn is_solution(&self, value: f32) -> bool { ... } fn get_random_individual<T: Individual, R: Rng>(
&self,
size: usize,
rng: &mut R
) -> T { ... } }
Represents baseline interface for the objective function.
By default solution is represented by a vector of real-numbers.
Example: Custom optimization problem
extern crate revonet; extern crate rand; use rand::{Rng, SeedableRng, StdRng}; use revonet::ea::*; use revonet::problem::*; // Dummy problem returning random fitness. pub struct DummyProblem; impl Problem for DummyProblem { // Function to evaluate a specific individual. fn compute<T: Individual>(&self, ind: &mut T) -> f32 { // use `to_vec` to get real-coded representation of an individual. let v = ind.to_vec().unwrap(); // Perform calculations as per optimization problem being implemened. // Here just a random value is returned. let mut rng: StdRng = StdRng::from_seed(&[0]); rng.gen::<f32>() } } fn main() {}
Required Methods
fn compute<T: Individual>(&self, ind: &mut T) -> f32
Computes fitness value for a given individual.
Arguments:
ind
- individual to compute a fitness for.
Provided Methods
fn is_solution(&self, value: f32) -> bool
Returns whether given fitness value is enough to be a solution.
Arguments:
value
- fitness value to consider.
fn get_random_individual<T: Individual, R: Rng>(
&self,
size: usize,
rng: &mut R
) -> T
&self,
size: usize,
rng: &mut R
) -> T
Generate random individual for the problem. Default implementation creates a real-coded
individual with the number of genes equal to size
Arguments:
size
- number of genes.rng
- reference to pre-initialized RNG.
Implementors
impl<T: NeuroProblem> Problem for T
impl Problem for SphereProblem
impl Problem for RastriginProblem
impl Problem for RosenbrockProblem