rubyneat 0.3.5.alpha.3 → 0.3.5.alpha.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (252) hide show
  1. checksums.yaml +4 -4
  2. data/.semver +1 -1
  3. data/Gemfile +19 -19
  4. data/Gemfile.lock +39 -33
  5. data/README.md +66 -0
  6. data/Rakefile +19 -2
  7. data/bin/neat +4 -60
  8. data/lib/rubyneat/cli.rb +5 -0
  9. data/lib/rubyneat/cli/generate.rb +131 -0
  10. data/lib/rubyneat/cli/main.rb +54 -0
  11. data/lib/rubyneat/cli/templates/generate/Gemfile.tt +17 -0
  12. data/lib/rubyneat/cli/templates/generate/README.md.tt +1 -0
  13. data/lib/rubyneat/cli/templates/generate/bin/neat.tt +14 -0
  14. data/{neater/xor_neat.rb → lib/rubyneat/cli/templates/generate/neater.tt} +7 -22
  15. data/rubyneat.gemspec +73 -297
  16. data/rubyneat.gemspec.orig +384 -0
  17. metadata +76 -292
  18. data/.idea/.name +0 -1
  19. data/.idea/.rakeTasks +0 -7
  20. data/.idea/dictionaries/trader.xml +0 -3
  21. data/.idea/encodings.xml +0 -5
  22. data/.idea/misc.xml +0 -5
  23. data/.idea/modules.xml +0 -9
  24. data/.idea/rubyneat.iml +0 -198
  25. data/.idea/runConfigurations/invpend_neat.xml +0 -26
  26. data/.idea/runConfigurations/sigdebug_neat.xml +0 -24
  27. data/.idea/runConfigurations/xor_neat.xml +0 -26
  28. data/.idea/runConfigurations/xordebug_neat.xml +0 -24
  29. data/.idea/runConfigurations/xorsin_neat.xml +0 -24
  30. data/.idea/scopes/scope_settings.xml +0 -5
  31. data/.idea/vcs.xml +0 -7
  32. data/.idea/workspace.xml +0 -1151
  33. data/.yardoc/checksums +0 -11
  34. data/.yardoc/object_types +0 -0
  35. data/.yardoc/objects/root.dat +0 -0
  36. data/.yardoc/proxy_types +0 -0
  37. data/Guardfile +0 -8
  38. data/doc/ControllerPoint.html +0 -125
  39. data/doc/CuteA.html +0 -286
  40. data/doc/CuteB.html +0 -297
  41. data/doc/DSL.html +0 -883
  42. data/doc/NEAT.html +0 -588
  43. data/doc/NEAT/BasicNeuronTypes.html +0 -136
  44. data/doc/NEAT/BasicNeuronTypes/BiasNeuron.html +0 -518
  45. data/doc/NEAT/BasicNeuronTypes/CosineNeuron.html +0 -274
  46. data/doc/NEAT/BasicNeuronTypes/InputNeuron.html +0 -366
  47. data/doc/NEAT/BasicNeuronTypes/SigmoidNeuron.html +0 -275
  48. data/doc/NEAT/BasicNeuronTypes/SineNeuron.html +0 -274
  49. data/doc/NEAT/BasicNeuronTypes/TanhNeuron.html +0 -274
  50. data/doc/NEAT/Controller.html +0 -2490
  51. data/doc/NEAT/Controller/NeatSettings.html +0 -3985
  52. data/doc/NEAT/Critter.html +0 -1037
  53. data/doc/NEAT/Critter/Genotype.html +0 -1601
  54. data/doc/NEAT/Critter/Genotype/Gene.html +0 -979
  55. data/doc/NEAT/Critter/Phenotype.html +0 -603
  56. data/doc/NEAT/DSL.html +0 -1255
  57. data/doc/NEAT/Evaluator.html +0 -420
  58. data/doc/NEAT/Evolver.html +0 -602
  59. data/doc/NEAT/Evolver/CritterOp.html +0 -551
  60. data/doc/NEAT/Expressor.html +0 -327
  61. data/doc/NEAT/Graph.html +0 -402
  62. data/doc/NEAT/Graph/DependencyResolver.html +0 -478
  63. data/doc/NEAT/Graph/GraphException.html +0 -123
  64. data/doc/NEAT/NeatException.html +0 -123
  65. data/doc/NEAT/NeatOb.html +0 -567
  66. data/doc/NEAT/Neuron.html +0 -1067
  67. data/doc/NEAT/Operator.html +0 -162
  68. data/doc/NEAT/Population.html +0 -1961
  69. data/doc/NEAT/Trait.html +0 -169
  70. data/doc/_index.html +0 -373
  71. data/doc/class_list.html +0 -54
  72. data/doc/css/common.css +0 -1
  73. data/doc/css/full_list.css +0 -57
  74. data/doc/css/style.css +0 -339
  75. data/doc/file_list.html +0 -53
  76. data/doc/frames.html +0 -26
  77. data/doc/index.html +0 -373
  78. data/doc/js/app.js +0 -219
  79. data/doc/js/full_list.js +0 -178
  80. data/doc/js/jquery.js +0 -4
  81. data/doc/method_list.html +0 -1415
  82. data/doc/top-level-namespace.html +0 -164
  83. data/foo/foo_aquarium_example.rb +0 -38
  84. data/foo/foo_gosu.rb +0 -99
  85. data/foo/foo_rubygoo.rb +0 -104
  86. data/foo/foo_sdl.rb +0 -34
  87. data/foo/icon.png +0 -0
  88. data/neater/invpend_neat.rb +0 -150
  89. data/neater/rnlib/inverted_pendulum.rb +0 -380
  90. data/neater/rnlib/xor.rb +0 -10
  91. data/neater/sigdebug_neat.rb +0 -136
  92. data/neater/xoranalog_neat.rb +0 -138
  93. data/neater/xorsin_neat.rb +0 -143
  94. data/projectFilesBackup/.idea/rubyneat.iml +0 -180
  95. data/public/.directory +0 -4
  96. data/public/background.png +0 -0
  97. data/public/background.xcf +0 -0
  98. data/public/cart.png +0 -0
  99. data/public/cart.xcf +0 -0
  100. data/public/metalpoles_molton_ball_l.jpg +0 -0
  101. data/public/old_background.png +0 -0
  102. data/public/pointer.png +0 -0
  103. data/public/pointer.xcf +0 -0
  104. data/public/pole.kra +0 -0
  105. data/public/pole.png +0 -0
  106. data/public/pole.xcf +0 -0
  107. data/public/wheel-of-year-stone-DD-131-WOYS.jpg +0 -0
  108. data/public/wheel.png +0 -0
  109. data/public/wheel.xcf +0 -0
  110. data/public/wood-planks-texture.jpg +0 -0
  111. data/rdoc/ControllerPoint.html +0 -116
  112. data/rdoc/CuteA.html +0 -177
  113. data/rdoc/CuteB.html +0 -178
  114. data/rdoc/DSLSetup.html +0 -177
  115. data/rdoc/GameTestWindow.html +0 -242
  116. data/rdoc/GameWindow.html +0 -292
  117. data/rdoc/Gemfile.html +0 -215
  118. data/rdoc/Gemfile_lock.html +0 -327
  119. data/rdoc/GraphTest.html +0 -210
  120. data/rdoc/Guardfile.html +0 -198
  121. data/rdoc/InvertedPendulum.html +0 -198
  122. data/rdoc/InvertedPendulum/Cart.html +0 -668
  123. data/rdoc/InvertedPendulum/DSL.html +0 -259
  124. data/rdoc/InvertedPendulum/InvPendWindow.html +0 -402
  125. data/rdoc/Logger.html +0 -98
  126. data/rdoc/NEAT.html +0 -422
  127. data/rdoc/NEAT/BasicNeuronTypes.html +0 -107
  128. data/rdoc/NEAT/BasicNeuronTypes/BiasNeuron.html +0 -265
  129. data/rdoc/NEAT/BasicNeuronTypes/CosineNeuron.html +0 -162
  130. data/rdoc/NEAT/BasicNeuronTypes/InputNeuron.html +0 -206
  131. data/rdoc/NEAT/BasicNeuronTypes/SigmoidNeuron.html +0 -162
  132. data/rdoc/NEAT/BasicNeuronTypes/SineNeuron.html +0 -162
  133. data/rdoc/NEAT/BasicNeuronTypes/TanhNeuron.html +0 -161
  134. data/rdoc/NEAT/Controller.html +0 -729
  135. data/rdoc/NEAT/Controller/NeatSettings.html +0 -880
  136. data/rdoc/NEAT/Critter.html +0 -489
  137. data/rdoc/NEAT/Critter/Genotype.html +0 -735
  138. data/rdoc/NEAT/Critter/Genotype/Gene.html +0 -457
  139. data/rdoc/NEAT/Critter/Phenotype.html +0 -330
  140. data/rdoc/NEAT/DSL.html +0 -729
  141. data/rdoc/NEAT/Evaluator.html +0 -256
  142. data/rdoc/NEAT/Evolver.html +0 -891
  143. data/rdoc/NEAT/Evolver/CritterOp.html +0 -349
  144. data/rdoc/NEAT/Expressor.html +0 -402
  145. data/rdoc/NEAT/Graph.html +0 -263
  146. data/rdoc/NEAT/Graph/DependencyResolver.html +0 -291
  147. data/rdoc/NEAT/Graph/GraphException.html +0 -105
  148. data/rdoc/NEAT/NeatException.html +0 -105
  149. data/rdoc/NEAT/NeatOb.html +0 -325
  150. data/rdoc/NEAT/Neuron.html +0 -481
  151. data/rdoc/NEAT/Operator.html +0 -109
  152. data/rdoc/NEAT/Population.html +0 -935
  153. data/rdoc/NEAT/Trait.html +0 -117
  154. data/rdoc/Object.html +0 -384
  155. data/rdoc/Phi.html +0 -98
  156. data/rdoc/Player.html +0 -383
  157. data/rdoc/Rakefile.html +0 -254
  158. data/rdoc/RubyNEAT.html +0 -98
  159. data/rdoc/RubyNEAT/Application.html +0 -105
  160. data/rdoc/SDL.html +0 -98
  161. data/rdoc/SDL/Event2.html +0 -98
  162. data/rdoc/Vector.html +0 -195
  163. data/rdoc/created.rid +0 -125
  164. data/rdoc/doc/ControllerPoint_html.html +0 -299
  165. data/rdoc/doc/CuteA_html.html +0 -438
  166. data/rdoc/doc/CuteB_html.html +0 -436
  167. data/rdoc/doc/DSL_html.html +0 -992
  168. data/rdoc/doc/NEAT/BasicNeuronTypes/BiasNeuron_html.html +0 -617
  169. data/rdoc/doc/NEAT/BasicNeuronTypes/CosineNeuron_html.html +0 -413
  170. data/rdoc/doc/NEAT/BasicNeuronTypes/InputNeuron_html.html +0 -498
  171. data/rdoc/doc/NEAT/BasicNeuronTypes/SigmoidNeuron_html.html +0 -413
  172. data/rdoc/doc/NEAT/BasicNeuronTypes/SineNeuron_html.html +0 -413
  173. data/rdoc/doc/NEAT/BasicNeuronTypes/TanhNeuron_html.html +0 -412
  174. data/rdoc/doc/NEAT/BasicNeuronTypes_html.html +0 -310
  175. data/rdoc/doc/NEAT/Controller/NeatSettings_html.html +0 -3324
  176. data/rdoc/doc/NEAT/Controller_html.html +0 -2212
  177. data/rdoc/doc/NEAT/Critter/Genotype/Gene_html.html +0 -997
  178. data/rdoc/doc/NEAT/Critter/Genotype_html.html +0 -1556
  179. data/rdoc/doc/NEAT/Critter/Phenotype_html.html +0 -687
  180. data/rdoc/doc/NEAT/Critter_html.html +0 -1037
  181. data/rdoc/doc/NEAT/DSL_html.html +0 -1349
  182. data/rdoc/doc/NEAT/Evaluator_html.html +0 -556
  183. data/rdoc/doc/NEAT/Evolver/CritterOp_html.html +0 -690
  184. data/rdoc/doc/NEAT/Evolver_html.html +0 -677
  185. data/rdoc/doc/NEAT/Expressor_html.html +0 -468
  186. data/rdoc/doc/NEAT/Graph/DependencyResolver_html.html +0 -598
  187. data/rdoc/doc/NEAT/Graph/GraphException_html.html +0 -299
  188. data/rdoc/doc/NEAT/Graph_html.html +0 -527
  189. data/rdoc/doc/NEAT/NeatException_html.html +0 -299
  190. data/rdoc/doc/NEAT/NeatOb_html.html +0 -671
  191. data/rdoc/doc/NEAT/Neuron_html.html +0 -1095
  192. data/rdoc/doc/NEAT/Operator_html.html +0 -337
  193. data/rdoc/doc/NEAT/Population_html.html +0 -1795
  194. data/rdoc/doc/NEAT/Trait_html.html +0 -344
  195. data/rdoc/doc/NEAT_html.html +0 -736
  196. data/rdoc/doc/_index_html.html +0 -559
  197. data/rdoc/doc/class_list_html.html +0 -369
  198. data/rdoc/doc/css/common_css.html +0 -188
  199. data/rdoc/doc/css/full_list_css.html +0 -243
  200. data/rdoc/doc/css/style_css.html +0 -530
  201. data/rdoc/doc/file_list_html.html +0 -240
  202. data/rdoc/doc/frames_html.html +0 -217
  203. data/rdoc/doc/index_html.html +0 -559
  204. data/rdoc/doc/js/app_js.html +0 -423
  205. data/rdoc/doc/js/full_list_js.html +0 -372
  206. data/rdoc/doc/js/jquery_js.html +0 -1536
  207. data/rdoc/doc/method_list_html.html +0 -1375
  208. data/rdoc/doc/top-level-namespace_html.html +0 -317
  209. data/rdoc/fonts.css +0 -167
  210. data/rdoc/fonts/Lato-Light.ttf +0 -0
  211. data/rdoc/fonts/Lato-LightItalic.ttf +0 -0
  212. data/rdoc/fonts/Lato-Regular.ttf +0 -0
  213. data/rdoc/fonts/Lato-RegularItalic.ttf +0 -0
  214. data/rdoc/fonts/SourceCodePro-Bold.ttf +0 -0
  215. data/rdoc/fonts/SourceCodePro-Regular.ttf +0 -0
  216. data/rdoc/images/add.png +0 -0
  217. data/rdoc/images/arrow_up.png +0 -0
  218. data/rdoc/images/brick.png +0 -0
  219. data/rdoc/images/brick_link.png +0 -0
  220. data/rdoc/images/bug.png +0 -0
  221. data/rdoc/images/bullet_black.png +0 -0
  222. data/rdoc/images/bullet_toggle_minus.png +0 -0
  223. data/rdoc/images/bullet_toggle_plus.png +0 -0
  224. data/rdoc/images/date.png +0 -0
  225. data/rdoc/images/delete.png +0 -0
  226. data/rdoc/images/find.png +0 -0
  227. data/rdoc/images/loadingAnimation.gif +0 -0
  228. data/rdoc/images/macFFBgHack.png +0 -0
  229. data/rdoc/images/package.png +0 -0
  230. data/rdoc/images/page_green.png +0 -0
  231. data/rdoc/images/page_white_text.png +0 -0
  232. data/rdoc/images/page_white_width.png +0 -0
  233. data/rdoc/images/plugin.png +0 -0
  234. data/rdoc/images/ruby.png +0 -0
  235. data/rdoc/images/tag_blue.png +0 -0
  236. data/rdoc/images/tag_green.png +0 -0
  237. data/rdoc/images/transparent.png +0 -0
  238. data/rdoc/images/wrench.png +0 -0
  239. data/rdoc/images/wrench_orange.png +0 -0
  240. data/rdoc/images/zoom.png +0 -0
  241. data/rdoc/index.html +0 -282
  242. data/rdoc/js/darkfish.js +0 -140
  243. data/rdoc/js/jquery.js +0 -18
  244. data/rdoc/js/navigation.js +0 -142
  245. data/rdoc/js/search.js +0 -109
  246. data/rdoc/js/search_index.js +0 -1
  247. data/rdoc/js/searcher.js +0 -228
  248. data/rdoc/rdoc.css +0 -580
  249. data/rdoc/rubyneat_gemspec.html +0 -387
  250. data/rdoc/table_of_contents.html +0 -2502
  251. data/rdoc/xordebug_log.html +0 -170598
  252. data/rdoc/xorsin_log.html +0 -22569
@@ -1,735 +0,0 @@
1
- <!DOCTYPE html>
2
-
3
- <html>
4
- <head>
5
- <meta charset="UTF-8">
6
-
7
- <title>class NEAT::Critter::Genotype - rubyneat 0.3.4</title>
8
-
9
- <link href="../../fonts.css" rel="stylesheet">
10
- <link href="../../rdoc.css" rel="stylesheet">
11
-
12
- <script type="text/javascript">
13
- var rdoc_rel_prefix = "../../";
14
- </script>
15
-
16
- <script src="../../js/jquery.js"></script>
17
- <script src="../../js/navigation.js"></script>
18
- <script src="../../js/search_index.js"></script>
19
- <script src="../../js/search.js"></script>
20
- <script src="../../js/searcher.js"></script>
21
- <script src="../../js/darkfish.js"></script>
22
-
23
-
24
- <body id="top" role="document" class="class">
25
- <nav role="navigation">
26
- <div id="project-navigation">
27
- <div id="home-section" role="region" title="Quick navigation" class="nav-section">
28
- <h2>
29
- <a href="../../index.html" rel="home">Home</a>
30
- </h2>
31
-
32
- <div id="table-of-contents-navigation">
33
- <a href="../../table_of_contents.html#pages">Pages</a>
34
- <a href="../../table_of_contents.html#classes">Classes</a>
35
- <a href="../../table_of_contents.html#methods">Methods</a>
36
- </div>
37
- </div>
38
-
39
- <div id="search-section" role="search" class="project-section initially-hidden">
40
- <form action="#" method="get" accept-charset="utf-8">
41
- <div id="search-field-wrapper">
42
- <input id="search-field" role="combobox" aria-label="Search"
43
- aria-autocomplete="list" aria-controls="search-results"
44
- type="text" name="search" placeholder="Search" spellcheck="false"
45
- title="Type to search, Up and Down to navigate, Enter to load">
46
- </div>
47
-
48
- <ul id="search-results" aria-label="Search Results"
49
- aria-busy="false" aria-expanded="false"
50
- aria-atomic="false" class="initially-hidden"></ul>
51
- </form>
52
- </div>
53
-
54
- </div>
55
-
56
-
57
- <div class="nav-section">
58
- <h3>Table of Contents</h3>
59
-
60
- <ul class="link-list" role="directory">
61
- <li><a href="#class-NEAT::Critter::Genotype-label-Genotype+part+of+the+Critter">Genotype part of the Critter</a>
62
- <li><a href="#class-NEAT::Critter::Genotype-label-Notes">Notes</a>
63
- </ul>
64
- </div>
65
-
66
-
67
- <div id="class-metadata">
68
-
69
- <div id="parent-class-section" class="nav-section">
70
- <h3>Parent</h3>
71
-
72
-
73
- <p class="link">NeatOb
74
-
75
- </div>
76
-
77
-
78
-
79
- <!-- Method Quickref -->
80
- <div id="method-list-section" class="nav-section">
81
- <h3>Methods</h3>
82
-
83
- <ul class="link-list" role="directory">
84
-
85
- <li class="calls-super" ><a href="#method-c-new">::new</a>
86
-
87
- <li ><a href="#method-i-add_genes">#add_genes</a>
88
-
89
- <li ><a href="#method-i-add_neurons">#add_neurons</a>
90
-
91
- <li ><a href="#method-i-dump_s">#dump_s</a>
92
-
93
- <li ><a href="#method-i-fitness_cost">#fitness_cost</a>
94
-
95
- <li ><a href="#method-i-forget-21">#forget!</a>
96
-
97
- <li ><a href="#method-i-innervate-21">#innervate!</a>
98
-
99
- <li ><a href="#method-i-neucleate">#neucleate</a>
100
-
101
- <li ><a href="#method-i-nuke_redundancies-21">#nuke_redundancies!</a>
102
-
103
- <li ><a href="#method-i-prune-21">#prune!</a>
104
-
105
- <li ><a href="#method-i-wire-21">#wire!</a>
106
-
107
- </ul>
108
- </div>
109
-
110
- </div>
111
- </nav>
112
-
113
- <main role="main" aria-labelledby="class-NEAT::Critter::Genotype">
114
- <h1 id="class-NEAT::Critter::Genotype" class="class">
115
- class NEAT::Critter::Genotype
116
- </h1>
117
-
118
- <section class="description">
119
-
120
- <h1 id="class-NEAT::Critter::Genotype-label-Genotype+part+of+the+Critter"><a href="Genotype.html">Genotype</a> part of the <a href="../Critter.html">Critter</a><span><a href="#class-NEAT::Critter::Genotype-label-Genotype+part+of+the+Critter">&para;</a> <a href="#documentation">&uarr;</a></span></h1>
121
-
122
- <pre>List of connections, basically.
123
-
124
- Also, basic phentypic expression (which may be overriden by
125
- the expressor)</pre>
126
-
127
- <h1 id="class-NEAT::Critter::Genotype-label-Notes">Notes<span><a href="#class-NEAT::Critter::Genotype-label-Notes">&para;</a> <a href="#documentation">&uarr;</a></span></h1>
128
-
129
- <pre>Currently, all lists of neurons and genes are Hashes. The
130
- neurons are indexed by their own names, and the genes
131
- are indexed by their innovation numbers.</pre>
132
-
133
- </section>
134
-
135
-
136
-
137
-
138
- <section id="5Buntitled-5D" class="documentation-section">
139
-
140
-
141
-
142
-
143
-
144
-
145
-
146
- <section class="attribute-method-details" class="method-section">
147
- <header>
148
- <h3>Attributes</h3>
149
- </header>
150
-
151
-
152
- <div id="attribute-i-critter" class="method-detail">
153
- <div class="method-heading attribute-method-heading">
154
- <span class="method-name">critter</span><span
155
- class="attribute-access-type">[RW]</span>
156
- </div>
157
-
158
- <div class="method-description">
159
-
160
- <p><a href="../Critter.html">Critter</a> to which we belong</p>
161
-
162
- </div>
163
- </div>
164
-
165
- <div id="attribute-i-dangling_neurons" class="method-detail">
166
- <div class="method-heading attribute-method-heading">
167
- <span class="method-name">dangling_neurons</span><span
168
- class="attribute-access-type">[RW]</span>
169
- </div>
170
-
171
- <div class="method-description">
172
-
173
- <p>This will be set to true if there are dangling neurons.</p>
174
-
175
- </div>
176
- </div>
177
-
178
- <div id="attribute-i-dangling_neurons-3F" class="method-detail">
179
- <div class="method-heading attribute-method-heading">
180
- <span class="method-name">dangling_neurons?</span><span
181
- class="attribute-access-type">[RW]</span>
182
- </div>
183
-
184
- <div class="method-description">
185
-
186
- <p>This will be set to true if there are dangling neurons.</p>
187
-
188
- </div>
189
- </div>
190
-
191
- <div id="attribute-i-genes" class="method-detail">
192
- <div class="method-heading attribute-method-heading">
193
- <span class="method-name">genes</span><span
194
- class="attribute-access-type">[RW]</span>
195
- </div>
196
-
197
- <div class="method-description">
198
-
199
- <p>Genes keyed by innovation numbers</p>
200
-
201
- </div>
202
- </div>
203
-
204
- <div id="attribute-i-neural_gene_map" class="method-detail">
205
- <div class="method-heading attribute-method-heading">
206
- <span class="method-name">neural_gene_map</span><span
207
- class="attribute-access-type">[R]</span>
208
- </div>
209
-
210
- <div class="method-description">
211
-
212
- <p>Map neurons to the genes that marks them as output { oneu_name =&gt; [
213
- gene_1, gene_2,… gene_n], …} Just take the in_neuron name and the weight to
214
- do the call to that neuron function with the appropriate weights</p>
215
-
216
- </div>
217
- </div>
218
-
219
- <div id="attribute-i-neural_inputs" class="method-detail">
220
- <div class="method-heading attribute-method-heading">
221
- <span class="method-name">neural_inputs</span><span
222
- class="attribute-access-type">[R]</span>
223
- </div>
224
-
225
- <div class="method-description">
226
-
227
- <p>Instantiations of neural inputs and outputs</p>
228
-
229
- </div>
230
- </div>
231
-
232
- <div id="attribute-i-neural_outputs" class="method-detail">
233
- <div class="method-heading attribute-method-heading">
234
- <span class="method-name">neural_outputs</span><span
235
- class="attribute-access-type">[R]</span>
236
- </div>
237
-
238
- <div class="method-description">
239
-
240
- <p>Instantiations of neural inputs and outputs</p>
241
-
242
- </div>
243
- </div>
244
-
245
- <div id="attribute-i-neurons" class="method-detail">
246
- <div class="method-heading attribute-method-heading">
247
- <span class="method-name">neurons</span><span
248
- class="attribute-access-type">[RW]</span>
249
- </div>
250
-
251
- <div class="method-description">
252
-
253
- <p>List of neurons hashed by name</p>
254
-
255
- </div>
256
- </div>
257
-
258
- </section>
259
-
260
-
261
-
262
- <section id="public-class-5Buntitled-5D-method-details" class="method-section">
263
- <header>
264
- <h3>Public Class Methods</h3>
265
- </header>
266
-
267
-
268
- <div id="method-c-new" class="method-detail ">
269
-
270
- <div class="method-heading">
271
- <span class="method-name">new</span><span
272
- class="method-args">(critter, mating = false, &block)</span>
273
-
274
- <span class="method-click-advice">click to toggle source</span>
275
-
276
- </div>
277
-
278
-
279
- <div class="method-description">
280
-
281
-
282
-
283
-
284
- <div class="method-calls-super">
285
- Calls superclass method
286
-
287
- </div>
288
-
289
-
290
-
291
- <div class="method-source-code" id="new-source">
292
- <pre><span class="ruby-comment"># File lib/rubyneat/critter.rb, line 88</span>
293
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">critter</span>, <span class="ruby-identifier">mating</span> = <span class="ruby-keyword">false</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
294
- <span class="ruby-keyword">super</span> <span class="ruby-identifier">critter</span>.<span class="ruby-identifier">controller</span>
295
- <span class="ruby-ivar">@critter</span> = <span class="ruby-identifier">critter</span>
296
-
297
- <span class="ruby-comment"># Initialize basic structures</span>
298
- <span class="ruby-ivar">@genes</span> = <span class="ruby-keyword">nil</span>
299
- <span class="ruby-ivar">@neural_inputs</span> = <span class="ruby-constant">Hash</span>[<span class="ruby-ivar">@critter</span>.<span class="ruby-identifier">population</span>.<span class="ruby-identifier">input_neurons</span>.<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">sym</span>, <span class="ruby-identifier">ineu</span><span class="ruby-operator">|</span>
300
- [<span class="ruby-identifier">sym</span>, <span class="ruby-identifier">ineu</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@controller</span>, <span class="ruby-identifier">sym</span>)]
301
- }]
302
-
303
- <span class="ruby-ivar">@neural_outputs</span> = <span class="ruby-constant">Hash</span>[<span class="ruby-ivar">@critter</span>.<span class="ruby-identifier">population</span>.<span class="ruby-identifier">output_neurons</span>.<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">sym</span>, <span class="ruby-identifier">ineu</span><span class="ruby-operator">|</span>
304
- [<span class="ruby-identifier">sym</span>, <span class="ruby-identifier">ineu</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@controller</span>, <span class="ruby-identifier">sym</span>)]
305
- }]
306
- <span class="ruby-ivar">@neurons</span> = <span class="ruby-ivar">@neural_inputs</span>.<span class="ruby-identifier">clone</span> <span class="ruby-comment"># this must be a shallow clone!</span>
307
- <span class="ruby-ivar">@neurons</span>.<span class="ruby-identifier">merge!</span> <span class="ruby-ivar">@neural_outputs</span>
308
-
309
- <span class="ruby-ivar">@controller</span>.<span class="ruby-identifier">evolver</span>.<span class="ruby-identifier">gen_initial_genes!</span>(<span class="ruby-keyword">self</span>) <span class="ruby-keyword">unless</span> <span class="ruby-identifier">mating</span>
310
- <span class="ruby-identifier">block</span>.(<span class="ruby-keyword">self</span>) <span class="ruby-keyword">unless</span> <span class="ruby-identifier">block</span>.<span class="ruby-identifier">nil?</span>
311
- <span class="ruby-keyword">end</span></pre>
312
- </div>
313
-
314
- </div>
315
-
316
-
317
-
318
-
319
- </div>
320
-
321
-
322
- </section>
323
-
324
- <section id="public-instance-5Buntitled-5D-method-details" class="method-section">
325
- <header>
326
- <h3>Public Instance Methods</h3>
327
- </header>
328
-
329
-
330
- <div id="method-i-add_genes" class="method-detail ">
331
-
332
- <div class="method-heading">
333
- <span class="method-name">add_genes</span><span
334
- class="method-args">(*genes)</span>
335
-
336
- <span class="method-click-advice">click to toggle source</span>
337
-
338
- </div>
339
-
340
-
341
- <div class="method-description">
342
-
343
- <p>Genes added here MUST correspond to pre-existing neurons. Be sure to do <a
344
- href="Genotype.html#method-i-add_neurons">#add_neurons</a> first!!!!</p>
345
-
346
-
347
-
348
-
349
- <div class="method-source-code" id="add_genes-source">
350
- <pre><span class="ruby-comment"># File lib/rubyneat/critter.rb, line 163</span>
351
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">add_genes</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">genes</span>)
352
- <span class="ruby-identifier">genes</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">gene</span><span class="ruby-operator">|</span>
353
- <span class="ruby-identifier">raise</span> <span class="ruby-constant">NeatException</span>.<span class="ruby-identifier">new</span> <span class="ruby-node">&quot;Neuron #{gene.in_neuron} missing&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@neurons</span>.<span class="ruby-identifier">member?</span> <span class="ruby-identifier">gene</span>.<span class="ruby-identifier">in_neuron</span>
354
- <span class="ruby-identifier">raise</span> <span class="ruby-constant">NeatException</span>.<span class="ruby-identifier">new</span> <span class="ruby-node">&quot;Neuron #{gene.out_neuron} missing&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@neurons</span>.<span class="ruby-identifier">member?</span> <span class="ruby-identifier">gene</span>.<span class="ruby-identifier">out_neuron</span>
355
- <span class="ruby-ivar">@genes</span>[<span class="ruby-identifier">gene</span>.<span class="ruby-identifier">innovation</span>] = <span class="ruby-identifier">gene</span>
356
- <span class="ruby-keyword">end</span>
357
- <span class="ruby-keyword">end</span></pre>
358
- </div>
359
-
360
- </div>
361
-
362
-
363
-
364
-
365
- </div>
366
-
367
-
368
- <div id="method-i-add_neurons" class="method-detail ">
369
-
370
- <div class="method-heading">
371
- <span class="method-name">add_neurons</span><span
372
- class="method-args">(*neus)</span>
373
-
374
- <span class="method-click-advice">click to toggle source</span>
375
-
376
- </div>
377
-
378
-
379
- <div class="method-description">
380
-
381
- <p>Add new neurons to the fold</p>
382
-
383
-
384
-
385
-
386
- <div class="method-source-code" id="add_neurons-source">
387
- <pre><span class="ruby-comment"># File lib/rubyneat/critter.rb, line 155</span>
388
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">add_neurons</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">neus</span>)
389
- <span class="ruby-identifier">neus</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">neu</span><span class="ruby-operator">|</span>
390
- <span class="ruby-ivar">@neurons</span>[<span class="ruby-identifier">neu</span>.<span class="ruby-identifier">name</span>] = <span class="ruby-identifier">neu</span>
391
- <span class="ruby-keyword">end</span>
392
- <span class="ruby-keyword">end</span></pre>
393
- </div>
394
-
395
- </div>
396
-
397
-
398
-
399
-
400
- </div>
401
-
402
-
403
- <div id="method-i-dump_s" class="method-detail ">
404
-
405
- <div class="method-heading">
406
- <span class="method-name">dump_s</span><span
407
- class="method-args">()</span>
408
-
409
- <span class="method-click-advice">click to toggle source</span>
410
-
411
- </div>
412
-
413
-
414
- <div class="method-description">
415
-
416
-
417
-
418
-
419
-
420
-
421
- <div class="method-source-code" id="dump_s-source">
422
- <pre><span class="ruby-comment"># File lib/rubyneat/critter.rb, line 218</span>
423
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">dump_s</span>
424
- <span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-string">&quot;\ngenes:\n&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-ivar">@genes</span>.<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">k</span>, <span class="ruby-identifier">gene</span><span class="ruby-operator">|</span>
425
- <span class="ruby-identifier">gene</span>.<span class="ruby-identifier">to_s</span>}.<span class="ruby-identifier">join</span>(<span class="ruby-string">&quot;\n&quot;</span>) <span class="ruby-operator">+</span> <span class="ruby-string">&quot;\nneurons:\n&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-ivar">@neurons</span>.<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">k</span>, <span class="ruby-identifier">neu</span><span class="ruby-operator">|</span>
426
- <span class="ruby-identifier">neu</span>.<span class="ruby-identifier">to_s</span>}.<span class="ruby-identifier">join</span>(<span class="ruby-string">&quot;\n&quot;</span>)
427
- <span class="ruby-keyword">end</span></pre>
428
- </div>
429
-
430
- </div>
431
-
432
-
433
-
434
-
435
- </div>
436
-
437
-
438
- <div id="method-i-fitness_cost" class="method-detail ">
439
-
440
- <div class="method-heading">
441
- <span class="method-name">fitness_cost</span><span
442
- class="method-args">()</span>
443
-
444
- <span class="method-click-advice">click to toggle source</span>
445
-
446
- </div>
447
-
448
-
449
- <div class="method-description">
450
-
451
- <p>Calculate the cost of this genotype.</p>
452
-
453
-
454
-
455
-
456
- <div class="method-source-code" id="fitness_cost-source">
457
- <pre><span class="ruby-comment"># File lib/rubyneat/critter.rb, line 213</span>
458
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">fitness_cost</span>
459
- <span class="ruby-identifier">p</span> = <span class="ruby-ivar">@controller</span>.<span class="ruby-identifier">parms</span>
460
- <span class="ruby-identifier">p</span>.<span class="ruby-identifier">fitness_cost_per_neuron</span> <span class="ruby-operator">*</span> <span class="ruby-ivar">@neurons</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">p</span>.<span class="ruby-identifier">fitness_cost_per_gene</span> <span class="ruby-operator">*</span> <span class="ruby-ivar">@genes</span>.<span class="ruby-identifier">size</span>
461
- <span class="ruby-keyword">end</span></pre>
462
- </div>
463
-
464
- </div>
465
-
466
-
467
-
468
-
469
- </div>
470
-
471
-
472
- <div id="method-i-forget-21" class="method-detail ">
473
-
474
- <div class="method-heading">
475
- <span class="method-name">forget!</span><span
476
- class="method-args">()</span>
477
-
478
- <span class="method-click-advice">click to toggle source</span>
479
-
480
- </div>
481
-
482
-
483
- <div class="method-description">
484
-
485
- <p>Make the neurons forget their wiring.</p>
486
-
487
-
488
-
489
-
490
- <div class="method-source-code" id="forget-21-source">
491
- <pre><span class="ruby-comment"># File lib/rubyneat/critter.rb, line 134</span>
492
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">forget!</span>
493
- <span class="ruby-ivar">@neurons</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">name</span>, <span class="ruby-identifier">neu</span><span class="ruby-operator">|</span> <span class="ruby-identifier">neu</span>.<span class="ruby-identifier">clear_graph</span> }
494
- <span class="ruby-ivar">@neural_gene_map</span> = <span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">h</span>, <span class="ruby-identifier">k</span><span class="ruby-operator">|</span> <span class="ruby-identifier">h</span>[<span class="ruby-identifier">k</span>] = [] }
495
- <span class="ruby-keyword">end</span></pre>
496
- </div>
497
-
498
- </div>
499
-
500
-
501
-
502
-
503
- </div>
504
-
505
-
506
- <div id="method-i-innervate-21" class="method-detail ">
507
-
508
- <div class="method-heading">
509
- <span class="method-name">innervate!</span><span
510
- class="method-args">(*hneus)</span>
511
-
512
- <span class="method-click-advice">click to toggle source</span>
513
-
514
- </div>
515
-
516
-
517
- <div class="method-description">
518
-
519
- <p>We take the neural hashes (presumably from other neurons), and innervate
520
- them. We do this in distinctions based on the neuron&#39;s names. FIXME We
521
- need to randomly select a neuron in the case of clashes. @param [Hash]
522
- hneus – hashes of neurons to innervate</p>
523
-
524
-
525
-
526
-
527
- <div class="method-source-code" id="innervate-21-source">
528
- <pre><span class="ruby-comment"># File lib/rubyneat/critter.rb, line 175</span>
529
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">innervate!</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">hneus</span>)
530
- <span class="ruby-identifier">hneus</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">neus</span><span class="ruby-operator">|</span>
531
- <span class="ruby-ivar">@neurons</span>.<span class="ruby-identifier">merge!</span> <span class="ruby-identifier">neus</span>.<span class="ruby-identifier">dclone</span>
532
- <span class="ruby-keyword">end</span>
533
- <span class="ruby-keyword">end</span></pre>
534
- </div>
535
-
536
- </div>
537
-
538
-
539
-
540
-
541
- </div>
542
-
543
-
544
- <div id="method-i-neucleate" class="method-detail ">
545
-
546
- <div class="method-heading">
547
- <span class="method-name">neucleate</span><span
548
- class="method-args">(clean: true, &block)</span>
549
-
550
- <span class="method-click-advice">click to toggle source</span>
551
-
552
- </div>
553
-
554
-
555
- <div class="method-description">
556
-
557
- <p>We add genes given here to the genome. An array of genes is returned from
558
- the block and we simply add them in. @param [boolean] clean @param [Proc]
559
- block</p>
560
-
561
-
562
-
563
-
564
- <div class="method-source-code" id="neucleate-source">
565
- <pre><span class="ruby-comment"># File lib/rubyneat/critter.rb, line 113</span>
566
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">neucleate</span>(<span class="ruby-identifier">clean</span><span class="ruby-operator">:</span> <span class="ruby-keyword">true</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
567
- <span class="ruby-identifier">genes</span> = <span class="ruby-constant">Hash</span>[<span class="ruby-identifier">block</span>.(<span class="ruby-keyword">self</span>).<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">g</span><span class="ruby-operator">|</span>
568
- <span class="ruby-identifier">g</span>.<span class="ruby-identifier">genotype</span> = <span class="ruby-keyword">self</span>
569
- [<span class="ruby-identifier">g</span>.<span class="ruby-identifier">innovation</span>, <span class="ruby-identifier">g</span>] }]
570
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">clean</span>
571
- <span class="ruby-ivar">@genes</span> = <span class="ruby-identifier">genes</span>
572
- <span class="ruby-keyword">else</span>
573
- <span class="ruby-ivar">@genes</span>.<span class="ruby-identifier">merge!</span> <span class="ruby-identifier">genes</span>
574
- <span class="ruby-keyword">end</span>
575
- <span class="ruby-identifier">nuke_redundancies!</span>
576
- <span class="ruby-keyword">end</span></pre>
577
- </div>
578
-
579
- </div>
580
-
581
-
582
-
583
-
584
- </div>
585
-
586
-
587
- <div id="method-i-nuke_redundancies-21" class="method-detail ">
588
-
589
- <div class="method-heading">
590
- <span class="method-name">nuke_redundancies!</span><span
591
- class="method-args">()</span>
592
-
593
- <span class="method-click-advice">click to toggle source</span>
594
-
595
- </div>
596
-
597
-
598
- <div class="method-description">
599
-
600
- <p>Remove any redundancies in the genome, any genes refering to the same two
601
- neurons. Simply choose one and delete the rest. TODO: implement
602
- nuke_redundancies!</p>
603
-
604
-
605
-
606
-
607
- <div class="method-source-code" id="nuke_redundancies-21-source">
608
- <pre><span class="ruby-comment"># File lib/rubyneat/critter.rb, line 129</span>
609
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">nuke_redundancies!</span>
610
- <span class="ruby-identifier">log</span>.<span class="ruby-identifier">warn</span> <span class="ruby-string">&#39;nuke_redundancies! NIY&#39;</span>
611
- <span class="ruby-keyword">end</span></pre>
612
- </div>
613
-
614
- </div>
615
-
616
-
617
-
618
-
619
- </div>
620
-
621
-
622
- <div id="method-i-prune-21" class="method-detail ">
623
-
624
- <div class="method-heading">
625
- <span class="method-name">prune!</span><span
626
- class="method-args">()</span>
627
-
628
- <span class="method-click-advice">click to toggle source</span>
629
-
630
- </div>
631
-
632
-
633
- <div class="method-description">
634
-
635
- <p>Go through the list of neurons and drop any neurons not referenced by the
636
- genes.</p>
637
-
638
- <p>Then go through the genes and drop any that are dangling (i.e. no matching
639
- neurons)</p>
640
-
641
- <p>Then make sure that @neural_inputs and @neural_outputs reference the actual
642
- instance neurons in @neurons</p>
643
-
644
- <p>TODO add this circularity check to prune!</p>
645
-
646
-
647
-
648
-
649
- <div class="method-source-code" id="prune-21-source">
650
- <pre><span class="ruby-comment"># File lib/rubyneat/critter.rb, line 191</span>
651
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">prune!</span>
652
- <span class="ruby-comment"># Take care of dangling neurons</span>
653
- <span class="ruby-identifier">neunames</span> = <span class="ruby-ivar">@genes</span>.<span class="ruby-identifier">values</span>.<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">g</span><span class="ruby-operator">|</span> [<span class="ruby-identifier">g</span>.<span class="ruby-identifier">in_neuron</span>, <span class="ruby-identifier">g</span>.<span class="ruby-identifier">out_neuron</span>]}.<span class="ruby-identifier">flatten</span>.<span class="ruby-identifier">to_set</span>
654
- <span class="ruby-ivar">@neurons</span> = <span class="ruby-constant">Hash</span>[<span class="ruby-ivar">@neurons</span>.<span class="ruby-identifier">values</span>.<span class="ruby-identifier">reject</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">n</span><span class="ruby-operator">|</span>
655
- <span class="ruby-keyword">not</span> <span class="ruby-identifier">neunames</span>.<span class="ruby-identifier">member?</span> <span class="ruby-identifier">n</span>.<span class="ruby-identifier">name</span>
656
- <span class="ruby-keyword">end</span>.<span class="ruby-identifier">map</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">n</span><span class="ruby-operator">|</span>
657
- [<span class="ruby-identifier">n</span>.<span class="ruby-identifier">name</span>, <span class="ruby-identifier">n</span>]
658
- <span class="ruby-keyword">end</span>]
659
-
660
- <span class="ruby-comment"># Take care of dangling genes</span>
661
- <span class="ruby-ivar">@genes</span> = <span class="ruby-constant">Hash</span>[<span class="ruby-ivar">@genes</span>.<span class="ruby-identifier">values</span>.<span class="ruby-identifier">reject</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">gene</span><span class="ruby-operator">|</span>
662
- <span class="ruby-keyword">not</span> (<span class="ruby-ivar">@neurons</span>.<span class="ruby-identifier">member?</span>(<span class="ruby-identifier">gene</span>.<span class="ruby-identifier">in_neuron</span>) <span class="ruby-keyword">and</span> <span class="ruby-ivar">@neurons</span>.<span class="ruby-identifier">member?</span>(<span class="ruby-identifier">gene</span>.<span class="ruby-identifier">out_neuron</span>))
663
- <span class="ruby-keyword">end</span>.<span class="ruby-identifier">map</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">gene</span><span class="ruby-operator">|</span>
664
- [<span class="ruby-identifier">gene</span>.<span class="ruby-identifier">name</span>, <span class="ruby-identifier">gene</span>]
665
- <span class="ruby-keyword">end</span>]
666
-
667
- <span class="ruby-comment"># Make sure @neural_inputs and @neural_outputs are consistent</span>
668
- <span class="ruby-ivar">@neural_inputs</span> = <span class="ruby-constant">Hash</span>[<span class="ruby-ivar">@neural_inputs</span>.<span class="ruby-identifier">values</span>.<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">n</span><span class="ruby-operator">|</span> [<span class="ruby-identifier">n</span>.<span class="ruby-identifier">name</span>, <span class="ruby-ivar">@neurons</span>[<span class="ruby-identifier">n</span>.<span class="ruby-identifier">name</span>]]}]
669
- <span class="ruby-ivar">@neural_outputs</span> = <span class="ruby-constant">Hash</span>[<span class="ruby-ivar">@neural_outputs</span>.<span class="ruby-identifier">values</span>.<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">n</span><span class="ruby-operator">|</span> [<span class="ruby-identifier">n</span>.<span class="ruby-identifier">name</span>, <span class="ruby-ivar">@neurons</span>[<span class="ruby-identifier">n</span>.<span class="ruby-identifier">name</span>]]}]
670
- <span class="ruby-keyword">end</span></pre>
671
- </div>
672
-
673
- </div>
674
-
675
-
676
-
677
-
678
- </div>
679
-
680
-
681
- <div id="method-i-wire-21" class="method-detail ">
682
-
683
- <div class="method-heading">
684
- <span class="method-name">wire!</span><span
685
- class="method-args">()</span>
686
-
687
- <span class="method-click-advice">click to toggle source</span>
688
-
689
- </div>
690
-
691
-
692
- <div class="method-description">
693
-
694
- <p>Wire up the neurons based on the genes.</p>
695
-
696
-
697
-
698
-
699
- <div class="method-source-code" id="wire-21-source">
700
- <pre><span class="ruby-comment"># File lib/rubyneat/critter.rb, line 140</span>
701
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">wire!</span>
702
- <span class="ruby-identifier">forget!</span>
703
- <span class="ruby-ivar">@genes</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">innov</span>, <span class="ruby-identifier">gene</span><span class="ruby-operator">|</span>
704
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">gene</span>.<span class="ruby-identifier">enabled?</span>
705
- <span class="ruby-identifier">raise</span> <span class="ruby-constant">NeatException</span>.<span class="ruby-identifier">new</span> <span class="ruby-node">&quot;Can&#39;t find #{gene.out_neuron}&quot;</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@neurons</span>[<span class="ruby-identifier">gene</span>.<span class="ruby-identifier">out_neuron</span>].<span class="ruby-identifier">nil?</span>
706
- <span class="ruby-ivar">@neurons</span>[<span class="ruby-identifier">gene</span>.<span class="ruby-identifier">out_neuron</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-ivar">@neurons</span>[<span class="ruby-identifier">gene</span>.<span class="ruby-identifier">in_neuron</span>]
707
- <span class="ruby-ivar">@neural_gene_map</span>[<span class="ruby-identifier">gene</span>.<span class="ruby-identifier">out_neuron</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">gene</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">gene</span>.<span class="ruby-identifier">in_neuron</span>.<span class="ruby-identifier">nil?</span>
708
- <span class="ruby-keyword">end</span>
709
- <span class="ruby-keyword">end</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@genes</span>.<span class="ruby-identifier">nil?</span>
710
- <span class="ruby-keyword">if</span> <span class="ruby-ivar">@genes</span>.<span class="ruby-identifier">nil?</span>
711
- <span class="ruby-identifier">$log</span>.<span class="ruby-identifier">error</span> <span class="ruby-string">&#39;Genes Not Present&#39;</span>
712
- <span class="ruby-keyword">end</span>
713
- <span class="ruby-keyword">end</span></pre>
714
- </div>
715
-
716
- </div>
717
-
718
-
719
-
720
-
721
- </div>
722
-
723
-
724
- </section>
725
-
726
- </section>
727
- </main>
728
-
729
-
730
- <footer id="validator-badges" role="contentinfo">
731
- <p><a href="http://validator.w3.org/check/referer">Validate</a>
732
- <p>Generated by <a href="http://rdoc.rubyforge.org">RDoc</a> 4.1.1.
733
- <p>Based on <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
734
- </footer>
735
-