evolvable 1.1.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 +31 -1
  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 +125 -28
  59. data/lib/evolvable/gene_cluster.rb +106 -0
  60. data/lib/evolvable/gene_combination.rb +62 -17
  61. data/lib/evolvable/gene_space.rb +111 -0
  62. data/lib/evolvable/genome.rb +36 -8
  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 +276 -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,413 @@
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::Gene::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::Gene::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="../Gene.html" title="Evolvable::Gene (module)">Gene</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::Gene::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.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::Gene.
89
+ These methods enable gene-level behaviors like combination during evolution.</p>
90
+
91
+
92
+ </div>
93
+ </div>
94
+ <div class="tags">
95
+
96
+
97
+ </div>
98
+
99
+
100
+
101
+
102
+
103
+
104
+
105
+ <h2>
106
+ Instance Method Summary
107
+ <small><a href="#" class="summary_toggle">collapse</a></small>
108
+ </h2>
109
+
110
+ <ul class="summary">
111
+
112
+ <li class="public ">
113
+ <span class="summary_signature">
114
+
115
+ <a href="#combine-instance_method" title="#combine (instance method)">#<strong>combine</strong>(gene_a, gene_b) &#x21d2; Evolvable::Gene </a>
116
+
117
+
118
+
119
+ </span>
120
+
121
+
122
+
123
+
124
+
125
+
126
+
127
+
128
+
129
+ <span class="summary_desc"><div class='inline'><p>Combines two genes to produce a new gene during the combination phase.</p>
130
+ </div></span>
131
+
132
+ </li>
133
+
134
+
135
+ <li class="public ">
136
+ <span class="summary_signature">
137
+
138
+ <a href="#key-instance_method" title="#key (instance method)">#<strong>key</strong> &#x21d2; Symbol </a>
139
+
140
+
141
+
142
+ </span>
143
+
144
+
145
+
146
+
147
+
148
+
149
+
150
+
151
+
152
+ <span class="summary_desc"><div class='inline'><p>Returns the unique key for this gene type.</p>
153
+ </div></span>
154
+
155
+ </li>
156
+
157
+
158
+ <li class="public ">
159
+ <span class="summary_signature">
160
+
161
+ <a href="#key=-instance_method" title="#key= (instance method)">#<strong>key=</strong>(val) &#x21d2; Object </a>
162
+
163
+
164
+
165
+ </span>
166
+
167
+
168
+
169
+
170
+
171
+
172
+
173
+
174
+
175
+ <span class="summary_desc"><div class='inline'><p>Sets the unique key for this gene type.</p>
176
+ </div></span>
177
+
178
+ </li>
179
+
180
+
181
+ </ul>
182
+
183
+
184
+
185
+
186
+ <div id="instance_method_details" class="method_details_list">
187
+ <h2>Instance Method Details</h2>
188
+
189
+
190
+ <div class="method_details first">
191
+ <h3 class="signature first" id="combine-instance_method">
192
+
193
+ #<strong>combine</strong>(gene_a, gene_b) &#x21d2; <tt><span class='object_link'><a href="../Gene.html" title="Evolvable::Gene (module)">Evolvable::Gene</a></span></tt>
194
+
195
+
196
+
197
+
198
+
199
+ </h3><div class="docstring">
200
+ <div class="discussion">
201
+ <p>Combines two genes to produce a new gene during the combination phase.
202
+ By default, randomly picks one of the two parent genes.</p>
203
+
204
+ <p>Override this method in your gene class to implement custom combination behavior.</p>
205
+
206
+
207
+ </div>
208
+ </div>
209
+ <div class="tags">
210
+ <p class="tag_title">Parameters:</p>
211
+ <ul class="param">
212
+
213
+ <li>
214
+
215
+ <span class='name'>gene_a</span>
216
+
217
+
218
+ <span class='type'>(<tt><span class='object_link'><a href="../Gene.html" title="Evolvable::Gene (module)">Evolvable::Gene</a></span></tt>)</span>
219
+
220
+
221
+
222
+ &mdash;
223
+ <div class='inline'><p>The first gene to combine</p>
224
+ </div>
225
+
226
+ </li>
227
+
228
+ <li>
229
+
230
+ <span class='name'>gene_b</span>
231
+
232
+
233
+ <span class='type'>(<tt><span class='object_link'><a href="../Gene.html" title="Evolvable::Gene (module)">Evolvable::Gene</a></span></tt>)</span>
234
+
235
+
236
+
237
+ &mdash;
238
+ <div class='inline'><p>The second gene to combine</p>
239
+ </div>
240
+
241
+ </li>
242
+
243
+ </ul>
244
+
245
+ <p class="tag_title">Returns:</p>
246
+ <ul class="return">
247
+
248
+ <li>
249
+
250
+
251
+ <span class='type'>(<tt><span class='object_link'><a href="../Gene.html" title="Evolvable::Gene (module)">Evolvable::Gene</a></span></tt>)</span>
252
+
253
+
254
+
255
+ &mdash;
256
+ <div class='inline'><p>A new gene resulting from the combination</p>
257
+ </div>
258
+
259
+ </li>
260
+
261
+ </ul>
262
+
263
+ </div><table class="source_code">
264
+ <tr>
265
+ <td>
266
+ <pre class="lines">
267
+
268
+
269
+ 141
270
+ 142
271
+ 143</pre>
272
+ </td>
273
+ <td>
274
+ <pre class="code"><span class="info file"># File 'lib/evolvable/gene.rb', line 141</span>
275
+
276
+ <span class='kw'>def</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>
277
+ <span class='lbracket'>[</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='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_sample'>sample</span>
278
+ <span class='kw'>end</span></pre>
279
+ </td>
280
+ </tr>
281
+ </table>
282
+ </div>
283
+
284
+ <div class="method_details ">
285
+ <h3 class="signature " id="key-instance_method">
286
+
287
+ #<strong>key</strong> &#x21d2; <tt>Symbol</tt>
288
+
289
+
290
+
291
+
292
+
293
+ </h3><div class="docstring">
294
+ <div class="discussion">
295
+ <p>Returns the unique key for this gene type.</p>
296
+
297
+
298
+ </div>
299
+ </div>
300
+ <div class="tags">
301
+
302
+ <p class="tag_title">Returns:</p>
303
+ <ul class="return">
304
+
305
+ <li>
306
+
307
+
308
+ <span class='type'>(<tt>Symbol</tt>)</span>
309
+
310
+
311
+
312
+ &mdash;
313
+ <div class='inline'><p>The key that identifies this gene type</p>
314
+ </div>
315
+
316
+ </li>
317
+
318
+ </ul>
319
+
320
+ </div><table class="source_code">
321
+ <tr>
322
+ <td>
323
+ <pre class="lines">
324
+
325
+
326
+ 127
327
+ 128
328
+ 129</pre>
329
+ </td>
330
+ <td>
331
+ <pre class="code"><span class="info file"># File 'lib/evolvable/gene.rb', line 127</span>
332
+
333
+ <span class='kw'>def</span> <span class='id identifier rubyid_key'>key</span>
334
+ <span class='ivar'>@key</span>
335
+ <span class='kw'>end</span></pre>
336
+ </td>
337
+ </tr>
338
+ </table>
339
+ </div>
340
+
341
+ <div class="method_details ">
342
+ <h3 class="signature " id="key=-instance_method">
343
+
344
+ #<strong>key=</strong>(val) &#x21d2; <tt>Object</tt>
345
+
346
+
347
+
348
+
349
+
350
+ </h3><div class="docstring">
351
+ <div class="discussion">
352
+ <p>Sets the unique key for this gene type.
353
+ The key is typically set automatically when using the <code>gene</code> macro.</p>
354
+
355
+
356
+ </div>
357
+ </div>
358
+ <div class="tags">
359
+ <p class="tag_title">Parameters:</p>
360
+ <ul class="param">
361
+
362
+ <li>
363
+
364
+ <span class='name'>val</span>
365
+
366
+
367
+ <span class='type'>(<tt>Symbol</tt>)</span>
368
+
369
+
370
+
371
+ &mdash;
372
+ <div class='inline'><p>The key to identify this gene type</p>
373
+ </div>
374
+
375
+ </li>
376
+
377
+ </ul>
378
+
379
+
380
+ </div><table class="source_code">
381
+ <tr>
382
+ <td>
383
+ <pre class="lines">
384
+
385
+
386
+ 118
387
+ 119
388
+ 120</pre>
389
+ </td>
390
+ <td>
391
+ <pre class="code"><span class="info file"># File 'lib/evolvable/gene.rb', line 118</span>
392
+
393
+ <span class='kw'>def</span> <span class='id identifier rubyid_key='>key=</span><span class='lparen'>(</span><span class='id identifier rubyid_val'>val</span><span class='rparen'>)</span>
394
+ <span class='ivar'>@key</span> <span class='op'>=</span> <span class='id identifier rubyid_val'>val</span>
395
+ <span class='kw'>end</span></pre>
396
+ </td>
397
+ </tr>
398
+ </table>
399
+ </div>
400
+
401
+ </div>
402
+
403
+ </div>
404
+
405
+ <div id="footer">
406
+ Generated on Sat May 10 18:39:22 2025 by
407
+ <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
408
+ 0.9.37 (ruby-3.4.2).
409
+ </div>
410
+
411
+ </div>
412
+ </body>
413
+ </html>