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
data/doc/NEAT/DSL.html DELETED
@@ -1,1255 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
- <head>
5
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
- <title>
7
- Module: NEAT::DSL
8
-
9
- &mdash; Documentation by YARD 0.8.7.4
10
-
11
- </title>
12
-
13
- <link rel="stylesheet" href="../css/style.css" type="text/css" charset="utf-8" />
14
-
15
- <link rel="stylesheet" href="../css/common.css" type="text/css" charset="utf-8" />
16
-
17
- <script type="text/javascript" charset="utf-8">
18
- hasFrames = window.top.frames.main ? true : false;
19
- relpath = '../';
20
- framesUrl = "../frames.html#!NEAT/DSL.html";
21
- </script>
22
-
23
-
24
- <script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
25
-
26
- <script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
27
-
28
-
29
- </head>
30
- <body>
31
- <div id="header">
32
- <div id="menu">
33
-
34
- <a href="../_index.html">Index (D)</a> &raquo;
35
- <span class='title'><span class='object_link'><a href="../NEAT.html" title="NEAT (module)">NEAT</a></span></span>
36
- &raquo;
37
- <span class="title">DSL</span>
38
-
39
-
40
- <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
41
- </div>
42
-
43
- <div id="search">
44
-
45
- <a class="full_list_link" id="class_list_link"
46
- href="../class_list.html">
47
- Class List
48
- </a>
49
-
50
- <a class="full_list_link" id="method_list_link"
51
- href="../method_list.html">
52
- Method List
53
- </a>
54
-
55
- <a class="full_list_link" id="file_list_link"
56
- href="../file_list.html">
57
- File List
58
- </a>
59
-
60
- </div>
61
- <div class="clear"></div>
62
- </div>
63
-
64
- <iframe id="search_frame"></iframe>
65
-
66
- <div id="content"><h1>Module: NEAT::DSL
67
-
68
-
69
-
70
- </h1>
71
-
72
- <dl class="box">
73
-
74
-
75
-
76
-
77
-
78
- <dt class="r1">Includes:</dt>
79
- <dd class="r1">Math, <span class='object_link'><a href="../NEAT.html" title="NEAT (module)">NEAT</a></span>, <span class='object_link'><a href="BasicNeuronTypes.html" title="NEAT::BasicNeuronTypes (module)">BasicNeuronTypes</a></span></dd>
80
-
81
-
82
-
83
-
84
-
85
- <dt class="r2 last">Defined in:</dt>
86
- <dd class="r2 last">lib/rubyneat/dsl.rb</dd>
87
-
88
- </dl>
89
- <div class="clear"></div>
90
-
91
-
92
- <h2>Constant Summary</h2>
93
-
94
-
95
-
96
-
97
- <h2>Constant Summary</h2>
98
-
99
- <h3 class="inherited">Constants included
100
- from <span class='object_link'><a href="../NEAT.html" title="NEAT (module)">NEAT</a></span></h3>
101
- <p class="inherited"><span class='object_link'><a href="../NEAT.html#STIMULUS-constant" title="NEAT::STIMULUS (constant)">STIMULUS</a></span></p>
102
-
103
-
104
-
105
-
106
-
107
-
108
- <h2>
109
- Instance Method Summary
110
- <small>(<a href="#" class="summary_toggle">collapse</a>)</small>
111
- </h2>
112
-
113
- <ul class="summary">
114
-
115
- <li class="public ">
116
- <span class="summary_signature">
117
-
118
- <a href="#compare-instance_method" title="#compare (instance method)">- (Object) <strong>compare</strong>(&amp;block) </a>
119
-
120
-
121
-
122
- </span>
123
-
124
-
125
-
126
-
127
-
128
-
129
-
130
-
131
-
132
- <span class="summary_desc"><div class='inline'>
133
- <p>Fitness ordering – given 2 fitness numbers, use the to compare them (or
134
- the equivalent, following the +1, 0, -1 that is in the sense of ).</p>
135
- </div></span>
136
-
137
- </li>
138
-
139
-
140
- <li class="public ">
141
- <span class="summary_signature">
142
-
143
- <a href="#condition_boolean_vector-instance_method" title="#condition_boolean_vector (instance method)">- (Object) <strong>condition_boolean_vector</strong>(vec, sig = :tanh) </a>
144
-
145
-
146
-
147
- </span>
148
-
149
-
150
-
151
-
152
-
153
-
154
-
155
-
156
-
157
- <span class="summary_desc"><div class='inline'>
158
- <p>Helper function to Condition boolean vectors to be +1 if true, -1 if false
159
- (0 if sigmoid).</p>
160
- </div></span>
161
-
162
- </li>
163
-
164
-
165
- <li class="public ">
166
- <span class="summary_signature">
167
-
168
- <a href="#cost-instance_method" title="#cost (instance method)">- (Object) <strong>cost</strong>(&amp;block) </a>
169
-
170
-
171
-
172
- </span>
173
-
174
-
175
-
176
-
177
-
178
-
179
-
180
-
181
-
182
- <span class="summary_desc"><div class='inline'>
183
- <p>Calculation to add the cost to the fitness, resulting in a fitness that
184
- incorporates the cost for sorting purposes.</p>
185
- </div></span>
186
-
187
- </li>
188
-
189
-
190
- <li class="public ">
191
- <span class="summary_signature">
192
-
193
- <a href="#define-instance_method" title="#define (instance method)">- (Object) <strong>define</strong>(name = NEAT.random_name_generator, &amp;block) </a>
194
-
195
-
196
-
197
- </span>
198
-
199
-
200
-
201
-
202
-
203
-
204
-
205
-
206
-
207
- <span class="summary_desc"><div class='inline'>
208
- <p>DSL – Define defines the parameters to the controller.</p>
209
- </div></span>
210
-
211
- </li>
212
-
213
-
214
- <li class="public ">
215
- <span class="summary_signature">
216
-
217
- <a href="#evolve-instance_method" title="#evolve (instance method)">- (Object) <strong>evolve</strong>(&amp;block) </a>
218
-
219
-
220
-
221
- </span>
222
-
223
-
224
-
225
-
226
-
227
-
228
-
229
-
230
-
231
- <span class="summary_desc"><div class='inline'>
232
- <p>DSL – Run evolution.</p>
233
- </div></span>
234
-
235
- </li>
236
-
237
-
238
- <li class="public ">
239
- <span class="summary_signature">
240
-
241
- <a href="#fitness-instance_method" title="#fitness (instance method)">- (Object) <strong>fitness</strong>(&amp;block) </a>
242
-
243
-
244
-
245
- </span>
246
-
247
-
248
-
249
-
250
-
251
-
252
-
253
-
254
-
255
- <span class="summary_desc"><div class='inline'>
256
- <p>fitness function calls the block with 2 vectors or two hashes, input and
257
- output vectors of the critter being evaluated for fitness, as well as a
258
- sequence number that can be used to index what the actual output should be.</p>
259
- </div></span>
260
-
261
- </li>
262
-
263
-
264
- <li class="public ">
265
- <span class="summary_signature">
266
-
267
- <a href="#method_missing-instance_method" title="#method_missing (instance method)">- (Object) <strong>method_missing</strong>(m, *args, &amp;block) </a>
268
-
269
-
270
-
271
- </span>
272
-
273
-
274
-
275
-
276
-
277
-
278
-
279
-
280
-
281
- <span class="summary_desc"><div class='inline'>
282
- <p>This is used to handle the details of our DSL.</p>
283
- </div></span>
284
-
285
- </li>
286
-
287
-
288
- <li class="public ">
289
- <span class="summary_signature">
290
-
291
- <a href="#query-instance_method" title="#query (instance method)">- (Object) <strong>query</strong>(&amp;block) </a>
292
-
293
-
294
-
295
- </span>
296
-
297
-
298
-
299
-
300
-
301
-
302
-
303
-
304
-
305
- <span class="summary_desc"><div class='inline'>
306
- <p>Query function is called with the sequence (time evolution) number, and
307
- returns an array or hash of parameters that will be given to the input
308
- nodes.</p>
309
- </div></span>
310
-
311
- </li>
312
-
313
-
314
- <li class="public ">
315
- <span class="summary_signature">
316
-
317
- <a href="#recurrence-instance_method" title="#recurrence (instance method)">- (Object) <strong>recurrence</strong>(&amp;block) </a>
318
-
319
-
320
-
321
- </span>
322
-
323
-
324
-
325
-
326
-
327
-
328
-
329
-
330
-
331
- <span class="summary_desc"><div class='inline'></div></span>
332
-
333
- </li>
334
-
335
-
336
- <li class="public ">
337
- <span class="summary_signature">
338
-
339
- <a href="#report-instance_method" title="#report (instance method)">- (Object) <strong>report</strong>(&amp;block) </a>
340
-
341
-
342
-
343
- </span>
344
-
345
-
346
-
347
-
348
-
349
-
350
-
351
-
352
-
353
- <span class="summary_desc"><div class='inline'>
354
- <p>Report on evaluations.</p>
355
- </div></span>
356
-
357
- </li>
358
-
359
-
360
- <li class="public ">
361
- <span class="summary_signature">
362
-
363
- <a href="#run_engine-instance_method" title="#run_engine (instance method)">- (Object) <strong>run_engine</strong>(&amp;block) </a>
364
-
365
-
366
-
367
- </span>
368
-
369
-
370
-
371
-
372
-
373
-
374
-
375
-
376
-
377
- <span class="summary_desc"><div class='inline'>
378
- <p>Run the engine.</p>
379
- </div></span>
380
-
381
- </li>
382
-
383
-
384
- <li class="public ">
385
- <span class="summary_signature">
386
-
387
- <a href="#simple_fitness_error-instance_method" title="#simple_fitness_error (instance method)">- (Object) <strong>simple_fitness_error</strong>(v1, v2) </a>
388
-
389
-
390
-
391
- </span>
392
-
393
-
394
-
395
-
396
-
397
-
398
-
399
-
400
-
401
- <span class="summary_desc"><div class='inline'>
402
- <p>Helper function to do a simple fitness calculation on the basis of the sum
403
- of the square of the diffences of the element in the two vectors.</p>
404
- </div></span>
405
-
406
- </li>
407
-
408
-
409
- <li class="public ">
410
- <span class="summary_signature">
411
-
412
- <a href="#stop_on_fitness-instance_method" title="#stop_on_fitness (instance method)">- (Object) <strong>stop_on_fitness</strong>(&amp;block) </a>
413
-
414
-
415
-
416
- </span>
417
-
418
-
419
-
420
-
421
-
422
-
423
-
424
-
425
-
426
- <span class="summary_desc"><div class='inline'>
427
- <p>Stop the progression once the fitness criteria is reached for the most fit
428
- critter.</p>
429
- </div></span>
430
-
431
- </li>
432
-
433
-
434
- <li class="public ">
435
- <span class="summary_signature">
436
-
437
- <a href="#uncondition_boolean_vector-instance_method" title="#uncondition_boolean_vector (instance method)">- (Object) <strong>uncondition_boolean_vector</strong>(vec, sig = :tanh) </a>
438
-
439
-
440
-
441
- </span>
442
-
443
-
444
-
445
-
446
-
447
-
448
-
449
-
450
-
451
- <span class="summary_desc"><div class='inline'>
452
- <p>Helper function to Uncondition boolean vectors to be +1 if true, -1 if
453
- false FIXME we need a better discrimination function.</p>
454
- </div></span>
455
-
456
- </li>
457
-
458
-
459
- </ul>
460
-
461
-
462
-
463
-
464
-
465
-
466
-
467
-
468
-
469
-
470
-
471
-
472
-
473
-
474
-
475
-
476
-
477
-
478
- <h3 class="inherited">Methods included from <span class='object_link'><a href="../NEAT.html" title="NEAT (module)">NEAT</a></span></h3>
479
- <p class="inherited"><span class='object_link'><a href="../NEAT.html#controller-class_method" title="NEAT.controller (method)">controller</a></span>, <span class='object_link'><a href="../NEAT.html#controller%3D-class_method" title="NEAT.controller= (method)">controller=</a></span>, <span class='object_link'><a href="../NEAT.html#create_controller-class_method" title="NEAT.create_controller (method)">create_controller</a></span>, <span class='object_link'><a href="../NEAT.html#dpp-class_method" title="NEAT.dpp (method)">dpp</a></span>, <span class='object_link'><a href="../NEAT.html#gaussian-class_method" title="NEAT.gaussian (method)">gaussian</a></span>, <span class='object_link'><a href="../NEAT.html#new_innovation-class_method" title="NEAT.new_innovation (method)">new_innovation</a></span>, <span class='object_link'><a href="../NEAT.html#random_name_generator-class_method" title="NEAT.random_name_generator (method)">random_name_generator</a></span></p>
480
- <div id="method_missing_details" class="method_details_list">
481
- <h2>Dynamic Method Handling</h2>
482
- <p class="notice this">
483
- This class handles dynamic methods through the <tt>method_missing</tt> method
484
-
485
- </p>
486
-
487
- <div class="method_details first">
488
- <h3 class="signature first" id="method_missing-instance_method">
489
-
490
- - (<tt>Object</tt>) <strong>method_missing</strong>(m, *args, &amp;block)
491
-
492
-
493
-
494
-
495
-
496
- </h3><div class="docstring">
497
- <div class="discussion">
498
-
499
- <p>This is used to handle the details of our DSL.</p>
500
-
501
-
502
- </div>
503
- </div>
504
- <div class="tags">
505
-
506
-
507
- </div><table class="source_code">
508
- <tr>
509
- <td>
510
- <pre class="lines">
511
-
512
-
513
- 114
514
- 115
515
- 116
516
- 117
517
- 118
518
- 119
519
- 120
520
- 121
521
- 122
522
- 123
523
- 124</pre>
524
- </td>
525
- <td>
526
- <pre class="code"><span class="info file"># File 'lib/rubyneat/dsl.rb', line 114</span>
527
-
528
- <span class='kw'>def</span> <span class='id identifier rubyid_method_missing'>method_missing</span><span class='lparen'>(</span><span class='id identifier rubyid_m'>m</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
529
- <span class='comment'># we want to catch parameters settings here.
530
- </span> <span class='kw'>if</span> <span class='const'>NEAT</span><span class='op'>::</span><span class='id identifier rubyid_controller'>controller</span><span class='period'>.</span><span class='id identifier rubyid_parms'>parms</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span> <span class='lparen'>(</span><span class='id identifier rubyid_assignment'>assignment</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_m'>m</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>=</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span><span class='rparen'>)</span>
531
- <span class='id identifier rubyid_raise'>raise</span> <span class='const'>NeatException</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Missing value(s) to %s</span><span class='tstring_end'>&quot;</span></span> <span class='op'>%</span> <span class='id identifier rubyid_m'>m</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_args'>args</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
532
- <span class='id identifier rubyid_val'>val</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_args'>args</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span> <span class='op'>==</span> <span class='int'>1</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_args'>args</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span> <span class='op'>:</span> <span class='id identifier rubyid_args'>args</span>
533
- <span class='gvar'>$log</span><span class='period'>.</span><span class='id identifier rubyid_debug'>debug</span> <span class='lbrace'>{</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Caught method %s with parameter of %s</span><span class='tstring_end'>&quot;</span></span> <span class='op'>%</span> <span class='lbracket'>[</span><span class='id identifier rubyid_assignment'>assignment</span><span class='comma'>,</span> <span class='id identifier rubyid_val'>val</span><span class='rbracket'>]</span> <span class='rbrace'>}</span>
534
- <span class='const'>NEAT</span><span class='op'>::</span><span class='id identifier rubyid_controller'>controller</span><span class='period'>.</span><span class='id identifier rubyid_parms'>parms</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_assignment'>assignment</span><span class='comma'>,</span> <span class='id identifier rubyid_val'>val</span><span class='rparen'>)</span>
535
- <span class='kw'>else</span>
536
- <span class='kw'>super</span>
537
- <span class='kw'>end</span>
538
- <span class='kw'>end</span></pre>
539
- </td>
540
- </tr>
541
- </table>
542
- </div>
543
-
544
- </div>
545
-
546
-
547
- <div id="instance_method_details" class="method_details_list">
548
- <h2>Instance Method Details</h2>
549
-
550
-
551
- <div class="method_details first">
552
- <h3 class="signature first" id="compare-instance_method">
553
-
554
- - (<tt>Object</tt>) <strong>compare</strong>(&amp;block)
555
-
556
-
557
-
558
-
559
-
560
- </h3><div class="docstring">
561
- <div class="discussion">
562
-
563
- <p>Fitness ordering – given 2 fitness numbers, use the &lt;=&gt; to compare
564
- them (or the equivalent, following the +1, 0, -1 that is in the sense of
565
- &lt;=&gt;)</p>
566
-
567
-
568
- </div>
569
- </div>
570
- <div class="tags">
571
-
572
-
573
- </div><table class="source_code">
574
- <tr>
575
- <td>
576
- <pre class="lines">
577
-
578
-
579
- 63
580
- 64
581
- 65</pre>
582
- </td>
583
- <td>
584
- <pre class="code"><span class="info file"># File 'lib/rubyneat/dsl.rb', line 63</span>
585
-
586
- <span class='kw'>def</span> <span class='id identifier rubyid_compare'>compare</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
587
- <span class='const'>NEAT</span><span class='op'>::</span><span class='id identifier rubyid_controller'>controller</span><span class='period'>.</span><span class='id identifier rubyid_compare_func'>compare_func</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
588
- <span class='kw'>end</span></pre>
589
- </td>
590
- </tr>
591
- </table>
592
- </div>
593
-
594
- <div class="method_details ">
595
- <h3 class="signature " id="condition_boolean_vector-instance_method">
596
-
597
- - (<tt>Object</tt>) <strong>condition_boolean_vector</strong>(vec, sig = :tanh)
598
-
599
-
600
-
601
-
602
-
603
- </h3><div class="docstring">
604
- <div class="discussion">
605
-
606
- <p>Helper function to Condition boolean vectors to be +1 if true, -1 if false
607
- (0 if sigmoid)</p>
608
-
609
-
610
- </div>
611
- </div>
612
- <div class="tags">
613
-
614
-
615
- </div><table class="source_code">
616
- <tr>
617
- <td>
618
- <pre class="lines">
619
-
620
-
621
- 81
622
- 82
623
- 83</pre>
624
- </td>
625
- <td>
626
- <pre class="code"><span class="info file"># File 'lib/rubyneat/dsl.rb', line 81</span>
627
-
628
- <span class='kw'>def</span> <span class='id identifier rubyid_condition_boolean_vector'>condition_boolean_vector</span><span class='lparen'>(</span><span class='id identifier rubyid_vec'>vec</span><span class='comma'>,</span> <span class='id identifier rubyid_sig'>sig</span> <span class='op'>=</span> <span class='symbol'>:tanh</span><span class='rparen'>)</span>
629
- <span class='id identifier rubyid_vec'>vec</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_b'>b</span><span class='op'>|</span> <span class='id identifier rubyid_b'>b</span> <span class='op'>?</span> <span class='int'>1</span> <span class='op'>:</span> <span class='lparen'>(</span><span class='lparen'>(</span><span class='id identifier rubyid_sig'>sig</span> <span class='op'>==</span> <span class='symbol'>:sigmoid</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='int'>0</span> <span class='op'>:</span> <span class='op'>-</span><span class='int'>1</span><span class='rparen'>)</span><span class='rbrace'>}</span>
630
- <span class='kw'>end</span></pre>
631
- </td>
632
- </tr>
633
- </table>
634
- </div>
635
-
636
- <div class="method_details ">
637
- <h3 class="signature " id="cost-instance_method">
638
-
639
- - (<tt>Object</tt>) <strong>cost</strong>(&amp;block)
640
-
641
-
642
-
643
-
644
-
645
- </h3><div class="docstring">
646
- <div class="discussion">
647
-
648
- <p>Calculation to add the cost to the fitness, resulting in a fitness that
649
- incorporates the cost for sorting purposes.</p>
650
-
651
-
652
- </div>
653
- </div>
654
- <div class="tags">
655
-
656
-
657
- </div><table class="source_code">
658
- <tr>
659
- <td>
660
- <pre class="lines">
661
-
662
-
663
- 69
664
- 70
665
- 71</pre>
666
- </td>
667
- <td>
668
- <pre class="code"><span class="info file"># File 'lib/rubyneat/dsl.rb', line 69</span>
669
-
670
- <span class='kw'>def</span> <span class='id identifier rubyid_cost'>cost</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
671
- <span class='const'>NEAT</span><span class='op'>::</span><span class='id identifier rubyid_controller'>controller</span><span class='period'>.</span><span class='id identifier rubyid_cost_func'>cost_func</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
672
- <span class='kw'>end</span></pre>
673
- </td>
674
- </tr>
675
- </table>
676
- </div>
677
-
678
- <div class="method_details ">
679
- <h3 class="signature " id="define-instance_method">
680
-
681
- - (<tt>Object</tt>) <strong>define</strong>(name = NEAT.random_name_generator, &amp;block)
682
-
683
-
684
-
685
-
686
-
687
- </h3><div class="docstring">
688
- <div class="discussion">
689
-
690
- <p>DSL – Define defines the parameters to the controller.</p>
691
-
692
-
693
- </div>
694
- </div>
695
- <div class="tags">
696
-
697
-
698
- </div><table class="source_code">
699
- <tr>
700
- <td>
701
- <pre class="lines">
702
-
703
-
704
- 15
705
- 16
706
- 17
707
- 18
708
- 19
709
- 20
710
- 21
711
- 22
712
- 23
713
- 24
714
- 25
715
- 26
716
- 27
717
- 28
718
- 29
719
- 30
720
- 31
721
- 32
722
- 33
723
- 34
724
- 35
725
- 36</pre>
726
- </td>
727
- <td>
728
- <pre class="code"><span class="info file"># File 'lib/rubyneat/dsl.rb', line 15</span>
729
-
730
- <span class='kw'>def</span> <span class='id identifier rubyid_define'>define</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span> <span class='op'>=</span> <span class='const'>NEAT</span><span class='period'>.</span><span class='id identifier rubyid_random_name_generator'>random_name_generator</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
731
- <span class='lbracket'>[</span>
732
- <span class='symbol'>:inputs</span><span class='comma'>,</span>
733
- <span class='symbol'>:outputs</span><span class='comma'>,</span>
734
- <span class='symbol'>:hidden</span> <span class='comment'># we really don&#39;t care about mapping hidden neurons, but we&#39;ll ignore them later.
735
- </span> <span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_iometh'>iometh</span><span class='op'>|</span>
736
- <span class='id identifier rubyid_instance_eval'>instance_eval</span> <span class='tstring'><span class='tstring_beg'>%Q[</span><span class='tstring_content'>
737
- def </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_iometh'>iometh</span><span class='embexpr_end'>}</span><span class='tstring_content'>(nodes = nil, &amp;block)
738
- neui = unless nodes.nil?
739
- nodes
740
- else
741
- block.()
742
- end
743
- NEAT::controller.neural_</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_iometh'>iometh</span><span class='embexpr_end'>}</span><span class='tstring_content'> = if neui.kind_of? Hash
744
- neui
745
- else
746
- Hash[neui.map{|n| [NEAT::random_name_generator, n]}]
747
- end
748
- end</span><span class='tstring_end'>]</span></span>
749
- <span class='kw'>end</span>
750
- <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='lparen'>(</span><span class='const'>NEAT</span><span class='op'>::</span><span class='id identifier rubyid_controller'>controller</span><span class='rparen'>)</span>
751
- <span class='kw'>end</span></pre>
752
- </td>
753
- </tr>
754
- </table>
755
- </div>
756
-
757
- <div class="method_details ">
758
- <h3 class="signature " id="evolve-instance_method">
759
-
760
- - (<tt>Object</tt>) <strong>evolve</strong>(&amp;block)
761
-
762
-
763
-
764
-
765
-
766
- </h3><div class="docstring">
767
- <div class="discussion">
768
-
769
- <p>DSL – Run evolution</p>
770
-
771
-
772
- </div>
773
- </div>
774
- <div class="tags">
775
-
776
-
777
- </div><table class="source_code">
778
- <tr>
779
- <td>
780
- <pre class="lines">
781
-
782
-
783
- 39
784
- 40
785
- 41
786
- 42
787
- 43
788
- 44
789
- 45
790
- 46
791
- 47
792
- 48
793
- 49
794
- 50
795
- 51
796
- 52
797
- 53
798
- 54
799
- 55
800
- 56
801
- 57
802
- 58
803
- 59
804
- 60
805
- 61
806
- 62
807
- 63
808
- 64
809
- 65
810
- 66
811
- 67
812
- 68
813
- 69
814
- 70
815
- 71
816
- 72
817
- 73
818
- 74
819
- 75
820
- 76
821
- 77
822
- 78
823
- 79
824
- 80
825
- 81
826
- 82
827
- 83
828
- 84
829
- 85
830
- 86
831
- 87
832
- 88
833
- 89
834
- 90
835
- 91
836
- 92
837
- 93
838
- 94
839
- 95
840
- 96
841
- 97
842
- 98
843
- 99
844
- 100</pre>
845
- </td>
846
- <td>
847
- <pre class="code"><span class="info file"># File 'lib/rubyneat/dsl.rb', line 39</span>
848
-
849
- <span class='kw'>def</span> <span class='id identifier rubyid_evolve'>evolve</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
850
- <span class='comment'># Query function is called with the sequence (time evolution) number,
851
- </span> <span class='comment'># and returns an array or hash of parameters that will be given
852
- </span> <span class='comment'># to the input nodes. In the case of hash, the keys in the hash
853
- </span> <span class='comment'># shall correspond to the names given to the input neurons.
854
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_query'>query</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
855
- <span class='const'>NEAT</span><span class='op'>::</span><span class='id identifier rubyid_controller'>controller</span><span class='period'>.</span><span class='id identifier rubyid_query_func'>query_func</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
856
- <span class='kw'>end</span>
857
-
858
- <span class='kw'>def</span> <span class='id identifier rubyid_recurrence'>recurrence</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
859
- <span class='const'>NEAT</span><span class='op'>::</span><span class='id identifier rubyid_controller'>controller</span><span class='period'>.</span><span class='id identifier rubyid_recurrence_func'>recurrence_func</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
860
- <span class='kw'>end</span>
861
-
862
- <span class='comment'># fitness function calls the block with 2 vectors or two hashes, input and output
863
- </span> <span class='comment'># vectors of the critter being evaluated for fitness, as well as a sequence
864
- </span> <span class='comment'># number that can be used to index what the actual output should be.
865
- </span> <span class='comment'># |vin, vout, seq|
866
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_fitness'>fitness</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
867
- <span class='const'>NEAT</span><span class='op'>::</span><span class='id identifier rubyid_controller'>controller</span><span class='period'>.</span><span class='id identifier rubyid_fitness_func'>fitness_func</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
868
- <span class='kw'>end</span>
869
-
870
- <span class='comment'># Fitness ordering -- given 2 fitness numbers,
871
- </span> <span class='comment'># use the &lt;=&gt; to compare them (or the equivalent, following
872
- </span> <span class='comment'># the +1, 0, -1 that is in the sense of &lt;=&gt;)
873
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_compare'>compare</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
874
- <span class='const'>NEAT</span><span class='op'>::</span><span class='id identifier rubyid_controller'>controller</span><span class='period'>.</span><span class='id identifier rubyid_compare_func'>compare_func</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
875
- <span class='kw'>end</span>
876
-
877
- <span class='comment'># Calculation to add the cost to the fitness, resulting in a fitness
878
- </span> <span class='comment'># that incorporates the cost for sorting purposes.
879
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_cost'>cost</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
880
- <span class='const'>NEAT</span><span class='op'>::</span><span class='id identifier rubyid_controller'>controller</span><span class='period'>.</span><span class='id identifier rubyid_cost_func'>cost_func</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
881
- <span class='kw'>end</span>
882
-
883
- <span class='comment'># Stop the progression once the fitness criteria is reached
884
- </span> <span class='comment'># for the most fit critter
885
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_stop_on_fitness'>stop_on_fitness</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
886
- <span class='const'>NEAT</span><span class='op'>::</span><span class='id identifier rubyid_controller'>controller</span><span class='period'>.</span><span class='id identifier rubyid_stop_on_fit_func'>stop_on_fit_func</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
887
- <span class='kw'>end</span>
888
-
889
- <span class='comment'># Helper function to
890
- </span> <span class='comment'># Condition boolean vectors to be +1 if true, -1 if false (0 if sigmoid)
891
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_condition_boolean_vector'>condition_boolean_vector</span><span class='lparen'>(</span><span class='id identifier rubyid_vec'>vec</span><span class='comma'>,</span> <span class='id identifier rubyid_sig'>sig</span> <span class='op'>=</span> <span class='symbol'>:tanh</span><span class='rparen'>)</span>
892
- <span class='id identifier rubyid_vec'>vec</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_b'>b</span><span class='op'>|</span> <span class='id identifier rubyid_b'>b</span> <span class='op'>?</span> <span class='int'>1</span> <span class='op'>:</span> <span class='lparen'>(</span><span class='lparen'>(</span><span class='id identifier rubyid_sig'>sig</span> <span class='op'>==</span> <span class='symbol'>:sigmoid</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='int'>0</span> <span class='op'>:</span> <span class='op'>-</span><span class='int'>1</span><span class='rparen'>)</span><span class='rbrace'>}</span>
893
- <span class='kw'>end</span>
894
-
895
- <span class='comment'># Helper function to
896
- </span> <span class='comment'># Uncondition boolean vectors to be +1 if true, -1 if false
897
- </span> <span class='comment'># FIXME we need a better discrimination function
898
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_uncondition_boolean_vector'>uncondition_boolean_vector</span><span class='lparen'>(</span><span class='id identifier rubyid_vec'>vec</span><span class='comma'>,</span> <span class='id identifier rubyid_sig'>sig</span> <span class='op'>=</span> <span class='symbol'>:tanh</span><span class='rparen'>)</span>
899
- <span class='id identifier rubyid_vec'>vec</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_o'>o</span><span class='op'>|</span> <span class='id identifier rubyid_o'>o</span> <span class='op'>&gt;</span> <span class='lparen'>(</span><span class='lparen'>(</span><span class='id identifier rubyid_sig'>sig</span> <span class='op'>==</span> <span class='symbol'>:sigmoid</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='float'>0.5</span> <span class='op'>:</span> <span class='int'>0</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='kw'>true</span> <span class='op'>:</span> <span class='kw'>false</span><span class='rbrace'>}</span>
900
- <span class='kw'>end</span>
901
-
902
- <span class='comment'># Helper function to do a simple fitness calculation
903
- </span> <span class='comment'># on the basis of the sum of the square of the diffences
904
- </span> <span class='comment'># of the element in the two vectors.
905
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_simple_fitness_error'>simple_fitness_error</span><span class='lparen'>(</span><span class='id identifier rubyid_v1'>v1</span><span class='comma'>,</span> <span class='id identifier rubyid_v2'>v2</span><span class='rparen'>)</span>
906
- <span class='id identifier rubyid_sqrt'>sqrt</span> <span class='id identifier rubyid_v1'>v1</span><span class='period'>.</span><span class='id identifier rubyid_zip'>zip</span><span class='lparen'>(</span><span class='id identifier rubyid_v2'>v2</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_a'>a</span><span class='comma'>,</span> <span class='id identifier rubyid_b'>b</span><span class='op'>|</span> <span class='lparen'>(</span><span class='id identifier rubyid_a'>a</span> <span class='op'>-</span> <span class='id identifier rubyid_b'>b</span><span class='rparen'>)</span> <span class='op'>**</span> <span class='float'>2.0</span><span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_reduce'>reduce</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_m'>m</span><span class='comma'>,</span> <span class='id identifier rubyid_c'>c</span><span class='op'>|</span> <span class='id identifier rubyid_m'>m</span> <span class='op'>+</span> <span class='id identifier rubyid_c'>c</span><span class='rbrace'>}</span>
907
- <span class='kw'>end</span>
908
-
909
- <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='lparen'>(</span><span class='const'>NEAT</span><span class='op'>::</span><span class='id identifier rubyid_controller'>controller</span><span class='rparen'>)</span>
910
- <span class='kw'>end</span></pre>
911
- </td>
912
- </tr>
913
- </table>
914
- </div>
915
-
916
- <div class="method_details ">
917
- <h3 class="signature " id="fitness-instance_method">
918
-
919
- - (<tt>Object</tt>) <strong>fitness</strong>(&amp;block)
920
-
921
-
922
-
923
-
924
-
925
- </h3><div class="docstring">
926
- <div class="discussion">
927
-
928
- <p>fitness function calls the block with 2 vectors or two hashes, input and
929
- output vectors of the critter being evaluated for fitness, as well as a
930
- sequence number that can be used to index what the actual output should be.
931
- |vin, vout, seq|</p>
932
-
933
-
934
- </div>
935
- </div>
936
- <div class="tags">
937
-
938
-
939
- </div><table class="source_code">
940
- <tr>
941
- <td>
942
- <pre class="lines">
943
-
944
-
945
- 56
946
- 57
947
- 58</pre>
948
- </td>
949
- <td>
950
- <pre class="code"><span class="info file"># File 'lib/rubyneat/dsl.rb', line 56</span>
951
-
952
- <span class='kw'>def</span> <span class='id identifier rubyid_fitness'>fitness</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
953
- <span class='const'>NEAT</span><span class='op'>::</span><span class='id identifier rubyid_controller'>controller</span><span class='period'>.</span><span class='id identifier rubyid_fitness_func'>fitness_func</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
954
- <span class='kw'>end</span></pre>
955
- </td>
956
- </tr>
957
- </table>
958
- </div>
959
-
960
- <div class="method_details ">
961
- <h3 class="signature " id="query-instance_method">
962
-
963
- - (<tt>Object</tt>) <strong>query</strong>(&amp;block)
964
-
965
-
966
-
967
-
968
-
969
- </h3><div class="docstring">
970
- <div class="discussion">
971
-
972
- <p>Query function is called with the sequence (time evolution) number, and
973
- returns an array or hash of parameters that will be given to the input
974
- nodes. In the case of hash, the keys in the hash shall correspond to the
975
- names given to the input neurons.</p>
976
-
977
-
978
- </div>
979
- </div>
980
- <div class="tags">
981
-
982
-
983
- </div><table class="source_code">
984
- <tr>
985
- <td>
986
- <pre class="lines">
987
-
988
-
989
- 44
990
- 45
991
- 46</pre>
992
- </td>
993
- <td>
994
- <pre class="code"><span class="info file"># File 'lib/rubyneat/dsl.rb', line 44</span>
995
-
996
- <span class='kw'>def</span> <span class='id identifier rubyid_query'>query</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
997
- <span class='const'>NEAT</span><span class='op'>::</span><span class='id identifier rubyid_controller'>controller</span><span class='period'>.</span><span class='id identifier rubyid_query_func'>query_func</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
998
- <span class='kw'>end</span></pre>
999
- </td>
1000
- </tr>
1001
- </table>
1002
- </div>
1003
-
1004
- <div class="method_details ">
1005
- <h3 class="signature " id="recurrence-instance_method">
1006
-
1007
- - (<tt>Object</tt>) <strong>recurrence</strong>(&amp;block)
1008
-
1009
-
1010
-
1011
-
1012
-
1013
- </h3><table class="source_code">
1014
- <tr>
1015
- <td>
1016
- <pre class="lines">
1017
-
1018
-
1019
- 48
1020
- 49
1021
- 50</pre>
1022
- </td>
1023
- <td>
1024
- <pre class="code"><span class="info file"># File 'lib/rubyneat/dsl.rb', line 48</span>
1025
-
1026
- <span class='kw'>def</span> <span class='id identifier rubyid_recurrence'>recurrence</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1027
- <span class='const'>NEAT</span><span class='op'>::</span><span class='id identifier rubyid_controller'>controller</span><span class='period'>.</span><span class='id identifier rubyid_recurrence_func'>recurrence_func</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
1028
- <span class='kw'>end</span></pre>
1029
- </td>
1030
- </tr>
1031
- </table>
1032
- </div>
1033
-
1034
- <div class="method_details ">
1035
- <h3 class="signature " id="report-instance_method">
1036
-
1037
- - (<tt>Object</tt>) <strong>report</strong>(&amp;block)
1038
-
1039
-
1040
-
1041
-
1042
-
1043
- </h3><div class="docstring">
1044
- <div class="discussion">
1045
-
1046
- <p>Report on evaluations</p>
1047
-
1048
-
1049
- </div>
1050
- </div>
1051
- <div class="tags">
1052
-
1053
-
1054
- </div><table class="source_code">
1055
- <tr>
1056
- <td>
1057
- <pre class="lines">
1058
-
1059
-
1060
- 103
1061
- 104
1062
- 105</pre>
1063
- </td>
1064
- <td>
1065
- <pre class="code"><span class="info file"># File 'lib/rubyneat/dsl.rb', line 103</span>
1066
-
1067
- <span class='kw'>def</span> <span class='id identifier rubyid_report'>report</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1068
- <span class='const'>NEAT</span><span class='op'>::</span><span class='id identifier rubyid_controller'>controller</span><span class='period'>.</span><span class='id identifier rubyid_report_hook'>report_hook</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
1069
- <span class='kw'>end</span></pre>
1070
- </td>
1071
- </tr>
1072
- </table>
1073
- </div>
1074
-
1075
- <div class="method_details ">
1076
- <h3 class="signature " id="run_engine-instance_method">
1077
-
1078
- - (<tt>Object</tt>) <strong>run_engine</strong>(&amp;block)
1079
-
1080
-
1081
-
1082
-
1083
-
1084
- </h3><div class="docstring">
1085
- <div class="discussion">
1086
-
1087
- <p>Run the engine. The block is called on each generation.</p>
1088
-
1089
-
1090
- </div>
1091
- </div>
1092
- <div class="tags">
1093
-
1094
-
1095
- </div><table class="source_code">
1096
- <tr>
1097
- <td>
1098
- <pre class="lines">
1099
-
1100
-
1101
- 108
1102
- 109
1103
- 110
1104
- 111</pre>
1105
- </td>
1106
- <td>
1107
- <pre class="code"><span class="info file"># File 'lib/rubyneat/dsl.rb', line 108</span>
1108
-
1109
- <span class='kw'>def</span> <span class='id identifier rubyid_run_engine'>run_engine</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1110
- <span class='const'>NEAT</span><span class='op'>::</span><span class='id identifier rubyid_controller'>controller</span><span class='period'>.</span><span class='id identifier rubyid_end_run_func'>end_run_func</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
1111
- <span class='const'>NEAT</span><span class='op'>::</span><span class='id identifier rubyid_controller'>controller</span><span class='period'>.</span><span class='id identifier rubyid_run'>run</span>
1112
- <span class='kw'>end</span></pre>
1113
- </td>
1114
- </tr>
1115
- </table>
1116
- </div>
1117
-
1118
- <div class="method_details ">
1119
- <h3 class="signature " id="simple_fitness_error-instance_method">
1120
-
1121
- - (<tt>Object</tt>) <strong>simple_fitness_error</strong>(v1, v2)
1122
-
1123
-
1124
-
1125
-
1126
-
1127
- </h3><div class="docstring">
1128
- <div class="discussion">
1129
-
1130
- <p>Helper function to do a simple fitness calculation on the basis of the sum
1131
- of the square of the diffences of the element in the two vectors.</p>
1132
-
1133
-
1134
- </div>
1135
- </div>
1136
- <div class="tags">
1137
-
1138
-
1139
- </div><table class="source_code">
1140
- <tr>
1141
- <td>
1142
- <pre class="lines">
1143
-
1144
-
1145
- 95
1146
- 96
1147
- 97</pre>
1148
- </td>
1149
- <td>
1150
- <pre class="code"><span class="info file"># File 'lib/rubyneat/dsl.rb', line 95</span>
1151
-
1152
- <span class='kw'>def</span> <span class='id identifier rubyid_simple_fitness_error'>simple_fitness_error</span><span class='lparen'>(</span><span class='id identifier rubyid_v1'>v1</span><span class='comma'>,</span> <span class='id identifier rubyid_v2'>v2</span><span class='rparen'>)</span>
1153
- <span class='id identifier rubyid_sqrt'>sqrt</span> <span class='id identifier rubyid_v1'>v1</span><span class='period'>.</span><span class='id identifier rubyid_zip'>zip</span><span class='lparen'>(</span><span class='id identifier rubyid_v2'>v2</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_a'>a</span><span class='comma'>,</span> <span class='id identifier rubyid_b'>b</span><span class='op'>|</span> <span class='lparen'>(</span><span class='id identifier rubyid_a'>a</span> <span class='op'>-</span> <span class='id identifier rubyid_b'>b</span><span class='rparen'>)</span> <span class='op'>**</span> <span class='float'>2.0</span><span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_reduce'>reduce</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_m'>m</span><span class='comma'>,</span> <span class='id identifier rubyid_c'>c</span><span class='op'>|</span> <span class='id identifier rubyid_m'>m</span> <span class='op'>+</span> <span class='id identifier rubyid_c'>c</span><span class='rbrace'>}</span>
1154
- <span class='kw'>end</span></pre>
1155
- </td>
1156
- </tr>
1157
- </table>
1158
- </div>
1159
-
1160
- <div class="method_details ">
1161
- <h3 class="signature " id="stop_on_fitness-instance_method">
1162
-
1163
- - (<tt>Object</tt>) <strong>stop_on_fitness</strong>(&amp;block)
1164
-
1165
-
1166
-
1167
-
1168
-
1169
- </h3><div class="docstring">
1170
- <div class="discussion">
1171
-
1172
- <p>Stop the progression once the fitness criteria is reached for the most fit
1173
- critter</p>
1174
-
1175
-
1176
- </div>
1177
- </div>
1178
- <div class="tags">
1179
-
1180
-
1181
- </div><table class="source_code">
1182
- <tr>
1183
- <td>
1184
- <pre class="lines">
1185
-
1186
-
1187
- 75
1188
- 76
1189
- 77</pre>
1190
- </td>
1191
- <td>
1192
- <pre class="code"><span class="info file"># File 'lib/rubyneat/dsl.rb', line 75</span>
1193
-
1194
- <span class='kw'>def</span> <span class='id identifier rubyid_stop_on_fitness'>stop_on_fitness</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1195
- <span class='const'>NEAT</span><span class='op'>::</span><span class='id identifier rubyid_controller'>controller</span><span class='period'>.</span><span class='id identifier rubyid_stop_on_fit_func'>stop_on_fit_func</span> <span class='op'>=</span> <span class='id identifier rubyid_block'>block</span>
1196
- <span class='kw'>end</span></pre>
1197
- </td>
1198
- </tr>
1199
- </table>
1200
- </div>
1201
-
1202
- <div class="method_details ">
1203
- <h3 class="signature " id="uncondition_boolean_vector-instance_method">
1204
-
1205
- - (<tt>Object</tt>) <strong>uncondition_boolean_vector</strong>(vec, sig = :tanh)
1206
-
1207
-
1208
-
1209
-
1210
-
1211
- </h3><div class="docstring">
1212
- <div class="discussion">
1213
-
1214
- <p>Helper function to Uncondition boolean vectors to be +1 if true, -1 if
1215
- false FIXME we need a better discrimination function</p>
1216
-
1217
-
1218
- </div>
1219
- </div>
1220
- <div class="tags">
1221
-
1222
-
1223
- </div><table class="source_code">
1224
- <tr>
1225
- <td>
1226
- <pre class="lines">
1227
-
1228
-
1229
- 88
1230
- 89
1231
- 90</pre>
1232
- </td>
1233
- <td>
1234
- <pre class="code"><span class="info file"># File 'lib/rubyneat/dsl.rb', line 88</span>
1235
-
1236
- <span class='kw'>def</span> <span class='id identifier rubyid_uncondition_boolean_vector'>uncondition_boolean_vector</span><span class='lparen'>(</span><span class='id identifier rubyid_vec'>vec</span><span class='comma'>,</span> <span class='id identifier rubyid_sig'>sig</span> <span class='op'>=</span> <span class='symbol'>:tanh</span><span class='rparen'>)</span>
1237
- <span class='id identifier rubyid_vec'>vec</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_o'>o</span><span class='op'>|</span> <span class='id identifier rubyid_o'>o</span> <span class='op'>&gt;</span> <span class='lparen'>(</span><span class='lparen'>(</span><span class='id identifier rubyid_sig'>sig</span> <span class='op'>==</span> <span class='symbol'>:sigmoid</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='float'>0.5</span> <span class='op'>:</span> <span class='int'>0</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='kw'>true</span> <span class='op'>:</span> <span class='kw'>false</span><span class='rbrace'>}</span>
1238
- <span class='kw'>end</span></pre>
1239
- </td>
1240
- </tr>
1241
- </table>
1242
- </div>
1243
-
1244
- </div>
1245
-
1246
- </div>
1247
-
1248
- <div id="footer">
1249
- Generated on Sun Apr 13 15:54:01 2014 by
1250
- <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1251
- 0.8.7.4 (ruby-2.1.1).
1252
- </div>
1253
-
1254
- </body>
1255
- </html>