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.
- checksums.yaml +4 -4
- data/.yardopts +2 -0
- data/CHANGELOG.md +24 -0
- data/Gemfile +2 -2
- data/Gemfile.lock +44 -25
- data/README.md +498 -190
- data/README_YARD.md +85 -166
- data/bin/console +10 -19
- data/docs/Evolvable/ClassMethods.html +1233 -0
- data/docs/Evolvable/Community/ClassMethods.html +708 -0
- data/docs/Evolvable/Community.html +1342 -0
- data/docs/Evolvable/CountGene.html +886 -0
- data/docs/Evolvable/EqualizeGoal.html +347 -0
- data/docs/Evolvable/Error.html +134 -0
- data/docs/Evolvable/Evaluation.html +773 -0
- data/docs/Evolvable/Evolution.html +616 -0
- data/docs/Evolvable/Gene/ClassMethods.html +413 -0
- data/docs/Evolvable/Gene.html +522 -0
- data/docs/Evolvable/GeneCluster/ClassMethods.html +431 -0
- data/docs/Evolvable/GeneCluster.html +280 -0
- data/docs/Evolvable/GeneCombination.html +515 -0
- data/docs/Evolvable/GeneSpace.html +619 -0
- data/docs/Evolvable/Genome.html +1070 -0
- data/docs/Evolvable/Goal.html +500 -0
- data/docs/Evolvable/MaximizeGoal.html +348 -0
- data/docs/Evolvable/MinimizeGoal.html +348 -0
- data/docs/Evolvable/Mutation.html +729 -0
- data/docs/Evolvable/PointCrossover.html +444 -0
- data/docs/Evolvable/Population.html +2826 -0
- data/docs/Evolvable/RigidCountGene.html +501 -0
- data/docs/Evolvable/Selection.html +594 -0
- data/docs/Evolvable/Serializer.html +293 -0
- data/docs/Evolvable/UniformCrossover.html +286 -0
- data/docs/Evolvable.html +1619 -0
- data/docs/_index.html +341 -0
- data/docs/class_list.html +54 -0
- data/docs/css/common.css +1 -0
- data/docs/css/full_list.css +58 -0
- data/docs/css/style.css +503 -0
- data/docs/file.README.html +750 -0
- data/docs/file_list.html +59 -0
- data/docs/frames.html +22 -0
- data/docs/index.html +750 -0
- data/docs/js/app.js +344 -0
- data/docs/js/full_list.js +242 -0
- data/docs/js/jquery.js +4 -0
- data/docs/method_list.html +1302 -0
- data/docs/top-level-namespace.html +110 -0
- data/evolvable.gemspec +6 -6
- data/examples/ascii_art.rb +5 -9
- data/examples/stickman.rb +25 -33
- data/{examples/hello_world.rb → exe/hello_evolvable_world} +46 -30
- data/lib/evolvable/community.rb +190 -0
- data/lib/evolvable/count_gene.rb +65 -0
- data/lib/evolvable/equalize_goal.rb +2 -9
- data/lib/evolvable/evaluation.rb +113 -14
- data/lib/evolvable/evolution.rb +38 -15
- data/lib/evolvable/gene.rb +124 -25
- data/lib/evolvable/gene_cluster.rb +106 -0
- data/lib/evolvable/gene_combination.rb +57 -16
- data/lib/evolvable/gene_space.rb +111 -0
- data/lib/evolvable/genome.rb +32 -4
- data/lib/evolvable/goal.rb +19 -24
- data/lib/evolvable/maximize_goal.rb +2 -9
- data/lib/evolvable/minimize_goal.rb +3 -9
- data/lib/evolvable/mutation.rb +87 -41
- data/lib/evolvable/point_crossover.rb +24 -4
- data/lib/evolvable/population.rb +258 -84
- data/lib/evolvable/rigid_count_gene.rb +36 -0
- data/lib/evolvable/selection.rb +68 -14
- data/lib/evolvable/serializer.rb +46 -0
- data/lib/evolvable/uniform_crossover.rb +30 -6
- data/lib/evolvable/version.rb +2 -1
- data/lib/evolvable.rb +268 -107
- metadata +57 -36
- data/examples/images/diagram.png +0 -0
- data/exe/hello +0 -16
- data/lib/evolvable/error/undefined_method.rb +0 -7
- data/lib/evolvable/search_space.rb +0 -181
@@ -0,0 +1,1070 @@
|
|
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::Genome
|
8
|
+
|
9
|
+
— 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::Genome";
|
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 (G)</a> »
|
40
|
+
<span class='title'><span class='object_link'><a href="../Evolvable.html" title="Evolvable (module)">Evolvable</a></span></span>
|
41
|
+
»
|
42
|
+
<span class="title">Genome</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::Genome
|
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::Genome</li>
|
78
|
+
|
79
|
+
</ul>
|
80
|
+
<a href="#" class="inheritanceTree">show all</a>
|
81
|
+
|
82
|
+
</dd>
|
83
|
+
</dl>
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
|
88
|
+
<dl>
|
89
|
+
<dt>Extended by:</dt>
|
90
|
+
<dd>Forwardable</dd>
|
91
|
+
</dl>
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
<dl>
|
101
|
+
<dt>Defined in:</dt>
|
102
|
+
<dd>lib/evolvable/genome.rb</dd>
|
103
|
+
</dl>
|
104
|
+
|
105
|
+
</div>
|
106
|
+
|
107
|
+
<h2>Overview</h2><div class="docstring">
|
108
|
+
<div class="discussion">
|
109
|
+
<p>The Genome class represents the fully instantiated genetic blueprint of an evolvable instance.
|
110
|
+
It stores all gene data in a structured, accessible form and provides methods to inspect,
|
111
|
+
manipulate, and serialize that genetic information.</p>
|
112
|
+
|
113
|
+
<p>A genome consists of:</p>
|
114
|
+
|
115
|
+
<ul>
|
116
|
+
<li>A hash of gene configurations organized by key</li>
|
117
|
+
<li>Count genes that determine how many instances of each gene type are present</li>
|
118
|
+
<li>The actual gene instances used by the evolvable</li>
|
119
|
+
</ul>
|
120
|
+
|
121
|
+
<p>The genome acts as the bridge between the gene space (definition) and the
|
122
|
+
evolvable instance (implementation), enabling flexible gene access and
|
123
|
+
supporting dynamic mutation or crossover behavior.</p>
|
124
|
+
|
125
|
+
|
126
|
+
</div>
|
127
|
+
</div>
|
128
|
+
<div class="tags">
|
129
|
+
|
130
|
+
|
131
|
+
<p class="tag_title">See Also:</p>
|
132
|
+
<ul class="see">
|
133
|
+
|
134
|
+
<li><span class='object_link'><a href="GeneSpace.html" title="Evolvable::GeneSpace (class)">GeneSpace</a></span></li>
|
135
|
+
|
136
|
+
<li><span class='object_link'><a href="GeneCombination.html" title="Evolvable::GeneCombination (class)">GeneCombination</a></span></li>
|
137
|
+
|
138
|
+
<li><span class='object_link'><a href="Gene.html" title="Evolvable::Gene (module)">Gene</a></span></li>
|
139
|
+
|
140
|
+
</ul>
|
141
|
+
|
142
|
+
</div>
|
143
|
+
|
144
|
+
|
145
|
+
|
146
|
+
<h2>Instance Attribute Summary <small><a href="#" class="summary_toggle">collapse</a></small></h2>
|
147
|
+
<ul class="summary">
|
148
|
+
|
149
|
+
<li class="public ">
|
150
|
+
<span class="summary_signature">
|
151
|
+
|
152
|
+
<a href="#config-instance_method" title="#config (instance method)">#<strong>config</strong> ⇒ Object </a>
|
153
|
+
|
154
|
+
|
155
|
+
|
156
|
+
(also: #to_h)
|
157
|
+
|
158
|
+
</span>
|
159
|
+
|
160
|
+
|
161
|
+
|
162
|
+
|
163
|
+
<span class="note title readonly">readonly</span>
|
164
|
+
|
165
|
+
|
166
|
+
|
167
|
+
|
168
|
+
|
169
|
+
|
170
|
+
|
171
|
+
|
172
|
+
|
173
|
+
<span class="summary_desc"><div class='inline'><p>Returns the value of attribute config.</p>
|
174
|
+
</div></span>
|
175
|
+
|
176
|
+
</li>
|
177
|
+
|
178
|
+
|
179
|
+
</ul>
|
180
|
+
|
181
|
+
|
182
|
+
|
183
|
+
|
184
|
+
|
185
|
+
<h2>
|
186
|
+
Class Method Summary
|
187
|
+
<small><a href="#" class="summary_toggle">collapse</a></small>
|
188
|
+
</h2>
|
189
|
+
|
190
|
+
<ul class="summary">
|
191
|
+
|
192
|
+
<li class="public ">
|
193
|
+
<span class="summary_signature">
|
194
|
+
|
195
|
+
<a href="#load-class_method" title="load (class method)">.<strong>load</strong>(data, serializer: Serializer) ⇒ Object </a>
|
196
|
+
|
197
|
+
|
198
|
+
|
199
|
+
</span>
|
200
|
+
|
201
|
+
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
|
206
|
+
|
207
|
+
|
208
|
+
|
209
|
+
<span class="summary_desc"><div class='inline'></div></span>
|
210
|
+
|
211
|
+
</li>
|
212
|
+
|
213
|
+
|
214
|
+
</ul>
|
215
|
+
|
216
|
+
<h2>
|
217
|
+
Instance Method Summary
|
218
|
+
<small><a href="#" class="summary_toggle">collapse</a></small>
|
219
|
+
</h2>
|
220
|
+
|
221
|
+
<ul class="summary">
|
222
|
+
|
223
|
+
<li class="public ">
|
224
|
+
<span class="summary_signature">
|
225
|
+
|
226
|
+
<a href="#dump-instance_method" title="#dump (instance method)">#<strong>dump</strong>(serializer: Serializer) ⇒ Object </a>
|
227
|
+
|
228
|
+
|
229
|
+
|
230
|
+
</span>
|
231
|
+
|
232
|
+
|
233
|
+
|
234
|
+
|
235
|
+
|
236
|
+
|
237
|
+
|
238
|
+
|
239
|
+
|
240
|
+
<span class="summary_desc"><div class='inline'></div></span>
|
241
|
+
|
242
|
+
</li>
|
243
|
+
|
244
|
+
|
245
|
+
<li class="public ">
|
246
|
+
<span class="summary_signature">
|
247
|
+
|
248
|
+
<a href="#find_count_gene-instance_method" title="#find_count_gene (instance method)">#<strong>find_count_gene</strong>(key) ⇒ <Type> </a>
|
249
|
+
|
250
|
+
|
251
|
+
|
252
|
+
</span>
|
253
|
+
|
254
|
+
|
255
|
+
|
256
|
+
|
257
|
+
|
258
|
+
|
259
|
+
|
260
|
+
|
261
|
+
|
262
|
+
<span class="summary_desc"><div class='inline'><p><Description>.</p>
|
263
|
+
</div></span>
|
264
|
+
|
265
|
+
</li>
|
266
|
+
|
267
|
+
|
268
|
+
<li class="public ">
|
269
|
+
<span class="summary_signature">
|
270
|
+
|
271
|
+
<a href="#find_gene-instance_method" title="#find_gene (instance method)">#<strong>find_gene</strong>(key) ⇒ <Type> </a>
|
272
|
+
|
273
|
+
|
274
|
+
|
275
|
+
</span>
|
276
|
+
|
277
|
+
|
278
|
+
|
279
|
+
|
280
|
+
|
281
|
+
|
282
|
+
|
283
|
+
|
284
|
+
|
285
|
+
<span class="summary_desc"><div class='inline'><p>Returns the first gene with the given key.</p>
|
286
|
+
</div></span>
|
287
|
+
|
288
|
+
</li>
|
289
|
+
|
290
|
+
|
291
|
+
<li class="public ">
|
292
|
+
<span class="summary_signature">
|
293
|
+
|
294
|
+
<a href="#find_genes-instance_method" title="#find_genes (instance method)">#<strong>find_genes</strong>(*keys) ⇒ <Type> </a>
|
295
|
+
|
296
|
+
|
297
|
+
|
298
|
+
</span>
|
299
|
+
|
300
|
+
|
301
|
+
|
302
|
+
|
303
|
+
|
304
|
+
|
305
|
+
|
306
|
+
|
307
|
+
|
308
|
+
<span class="summary_desc"><div class='inline'><p>Returns an array of genes that have the given key.</p>
|
309
|
+
</div></span>
|
310
|
+
|
311
|
+
</li>
|
312
|
+
|
313
|
+
|
314
|
+
<li class="public ">
|
315
|
+
<span class="summary_signature">
|
316
|
+
|
317
|
+
<a href="#find_genes_count-instance_method" title="#find_genes_count (instance method)">#<strong>find_genes_count</strong>(key) ⇒ <Type> </a>
|
318
|
+
|
319
|
+
|
320
|
+
|
321
|
+
</span>
|
322
|
+
|
323
|
+
|
324
|
+
|
325
|
+
|
326
|
+
|
327
|
+
|
328
|
+
|
329
|
+
|
330
|
+
|
331
|
+
<span class="summary_desc"><div class='inline'><p><Description>.</p>
|
332
|
+
</div></span>
|
333
|
+
|
334
|
+
</li>
|
335
|
+
|
336
|
+
|
337
|
+
<li class="public ">
|
338
|
+
<span class="summary_signature">
|
339
|
+
|
340
|
+
<a href="#gene_keys-instance_method" title="#gene_keys (instance method)">#<strong>gene_keys</strong> ⇒ Object </a>
|
341
|
+
|
342
|
+
|
343
|
+
|
344
|
+
</span>
|
345
|
+
|
346
|
+
|
347
|
+
|
348
|
+
|
349
|
+
|
350
|
+
|
351
|
+
|
352
|
+
|
353
|
+
|
354
|
+
<span class="summary_desc"><div class='inline'></div></span>
|
355
|
+
|
356
|
+
</li>
|
357
|
+
|
358
|
+
|
359
|
+
<li class="public ">
|
360
|
+
<span class="summary_signature">
|
361
|
+
|
362
|
+
<a href="#genes-instance_method" title="#genes (instance method)">#<strong>genes</strong> ⇒ Object </a>
|
363
|
+
|
364
|
+
|
365
|
+
|
366
|
+
</span>
|
367
|
+
|
368
|
+
|
369
|
+
|
370
|
+
|
371
|
+
|
372
|
+
|
373
|
+
|
374
|
+
|
375
|
+
|
376
|
+
<span class="summary_desc"><div class='inline'></div></span>
|
377
|
+
|
378
|
+
</li>
|
379
|
+
|
380
|
+
|
381
|
+
<li class="public ">
|
382
|
+
<span class="summary_signature">
|
383
|
+
|
384
|
+
<a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(config: {}) ⇒ Genome </a>
|
385
|
+
|
386
|
+
|
387
|
+
|
388
|
+
</span>
|
389
|
+
|
390
|
+
|
391
|
+
<span class="note title constructor">constructor</span>
|
392
|
+
|
393
|
+
|
394
|
+
|
395
|
+
|
396
|
+
|
397
|
+
|
398
|
+
|
399
|
+
|
400
|
+
<span class="summary_desc"><div class='inline'><p>A new instance of Genome.</p>
|
401
|
+
</div></span>
|
402
|
+
|
403
|
+
</li>
|
404
|
+
|
405
|
+
|
406
|
+
<li class="public ">
|
407
|
+
<span class="summary_signature">
|
408
|
+
|
409
|
+
<a href="#inspect-instance_method" title="#inspect (instance method)">#<strong>inspect</strong> ⇒ Object </a>
|
410
|
+
|
411
|
+
|
412
|
+
|
413
|
+
</span>
|
414
|
+
|
415
|
+
|
416
|
+
|
417
|
+
|
418
|
+
|
419
|
+
|
420
|
+
|
421
|
+
|
422
|
+
|
423
|
+
<span class="summary_desc"><div class='inline'></div></span>
|
424
|
+
|
425
|
+
</li>
|
426
|
+
|
427
|
+
|
428
|
+
<li class="public ">
|
429
|
+
<span class="summary_signature">
|
430
|
+
|
431
|
+
<a href="#merge!-instance_method" title="#merge! (instance method)">#<strong>merge!</strong>(other_genome) ⇒ Object </a>
|
432
|
+
|
433
|
+
|
434
|
+
|
435
|
+
</span>
|
436
|
+
|
437
|
+
|
438
|
+
|
439
|
+
|
440
|
+
|
441
|
+
|
442
|
+
|
443
|
+
|
444
|
+
|
445
|
+
<span class="summary_desc"><div class='inline'></div></span>
|
446
|
+
|
447
|
+
</li>
|
448
|
+
|
449
|
+
|
450
|
+
</ul>
|
451
|
+
|
452
|
+
|
453
|
+
|
454
|
+
<div id="constructor_details" class="method_details_list">
|
455
|
+
<h2>Constructor Details</h2>
|
456
|
+
|
457
|
+
<div class="method_details first">
|
458
|
+
<h3 class="signature first" id="initialize-instance_method">
|
459
|
+
|
460
|
+
#<strong>initialize</strong>(config: {}) ⇒ <tt><span class='object_link'><a href="" title="Evolvable::Genome (class)">Genome</a></span></tt>
|
461
|
+
|
462
|
+
|
463
|
+
|
464
|
+
|
465
|
+
|
466
|
+
</h3><div class="docstring">
|
467
|
+
<div class="discussion">
|
468
|
+
<p>Returns a new instance of Genome.</p>
|
469
|
+
|
470
|
+
|
471
|
+
</div>
|
472
|
+
</div>
|
473
|
+
<div class="tags">
|
474
|
+
|
475
|
+
|
476
|
+
</div><table class="source_code">
|
477
|
+
<tr>
|
478
|
+
<td>
|
479
|
+
<pre class="lines">
|
480
|
+
|
481
|
+
|
482
|
+
29
|
483
|
+
30
|
484
|
+
31</pre>
|
485
|
+
</td>
|
486
|
+
<td>
|
487
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/genome.rb', line 29</span>
|
488
|
+
|
489
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>config:</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
|
490
|
+
<span class='ivar'>@config</span> <span class='op'>=</span> <span class='id identifier rubyid_config'>config</span>
|
491
|
+
<span class='kw'>end</span></pre>
|
492
|
+
</td>
|
493
|
+
</tr>
|
494
|
+
</table>
|
495
|
+
</div>
|
496
|
+
|
497
|
+
</div>
|
498
|
+
|
499
|
+
<div id="instance_attr_details" class="attr_details">
|
500
|
+
<h2>Instance Attribute Details</h2>
|
501
|
+
|
502
|
+
|
503
|
+
<span id=""></span>
|
504
|
+
<div class="method_details first">
|
505
|
+
<h3 class="signature first" id="config-instance_method">
|
506
|
+
|
507
|
+
#<strong>config</strong> ⇒ <tt>Object</tt> <span class="extras">(readonly)</span>
|
508
|
+
|
509
|
+
|
510
|
+
|
511
|
+
<span class="aliases">Also known as:
|
512
|
+
<span class="names"><span id='to_h-instance_method'>to_h</span></span>
|
513
|
+
</span>
|
514
|
+
|
515
|
+
|
516
|
+
|
517
|
+
</h3><div class="docstring">
|
518
|
+
<div class="discussion">
|
519
|
+
<p>Returns the value of attribute config.</p>
|
520
|
+
|
521
|
+
|
522
|
+
</div>
|
523
|
+
</div>
|
524
|
+
<div class="tags">
|
525
|
+
|
526
|
+
|
527
|
+
</div><table class="source_code">
|
528
|
+
<tr>
|
529
|
+
<td>
|
530
|
+
<pre class="lines">
|
531
|
+
|
532
|
+
|
533
|
+
33
|
534
|
+
34
|
535
|
+
35</pre>
|
536
|
+
</td>
|
537
|
+
<td>
|
538
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/genome.rb', line 33</span>
|
539
|
+
|
540
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_config'>config</span>
|
541
|
+
<span class='ivar'>@config</span>
|
542
|
+
<span class='kw'>end</span></pre>
|
543
|
+
</td>
|
544
|
+
</tr>
|
545
|
+
</table>
|
546
|
+
</div>
|
547
|
+
|
548
|
+
</div>
|
549
|
+
|
550
|
+
|
551
|
+
<div id="class_method_details" class="method_details_list">
|
552
|
+
<h2>Class Method Details</h2>
|
553
|
+
|
554
|
+
|
555
|
+
<div class="method_details first">
|
556
|
+
<h3 class="signature first" id="load-class_method">
|
557
|
+
|
558
|
+
.<strong>load</strong>(data, serializer: Serializer) ⇒ <tt>Object</tt>
|
559
|
+
|
560
|
+
|
561
|
+
|
562
|
+
|
563
|
+
|
564
|
+
</h3><table class="source_code">
|
565
|
+
<tr>
|
566
|
+
<td>
|
567
|
+
<pre class="lines">
|
568
|
+
|
569
|
+
|
570
|
+
25
|
571
|
+
26
|
572
|
+
27</pre>
|
573
|
+
</td>
|
574
|
+
<td>
|
575
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/genome.rb', line 25</span>
|
576
|
+
|
577
|
+
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_load'>load</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='comma'>,</span> <span class='label'>serializer:</span> <span class='const'><span class='object_link'><a href="Serializer.html" title="Evolvable::Serializer (class)">Serializer</a></span></span><span class='rparen'>)</span>
|
578
|
+
<span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>config:</span> <span class='id identifier rubyid_serializer'>serializer</span><span class='period'>.</span><span class='id identifier rubyid_load'>load</span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
579
|
+
<span class='kw'>end</span></pre>
|
580
|
+
</td>
|
581
|
+
</tr>
|
582
|
+
</table>
|
583
|
+
</div>
|
584
|
+
|
585
|
+
</div>
|
586
|
+
|
587
|
+
<div id="instance_method_details" class="method_details_list">
|
588
|
+
<h2>Instance Method Details</h2>
|
589
|
+
|
590
|
+
|
591
|
+
<div class="method_details first">
|
592
|
+
<h3 class="signature first" id="dump-instance_method">
|
593
|
+
|
594
|
+
#<strong>dump</strong>(serializer: Serializer) ⇒ <tt>Object</tt>
|
595
|
+
|
596
|
+
|
597
|
+
|
598
|
+
|
599
|
+
|
600
|
+
</h3><table class="source_code">
|
601
|
+
<tr>
|
602
|
+
<td>
|
603
|
+
<pre class="lines">
|
604
|
+
|
605
|
+
|
606
|
+
110
|
607
|
+
111
|
608
|
+
112</pre>
|
609
|
+
</td>
|
610
|
+
<td>
|
611
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/genome.rb', line 110</span>
|
612
|
+
|
613
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_dump'>dump</span><span class='lparen'>(</span><span class='label'>serializer:</span> <span class='const'><span class='object_link'><a href="Serializer.html" title="Evolvable::Serializer (class)">Serializer</a></span></span><span class='rparen'>)</span>
|
614
|
+
<span class='id identifier rubyid_serializer'>serializer</span><span class='period'>.</span><span class='id identifier rubyid_dump'>dump</span> <span class='ivar'>@config</span>
|
615
|
+
<span class='kw'>end</span></pre>
|
616
|
+
</td>
|
617
|
+
</tr>
|
618
|
+
</table>
|
619
|
+
</div>
|
620
|
+
|
621
|
+
<div class="method_details ">
|
622
|
+
<h3 class="signature " id="find_count_gene-instance_method">
|
623
|
+
|
624
|
+
#<strong>find_count_gene</strong>(key) ⇒ <tt><Type></tt>
|
625
|
+
|
626
|
+
|
627
|
+
|
628
|
+
|
629
|
+
|
630
|
+
</h3><div class="docstring">
|
631
|
+
<div class="discussion">
|
632
|
+
<p><Description></p>
|
633
|
+
|
634
|
+
|
635
|
+
</div>
|
636
|
+
</div>
|
637
|
+
<div class="tags">
|
638
|
+
<p class="tag_title">Parameters:</p>
|
639
|
+
<ul class="param">
|
640
|
+
|
641
|
+
<li>
|
642
|
+
|
643
|
+
<span class='name'>key</span>
|
644
|
+
|
645
|
+
|
646
|
+
<span class='type'>(<tt><Type></tt>)</span>
|
647
|
+
|
648
|
+
|
649
|
+
|
650
|
+
—
|
651
|
+
<div class='inline'><p><description></p>
|
652
|
+
</div>
|
653
|
+
|
654
|
+
</li>
|
655
|
+
|
656
|
+
</ul>
|
657
|
+
|
658
|
+
<p class="tag_title">Returns:</p>
|
659
|
+
<ul class="return">
|
660
|
+
|
661
|
+
<li>
|
662
|
+
|
663
|
+
|
664
|
+
<span class='type'>(<tt><Type></tt>)</span>
|
665
|
+
|
666
|
+
|
667
|
+
|
668
|
+
—
|
669
|
+
<div class='inline'><p><description></p>
|
670
|
+
</div>
|
671
|
+
|
672
|
+
</li>
|
673
|
+
|
674
|
+
</ul>
|
675
|
+
|
676
|
+
</div><table class="source_code">
|
677
|
+
<tr>
|
678
|
+
<td>
|
679
|
+
<pre class="lines">
|
680
|
+
|
681
|
+
|
682
|
+
88
|
683
|
+
89
|
684
|
+
90</pre>
|
685
|
+
</td>
|
686
|
+
<td>
|
687
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/genome.rb', line 88</span>
|
688
|
+
|
689
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_find_count_gene'>find_count_gene</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span>
|
690
|
+
<span class='ivar'>@config</span><span class='period'>.</span><span class='id identifier rubyid_dig'>dig</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='symbol'>:count_gene</span><span class='rparen'>)</span>
|
691
|
+
<span class='kw'>end</span></pre>
|
692
|
+
</td>
|
693
|
+
</tr>
|
694
|
+
</table>
|
695
|
+
</div>
|
696
|
+
|
697
|
+
<div class="method_details ">
|
698
|
+
<h3 class="signature " id="find_gene-instance_method">
|
699
|
+
|
700
|
+
#<strong>find_gene</strong>(key) ⇒ <tt><Type></tt>
|
701
|
+
|
702
|
+
|
703
|
+
|
704
|
+
|
705
|
+
|
706
|
+
</h3><div class="docstring">
|
707
|
+
<div class="discussion">
|
708
|
+
<p>Returns the first gene with the given key. In the Melody example above, the instrument
|
709
|
+
gene has the key <code>:instrument</code> so we might write something like:</p>
|
710
|
+
|
711
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_instrument_gene'>instrument_gene</span> <span class='op'>=</span> <span class='id identifier rubyid_melody'>melody</span><span class='period'>.</span><span class='id identifier rubyid_find_gene'>find_gene</span><span class='lparen'>(</span><span class='id identifier rubyid_instrument'>instrument</span><span class='rparen'>)</span>
|
712
|
+
</code></pre>
|
713
|
+
|
714
|
+
|
715
|
+
</div>
|
716
|
+
</div>
|
717
|
+
<div class="tags">
|
718
|
+
<p class="tag_title">Parameters:</p>
|
719
|
+
<ul class="param">
|
720
|
+
|
721
|
+
<li>
|
722
|
+
|
723
|
+
<span class='name'>key</span>
|
724
|
+
|
725
|
+
|
726
|
+
<span class='type'>(<tt><Type></tt>)</span>
|
727
|
+
|
728
|
+
|
729
|
+
|
730
|
+
—
|
731
|
+
<div class='inline'><p><description></p>
|
732
|
+
</div>
|
733
|
+
|
734
|
+
</li>
|
735
|
+
|
736
|
+
</ul>
|
737
|
+
|
738
|
+
<p class="tag_title">Returns:</p>
|
739
|
+
<ul class="return">
|
740
|
+
|
741
|
+
<li>
|
742
|
+
|
743
|
+
|
744
|
+
<span class='type'>(<tt><Type></tt>)</span>
|
745
|
+
|
746
|
+
|
747
|
+
|
748
|
+
—
|
749
|
+
<div class='inline'><p><description></p>
|
750
|
+
</div>
|
751
|
+
|
752
|
+
</li>
|
753
|
+
|
754
|
+
</ul>
|
755
|
+
|
756
|
+
</div><table class="source_code">
|
757
|
+
<tr>
|
758
|
+
<td>
|
759
|
+
<pre class="lines">
|
760
|
+
|
761
|
+
|
762
|
+
49
|
763
|
+
50
|
764
|
+
51</pre>
|
765
|
+
</td>
|
766
|
+
<td>
|
767
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/genome.rb', line 49</span>
|
768
|
+
|
769
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_find_gene'>find_gene</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span>
|
770
|
+
<span class='ivar'>@config</span><span class='period'>.</span><span class='id identifier rubyid_dig'>dig</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='symbol'>:genes</span><span class='comma'>,</span> <span class='int'>0</span><span class='rparen'>)</span>
|
771
|
+
<span class='kw'>end</span></pre>
|
772
|
+
</td>
|
773
|
+
</tr>
|
774
|
+
</table>
|
775
|
+
</div>
|
776
|
+
|
777
|
+
<div class="method_details ">
|
778
|
+
<h3 class="signature " id="find_genes-instance_method">
|
779
|
+
|
780
|
+
#<strong>find_genes</strong>(*keys) ⇒ <tt><Type></tt>
|
781
|
+
|
782
|
+
|
783
|
+
|
784
|
+
|
785
|
+
|
786
|
+
</h3><div class="docstring">
|
787
|
+
<div class="discussion">
|
788
|
+
<p>Returns an array of genes that have the given key. Gene keys are defined using the
|
789
|
+
<a href="https://mattruzicka.github.io/evolvable/Evolvable/ClassMethods#gene-instance_method">EvolvableClass.gene</a>
|
790
|
+
macro method. In the Melody example above, the key for the note genes would be <code>:notes</code>.
|
791
|
+
The following would return an array of them: <code>note_genes = melody.find_genes(:notes)</code></p>
|
792
|
+
|
793
|
+
|
794
|
+
</div>
|
795
|
+
</div>
|
796
|
+
<div class="tags">
|
797
|
+
<p class="tag_title">Parameters:</p>
|
798
|
+
<ul class="param">
|
799
|
+
|
800
|
+
<li>
|
801
|
+
|
802
|
+
<span class='name'>*keys</span>
|
803
|
+
|
804
|
+
|
805
|
+
<span class='type'>(<tt><Type></tt>)</span>
|
806
|
+
|
807
|
+
|
808
|
+
|
809
|
+
—
|
810
|
+
<div class='inline'><p><description></p>
|
811
|
+
</div>
|
812
|
+
|
813
|
+
</li>
|
814
|
+
|
815
|
+
</ul>
|
816
|
+
|
817
|
+
<p class="tag_title">Returns:</p>
|
818
|
+
<ul class="return">
|
819
|
+
|
820
|
+
<li>
|
821
|
+
|
822
|
+
|
823
|
+
<span class='type'>(<tt><Type></tt>)</span>
|
824
|
+
|
825
|
+
|
826
|
+
|
827
|
+
—
|
828
|
+
<div class='inline'><p><description></p>
|
829
|
+
</div>
|
830
|
+
|
831
|
+
</li>
|
832
|
+
|
833
|
+
</ul>
|
834
|
+
|
835
|
+
</div><table class="source_code">
|
836
|
+
<tr>
|
837
|
+
<td>
|
838
|
+
<pre class="lines">
|
839
|
+
|
840
|
+
|
841
|
+
63
|
842
|
+
64
|
843
|
+
65
|
844
|
+
66
|
845
|
+
67
|
846
|
+
68</pre>
|
847
|
+
</td>
|
848
|
+
<td>
|
849
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/genome.rb', line 63</span>
|
850
|
+
|
851
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_find_genes'>find_genes</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_keys'>keys</span><span class='rparen'>)</span>
|
852
|
+
<span class='id identifier rubyid_keys'>keys</span><span class='period'>.</span><span class='id identifier rubyid_flatten!'>flatten!</span>
|
853
|
+
<span class='kw'>return</span> <span class='ivar'>@config</span><span class='period'>.</span><span class='id identifier rubyid_dig'>dig</span><span class='lparen'>(</span><span class='id identifier rubyid_keys'>keys</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='comma'>,</span> <span class='symbol'>:genes</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_keys'>keys</span><span class='period'>.</span><span class='id identifier rubyid_count'>count</span> <span class='op'><=</span> <span class='int'>1</span>
|
854
|
+
|
855
|
+
<span class='ivar'>@config</span><span class='period'>.</span><span class='id identifier rubyid_values_at'>values_at</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_keys'>keys</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_flat_map'>flat_map</span> <span class='lbrace'>{</span> <span class='id identifier rubyid__1'>_1</span><span class='op'>&.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='symbol'>:genes</span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='lbracket'>[</span><span class='rbracket'>]</span> <span class='rbrace'>}</span>
|
856
|
+
<span class='kw'>end</span></pre>
|
857
|
+
</td>
|
858
|
+
</tr>
|
859
|
+
</table>
|
860
|
+
</div>
|
861
|
+
|
862
|
+
<div class="method_details ">
|
863
|
+
<h3 class="signature " id="find_genes_count-instance_method">
|
864
|
+
|
865
|
+
#<strong>find_genes_count</strong>(key) ⇒ <tt><Type></tt>
|
866
|
+
|
867
|
+
|
868
|
+
|
869
|
+
|
870
|
+
|
871
|
+
</h3><div class="docstring">
|
872
|
+
<div class="discussion">
|
873
|
+
<p><Description></p>
|
874
|
+
|
875
|
+
|
876
|
+
</div>
|
877
|
+
</div>
|
878
|
+
<div class="tags">
|
879
|
+
<p class="tag_title">Parameters:</p>
|
880
|
+
<ul class="param">
|
881
|
+
|
882
|
+
<li>
|
883
|
+
|
884
|
+
<span class='name'>key</span>
|
885
|
+
|
886
|
+
|
887
|
+
<span class='type'>(<tt><Type></tt>)</span>
|
888
|
+
|
889
|
+
|
890
|
+
|
891
|
+
—
|
892
|
+
<div class='inline'><p><description></p>
|
893
|
+
</div>
|
894
|
+
|
895
|
+
</li>
|
896
|
+
|
897
|
+
</ul>
|
898
|
+
|
899
|
+
<p class="tag_title">Returns:</p>
|
900
|
+
<ul class="return">
|
901
|
+
|
902
|
+
<li>
|
903
|
+
|
904
|
+
|
905
|
+
<span class='type'>(<tt><Type></tt>)</span>
|
906
|
+
|
907
|
+
|
908
|
+
|
909
|
+
—
|
910
|
+
<div class='inline'><p><description></p>
|
911
|
+
</div>
|
912
|
+
|
913
|
+
</li>
|
914
|
+
|
915
|
+
</ul>
|
916
|
+
|
917
|
+
</div><table class="source_code">
|
918
|
+
<tr>
|
919
|
+
<td>
|
920
|
+
<pre class="lines">
|
921
|
+
|
922
|
+
|
923
|
+
77
|
924
|
+
78
|
925
|
+
79</pre>
|
926
|
+
</td>
|
927
|
+
<td>
|
928
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/genome.rb', line 77</span>
|
929
|
+
|
930
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_find_genes_count'>find_genes_count</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span>
|
931
|
+
<span class='id identifier rubyid_find_count_gene'>find_count_gene</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_count'>count</span>
|
932
|
+
<span class='kw'>end</span></pre>
|
933
|
+
</td>
|
934
|
+
</tr>
|
935
|
+
</table>
|
936
|
+
</div>
|
937
|
+
|
938
|
+
<div class="method_details ">
|
939
|
+
<h3 class="signature " id="gene_keys-instance_method">
|
940
|
+
|
941
|
+
#<strong>gene_keys</strong> ⇒ <tt>Object</tt>
|
942
|
+
|
943
|
+
|
944
|
+
|
945
|
+
|
946
|
+
|
947
|
+
</h3><table class="source_code">
|
948
|
+
<tr>
|
949
|
+
<td>
|
950
|
+
<pre class="lines">
|
951
|
+
|
952
|
+
|
953
|
+
94
|
954
|
+
95
|
955
|
+
96</pre>
|
956
|
+
</td>
|
957
|
+
<td>
|
958
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/genome.rb', line 94</span>
|
959
|
+
|
960
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_gene_keys'>gene_keys</span>
|
961
|
+
<span class='ivar'>@config</span><span class='period'>.</span><span class='id identifier rubyid_keys'>keys</span>
|
962
|
+
<span class='kw'>end</span></pre>
|
963
|
+
</td>
|
964
|
+
</tr>
|
965
|
+
</table>
|
966
|
+
</div>
|
967
|
+
|
968
|
+
<div class="method_details ">
|
969
|
+
<h3 class="signature " id="genes-instance_method">
|
970
|
+
|
971
|
+
#<strong>genes</strong> ⇒ <tt>Object</tt>
|
972
|
+
|
973
|
+
|
974
|
+
|
975
|
+
|
976
|
+
|
977
|
+
</h3><table class="source_code">
|
978
|
+
<tr>
|
979
|
+
<td>
|
980
|
+
<pre class="lines">
|
981
|
+
|
982
|
+
|
983
|
+
98
|
984
|
+
99
|
985
|
+
100</pre>
|
986
|
+
</td>
|
987
|
+
<td>
|
988
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/genome.rb', line 98</span>
|
989
|
+
|
990
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_genes'>genes</span>
|
991
|
+
<span class='ivar'>@config</span><span class='period'>.</span><span class='id identifier rubyid_flat_map'>flat_map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid__gene_key'>_gene_key</span><span class='comma'>,</span> <span class='id identifier rubyid_gene_config'>gene_config</span><span class='op'>|</span> <span class='id identifier rubyid_gene_config'>gene_config</span><span class='lbracket'>[</span><span class='symbol'>:genes</span><span class='rbracket'>]</span> <span class='rbrace'>}</span>
|
992
|
+
<span class='kw'>end</span></pre>
|
993
|
+
</td>
|
994
|
+
</tr>
|
995
|
+
</table>
|
996
|
+
</div>
|
997
|
+
|
998
|
+
<div class="method_details ">
|
999
|
+
<h3 class="signature " id="inspect-instance_method">
|
1000
|
+
|
1001
|
+
#<strong>inspect</strong> ⇒ <tt>Object</tt>
|
1002
|
+
|
1003
|
+
|
1004
|
+
|
1005
|
+
|
1006
|
+
|
1007
|
+
</h3><table class="source_code">
|
1008
|
+
<tr>
|
1009
|
+
<td>
|
1010
|
+
<pre class="lines">
|
1011
|
+
|
1012
|
+
|
1013
|
+
106
|
1014
|
+
107
|
1015
|
+
108</pre>
|
1016
|
+
</td>
|
1017
|
+
<td>
|
1018
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/genome.rb', line 106</span>
|
1019
|
+
|
1020
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_inspect'>inspect</span>
|
1021
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span>
|
1022
|
+
<span class='kw'>end</span></pre>
|
1023
|
+
</td>
|
1024
|
+
</tr>
|
1025
|
+
</table>
|
1026
|
+
</div>
|
1027
|
+
|
1028
|
+
<div class="method_details ">
|
1029
|
+
<h3 class="signature " id="merge!-instance_method">
|
1030
|
+
|
1031
|
+
#<strong>merge!</strong>(other_genome) ⇒ <tt>Object</tt>
|
1032
|
+
|
1033
|
+
|
1034
|
+
|
1035
|
+
|
1036
|
+
|
1037
|
+
</h3><table class="source_code">
|
1038
|
+
<tr>
|
1039
|
+
<td>
|
1040
|
+
<pre class="lines">
|
1041
|
+
|
1042
|
+
|
1043
|
+
102
|
1044
|
+
103
|
1045
|
+
104</pre>
|
1046
|
+
</td>
|
1047
|
+
<td>
|
1048
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/genome.rb', line 102</span>
|
1049
|
+
|
1050
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_merge!'>merge!</span><span class='lparen'>(</span><span class='id identifier rubyid_other_genome'>other_genome</span><span class='rparen'>)</span>
|
1051
|
+
<span class='ivar'>@config</span><span class='period'>.</span><span class='id identifier rubyid_merge!'>merge!</span><span class='lparen'>(</span><span class='id identifier rubyid_other_genome'>other_genome</span><span class='period'>.</span><span class='id identifier rubyid_config'>config</span><span class='rparen'>)</span>
|
1052
|
+
<span class='kw'>end</span></pre>
|
1053
|
+
</td>
|
1054
|
+
</tr>
|
1055
|
+
</table>
|
1056
|
+
</div>
|
1057
|
+
|
1058
|
+
</div>
|
1059
|
+
|
1060
|
+
</div>
|
1061
|
+
|
1062
|
+
<div id="footer">
|
1063
|
+
Generated on Sat May 10 18:39:22 2025 by
|
1064
|
+
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
1065
|
+
0.9.37 (ruby-3.4.2).
|
1066
|
+
</div>
|
1067
|
+
|
1068
|
+
</div>
|
1069
|
+
</body>
|
1070
|
+
</html>
|