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,501 @@
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
+ Class: Evolvable::RigidCountGene
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::RigidCountGene";
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 (R)</a> &raquo;
40
+ <span class='title'><span class='object_link'><a href="../Evolvable.html" title="Evolvable (module)">Evolvable</a></span></span>
41
+ &raquo;
42
+ <span class="title">RigidCountGene</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>Class: Evolvable::RigidCountGene
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+ <dl>
70
+ <dt>Inherits:</dt>
71
+ <dd>
72
+ <span class="inheritName">Object</span>
73
+
74
+ <ul class="fullTree">
75
+ <li>Object</li>
76
+
77
+ <li class="next">Evolvable::RigidCountGene</li>
78
+
79
+ </ul>
80
+ <a href="#" class="inheritanceTree">show all</a>
81
+
82
+ </dd>
83
+ </dl>
84
+
85
+
86
+
87
+
88
+
89
+
90
+ <dl>
91
+ <dt>Includes:</dt>
92
+ <dd><span class='object_link'><a href="Gene.html" title="Evolvable::Gene (module)">Gene</a></span></dd>
93
+ </dl>
94
+
95
+
96
+
97
+
98
+
99
+
100
+ <dl>
101
+ <dt>Defined in:</dt>
102
+ <dd>lib/evolvable/rigid_count_gene.rb</dd>
103
+ </dl>
104
+
105
+ </div>
106
+
107
+ <h2>Overview</h2><div class="docstring">
108
+ <div class="discussion">
109
+ <p>This class manages fixed gene counts in evolvable instances.
110
+ Unlike the CountGene, the RigidCountGene maintains a constant number of genes
111
+ that doesn&#39;t change during evolution. This is used when a gene is defined
112
+ with a fixed integer for <code>count:</code> (e.g., <code>count: 5</code>).</p>
113
+
114
+
115
+ </div>
116
+ </div>
117
+ <div class="tags">
118
+
119
+ <div class="examples">
120
+ <h4 class="tag_title">Examples:</h4>
121
+
122
+
123
+ <h5 class="example_title"><div class='inline'><p>Define a chord with exactly 4 notes</p>
124
+ </div></h5>
125
+
126
+ <pre class="example code"><code><span class='kw'>class</span> <span class='const'>Chord</span>
127
+ <span class='id identifier rubyid_include'>include</span> <span class='const'><span class='object_link'><a href="../Evolvable.html" title="Evolvable (module)">Evolvable</a></span></span>
128
+
129
+ <span class='id identifier rubyid_gene'>gene</span> <span class='symbol'>:notes</span><span class='comma'>,</span> <span class='label'>type:</span> <span class='const'>NoteGene</span><span class='comma'>,</span> <span class='label'>count:</span> <span class='int'>4</span>
130
+
131
+ <span class='comment'># The number of notes will always be 4, never changing during evolution
132
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_play'>play</span>
133
+ <span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Playing chord with </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_notes'>notes</span><span class='period'>.</span><span class='id identifier rubyid_count'>count</span><span class='embexpr_end'>}</span><span class='tstring_content'> notes</span><span class='tstring_end'>&quot;</span></span>
134
+ <span class='kw'>end</span>
135
+ <span class='kw'>end</span></code></pre>
136
+
137
+ </div>
138
+
139
+
140
+ </div>
141
+
142
+
143
+
144
+ <h2>Instance Attribute Summary <small><a href="#" class="summary_toggle">collapse</a></small></h2>
145
+ <ul class="summary">
146
+
147
+ <li class="public ">
148
+ <span class="summary_signature">
149
+
150
+ <a href="#count-instance_method" title="#count (instance method)">#<strong>count</strong> &#x21d2; Integer </a>
151
+
152
+
153
+
154
+ </span>
155
+
156
+
157
+
158
+
159
+ <span class="note title readonly">readonly</span>
160
+
161
+
162
+
163
+
164
+
165
+
166
+
167
+
168
+
169
+ <span class="summary_desc"><div class='inline'><p>The fixed number of genes to create.</p>
170
+ </div></span>
171
+
172
+ </li>
173
+
174
+
175
+ </ul>
176
+
177
+
178
+
179
+
180
+
181
+ <h3 class="inherited">Attributes included from <span class='object_link'><a href="Gene.html" title="Evolvable::Gene (module)">Gene</a></span></h3>
182
+ <p class="inherited"><span class='object_link'><a href="Gene.html#evolvable-instance_method" title="Evolvable::Gene#evolvable (method)">#evolvable</a></span></p>
183
+
184
+
185
+
186
+ <h2>
187
+ Class Method Summary
188
+ <small><a href="#" class="summary_toggle">collapse</a></small>
189
+ </h2>
190
+
191
+ <ul class="summary">
192
+
193
+ <li class="public ">
194
+ <span class="summary_signature">
195
+
196
+ <a href="#combine-class_method" title="combine (class method)">.<strong>combine</strong>(gene_a, _gene_b) &#x21d2; RigidCountGene </a>
197
+
198
+
199
+
200
+ </span>
201
+
202
+
203
+
204
+
205
+
206
+
207
+
208
+
209
+
210
+ <span class="summary_desc"><div class='inline'><p>Combines two rigid count genes by always returning the first one.</p>
211
+ </div></span>
212
+
213
+ </li>
214
+
215
+
216
+ </ul>
217
+
218
+ <h2>
219
+ Instance Method Summary
220
+ <small><a href="#" class="summary_toggle">collapse</a></small>
221
+ </h2>
222
+
223
+ <ul class="summary">
224
+
225
+ <li class="public ">
226
+ <span class="summary_signature">
227
+
228
+ <a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(count) &#x21d2; RigidCountGene </a>
229
+
230
+
231
+
232
+ </span>
233
+
234
+
235
+ <span class="note title constructor">constructor</span>
236
+
237
+
238
+
239
+
240
+
241
+
242
+
243
+
244
+ <span class="summary_desc"><div class='inline'><p>Initializes a new RigidCountGene with a fixed count.</p>
245
+ </div></span>
246
+
247
+ </li>
248
+
249
+
250
+ </ul>
251
+
252
+
253
+
254
+
255
+
256
+
257
+
258
+
259
+
260
+
261
+
262
+ <h3 class="inherited">Methods included from <span class='object_link'><a href="Gene.html" title="Evolvable::Gene (module)">Gene</a></span></h3>
263
+ <p class="inherited"><span class='object_link'><a href="Gene.html#included-class_method" title="Evolvable::Gene.included (method)">included</a></span>, <span class='object_link'><a href="Gene.html#key-instance_method" title="Evolvable::Gene#key (method)">#key</a></span></p>
264
+ <div id="constructor_details" class="method_details_list">
265
+ <h2>Constructor Details</h2>
266
+
267
+ <div class="method_details first">
268
+ <h3 class="signature first" id="initialize-instance_method">
269
+
270
+ #<strong>initialize</strong>(count) &#x21d2; <tt><span class='object_link'><a href="" title="Evolvable::RigidCountGene (class)">RigidCountGene</a></span></tt>
271
+
272
+
273
+
274
+
275
+
276
+ </h3><div class="docstring">
277
+ <div class="discussion">
278
+ <p>Initializes a new RigidCountGene with a fixed count.</p>
279
+
280
+
281
+ </div>
282
+ </div>
283
+ <div class="tags">
284
+ <p class="tag_title">Parameters:</p>
285
+ <ul class="param">
286
+
287
+ <li>
288
+
289
+ <span class='name'>count</span>
290
+
291
+
292
+ <span class='type'>(<tt>Integer</tt>)</span>
293
+
294
+
295
+
296
+ &mdash;
297
+ <div class='inline'><p>The fixed number of genes to create</p>
298
+ </div>
299
+
300
+ </li>
301
+
302
+ </ul>
303
+
304
+
305
+ </div><table class="source_code">
306
+ <tr>
307
+ <td>
308
+ <pre class="lines">
309
+
310
+
311
+ 42
312
+ 43
313
+ 44</pre>
314
+ </td>
315
+ <td>
316
+ <pre class="code"><span class="info file"># File 'lib/evolvable/rigid_count_gene.rb', line 42</span>
317
+
318
+ <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_count'>count</span><span class='rparen'>)</span>
319
+ <span class='ivar'>@count</span> <span class='op'>=</span> <span class='id identifier rubyid_count'>count</span>
320
+ <span class='kw'>end</span></pre>
321
+ </td>
322
+ </tr>
323
+ </table>
324
+ </div>
325
+
326
+ </div>
327
+
328
+ <div id="instance_attr_details" class="attr_details">
329
+ <h2>Instance Attribute Details</h2>
330
+
331
+
332
+ <span id=""></span>
333
+ <div class="method_details first">
334
+ <h3 class="signature first" id="count-instance_method">
335
+
336
+ #<strong>count</strong> &#x21d2; <tt>Integer</tt> <span class="extras">(readonly)</span>
337
+
338
+
339
+
340
+
341
+
342
+ </h3><div class="docstring">
343
+ <div class="discussion">
344
+ <p>The fixed number of genes to create.</p>
345
+
346
+
347
+ </div>
348
+ </div>
349
+ <div class="tags">
350
+
351
+ <p class="tag_title">Returns:</p>
352
+ <ul class="return">
353
+
354
+ <li>
355
+
356
+
357
+ <span class='type'>(<tt>Integer</tt>)</span>
358
+
359
+
360
+
361
+ &mdash;
362
+ <div class='inline'><p>The gene count</p>
363
+ </div>
364
+
365
+ </li>
366
+
367
+ </ul>
368
+
369
+ </div><table class="source_code">
370
+ <tr>
371
+ <td>
372
+ <pre class="lines">
373
+
374
+
375
+ 51
376
+ 52
377
+ 53</pre>
378
+ </td>
379
+ <td>
380
+ <pre class="code"><span class="info file"># File 'lib/evolvable/rigid_count_gene.rb', line 51</span>
381
+
382
+ <span class='kw'>def</span> <span class='id identifier rubyid_count'>count</span>
383
+ <span class='ivar'>@count</span>
384
+ <span class='kw'>end</span></pre>
385
+ </td>
386
+ </tr>
387
+ </table>
388
+ </div>
389
+
390
+ </div>
391
+
392
+
393
+ <div id="class_method_details" class="method_details_list">
394
+ <h2>Class Method Details</h2>
395
+
396
+
397
+ <div class="method_details first">
398
+ <h3 class="signature first" id="combine-class_method">
399
+
400
+ .<strong>combine</strong>(gene_a, _gene_b) &#x21d2; <tt><span class='object_link'><a href="" title="Evolvable::RigidCountGene (class)">RigidCountGene</a></span></tt>
401
+
402
+
403
+
404
+
405
+
406
+ </h3><div class="docstring">
407
+ <div class="discussion">
408
+ <p>Combines two rigid count genes by always returning the first one.
409
+ This ensures the count remains constant during evolution.</p>
410
+
411
+
412
+ </div>
413
+ </div>
414
+ <div class="tags">
415
+ <p class="tag_title">Parameters:</p>
416
+ <ul class="param">
417
+
418
+ <li>
419
+
420
+ <span class='name'>gene_a</span>
421
+
422
+
423
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Evolvable::RigidCountGene (class)">RigidCountGene</a></span></tt>)</span>
424
+
425
+
426
+
427
+ &mdash;
428
+ <div class='inline'><p>The first rigid count gene</p>
429
+ </div>
430
+
431
+ </li>
432
+
433
+ <li>
434
+
435
+ <span class='name'>_gene_b</span>
436
+
437
+
438
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Evolvable::RigidCountGene (class)">RigidCountGene</a></span></tt>)</span>
439
+
440
+
441
+
442
+ &mdash;
443
+ <div class='inline'><p>The second rigid count gene (unused)</p>
444
+ </div>
445
+
446
+ </li>
447
+
448
+ </ul>
449
+
450
+ <p class="tag_title">Returns:</p>
451
+ <ul class="return">
452
+
453
+ <li>
454
+
455
+
456
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Evolvable::RigidCountGene (class)">RigidCountGene</a></span></tt>)</span>
457
+
458
+
459
+
460
+ &mdash;
461
+ <div class='inline'><p>The first count gene unchanged</p>
462
+ </div>
463
+
464
+ </li>
465
+
466
+ </ul>
467
+
468
+ </div><table class="source_code">
469
+ <tr>
470
+ <td>
471
+ <pre class="lines">
472
+
473
+
474
+ 33
475
+ 34
476
+ 35</pre>
477
+ </td>
478
+ <td>
479
+ <pre class="code"><span class="info file"># File 'lib/evolvable/rigid_count_gene.rb', line 33</span>
480
+
481
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_combine'>combine</span><span class='lparen'>(</span><span class='id identifier rubyid_gene_a'>gene_a</span><span class='comma'>,</span> <span class='id identifier rubyid__gene_b'>_gene_b</span><span class='rparen'>)</span>
482
+ <span class='id identifier rubyid_gene_a'>gene_a</span>
483
+ <span class='kw'>end</span></pre>
484
+ </td>
485
+ </tr>
486
+ </table>
487
+ </div>
488
+
489
+ </div>
490
+
491
+ </div>
492
+
493
+ <div id="footer">
494
+ Generated on Sat May 10 18:39:22 2025 by
495
+ <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
496
+ 0.9.37 (ruby-3.4.2).
497
+ </div>
498
+
499
+ </div>
500
+ </body>
501
+ </html>