evo_rl/
doctest.rs

1//! This module contains constants and examples used in unit tests. 
2
3use crate::enecode::*;
4use crate::enecode::meta::MetaLearningGene;
5use crate::enecode::topology::TopologyGene;
6use crate::enecode::properties::NeuronalPropertiesGene;
7use crate::hash_em;
8use std::sync::Arc;
9use std::collections::HashMap;
10use lazy_static::lazy_static;
11
12
13lazy_static! {
14    pub static ref GENOME_EXAMPLE: EneCode =  EneCode::new_from_genome(
15     vec![
16         TopologyGene {
17             innovation_number: Arc::from("input_1"),
18             pin: NeuronType::In,
19             inputs: HashMap::new(),
20             genetic_bias: 0.0,
21             active: true
22         },
23         TopologyGene {
24             innovation_number: Arc::from("N1"),
25             pin: NeuronType::Hidden,
26             inputs: hash_em(vec!["input_1"], vec![1.0]),
27             genetic_bias: 0.0,
28             active: true
29         },
30         TopologyGene {
31             innovation_number: Arc::from("output_1"),
32             pin: NeuronType::Out,
33             inputs: hash_em(vec!["N1"], vec![0.5]),
34             genetic_bias: 0.0,
35             active: true
36         },
37         // ... more TopologyGene
38     ],
39     NeuronalPropertiesGene {
40         innovation_number: Arc::from("NP01"),
41         module: Arc::from("Rocinante"),
42         tau: 0.9,
43         homeostatic_force: 0.1,
44         tanh_alpha: 1.,
45     },
46     MetaLearningGene {
47         innovation_number: Arc::from("MTL01"),
48         learning_rate: 0.01,
49         learning_threshold: 0.5,
50     },
51    );
52
53    pub static ref TOPOLOGY_GENE_EXAMPLE: TopologyGene = TopologyGene {
54            innovation_number: Arc::from("h01"),
55            pin: NeuronType::Hidden,
56            inputs: hash_em(vec!["i01"], vec![2.]),
57            genetic_bias: 5.,
58            active: true,
59    };
60
61    pub static ref GENOME_EXAMPLE2: EneCode =  EneCode::new_from_genome (
62     vec![
63         TopologyGene {
64             innovation_number: Arc::from("input_1"),
65             pin: NeuronType::In,
66             inputs: HashMap::new(),
67             genetic_bias: 0.0,
68             active: true
69         },
70         TopologyGene {
71             innovation_number: Arc::from("N1"),
72             pin: NeuronType::Hidden,
73             inputs: hash_em(vec!["input_1"], vec![1.0]),
74             genetic_bias: 0.0,
75             active: true
76         },
77         TopologyGene {
78             innovation_number: Arc::from("N2"),
79             pin: NeuronType::Hidden,
80             inputs: hash_em(vec!["input_1", "N1"], vec![1.0, -5.0]),
81             genetic_bias: 0.0,
82             active: true
83         },
84         TopologyGene {
85             innovation_number: Arc::from("output_1"),
86             pin: NeuronType::Out,
87             inputs: hash_em(vec!["N1", "N2"], vec![0.5, 0.5]),
88             genetic_bias: 0.0,
89             active: true
90         },
91         // ... more TopologyGene
92     ],
93     NeuronalPropertiesGene {
94         innovation_number: Arc::from("NP01"),
95         module: Arc::from("Rocinante"),
96         tau: 0.9,
97         homeostatic_force: 0.1,
98         tanh_alpha: 1.,
99     },
100     MetaLearningGene {
101         innovation_number: Arc::from("MTL01"),
102         learning_rate: 0.01,
103         learning_threshold: 0.5,
104     },
105    );
106
107    pub static ref META_GENE_EXAMPLE: MetaLearningGene = MetaLearningGene {
108            innovation_number: Arc::from("mtg01"),
109            learning_rate: 0.001,
110            learning_threshold: 0.5,
111    };
112
113    pub static ref NEURONAL_PROPERTIES_GENE_EXAMPLE: NeuronalPropertiesGene = NeuronalPropertiesGene {
114            innovation_number: Arc::from("npg01"),
115            module: Arc::from("Engine"),
116            tau: 0.,
117            homeostatic_force: 0., 
118            tanh_alpha: 1.,
119    };
120
121    pub static ref XOR_GENOME_MINIMAL: EneCode = EneCode::new_from_genome (
122        vec![
123            TopologyGene {
124                innovation_number: Arc::from("i01"),
125                pin: NeuronType::In,
126                inputs: HashMap::new(),
127                genetic_bias: 0.,
128                active: true,
129            },
130
131            TopologyGene {
132                innovation_number: Arc::from("i02"),
133                pin: NeuronType::In,
134                inputs: HashMap::new(),
135                genetic_bias: 0.,
136                active: true,
137            },
138
139            TopologyGene {
140                innovation_number: Arc::from("A"),
141                pin: NeuronType::Hidden,
142                inputs: hash_em(vec!["i01", "i02"], vec![0., 0.]),
143                genetic_bias: 0.,
144                active: true,
145            },
146            TopologyGene {
147                innovation_number: Arc::from("XOR"),
148                pin: NeuronType::Out,
149                inputs: hash_em(vec!["A"], vec![0.]),
150                genetic_bias: 0.,
151                active: true,
152            },
153        ],
154        NeuronalPropertiesGene::default(),
155        MetaLearningGene::default()
156    );
157
158    pub static ref XOR_GENOME: EneCode = EneCode::new_from_genome (
159        vec![
160            TopologyGene {
161                innovation_number: Arc::from("i01"),
162                pin: NeuronType::In,
163                inputs: HashMap::new(),
164                genetic_bias: 0.,
165                active: true,
166            },
167
168            TopologyGene {
169                innovation_number: Arc::from("i02"),
170                pin: NeuronType::In,
171                inputs: HashMap::new(),
172                genetic_bias: 0.,
173                active: true,
174            },
175
176            TopologyGene {
177                innovation_number: Arc::from("A"),
178                pin: NeuronType::Hidden,
179                inputs: hash_em(vec!["i01", "i02"], vec![0., 0.]),
180                genetic_bias: 0.,
181                active: true,
182            },
183            TopologyGene {
184                innovation_number: Arc::from("B"),
185                pin: NeuronType::Hidden,
186                inputs: hash_em(vec!["i01", "i02"], vec![0., 0.]),
187                genetic_bias: 0.,
188                active: true,
189            },
190            TopologyGene {
191                innovation_number: Arc::from("XOR"),
192                pin: NeuronType::Out,
193                inputs: hash_em(vec!["A", "B"], vec![0., 0.]),
194                genetic_bias: 0.,
195                active: true,
196            },
197        ],
198        NeuronalPropertiesGene::default(),
199        MetaLearningGene::default()
200    );
201
202}
203
204
205