rubyneat 0.3.5.alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (261) hide show
  1. checksums.yaml +7 -0
  2. data/.directory +4 -0
  3. data/.gitignore.orig +20 -0
  4. data/.idea/.name +1 -0
  5. data/.idea/.rakeTasks +7 -0
  6. data/.idea/dictionaries/trader.xml +3 -0
  7. data/.idea/encodings.xml +5 -0
  8. data/.idea/misc.xml +5 -0
  9. data/.idea/modules.xml +9 -0
  10. data/.idea/rubyneat.iml +197 -0
  11. data/.idea/runConfigurations/invpend_neat.xml +26 -0
  12. data/.idea/runConfigurations/sigdebug_neat.xml +24 -0
  13. data/.idea/runConfigurations/xor_neat.xml +26 -0
  14. data/.idea/runConfigurations/xordebug_neat.xml +24 -0
  15. data/.idea/runConfigurations/xorsin_neat.xml +24 -0
  16. data/.idea/scopes/scope_settings.xml +5 -0
  17. data/.idea/vcs.xml +7 -0
  18. data/.idea/workspace.xml +1124 -0
  19. data/.semver +5 -0
  20. data/.yardoc/checksums +11 -0
  21. data/.yardoc/object_types +0 -0
  22. data/.yardoc/objects/root.dat +0 -0
  23. data/.yardoc/proxy_types +0 -0
  24. data/Gemfile +32 -0
  25. data/Gemfile.lock +135 -0
  26. data/Gemfile.lock.orig +147 -0
  27. data/Guardfile +8 -0
  28. data/Rakefile +61 -0
  29. data/bin/neat +83 -0
  30. data/config/application.rb +5 -0
  31. data/doc/ControllerPoint.html +125 -0
  32. data/doc/CuteA.html +286 -0
  33. data/doc/CuteB.html +297 -0
  34. data/doc/DSL.html +883 -0
  35. data/doc/NEAT/BasicNeuronTypes/BiasNeuron.html +518 -0
  36. data/doc/NEAT/BasicNeuronTypes/CosineNeuron.html +274 -0
  37. data/doc/NEAT/BasicNeuronTypes/InputNeuron.html +366 -0
  38. data/doc/NEAT/BasicNeuronTypes/SigmoidNeuron.html +275 -0
  39. data/doc/NEAT/BasicNeuronTypes/SineNeuron.html +274 -0
  40. data/doc/NEAT/BasicNeuronTypes/TanhNeuron.html +274 -0
  41. data/doc/NEAT/BasicNeuronTypes.html +136 -0
  42. data/doc/NEAT/Controller/NeatSettings.html +3985 -0
  43. data/doc/NEAT/Controller.html +2490 -0
  44. data/doc/NEAT/Critter/Genotype/Gene.html +979 -0
  45. data/doc/NEAT/Critter/Genotype.html +1601 -0
  46. data/doc/NEAT/Critter/Phenotype.html +603 -0
  47. data/doc/NEAT/Critter.html +1037 -0
  48. data/doc/NEAT/DSL.html +1255 -0
  49. data/doc/NEAT/Evaluator.html +420 -0
  50. data/doc/NEAT/Evolver/CritterOp.html +551 -0
  51. data/doc/NEAT/Evolver.html +602 -0
  52. data/doc/NEAT/Expressor.html +327 -0
  53. data/doc/NEAT/Graph/DependencyResolver.html +478 -0
  54. data/doc/NEAT/Graph/GraphException.html +123 -0
  55. data/doc/NEAT/Graph.html +402 -0
  56. data/doc/NEAT/NeatException.html +123 -0
  57. data/doc/NEAT/NeatOb.html +567 -0
  58. data/doc/NEAT/Neuron.html +1067 -0
  59. data/doc/NEAT/Operator.html +162 -0
  60. data/doc/NEAT/Population.html +1961 -0
  61. data/doc/NEAT/Trait.html +169 -0
  62. data/doc/NEAT.html +588 -0
  63. data/doc/_index.html +373 -0
  64. data/doc/class_list.html +54 -0
  65. data/doc/css/common.css +1 -0
  66. data/doc/css/full_list.css +57 -0
  67. data/doc/css/style.css +339 -0
  68. data/doc/file_list.html +53 -0
  69. data/doc/frames.html +26 -0
  70. data/doc/index.html +373 -0
  71. data/doc/js/app.js +219 -0
  72. data/doc/js/full_list.js +178 -0
  73. data/doc/js/jquery.js +4 -0
  74. data/doc/method_list.html +1415 -0
  75. data/doc/top-level-namespace.html +164 -0
  76. data/foo/foo_aquarium_example.rb +38 -0
  77. data/foo/foo_gosu.rb +99 -0
  78. data/foo/foo_rubygoo.rb +104 -0
  79. data/foo/foo_sdl.rb +34 -0
  80. data/foo/icon.png +0 -0
  81. data/lib/rubyneat/critter.rb +374 -0
  82. data/lib/rubyneat/default_neat.rb +10 -0
  83. data/lib/rubyneat/dsl.rb +130 -0
  84. data/lib/rubyneat/evaluator.rb +51 -0
  85. data/lib/rubyneat/evolver.rb +315 -0
  86. data/lib/rubyneat/expressor.rb +110 -0
  87. data/lib/rubyneat/graph.rb +95 -0
  88. data/lib/rubyneat/neuron.rb +152 -0
  89. data/lib/rubyneat/population.rb +227 -0
  90. data/lib/rubyneat/rubyneat.rb +429 -0
  91. data/lib/rubyneat.rb +8 -0
  92. data/neater/invpend_neat.rb +150 -0
  93. data/neater/rnlib/inverted_pendulum.rb +380 -0
  94. data/neater/rnlib/xor.rb +10 -0
  95. data/neater/sigdebug_neat.rb +136 -0
  96. data/neater/xor_neat.rb +137 -0
  97. data/neater/xoranalog_neat.rb +138 -0
  98. data/neater/xorsin_neat.rb +143 -0
  99. data/projectFilesBackup/.idea/rubyneat.iml +180 -0
  100. data/public/.directory +4 -0
  101. data/public/background.png +0 -0
  102. data/public/background.xcf +0 -0
  103. data/public/cart.png +0 -0
  104. data/public/cart.xcf +0 -0
  105. data/public/metalpoles_molton_ball_l.jpg +0 -0
  106. data/public/old_background.png +0 -0
  107. data/public/pointer.png +0 -0
  108. data/public/pointer.xcf +0 -0
  109. data/public/pole.kra +0 -0
  110. data/public/pole.png +0 -0
  111. data/public/pole.xcf +0 -0
  112. data/public/wheel-of-year-stone-DD-131-WOYS.jpg +0 -0
  113. data/public/wheel.png +0 -0
  114. data/public/wheel.xcf +0 -0
  115. data/public/wood-planks-texture.jpg +0 -0
  116. data/rdoc/ControllerPoint.html +116 -0
  117. data/rdoc/CuteA.html +177 -0
  118. data/rdoc/CuteB.html +178 -0
  119. data/rdoc/DSLSetup.html +177 -0
  120. data/rdoc/GameTestWindow.html +242 -0
  121. data/rdoc/GameWindow.html +292 -0
  122. data/rdoc/Gemfile.html +215 -0
  123. data/rdoc/Gemfile_lock.html +327 -0
  124. data/rdoc/GraphTest.html +210 -0
  125. data/rdoc/Guardfile.html +198 -0
  126. data/rdoc/InvertedPendulum/Cart.html +668 -0
  127. data/rdoc/InvertedPendulum/DSL.html +259 -0
  128. data/rdoc/InvertedPendulum/InvPendWindow.html +402 -0
  129. data/rdoc/InvertedPendulum.html +198 -0
  130. data/rdoc/Logger.html +98 -0
  131. data/rdoc/NEAT/BasicNeuronTypes/BiasNeuron.html +265 -0
  132. data/rdoc/NEAT/BasicNeuronTypes/CosineNeuron.html +162 -0
  133. data/rdoc/NEAT/BasicNeuronTypes/InputNeuron.html +206 -0
  134. data/rdoc/NEAT/BasicNeuronTypes/SigmoidNeuron.html +162 -0
  135. data/rdoc/NEAT/BasicNeuronTypes/SineNeuron.html +162 -0
  136. data/rdoc/NEAT/BasicNeuronTypes/TanhNeuron.html +161 -0
  137. data/rdoc/NEAT/BasicNeuronTypes.html +107 -0
  138. data/rdoc/NEAT/Controller/NeatSettings.html +880 -0
  139. data/rdoc/NEAT/Controller.html +729 -0
  140. data/rdoc/NEAT/Critter/Genotype/Gene.html +457 -0
  141. data/rdoc/NEAT/Critter/Genotype.html +735 -0
  142. data/rdoc/NEAT/Critter/Phenotype.html +330 -0
  143. data/rdoc/NEAT/Critter.html +489 -0
  144. data/rdoc/NEAT/DSL.html +729 -0
  145. data/rdoc/NEAT/Evaluator.html +256 -0
  146. data/rdoc/NEAT/Evolver/CritterOp.html +349 -0
  147. data/rdoc/NEAT/Evolver.html +891 -0
  148. data/rdoc/NEAT/Expressor.html +402 -0
  149. data/rdoc/NEAT/Graph/DependencyResolver.html +291 -0
  150. data/rdoc/NEAT/Graph/GraphException.html +105 -0
  151. data/rdoc/NEAT/Graph.html +263 -0
  152. data/rdoc/NEAT/NeatException.html +105 -0
  153. data/rdoc/NEAT/NeatOb.html +325 -0
  154. data/rdoc/NEAT/Neuron.html +481 -0
  155. data/rdoc/NEAT/Operator.html +109 -0
  156. data/rdoc/NEAT/Population.html +935 -0
  157. data/rdoc/NEAT/Trait.html +117 -0
  158. data/rdoc/NEAT.html +422 -0
  159. data/rdoc/Object.html +384 -0
  160. data/rdoc/Phi.html +98 -0
  161. data/rdoc/Player.html +383 -0
  162. data/rdoc/Rakefile.html +254 -0
  163. data/rdoc/RubyNEAT/Application.html +105 -0
  164. data/rdoc/RubyNEAT.html +98 -0
  165. data/rdoc/SDL/Event2.html +98 -0
  166. data/rdoc/SDL.html +98 -0
  167. data/rdoc/Vector.html +195 -0
  168. data/rdoc/created.rid +125 -0
  169. data/rdoc/doc/ControllerPoint_html.html +299 -0
  170. data/rdoc/doc/CuteA_html.html +438 -0
  171. data/rdoc/doc/CuteB_html.html +436 -0
  172. data/rdoc/doc/DSL_html.html +992 -0
  173. data/rdoc/doc/NEAT/BasicNeuronTypes/BiasNeuron_html.html +617 -0
  174. data/rdoc/doc/NEAT/BasicNeuronTypes/CosineNeuron_html.html +413 -0
  175. data/rdoc/doc/NEAT/BasicNeuronTypes/InputNeuron_html.html +498 -0
  176. data/rdoc/doc/NEAT/BasicNeuronTypes/SigmoidNeuron_html.html +413 -0
  177. data/rdoc/doc/NEAT/BasicNeuronTypes/SineNeuron_html.html +413 -0
  178. data/rdoc/doc/NEAT/BasicNeuronTypes/TanhNeuron_html.html +412 -0
  179. data/rdoc/doc/NEAT/BasicNeuronTypes_html.html +310 -0
  180. data/rdoc/doc/NEAT/Controller/NeatSettings_html.html +3324 -0
  181. data/rdoc/doc/NEAT/Controller_html.html +2212 -0
  182. data/rdoc/doc/NEAT/Critter/Genotype/Gene_html.html +997 -0
  183. data/rdoc/doc/NEAT/Critter/Genotype_html.html +1556 -0
  184. data/rdoc/doc/NEAT/Critter/Phenotype_html.html +687 -0
  185. data/rdoc/doc/NEAT/Critter_html.html +1037 -0
  186. data/rdoc/doc/NEAT/DSL_html.html +1349 -0
  187. data/rdoc/doc/NEAT/Evaluator_html.html +556 -0
  188. data/rdoc/doc/NEAT/Evolver/CritterOp_html.html +690 -0
  189. data/rdoc/doc/NEAT/Evolver_html.html +677 -0
  190. data/rdoc/doc/NEAT/Expressor_html.html +468 -0
  191. data/rdoc/doc/NEAT/Graph/DependencyResolver_html.html +598 -0
  192. data/rdoc/doc/NEAT/Graph/GraphException_html.html +299 -0
  193. data/rdoc/doc/NEAT/Graph_html.html +527 -0
  194. data/rdoc/doc/NEAT/NeatException_html.html +299 -0
  195. data/rdoc/doc/NEAT/NeatOb_html.html +671 -0
  196. data/rdoc/doc/NEAT/Neuron_html.html +1095 -0
  197. data/rdoc/doc/NEAT/Operator_html.html +337 -0
  198. data/rdoc/doc/NEAT/Population_html.html +1795 -0
  199. data/rdoc/doc/NEAT/Trait_html.html +344 -0
  200. data/rdoc/doc/NEAT_html.html +736 -0
  201. data/rdoc/doc/_index_html.html +559 -0
  202. data/rdoc/doc/class_list_html.html +369 -0
  203. data/rdoc/doc/css/common_css.html +188 -0
  204. data/rdoc/doc/css/full_list_css.html +243 -0
  205. data/rdoc/doc/css/style_css.html +530 -0
  206. data/rdoc/doc/file_list_html.html +240 -0
  207. data/rdoc/doc/frames_html.html +217 -0
  208. data/rdoc/doc/index_html.html +559 -0
  209. data/rdoc/doc/js/app_js.html +423 -0
  210. data/rdoc/doc/js/full_list_js.html +372 -0
  211. data/rdoc/doc/js/jquery_js.html +1536 -0
  212. data/rdoc/doc/method_list_html.html +1375 -0
  213. data/rdoc/doc/top-level-namespace_html.html +317 -0
  214. data/rdoc/fonts/Lato-Light.ttf +0 -0
  215. data/rdoc/fonts/Lato-LightItalic.ttf +0 -0
  216. data/rdoc/fonts/Lato-Regular.ttf +0 -0
  217. data/rdoc/fonts/Lato-RegularItalic.ttf +0 -0
  218. data/rdoc/fonts/SourceCodePro-Bold.ttf +0 -0
  219. data/rdoc/fonts/SourceCodePro-Regular.ttf +0 -0
  220. data/rdoc/fonts.css +167 -0
  221. data/rdoc/images/add.png +0 -0
  222. data/rdoc/images/arrow_up.png +0 -0
  223. data/rdoc/images/brick.png +0 -0
  224. data/rdoc/images/brick_link.png +0 -0
  225. data/rdoc/images/bug.png +0 -0
  226. data/rdoc/images/bullet_black.png +0 -0
  227. data/rdoc/images/bullet_toggle_minus.png +0 -0
  228. data/rdoc/images/bullet_toggle_plus.png +0 -0
  229. data/rdoc/images/date.png +0 -0
  230. data/rdoc/images/delete.png +0 -0
  231. data/rdoc/images/find.png +0 -0
  232. data/rdoc/images/loadingAnimation.gif +0 -0
  233. data/rdoc/images/macFFBgHack.png +0 -0
  234. data/rdoc/images/package.png +0 -0
  235. data/rdoc/images/page_green.png +0 -0
  236. data/rdoc/images/page_white_text.png +0 -0
  237. data/rdoc/images/page_white_width.png +0 -0
  238. data/rdoc/images/plugin.png +0 -0
  239. data/rdoc/images/ruby.png +0 -0
  240. data/rdoc/images/tag_blue.png +0 -0
  241. data/rdoc/images/tag_green.png +0 -0
  242. data/rdoc/images/transparent.png +0 -0
  243. data/rdoc/images/wrench.png +0 -0
  244. data/rdoc/images/wrench_orange.png +0 -0
  245. data/rdoc/images/zoom.png +0 -0
  246. data/rdoc/index.html +282 -0
  247. data/rdoc/js/darkfish.js +140 -0
  248. data/rdoc/js/jquery.js +18 -0
  249. data/rdoc/js/navigation.js +142 -0
  250. data/rdoc/js/search.js +109 -0
  251. data/rdoc/js/search_index.js +1 -0
  252. data/rdoc/js/searcher.js +228 -0
  253. data/rdoc/rdoc.css +580 -0
  254. data/rdoc/rubyneat_gemspec.html +387 -0
  255. data/rdoc/table_of_contents.html +2502 -0
  256. data/rdoc/xordebug_log.html +170598 -0
  257. data/rdoc/xorsin_log.html +22569 -0
  258. data/rubyneat.gemspec +347 -0
  259. data/rubyneat.gemspec.orig +375 -0
  260. data/spec/lib/rubyneat/rubyneat_spec.rb +132 -0
  261. metadata +555 -0
@@ -0,0 +1,735 @@
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
+