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,729 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html>
4
+ <head>
5
+ <meta charset="UTF-8">
6
+
7
+ <title>module NEAT::DSL - 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="module">
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
+
58
+ <div id="class-metadata">
59
+
60
+
61
+ <div id="includes-section" class="nav-section">
62
+ <h3>Included Modules</h3>
63
+
64
+ <ul class="link-list">
65
+
66
+
67
+ <li><a class="include" href="../NEAT.html">NEAT</a>
68
+
69
+
70
+
71
+ <li><a class="include" href="BasicNeuronTypes.html">NEAT::BasicNeuronTypes</a>
72
+
73
+
74
+
75
+ <li><span class="include">Math</span>
76
+
77
+
78
+ </ul>
79
+ </div>
80
+
81
+
82
+ <!-- Method Quickref -->
83
+ <div id="method-list-section" class="nav-section">
84
+ <h3>Methods</h3>
85
+
86
+ <ul class="link-list" role="directory">
87
+
88
+ <li ><a href="#method-i-compare">#compare</a>
89
+
90
+ <li ><a href="#method-i-condition_boolean_vector">#condition_boolean_vector</a>
91
+
92
+ <li ><a href="#method-i-cost">#cost</a>
93
+
94
+ <li ><a href="#method-i-define">#define</a>
95
+
96
+ <li ><a href="#method-i-evolve">#evolve</a>
97
+
98
+ <li ><a href="#method-i-fitness">#fitness</a>
99
+
100
+ <li class="calls-super" ><a href="#method-i-method_missing">#method_missing</a>
101
+
102
+ <li ><a href="#method-i-query">#query</a>
103
+
104
+ <li ><a href="#method-i-recurrence">#recurrence</a>
105
+
106
+ <li ><a href="#method-i-report">#report</a>
107
+
108
+ <li ><a href="#method-i-run_engine">#run_engine</a>
109
+
110
+ <li ><a href="#method-i-simple_fitness_error">#simple_fitness_error</a>
111
+
112
+ <li ><a href="#method-i-stop_on_fitness">#stop_on_fitness</a>
113
+
114
+ <li ><a href="#method-i-uncondition_boolean_vector">#uncondition_boolean_vector</a>
115
+
116
+ </ul>
117
+ </div>
118
+
119
+ </div>
120
+ </nav>
121
+
122
+ <main role="main" aria-labelledby="module-NEAT::DSL">
123
+ <h1 id="module-NEAT::DSL" class="module">
124
+ module NEAT::DSL
125
+ </h1>
126
+
127
+ <section class="description">
128
+
129
+ </section>
130
+
131
+
132
+
133
+
134
+ <section id="5Buntitled-5D" class="documentation-section">
135
+
136
+
137
+
138
+
139
+
140
+
141
+
142
+
143
+
144
+ <section id="public-instance-5Buntitled-5D-method-details" class="method-section">
145
+ <header>
146
+ <h3>Public Instance Methods</h3>
147
+ </header>
148
+
149
+
150
+ <div id="method-i-compare" class="method-detail ">
151
+
152
+ <div class="method-heading">
153
+ <span class="method-name">compare</span><span
154
+ class="method-args">(&block)</span>
155
+
156
+ <span class="method-click-advice">click to toggle source</span>
157
+
158
+ </div>
159
+
160
+
161
+ <div class="method-description">
162
+
163
+ <p>Fitness ordering – given 2 fitness numbers, use the &lt;=&gt; to compare
164
+ them (or the equivalent, following the +1, 0, -1 that is in the sense of
165
+ &lt;=&gt;)</p>
166
+
167
+
168
+
169
+
170
+ <div class="method-source-code" id="compare-source">
171
+ <pre><span class="ruby-comment"># File lib/rubyneat/dsl.rb, line 63</span>
172
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">compare</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
173
+ <span class="ruby-constant">NEAT</span><span class="ruby-operator">::</span><span class="ruby-identifier">controller</span>.<span class="ruby-identifier">compare_func</span> = <span class="ruby-identifier">block</span>
174
+ <span class="ruby-keyword">end</span></pre>
175
+ </div>
176
+
177
+ </div>
178
+
179
+
180
+
181
+
182
+ </div>
183
+
184
+
185
+ <div id="method-i-condition_boolean_vector" class="method-detail ">
186
+
187
+ <div class="method-heading">
188
+ <span class="method-name">condition_boolean_vector</span><span
189
+ class="method-args">(vec, sig = :tanh)</span>
190
+
191
+ <span class="method-click-advice">click to toggle source</span>
192
+
193
+ </div>
194
+
195
+
196
+ <div class="method-description">
197
+
198
+ <p>Helper function to Condition boolean vectors to be +1 if true, -1 if false
199
+ (0 if sigmoid)</p>
200
+
201
+
202
+
203
+
204
+ <div class="method-source-code" id="condition_boolean_vector-source">
205
+ <pre><span class="ruby-comment"># File lib/rubyneat/dsl.rb, line 81</span>
206
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">condition_boolean_vector</span>(<span class="ruby-identifier">vec</span>, <span class="ruby-identifier">sig</span> = <span class="ruby-value">:tanh</span>)
207
+ <span class="ruby-identifier">vec</span>.<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span> <span class="ruby-identifier">b</span> <span class="ruby-operator">?</span> <span class="ruby-value">1</span> <span class="ruby-operator">:</span> ((<span class="ruby-identifier">sig</span> <span class="ruby-operator">==</span> <span class="ruby-value">:sigmoid</span>) <span class="ruby-operator">?</span> <span class="ruby-value">0</span> <span class="ruby-operator">:</span> <span class="ruby-value">-1</span>)}
208
+ <span class="ruby-keyword">end</span></pre>
209
+ </div>
210
+
211
+ </div>
212
+
213
+
214
+
215
+
216
+ </div>
217
+
218
+
219
+ <div id="method-i-cost" class="method-detail ">
220
+
221
+ <div class="method-heading">
222
+ <span class="method-name">cost</span><span
223
+ class="method-args">(&block)</span>
224
+
225
+ <span class="method-click-advice">click to toggle source</span>
226
+
227
+ </div>
228
+
229
+
230
+ <div class="method-description">
231
+
232
+ <p>Calculation to add the cost to the fitness, resulting in a fitness that
233
+ incorporates the cost for sorting purposes.</p>
234
+
235
+
236
+
237
+
238
+ <div class="method-source-code" id="cost-source">
239
+ <pre><span class="ruby-comment"># File lib/rubyneat/dsl.rb, line 69</span>
240
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">cost</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
241
+ <span class="ruby-constant">NEAT</span><span class="ruby-operator">::</span><span class="ruby-identifier">controller</span>.<span class="ruby-identifier">cost_func</span> = <span class="ruby-identifier">block</span>
242
+ <span class="ruby-keyword">end</span></pre>
243
+ </div>
244
+
245
+ </div>
246
+
247
+
248
+
249
+
250
+ </div>
251
+
252
+
253
+ <div id="method-i-define" class="method-detail ">
254
+
255
+ <div class="method-heading">
256
+ <span class="method-name">define</span><span
257
+ class="method-args">(name = NEAT.random_name_generator, &block)</span>
258
+
259
+ <span class="method-click-advice">click to toggle source</span>
260
+
261
+ </div>
262
+
263
+
264
+ <div class="method-description">
265
+
266
+ <p><a href="DSL.html">DSL</a> – Define defines the parameters to the
267
+ controller.</p>
268
+
269
+
270
+
271
+
272
+ <div class="method-source-code" id="define-source">
273
+ <pre><span class="ruby-comment"># File lib/rubyneat/dsl.rb, line 15</span>
274
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">define</span>(<span class="ruby-identifier">name</span> = <span class="ruby-constant">NEAT</span>.<span class="ruby-identifier">random_name_generator</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
275
+ [
276
+ <span class="ruby-value">:inputs</span>,
277
+ <span class="ruby-value">:outputs</span>,
278
+ <span class="ruby-value">:hidden</span> <span class="ruby-comment"># we really don&#39;t care about mapping hidden neurons, but we&#39;ll ignore them later.</span>
279
+ ].<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">iometh</span><span class="ruby-operator">|</span>
280
+ <span class="ruby-identifier">instance_eval</span> <span class="ruby-node">%Q[
281
+ def #{iometh}(nodes = nil, &amp;block)
282
+ neui = unless nodes.nil?
283
+ nodes
284
+ else
285
+ block.()
286
+ end
287
+ NEAT::controller.neural_#{iometh} = if neui.kind_of? Hash
288
+ neui
289
+ else
290
+ Hash[neui.map{|n| [NEAT::random_name_generator, n]}]
291
+ end
292
+ end]</span>
293
+ <span class="ruby-keyword">end</span>
294
+ <span class="ruby-identifier">block</span>.(<span class="ruby-constant">NEAT</span><span class="ruby-operator">::</span><span class="ruby-identifier">controller</span>)
295
+ <span class="ruby-keyword">end</span></pre>
296
+ </div>
297
+
298
+ </div>
299
+
300
+
301
+
302
+
303
+ </div>
304
+
305
+
306
+ <div id="method-i-evolve" class="method-detail ">
307
+
308
+ <div class="method-heading">
309
+ <span class="method-name">evolve</span><span
310
+ class="method-args">(&block)</span>
311
+
312
+ <span class="method-click-advice">click to toggle source</span>
313
+
314
+ </div>
315
+
316
+
317
+ <div class="method-description">
318
+
319
+ <p><a href="DSL.html">DSL</a> – Run evolution</p>
320
+
321
+
322
+
323
+
324
+ <div class="method-source-code" id="evolve-source">
325
+ <pre><span class="ruby-comment"># File lib/rubyneat/dsl.rb, line 39</span>
326
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">evolve</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
327
+ <span class="ruby-comment"># Query function is called with the sequence (time evolution) number,</span>
328
+ <span class="ruby-comment"># and returns an array or hash of parameters that will be given</span>
329
+ <span class="ruby-comment"># to the input nodes. In the case of hash, the keys in the hash</span>
330
+ <span class="ruby-comment"># shall correspond to the names given to the input neurons.</span>
331
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">query</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
332
+ <span class="ruby-constant">NEAT</span><span class="ruby-operator">::</span><span class="ruby-identifier">controller</span>.<span class="ruby-identifier">query_func</span> = <span class="ruby-identifier">block</span>
333
+ <span class="ruby-keyword">end</span>
334
+
335
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">recurrence</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
336
+ <span class="ruby-constant">NEAT</span><span class="ruby-operator">::</span><span class="ruby-identifier">controller</span>.<span class="ruby-identifier">recurrence_func</span> = <span class="ruby-identifier">block</span>
337
+ <span class="ruby-keyword">end</span>
338
+
339
+ <span class="ruby-comment"># fitness function calls the block with 2 vectors or two hashes, input and output</span>
340
+ <span class="ruby-comment"># vectors of the critter being evaluated for fitness, as well as a sequence</span>
341
+ <span class="ruby-comment"># number that can be used to index what the actual output should be.</span>
342
+ <span class="ruby-comment"># |vin, vout, seq|</span>
343
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">fitness</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
344
+ <span class="ruby-constant">NEAT</span><span class="ruby-operator">::</span><span class="ruby-identifier">controller</span>.<span class="ruby-identifier">fitness_func</span> = <span class="ruby-identifier">block</span>
345
+ <span class="ruby-keyword">end</span>
346
+
347
+ <span class="ruby-comment"># Fitness ordering -- given 2 fitness numbers,</span>
348
+ <span class="ruby-comment"># use the &lt;=&gt; to compare them (or the equivalent, following</span>
349
+ <span class="ruby-comment"># the +1, 0, -1 that is in the sense of &lt;=&gt;)</span>
350
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">compare</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
351
+ <span class="ruby-constant">NEAT</span><span class="ruby-operator">::</span><span class="ruby-identifier">controller</span>.<span class="ruby-identifier">compare_func</span> = <span class="ruby-identifier">block</span>
352
+ <span class="ruby-keyword">end</span>
353
+
354
+ <span class="ruby-comment"># Calculation to add the cost to the fitness, resulting in a fitness</span>
355
+ <span class="ruby-comment"># that incorporates the cost for sorting purposes.</span>
356
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">cost</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
357
+ <span class="ruby-constant">NEAT</span><span class="ruby-operator">::</span><span class="ruby-identifier">controller</span>.<span class="ruby-identifier">cost_func</span> = <span class="ruby-identifier">block</span>
358
+ <span class="ruby-keyword">end</span>
359
+
360
+ <span class="ruby-comment"># Stop the progression once the fitness criteria is reached</span>
361
+ <span class="ruby-comment"># for the most fit critter</span>
362
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">stop_on_fitness</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
363
+ <span class="ruby-constant">NEAT</span><span class="ruby-operator">::</span><span class="ruby-identifier">controller</span>.<span class="ruby-identifier">stop_on_fit_func</span> = <span class="ruby-identifier">block</span>
364
+ <span class="ruby-keyword">end</span>
365
+
366
+ <span class="ruby-comment"># Helper function to</span>
367
+ <span class="ruby-comment"># Condition boolean vectors to be +1 if true, -1 if false (0 if sigmoid)</span>
368
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">condition_boolean_vector</span>(<span class="ruby-identifier">vec</span>, <span class="ruby-identifier">sig</span> = <span class="ruby-value">:tanh</span>)
369
+ <span class="ruby-identifier">vec</span>.<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span> <span class="ruby-identifier">b</span> <span class="ruby-operator">?</span> <span class="ruby-value">1</span> <span class="ruby-operator">:</span> ((<span class="ruby-identifier">sig</span> <span class="ruby-operator">==</span> <span class="ruby-value">:sigmoid</span>) <span class="ruby-operator">?</span> <span class="ruby-value">0</span> <span class="ruby-operator">:</span> <span class="ruby-value">-1</span>)}
370
+ <span class="ruby-keyword">end</span>
371
+
372
+ <span class="ruby-comment"># Helper function to</span>
373
+ <span class="ruby-comment"># Uncondition boolean vectors to be +1 if true, -1 if false</span>
374
+ <span class="ruby-comment"># FIXME we need a better discrimination function</span>
375
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">uncondition_boolean_vector</span>(<span class="ruby-identifier">vec</span>, <span class="ruby-identifier">sig</span> = <span class="ruby-value">:tanh</span>)
376
+ <span class="ruby-identifier">vec</span>.<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">o</span><span class="ruby-operator">|</span> <span class="ruby-identifier">o</span> <span class="ruby-operator">&gt;</span> ((<span class="ruby-identifier">sig</span> <span class="ruby-operator">==</span> <span class="ruby-value">:sigmoid</span>) <span class="ruby-operator">?</span> <span class="ruby-value">0.5</span> <span class="ruby-operator">:</span> <span class="ruby-value">0</span>) <span class="ruby-operator">?</span> <span class="ruby-keyword">true</span> <span class="ruby-operator">:</span> <span class="ruby-keyword">false</span>}
377
+ <span class="ruby-keyword">end</span>
378
+
379
+ <span class="ruby-comment"># Helper function to do a simple fitness calculation</span>
380
+ <span class="ruby-comment"># on the basis of the sum of the square of the diffences</span>
381
+ <span class="ruby-comment"># of the element in the two vectors.</span>
382
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">simple_fitness_error</span>(<span class="ruby-identifier">v1</span>, <span class="ruby-identifier">v2</span>)
383
+ <span class="ruby-identifier">sqrt</span> <span class="ruby-identifier">v1</span>.<span class="ruby-identifier">zip</span>(<span class="ruby-identifier">v2</span>).<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">a</span>, <span class="ruby-identifier">b</span><span class="ruby-operator">|</span> (<span class="ruby-identifier">a</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">b</span>) <span class="ruby-operator">**</span> <span class="ruby-value">2.0</span>}.<span class="ruby-identifier">reduce</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">m</span>, <span class="ruby-identifier">c</span><span class="ruby-operator">|</span> <span class="ruby-identifier">m</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">c</span>}
384
+ <span class="ruby-keyword">end</span>
385
+
386
+ <span class="ruby-identifier">block</span>.(<span class="ruby-constant">NEAT</span><span class="ruby-operator">::</span><span class="ruby-identifier">controller</span>)
387
+ <span class="ruby-keyword">end</span></pre>
388
+ </div>
389
+
390
+ </div>
391
+
392
+
393
+
394
+
395
+ </div>
396
+
397
+
398
+ <div id="method-i-fitness" class="method-detail ">
399
+
400
+ <div class="method-heading">
401
+ <span class="method-name">fitness</span><span
402
+ class="method-args">(&block)</span>
403
+
404
+ <span class="method-click-advice">click to toggle source</span>
405
+
406
+ </div>
407
+
408
+
409
+ <div class="method-description">
410
+
411
+ <p>fitness function calls the block with 2 vectors or two hashes, input and
412
+ output vectors of the critter being evaluated for fitness, as well as a
413
+ sequence number that can be used to index what the actual output should be.
414
+ |vin, vout, seq|</p>
415
+
416
+
417
+
418
+
419
+ <div class="method-source-code" id="fitness-source">
420
+ <pre><span class="ruby-comment"># File lib/rubyneat/dsl.rb, line 56</span>
421
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">fitness</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
422
+ <span class="ruby-constant">NEAT</span><span class="ruby-operator">::</span><span class="ruby-identifier">controller</span>.<span class="ruby-identifier">fitness_func</span> = <span class="ruby-identifier">block</span>
423
+ <span class="ruby-keyword">end</span></pre>
424
+ </div>
425
+
426
+ </div>
427
+
428
+
429
+
430
+
431
+ </div>
432
+
433
+
434
+ <div id="method-i-method_missing" class="method-detail ">
435
+
436
+ <div class="method-heading">
437
+ <span class="method-name">method_missing</span><span
438
+ class="method-args">(m, *args, &block)</span>
439
+
440
+ <span class="method-click-advice">click to toggle source</span>
441
+
442
+ </div>
443
+
444
+
445
+ <div class="method-description">
446
+
447
+ <p>This is used to handle the details of our <a href="DSL.html">DSL</a>.</p>
448
+
449
+
450
+ <div class="method-calls-super">
451
+ Calls superclass method
452
+
453
+ </div>
454
+
455
+
456
+
457
+ <div class="method-source-code" id="method_missing-source">
458
+ <pre><span class="ruby-comment"># File lib/rubyneat/dsl.rb, line 114</span>
459
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">method_missing</span>(<span class="ruby-identifier">m</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
460
+ <span class="ruby-comment"># we want to catch parameters settings here.</span>
461
+ <span class="ruby-keyword">if</span> <span class="ruby-constant">NEAT</span><span class="ruby-operator">::</span><span class="ruby-identifier">controller</span>.<span class="ruby-identifier">parms</span>.<span class="ruby-identifier">respond_to?</span> (<span class="ruby-identifier">assignment</span> = (<span class="ruby-identifier">m</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-string">&#39;=&#39;</span>).<span class="ruby-identifier">to_sym</span>)
462
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">NeatException</span>.<span class="ruby-identifier">new</span>(<span class="ruby-string">&quot;Missing value(s) to %s&quot;</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">m</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">empty?</span>
463
+ <span class="ruby-identifier">val</span> = (<span class="ruby-identifier">args</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">:</span> <span class="ruby-identifier">args</span>
464
+ <span class="ruby-identifier">$log</span>.<span class="ruby-identifier">debug</span> { <span class="ruby-string">&quot;Caught method %s with parameter of %s&quot;</span> <span class="ruby-operator">%</span> [<span class="ruby-identifier">assignment</span>, <span class="ruby-identifier">val</span>] }
465
+ <span class="ruby-constant">NEAT</span><span class="ruby-operator">::</span><span class="ruby-identifier">controller</span>.<span class="ruby-identifier">parms</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">assignment</span>, <span class="ruby-identifier">val</span>)
466
+ <span class="ruby-keyword">else</span>
467
+ <span class="ruby-keyword">super</span>
468
+ <span class="ruby-keyword">end</span>
469
+ <span class="ruby-keyword">end</span></pre>
470
+ </div>
471
+
472
+ </div>
473
+
474
+
475
+
476
+
477
+ </div>
478
+
479
+
480
+ <div id="method-i-query" class="method-detail ">
481
+
482
+ <div class="method-heading">
483
+ <span class="method-name">query</span><span
484
+ class="method-args">(&block)</span>
485
+
486
+ <span class="method-click-advice">click to toggle source</span>
487
+
488
+ </div>
489
+
490
+
491
+ <div class="method-description">
492
+
493
+ <p>Query function is called with the sequence (time evolution) number, and
494
+ returns an array or hash of parameters that will be given to the input
495
+ nodes. In the case of hash, the keys in the hash shall correspond to the
496
+ names given to the input neurons.</p>
497
+
498
+
499
+
500
+
501
+ <div class="method-source-code" id="query-source">
502
+ <pre><span class="ruby-comment"># File lib/rubyneat/dsl.rb, line 44</span>
503
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">query</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
504
+ <span class="ruby-constant">NEAT</span><span class="ruby-operator">::</span><span class="ruby-identifier">controller</span>.<span class="ruby-identifier">query_func</span> = <span class="ruby-identifier">block</span>
505
+ <span class="ruby-keyword">end</span></pre>
506
+ </div>
507
+
508
+ </div>
509
+
510
+
511
+
512
+
513
+ </div>
514
+
515
+
516
+ <div id="method-i-recurrence" class="method-detail ">
517
+
518
+ <div class="method-heading">
519
+ <span class="method-name">recurrence</span><span
520
+ class="method-args">(&block)</span>
521
+
522
+ <span class="method-click-advice">click to toggle source</span>
523
+
524
+ </div>
525
+
526
+
527
+ <div class="method-description">
528
+
529
+
530
+
531
+
532
+
533
+
534
+ <div class="method-source-code" id="recurrence-source">
535
+ <pre><span class="ruby-comment"># File lib/rubyneat/dsl.rb, line 48</span>
536
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">recurrence</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
537
+ <span class="ruby-constant">NEAT</span><span class="ruby-operator">::</span><span class="ruby-identifier">controller</span>.<span class="ruby-identifier">recurrence_func</span> = <span class="ruby-identifier">block</span>
538
+ <span class="ruby-keyword">end</span></pre>
539
+ </div>
540
+
541
+ </div>
542
+
543
+
544
+
545
+
546
+ </div>
547
+
548
+
549
+ <div id="method-i-report" class="method-detail ">
550
+
551
+ <div class="method-heading">
552
+ <span class="method-name">report</span><span
553
+ class="method-args">(&block)</span>
554
+
555
+ <span class="method-click-advice">click to toggle source</span>
556
+
557
+ </div>
558
+
559
+
560
+ <div class="method-description">
561
+
562
+ <p>Report on evaluations</p>
563
+
564
+
565
+
566
+
567
+ <div class="method-source-code" id="report-source">
568
+ <pre><span class="ruby-comment"># File lib/rubyneat/dsl.rb, line 103</span>
569
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">report</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
570
+ <span class="ruby-constant">NEAT</span><span class="ruby-operator">::</span><span class="ruby-identifier">controller</span>.<span class="ruby-identifier">report_hook</span> = <span class="ruby-identifier">block</span>
571
+ <span class="ruby-keyword">end</span></pre>
572
+ </div>
573
+
574
+ </div>
575
+
576
+
577
+
578
+
579
+ </div>
580
+
581
+
582
+ <div id="method-i-run_engine" class="method-detail ">
583
+
584
+ <div class="method-heading">
585
+ <span class="method-name">run_engine</span><span
586
+ class="method-args">(&block)</span>
587
+
588
+ <span class="method-click-advice">click to toggle source</span>
589
+
590
+ </div>
591
+
592
+
593
+ <div class="method-description">
594
+
595
+ <p>Run the engine. The block is called on each generation.</p>
596
+
597
+
598
+
599
+
600
+ <div class="method-source-code" id="run_engine-source">
601
+ <pre><span class="ruby-comment"># File lib/rubyneat/dsl.rb, line 108</span>
602
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">run_engine</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
603
+ <span class="ruby-constant">NEAT</span><span class="ruby-operator">::</span><span class="ruby-identifier">controller</span>.<span class="ruby-identifier">end_run_func</span> = <span class="ruby-identifier">block</span>
604
+ <span class="ruby-constant">NEAT</span><span class="ruby-operator">::</span><span class="ruby-identifier">controller</span>.<span class="ruby-identifier">run</span>
605
+ <span class="ruby-keyword">end</span></pre>
606
+ </div>
607
+
608
+ </div>
609
+
610
+
611
+
612
+
613
+ </div>
614
+
615
+
616
+ <div id="method-i-simple_fitness_error" class="method-detail ">
617
+
618
+ <div class="method-heading">
619
+ <span class="method-name">simple_fitness_error</span><span
620
+ class="method-args">(v1, v2)</span>
621
+
622
+ <span class="method-click-advice">click to toggle source</span>
623
+
624
+ </div>
625
+
626
+
627
+ <div class="method-description">
628
+
629
+ <p>Helper function to do a simple fitness calculation on the basis of the sum
630
+ of the square of the diffences of the element in the two vectors.</p>
631
+
632
+
633
+
634
+
635
+ <div class="method-source-code" id="simple_fitness_error-source">
636
+ <pre><span class="ruby-comment"># File lib/rubyneat/dsl.rb, line 95</span>
637
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">simple_fitness_error</span>(<span class="ruby-identifier">v1</span>, <span class="ruby-identifier">v2</span>)
638
+ <span class="ruby-identifier">sqrt</span> <span class="ruby-identifier">v1</span>.<span class="ruby-identifier">zip</span>(<span class="ruby-identifier">v2</span>).<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">a</span>, <span class="ruby-identifier">b</span><span class="ruby-operator">|</span> (<span class="ruby-identifier">a</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">b</span>) <span class="ruby-operator">**</span> <span class="ruby-value">2.0</span>}.<span class="ruby-identifier">reduce</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">m</span>, <span class="ruby-identifier">c</span><span class="ruby-operator">|</span> <span class="ruby-identifier">m</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">c</span>}
639
+ <span class="ruby-keyword">end</span></pre>
640
+ </div>
641
+
642
+ </div>
643
+
644
+
645
+
646
+
647
+ </div>
648
+
649
+
650
+ <div id="method-i-stop_on_fitness" class="method-detail ">
651
+
652
+ <div class="method-heading">
653
+ <span class="method-name">stop_on_fitness</span><span
654
+ class="method-args">(&block)</span>
655
+
656
+ <span class="method-click-advice">click to toggle source</span>
657
+
658
+ </div>
659
+
660
+
661
+ <div class="method-description">
662
+
663
+ <p>Stop the progression once the fitness criteria is reached for the most fit
664
+ critter</p>
665
+
666
+
667
+
668
+
669
+ <div class="method-source-code" id="stop_on_fitness-source">
670
+ <pre><span class="ruby-comment"># File lib/rubyneat/dsl.rb, line 75</span>
671
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">stop_on_fitness</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
672
+ <span class="ruby-constant">NEAT</span><span class="ruby-operator">::</span><span class="ruby-identifier">controller</span>.<span class="ruby-identifier">stop_on_fit_func</span> = <span class="ruby-identifier">block</span>
673
+ <span class="ruby-keyword">end</span></pre>
674
+ </div>
675
+
676
+ </div>
677
+
678
+
679
+
680
+
681
+ </div>
682
+
683
+
684
+ <div id="method-i-uncondition_boolean_vector" class="method-detail ">
685
+
686
+ <div class="method-heading">
687
+ <span class="method-name">uncondition_boolean_vector</span><span
688
+ class="method-args">(vec, sig = :tanh)</span>
689
+
690
+ <span class="method-click-advice">click to toggle source</span>
691
+
692
+ </div>
693
+
694
+
695
+ <div class="method-description">
696
+
697
+ <p>Helper function to Uncondition boolean vectors to be +1 if true, -1 if
698
+ false FIXME we need a better discrimination function</p>
699
+
700
+
701
+
702
+
703
+ <div class="method-source-code" id="uncondition_boolean_vector-source">
704
+ <pre><span class="ruby-comment"># File lib/rubyneat/dsl.rb, line 88</span>
705
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">uncondition_boolean_vector</span>(<span class="ruby-identifier">vec</span>, <span class="ruby-identifier">sig</span> = <span class="ruby-value">:tanh</span>)
706
+ <span class="ruby-identifier">vec</span>.<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">o</span><span class="ruby-operator">|</span> <span class="ruby-identifier">o</span> <span class="ruby-operator">&gt;</span> ((<span class="ruby-identifier">sig</span> <span class="ruby-operator">==</span> <span class="ruby-value">:sigmoid</span>) <span class="ruby-operator">?</span> <span class="ruby-value">0.5</span> <span class="ruby-operator">:</span> <span class="ruby-value">0</span>) <span class="ruby-operator">?</span> <span class="ruby-keyword">true</span> <span class="ruby-operator">:</span> <span class="ruby-keyword">false</span>}
707
+ <span class="ruby-keyword">end</span></pre>
708
+ </div>
709
+
710
+ </div>
711
+
712
+
713
+
714
+
715
+ </div>
716
+
717
+
718
+ </section>
719
+
720
+ </section>
721
+ </main>
722
+
723
+
724
+ <footer id="validator-badges" role="contentinfo">
725
+ <p><a href="http://validator.w3.org/check/referer">Validate</a>
726
+ <p>Generated by <a href="http://rdoc.rubyforge.org">RDoc</a> 4.1.1.
727
+ <p>Based on <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
728
+ </footer>
729
+