1use 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 ],
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 ],
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