[][src]Module radiate::engine

Modules

environment

Environment represents overall settings for a genome, this can be statistics to be tracked through evolution, or things like mutation rates or global counters. This is injected into functions throughou the generational process so it is acessable globally as a center point for the evolution. Note - if this is to be used a mutable in crossover or mutation, this will slow down the optimization process as it will have to be locked during the writing thus having the vairiables in the implementatino of this trait be readonly is preferred but isn't that big of a deal

generation
genocide
genome

Genome is what will actually be evolved through the engine, this is going to be whatever datastructure should be optimized

niche
population
problem

Problem is the actual problem to be solved. This is wrapped in an Arc pointer due to the problem not wanting to be coppied through threads. This was done intentially because I wanted to be able to represent supervised, unsupervised, and general reinforcement learning problems. This means if you are using a supervised system and have a large dataset to analyze, if this dataset is stored in the problem (as they should be), without an Arc pointer this large dataset would be coppied multiple times and take up massive amounts of memory. The Arc allows us to keep only one version of the problem and share that between threads. Note - this means everything in the problem and all it's data is explicitly readonly

survival