evolvable 1.2.0 → 2.0.0

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 (79) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +2 -0
  3. data/CHANGELOG.md +24 -0
  4. data/Gemfile +2 -2
  5. data/Gemfile.lock +44 -25
  6. data/README.md +498 -190
  7. data/README_YARD.md +85 -166
  8. data/bin/console +10 -19
  9. data/docs/Evolvable/ClassMethods.html +1233 -0
  10. data/docs/Evolvable/Community/ClassMethods.html +708 -0
  11. data/docs/Evolvable/Community.html +1342 -0
  12. data/docs/Evolvable/CountGene.html +886 -0
  13. data/docs/Evolvable/EqualizeGoal.html +347 -0
  14. data/docs/Evolvable/Error.html +134 -0
  15. data/docs/Evolvable/Evaluation.html +773 -0
  16. data/docs/Evolvable/Evolution.html +616 -0
  17. data/docs/Evolvable/Gene/ClassMethods.html +413 -0
  18. data/docs/Evolvable/Gene.html +522 -0
  19. data/docs/Evolvable/GeneCluster/ClassMethods.html +431 -0
  20. data/docs/Evolvable/GeneCluster.html +280 -0
  21. data/docs/Evolvable/GeneCombination.html +515 -0
  22. data/docs/Evolvable/GeneSpace.html +619 -0
  23. data/docs/Evolvable/Genome.html +1070 -0
  24. data/docs/Evolvable/Goal.html +500 -0
  25. data/docs/Evolvable/MaximizeGoal.html +348 -0
  26. data/docs/Evolvable/MinimizeGoal.html +348 -0
  27. data/docs/Evolvable/Mutation.html +729 -0
  28. data/docs/Evolvable/PointCrossover.html +444 -0
  29. data/docs/Evolvable/Population.html +2826 -0
  30. data/docs/Evolvable/RigidCountGene.html +501 -0
  31. data/docs/Evolvable/Selection.html +594 -0
  32. data/docs/Evolvable/Serializer.html +293 -0
  33. data/docs/Evolvable/UniformCrossover.html +286 -0
  34. data/docs/Evolvable.html +1619 -0
  35. data/docs/_index.html +341 -0
  36. data/docs/class_list.html +54 -0
  37. data/docs/css/common.css +1 -0
  38. data/docs/css/full_list.css +58 -0
  39. data/docs/css/style.css +503 -0
  40. data/docs/file.README.html +750 -0
  41. data/docs/file_list.html +59 -0
  42. data/docs/frames.html +22 -0
  43. data/docs/index.html +750 -0
  44. data/docs/js/app.js +344 -0
  45. data/docs/js/full_list.js +242 -0
  46. data/docs/js/jquery.js +4 -0
  47. data/docs/method_list.html +1302 -0
  48. data/docs/top-level-namespace.html +110 -0
  49. data/evolvable.gemspec +6 -6
  50. data/examples/ascii_art.rb +5 -9
  51. data/examples/stickman.rb +25 -33
  52. data/{examples/hello_world.rb → exe/hello_evolvable_world} +46 -30
  53. data/lib/evolvable/community.rb +190 -0
  54. data/lib/evolvable/count_gene.rb +65 -0
  55. data/lib/evolvable/equalize_goal.rb +2 -9
  56. data/lib/evolvable/evaluation.rb +113 -14
  57. data/lib/evolvable/evolution.rb +38 -15
  58. data/lib/evolvable/gene.rb +124 -25
  59. data/lib/evolvable/gene_cluster.rb +106 -0
  60. data/lib/evolvable/gene_combination.rb +57 -16
  61. data/lib/evolvable/gene_space.rb +111 -0
  62. data/lib/evolvable/genome.rb +32 -4
  63. data/lib/evolvable/goal.rb +19 -24
  64. data/lib/evolvable/maximize_goal.rb +2 -9
  65. data/lib/evolvable/minimize_goal.rb +3 -9
  66. data/lib/evolvable/mutation.rb +87 -41
  67. data/lib/evolvable/point_crossover.rb +24 -4
  68. data/lib/evolvable/population.rb +258 -84
  69. data/lib/evolvable/rigid_count_gene.rb +36 -0
  70. data/lib/evolvable/selection.rb +68 -14
  71. data/lib/evolvable/serializer.rb +46 -0
  72. data/lib/evolvable/uniform_crossover.rb +30 -6
  73. data/lib/evolvable/version.rb +2 -1
  74. data/lib/evolvable.rb +268 -107
  75. metadata +57 -36
  76. data/examples/images/diagram.png +0 -0
  77. data/exe/hello +0 -16
  78. data/lib/evolvable/error/undefined_method.rb +0 -7
  79. data/lib/evolvable/search_space.rb +0 -181
@@ -0,0 +1,431 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>
7
+ Module: Evolvable::GeneCluster::ClassMethods
8
+
9
+ &mdash; Documentation by YARD 0.9.37
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../../css/style.css" type="text/css" />
14
+
15
+ <link rel="stylesheet" href="../../css/common.css" type="text/css" />
16
+
17
+ <script type="text/javascript">
18
+ pathId = "Evolvable::GeneCluster::ClassMethods";
19
+ relpath = '../../';
20
+ </script>
21
+
22
+
23
+ <script type="text/javascript" charset="utf-8" src="../../js/jquery.js"></script>
24
+
25
+ <script type="text/javascript" charset="utf-8" src="../../js/app.js"></script>
26
+
27
+
28
+ </head>
29
+ <body>
30
+ <div class="nav_wrap">
31
+ <iframe id="nav" src="../../class_list.html?1"></iframe>
32
+ <div id="resizer"></div>
33
+ </div>
34
+
35
+ <div id="main" tabindex="-1">
36
+ <div id="header">
37
+ <div id="menu">
38
+
39
+ <a href="../../_index.html">Index (C)</a> &raquo;
40
+ <span class='title'><span class='object_link'><a href="../../Evolvable.html" title="Evolvable (module)">Evolvable</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../GeneCluster.html" title="Evolvable::GeneCluster (module)">GeneCluster</a></span></span>
41
+ &raquo;
42
+ <span class="title">ClassMethods</span>
43
+
44
+ </div>
45
+
46
+ <div id="search">
47
+
48
+ <a class="full_list_link" id="class_list_link"
49
+ href="../../class_list.html">
50
+
51
+ <svg width="24" height="24">
52
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
+ </svg>
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <div id="content"><h1>Module: Evolvable::GeneCluster::ClassMethods
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+ <dl>
80
+ <dt>Defined in:</dt>
81
+ <dd>lib/evolvable/gene_cluster.rb</dd>
82
+ </dl>
83
+
84
+ </div>
85
+
86
+ <h2>Overview</h2><div class="docstring">
87
+ <div class="discussion">
88
+ <p>Class methods added to classes that include Evolvable::GeneCluster</p>
89
+
90
+
91
+ </div>
92
+ </div>
93
+ <div class="tags">
94
+
95
+
96
+ </div>
97
+
98
+
99
+
100
+
101
+
102
+
103
+
104
+ <h2>
105
+ Instance Method Summary
106
+ <small><a href="#" class="summary_toggle">collapse</a></small>
107
+ </h2>
108
+
109
+ <ul class="summary">
110
+
111
+ <li class="public ">
112
+ <span class="summary_signature">
113
+
114
+ <a href="#apply_cluster-instance_method" title="#apply_cluster (instance method)">#<strong>apply_cluster</strong>(evolvable_class, cluster_name, **_) &#x21d2; void </a>
115
+
116
+
117
+
118
+ </span>
119
+
120
+
121
+
122
+
123
+
124
+
125
+
126
+
127
+
128
+ <span class="summary_desc"><div class='inline'><p>Applies all genes in this cluster to the given evolvable class.</p>
129
+ </div></span>
130
+
131
+ </li>
132
+
133
+
134
+ <li class="public ">
135
+ <span class="summary_signature">
136
+
137
+ <a href="#gene-instance_method" title="#gene (instance method)">#<strong>gene</strong>(name, **opts) &#x21d2; Object </a>
138
+
139
+
140
+
141
+ </span>
142
+
143
+
144
+
145
+
146
+
147
+
148
+
149
+
150
+
151
+ <span class="summary_desc"><div class='inline'><p>Defines a gene in the cluster.</p>
152
+ </div></span>
153
+
154
+ </li>
155
+
156
+
157
+ <li class="public ">
158
+ <span class="summary_signature">
159
+
160
+ <a href="#inherited-instance_method" title="#inherited (instance method)">#<strong>inherited</strong>(subclass) &#x21d2; void </a>
161
+
162
+
163
+
164
+ </span>
165
+
166
+
167
+
168
+
169
+
170
+
171
+
172
+
173
+
174
+ <span class="summary_desc"><div class='inline'><p>Ensures that subclasses inherit the cluster configuration.</p>
175
+ </div></span>
176
+
177
+ </li>
178
+
179
+
180
+ </ul>
181
+
182
+
183
+
184
+
185
+ <div id="instance_method_details" class="method_details_list">
186
+ <h2>Instance Method Details</h2>
187
+
188
+
189
+ <div class="method_details first">
190
+ <h3 class="signature first" id="apply_cluster-instance_method">
191
+
192
+ #<strong>apply_cluster</strong>(evolvable_class, cluster_name, **_) &#x21d2; <tt>void</tt>
193
+
194
+
195
+
196
+
197
+
198
+ </h3><div class="docstring">
199
+ <div class="discussion">
200
+ <p class="note returns_void">This method returns an undefined value.</p><p>Applies all genes in this cluster to the given evolvable class.
201
+ This is called automatically when using the <code>cluster</code> macro.</p>
202
+
203
+
204
+ </div>
205
+ </div>
206
+ <div class="tags">
207
+ <p class="tag_title">Parameters:</p>
208
+ <ul class="param">
209
+
210
+ <li>
211
+
212
+ <span class='name'>evolvable_class</span>
213
+
214
+
215
+ <span class='type'>(<tt>Class</tt>)</span>
216
+
217
+
218
+
219
+ &mdash;
220
+ <div class='inline'><p>The evolvable class to apply the cluster to</p>
221
+ </div>
222
+
223
+ </li>
224
+
225
+ <li>
226
+
227
+ <span class='name'>cluster_name</span>
228
+
229
+
230
+ <span class='type'>(<tt>Symbol</tt>)</span>
231
+
232
+
233
+
234
+ &mdash;
235
+ <div class='inline'><p>The name to use for the cluster in the evolvable class</p>
236
+ </div>
237
+
238
+ </li>
239
+
240
+ <li>
241
+
242
+ <span class='name'>_</span>
243
+
244
+
245
+ <span class='type'>(<tt>Hash</tt>)</span>
246
+
247
+
248
+
249
+ &mdash;
250
+ <div class='inline'><p>Additional options (for future expansion)</p>
251
+ </div>
252
+
253
+ </li>
254
+
255
+ </ul>
256
+
257
+
258
+ </div><table class="source_code">
259
+ <tr>
260
+ <td>
261
+ <pre class="lines">
262
+
263
+
264
+ 88
265
+ 89
266
+ 90
267
+ 91
268
+ 92</pre>
269
+ </td>
270
+ <td>
271
+ <pre class="code"><span class="info file"># File 'lib/evolvable/gene_cluster.rb', line 88</span>
272
+
273
+ <span class='kw'>def</span> <span class='id identifier rubyid_apply_cluster'>apply_cluster</span><span class='lparen'>(</span><span class='id identifier rubyid_evolvable_class'>evolvable_class</span><span class='comma'>,</span> <span class='id identifier rubyid_cluster_name'>cluster_name</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid__'>_</span><span class='rparen'>)</span>
274
+ <span class='ivar'>@cluster_config</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_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_kw'>kw</span><span class='op'>|</span>
275
+ <span class='id identifier rubyid_evolvable_class'>evolvable_class</span><span class='period'>.</span><span class='id identifier rubyid_gene'>gene</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_cluster_name'>cluster_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>-</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_kw'>kw</span><span class='comma'>,</span> <span class='label'>cluster:</span> <span class='id identifier rubyid_cluster_name'>cluster_name</span><span class='rparen'>)</span>
276
+ <span class='kw'>end</span>
277
+ <span class='kw'>end</span></pre>
278
+ </td>
279
+ </tr>
280
+ </table>
281
+ </div>
282
+
283
+ <div class="method_details ">
284
+ <h3 class="signature " id="gene-instance_method">
285
+
286
+ #<strong>gene</strong>(name, **opts) &#x21d2; <tt>Object</tt>
287
+
288
+
289
+
290
+
291
+
292
+ </h3><div class="docstring">
293
+ <div class="discussion">
294
+ <p>Defines a gene in the cluster.
295
+ This is used internally by the cluster to define its component genes.</p>
296
+
297
+
298
+ </div>
299
+ </div>
300
+ <div class="tags">
301
+ <p class="tag_title">Parameters:</p>
302
+ <ul class="param">
303
+
304
+ <li>
305
+
306
+ <span class='name'>name</span>
307
+
308
+
309
+ <span class='type'>(<tt>Symbol</tt>)</span>
310
+
311
+
312
+
313
+ &mdash;
314
+ <div class='inline'><p>The name of the gene within the cluster</p>
315
+ </div>
316
+
317
+ </li>
318
+
319
+ <li>
320
+
321
+ <span class='name'>opts</span>
322
+
323
+
324
+ <span class='type'>(<tt>Hash</tt>)</span>
325
+
326
+
327
+
328
+ &mdash;
329
+ <div class='inline'><p>Options for the gene (type, count, etc.)</p>
330
+ </div>
331
+
332
+ </li>
333
+
334
+ </ul>
335
+
336
+
337
+ </div><table class="source_code">
338
+ <tr>
339
+ <td>
340
+ <pre class="lines">
341
+
342
+
343
+ 75
344
+ 76
345
+ 77</pre>
346
+ </td>
347
+ <td>
348
+ <pre class="code"><span class="info file"># File 'lib/evolvable/gene_cluster.rb', line 75</span>
349
+
350
+ <span class='kw'>def</span> <span class='id identifier rubyid_gene'>gene</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_opts'>opts</span><span class='rparen'>)</span>
351
+ <span class='ivar'>@cluster_config</span> <span class='op'>&lt;&lt;</span> <span class='lbracket'>[</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_opts'>opts</span><span class='rbracket'>]</span>
352
+ <span class='kw'>end</span></pre>
353
+ </td>
354
+ </tr>
355
+ </table>
356
+ </div>
357
+
358
+ <div class="method_details ">
359
+ <h3 class="signature " id="inherited-instance_method">
360
+
361
+ #<strong>inherited</strong>(subclass) &#x21d2; <tt>void</tt>
362
+
363
+
364
+
365
+
366
+
367
+ </h3><div class="docstring">
368
+ <div class="discussion">
369
+ <p class="note returns_void">This method returns an undefined value.</p><p>Ensures that subclasses inherit the cluster configuration.</p>
370
+
371
+
372
+ </div>
373
+ </div>
374
+ <div class="tags">
375
+ <p class="tag_title">Parameters:</p>
376
+ <ul class="param">
377
+
378
+ <li>
379
+
380
+ <span class='name'>subclass</span>
381
+
382
+
383
+ <span class='type'>(<tt>Class</tt>)</span>
384
+
385
+
386
+
387
+ &mdash;
388
+ <div class='inline'><p>The subclass that is inheriting from this class</p>
389
+ </div>
390
+
391
+ </li>
392
+
393
+ </ul>
394
+
395
+
396
+ </div><table class="source_code">
397
+ <tr>
398
+ <td>
399
+ <pre class="lines">
400
+
401
+
402
+ 100
403
+ 101
404
+ 102
405
+ 103</pre>
406
+ </td>
407
+ <td>
408
+ <pre class="code"><span class="info file"># File 'lib/evolvable/gene_cluster.rb', line 100</span>
409
+
410
+ <span class='kw'>def</span> <span class='id identifier rubyid_inherited'>inherited</span><span class='lparen'>(</span><span class='id identifier rubyid_subclass'>subclass</span><span class='rparen'>)</span>
411
+ <span class='kw'>super</span>
412
+ <span class='id identifier rubyid_subclass'>subclass</span><span class='period'>.</span><span class='id identifier rubyid_instance_variable_set'>instance_variable_set</span><span class='lparen'>(</span><span class='symbol'>:@cluster_config</span><span class='comma'>,</span> <span class='ivar'>@cluster_config</span><span class='period'>.</span><span class='id identifier rubyid_dup'>dup</span><span class='rparen'>)</span>
413
+ <span class='kw'>end</span></pre>
414
+ </td>
415
+ </tr>
416
+ </table>
417
+ </div>
418
+
419
+ </div>
420
+
421
+ </div>
422
+
423
+ <div id="footer">
424
+ Generated on Sat May 10 18:39:22 2025 by
425
+ <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
426
+ 0.9.37 (ruby-3.4.2).
427
+ </div>
428
+
429
+ </div>
430
+ </body>
431
+ </html>