Struct set_genome::Parameters [−][src]
pub struct Parameters { pub seed: Option<u64>, pub structure: Structure, pub mutations: Vec<Mutations>, }
This struct captures configuration about the basic ANN structure and available mutations.
It can be constructed manually or from a .toml
file.
Examples
Manual:
use set_genome::{Parameters, Structure, Mutations, activations::Activation}; let parameters = Parameters { seed: None, structure: Structure { inputs: 25, inputs_connected_percent: 1.0, outputs: 3, outputs_activation: Activation::Tanh, weight_std_dev: 0.1, weight_cap: 1.0, }, mutations: vec![ Mutations::ChangeWeights { chance: 1.0, percent_perturbed: 0.5, }, Mutations::ChangeActivation { chance: 0.05, activation_pool: vec![ Activation::Linear, Activation::Sigmoid, Activation::Tanh, Activation::Gaussian, Activation::Step, Activation::Sine, Activation::Cosine, Activation::Inverse, Activation::Absolute, Activation::Relu, ], }, Mutations::AddNode { chance: 0.005, activation_pool: vec![ Activation::Linear, Activation::Sigmoid, Activation::Tanh, Activation::Gaussian, Activation::Step, Activation::Sine, Activation::Cosine, Activation::Inverse, Activation::Absolute, Activation::Relu, ], }, Mutations::RemoveNode { chance: 0.001 }, Mutations::AddConnection { chance: 0.1 }, Mutations::AddRecurrentConnection { chance: 0.01 }, ], };
Write a config file like so:
[structure]
inputs = 9
outputs = 2
inputs_connected_percent = 1.0
outputs_activation = "Tanh"
weight_std_dev = 0.1
weight_cap = 1.0
[[mutations]]
type = "add_connection"
chance = 0.1
[[mutations]]
type = "add_recurrent_connection"
chance = 0.01
[[mutations]]
type = "add_node"
chance = 0.005
activation_pool = [
"Sigmoid",
"Tanh",
"Relu",
"Linear",
"Gaussian",
"Step",
"Sine",
"Cosine",
"Inverse",
"Absolute",
]
[[mutations]]
type = "remove_node"
chance = 0.001
[[mutations]]
type = "change_weights"
chance = 1.0
percent_perturbed = 0.5
[[mutations]]
type = "change_activation"
chance = 0.05
activation_pool = [
"Sigmoid",
"Tanh",
"Relu",
"Linear",
"Gaussian",
"Step",
"Sine",
"Cosine",
"Inverse",
"Absolute",
]
And then read the file:
// let parameters = Parameters::new("path/to/file");
Fields
seed: Option<u64>
Seed for the RNG.
structure: Structure
Describes basic structure of the ANN.
mutations: Vec<Mutations>
List of mutations that execute on crate::Genome::mutate_with_context
Implementations
impl Parameters
[src]
impl Parameters
[src]pub fn new(path: &str) -> Result<Self, ConfigError>
[src]
Trait Implementations
impl Clone for Parameters
[src]
impl Clone for Parameters
[src]fn clone(&self) -> Parameters
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Default for Parameters
[src]
impl Default for Parameters
[src]impl<'de> Deserialize<'de> for Parameters
[src]
impl<'de> Deserialize<'de> for Parameters
[src]fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
[src]
__D: Deserializer<'de>,
impl Serialize for Parameters
[src]
impl Serialize for Parameters
[src]Auto Trait Implementations
impl RefUnwindSafe for Parameters
impl RefUnwindSafe for Parameters
impl Send for Parameters
impl Send for Parameters
impl Sync for Parameters
impl Sync for Parameters
impl Unpin for Parameters
impl Unpin for Parameters
impl UnwindSafe for Parameters
impl UnwindSafe for Parameters