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,1233 @@
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::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::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>
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::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.rb</dd>
82
+ </dl>
83
+
84
+ </div>
85
+
86
+
87
+
88
+
89
+
90
+ <h2>Instance Attribute Summary <small><a href="#" class="summary_toggle">collapse</a></small></h2>
91
+ <ul class="summary">
92
+
93
+ <li class="public ">
94
+ <span class="summary_signature">
95
+
96
+ <a href="#cluster_config-instance_method" title="#cluster_config (instance method)">#<strong>cluster_config</strong> &#x21d2; Object </a>
97
+
98
+
99
+
100
+ </span>
101
+
102
+
103
+
104
+
105
+ <span class="note title readonly">readonly</span>
106
+
107
+
108
+
109
+
110
+
111
+
112
+
113
+
114
+
115
+ <span class="summary_desc"><div class='inline'><p>Returns the value of attribute cluster_config.</p>
116
+ </div></span>
117
+
118
+ </li>
119
+
120
+
121
+ <li class="public ">
122
+ <span class="summary_signature">
123
+
124
+ <a href="#gene_config-instance_method" title="#gene_config (instance method)">#<strong>gene_config</strong> &#x21d2; Object </a>
125
+
126
+
127
+
128
+ </span>
129
+
130
+
131
+
132
+
133
+ <span class="note title readonly">readonly</span>
134
+
135
+
136
+
137
+
138
+
139
+
140
+
141
+
142
+
143
+ <span class="summary_desc"><div class='inline'><p>Returns the value of attribute gene_config.</p>
144
+ </div></span>
145
+
146
+ </li>
147
+
148
+
149
+ </ul>
150
+
151
+
152
+
153
+
154
+
155
+ <h2>
156
+ Instance Method Summary
157
+ <small><a href="#" class="summary_toggle">collapse</a></small>
158
+ </h2>
159
+
160
+ <ul class="summary">
161
+
162
+ <li class="public ">
163
+ <span class="summary_signature">
164
+
165
+ <a href="#after_evolution-instance_method" title="#after_evolution (instance method)">#<strong>after_evolution</strong>(population) &#x21d2; Object </a>
166
+
167
+
168
+
169
+ </span>
170
+
171
+
172
+
173
+
174
+
175
+
176
+
177
+
178
+
179
+ <span class="summary_desc"><div class='inline'><p>Runs after evolution.</p>
180
+ </div></span>
181
+
182
+ </li>
183
+
184
+
185
+ <li class="public ">
186
+ <span class="summary_signature">
187
+
188
+ <a href="#before_evaluation-instance_method" title="#before_evaluation (instance method)">#<strong>before_evaluation</strong>(population) &#x21d2; Object </a>
189
+
190
+
191
+
192
+ </span>
193
+
194
+
195
+
196
+
197
+
198
+
199
+
200
+
201
+
202
+ <span class="summary_desc"><div class='inline'><p>Called before evaluation.</p>
203
+ </div></span>
204
+
205
+ </li>
206
+
207
+
208
+ <li class="public ">
209
+ <span class="summary_signature">
210
+
211
+ <a href="#before_evolution-instance_method" title="#before_evolution (instance method)">#<strong>before_evolution</strong>(population) &#x21d2; Object </a>
212
+
213
+
214
+
215
+ </span>
216
+
217
+
218
+
219
+
220
+
221
+
222
+
223
+
224
+
225
+ <span class="summary_desc"><div class='inline'><p>Runs after evaluation and before evolution.</p>
226
+ </div></span>
227
+
228
+ </li>
229
+
230
+
231
+ <li class="public ">
232
+ <span class="summary_signature">
233
+
234
+ <a href="#cluster-instance_method" title="#cluster (instance method)">#<strong>cluster</strong>(cluster_name, type:, **opts) &#x21d2; Object </a>
235
+
236
+
237
+
238
+ </span>
239
+
240
+
241
+
242
+
243
+
244
+
245
+
246
+
247
+
248
+ <span class="summary_desc"><div class='inline'><p>The <code>.cluster</code> macro applies a pre-defined group of related genes.</p>
249
+ </div></span>
250
+
251
+ </li>
252
+
253
+
254
+ <li class="public ">
255
+ <span class="summary_signature">
256
+
257
+ <a href="#gene-instance_method" title="#gene (instance method)">#<strong>gene</strong>(name, type:, count: 1, cluster: nil) &#x21d2; Object </a>
258
+
259
+
260
+
261
+ </span>
262
+
263
+
264
+
265
+
266
+
267
+
268
+
269
+
270
+
271
+ <span class="summary_desc"><div class='inline'><p>The <code>.gene</code> macro defines traits that can mutate and evolve over time.</p>
272
+ </div></span>
273
+
274
+ </li>
275
+
276
+
277
+ <li class="public ">
278
+ <span class="summary_signature">
279
+
280
+ <a href="#inherited-instance_method" title="#inherited (instance method)">#<strong>inherited</strong>(subclass) &#x21d2; void </a>
281
+
282
+
283
+
284
+ </span>
285
+
286
+
287
+
288
+
289
+
290
+
291
+
292
+
293
+
294
+ <span class="summary_desc"><div class='inline'><p>Ensures that subclasses inherit the gene and cluster configuration.</p>
295
+ </div></span>
296
+
297
+ </li>
298
+
299
+
300
+ <li class="public ">
301
+ <span class="summary_signature">
302
+
303
+ <a href="#initialize_evolvable-instance_method" title="#initialize_evolvable (instance method)">#<strong>initialize_evolvable</strong> &#x21d2; Evolvable </a>
304
+
305
+
306
+
307
+ </span>
308
+
309
+
310
+
311
+
312
+
313
+
314
+
315
+
316
+
317
+ <span class="summary_desc"><div class='inline'><p>Override this method to customize how your evolvable instances are initialized.</p>
318
+ </div></span>
319
+
320
+ </li>
321
+
322
+
323
+ <li class="public ">
324
+ <span class="summary_signature">
325
+
326
+ <a href="#new_evolvable-instance_method" title="#new_evolvable (instance method)">#<strong>new_evolvable</strong>(population: nil, genome: nil, generation_index: nil) &#x21d2; Object </a>
327
+
328
+
329
+
330
+ </span>
331
+
332
+
333
+
334
+
335
+
336
+
337
+
338
+
339
+
340
+ <span class="summary_desc"><div class='inline'><p>Initializes a new instance.</p>
341
+ </div></span>
342
+
343
+ </li>
344
+
345
+
346
+ <li class="public ">
347
+ <span class="summary_signature">
348
+
349
+ <a href="#new_gene_space-instance_method" title="#new_gene_space (instance method)">#<strong>new_gene_space</strong> &#x21d2; Evolvable::GeneSpace </a>
350
+
351
+
352
+
353
+ </span>
354
+
355
+
356
+
357
+
358
+
359
+
360
+
361
+
362
+
363
+ <span class="summary_desc"><div class='inline'><p>Creates a new gene space for this evolvable class.</p>
364
+ </div></span>
365
+
366
+ </li>
367
+
368
+
369
+ <li class="public ">
370
+ <span class="summary_signature">
371
+
372
+ <a href="#new_population-instance_method" title="#new_population (instance method)">#<strong>new_population</strong>(keyword_args = {}) &#x21d2; Object </a>
373
+
374
+
375
+
376
+ </span>
377
+
378
+
379
+
380
+
381
+
382
+
383
+
384
+
385
+
386
+ <span class="summary_desc"><div class='inline'><p>Initializes a population with defaults that can be changed using the same named parameters as <a href="https://mattruzicka.github.io/evolvable/Evolvable/Population#initialize">Population#initialize</a>.</p>
387
+ </div></span>
388
+
389
+ </li>
390
+
391
+
392
+ </ul>
393
+
394
+
395
+
396
+ <div id="instance_attr_details" class="attr_details">
397
+ <h2>Instance Attribute Details</h2>
398
+
399
+
400
+ <span id=""></span>
401
+ <div class="method_details first">
402
+ <h3 class="signature first" id="cluster_config-instance_method">
403
+
404
+ #<strong>cluster_config</strong> &#x21d2; <tt>Object</tt> <span class="extras">(readonly)</span>
405
+
406
+
407
+
408
+
409
+
410
+ </h3><div class="docstring">
411
+ <div class="discussion">
412
+ <p>Returns the value of attribute cluster_config.</p>
413
+
414
+
415
+ </div>
416
+ </div>
417
+ <div class="tags">
418
+
419
+
420
+ </div><table class="source_code">
421
+ <tr>
422
+ <td>
423
+ <pre class="lines">
424
+
425
+
426
+ 245
427
+ 246
428
+ 247</pre>
429
+ </td>
430
+ <td>
431
+ <pre class="code"><span class="info file"># File 'lib/evolvable.rb', line 245</span>
432
+
433
+ <span class='kw'>def</span> <span class='id identifier rubyid_cluster_config'>cluster_config</span>
434
+ <span class='ivar'>@cluster_config</span>
435
+ <span class='kw'>end</span></pre>
436
+ </td>
437
+ </tr>
438
+ </table>
439
+ </div>
440
+
441
+
442
+ <span id=""></span>
443
+ <div class="method_details ">
444
+ <h3 class="signature " id="gene_config-instance_method">
445
+
446
+ #<strong>gene_config</strong> &#x21d2; <tt>Object</tt> <span class="extras">(readonly)</span>
447
+
448
+
449
+
450
+
451
+
452
+ </h3><div class="docstring">
453
+ <div class="discussion">
454
+ <p>Returns the value of attribute gene_config.</p>
455
+
456
+
457
+ </div>
458
+ </div>
459
+ <div class="tags">
460
+
461
+
462
+ </div><table class="source_code">
463
+ <tr>
464
+ <td>
465
+ <pre class="lines">
466
+
467
+
468
+ 245
469
+ 246
470
+ 247</pre>
471
+ </td>
472
+ <td>
473
+ <pre class="code"><span class="info file"># File 'lib/evolvable.rb', line 245</span>
474
+
475
+ <span class='kw'>def</span> <span class='id identifier rubyid_gene_config'>gene_config</span>
476
+ <span class='ivar'>@gene_config</span>
477
+ <span class='kw'>end</span></pre>
478
+ </td>
479
+ </tr>
480
+ </table>
481
+ </div>
482
+
483
+ </div>
484
+
485
+
486
+ <div id="instance_method_details" class="method_details_list">
487
+ <h2>Instance Method Details</h2>
488
+
489
+
490
+ <div class="method_details first">
491
+ <h3 class="signature first" id="after_evolution-instance_method">
492
+
493
+ #<strong>after_evolution</strong>(population) &#x21d2; <tt>Object</tt>
494
+
495
+
496
+
497
+
498
+
499
+ </h3><div class="docstring">
500
+ <div class="discussion">
501
+ <p>Runs after evolution.</p>
502
+
503
+
504
+ </div>
505
+ </div>
506
+ <div class="tags">
507
+
508
+
509
+ </div><table class="source_code">
510
+ <tr>
511
+ <td>
512
+ <pre class="lines">
513
+
514
+
515
+ 297</pre>
516
+ </td>
517
+ <td>
518
+ <pre class="code"><span class="info file"># File 'lib/evolvable.rb', line 297</span>
519
+
520
+ <span class='kw'>def</span> <span class='id identifier rubyid_after_evolution'>after_evolution</span><span class='lparen'>(</span><span class='id identifier rubyid_population'>population</span><span class='rparen'>)</span><span class='semicolon'>;</span> <span class='kw'>end</span></pre>
521
+ </td>
522
+ </tr>
523
+ </table>
524
+ </div>
525
+
526
+ <div class="method_details ">
527
+ <h3 class="signature " id="before_evaluation-instance_method">
528
+
529
+ #<strong>before_evaluation</strong>(population) &#x21d2; <tt>Object</tt>
530
+
531
+
532
+
533
+
534
+
535
+ </h3><div class="docstring">
536
+ <div class="discussion">
537
+ <p>Called before evaluation.</p>
538
+
539
+
540
+ </div>
541
+ </div>
542
+ <div class="tags">
543
+
544
+
545
+ </div><table class="source_code">
546
+ <tr>
547
+ <td>
548
+ <pre class="lines">
549
+
550
+
551
+ 273</pre>
552
+ </td>
553
+ <td>
554
+ <pre class="code"><span class="info file"># File 'lib/evolvable.rb', line 273</span>
555
+
556
+ <span class='kw'>def</span> <span class='id identifier rubyid_before_evaluation'>before_evaluation</span><span class='lparen'>(</span><span class='id identifier rubyid_population'>population</span><span class='rparen'>)</span><span class='semicolon'>;</span> <span class='kw'>end</span></pre>
557
+ </td>
558
+ </tr>
559
+ </table>
560
+ </div>
561
+
562
+ <div class="method_details ">
563
+ <h3 class="signature " id="before_evolution-instance_method">
564
+
565
+ #<strong>before_evolution</strong>(population) &#x21d2; <tt>Object</tt>
566
+
567
+
568
+
569
+
570
+
571
+ </h3><div class="docstring">
572
+ <div class="discussion">
573
+ <p>Runs after evaluation and before evolution.</p>
574
+
575
+
576
+ </div>
577
+ </div>
578
+ <div class="tags">
579
+
580
+ <div class="examples">
581
+ <h4 class="tag_title">Examples:</h4>
582
+
583
+
584
+ <pre class="example code"><code><span class='kw'>class</span> <span class='const'>Melody</span>
585
+ <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>
586
+
587
+ <span class='comment'># Play the best melody from each generation
588
+ </span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_before_evolution'>before_evolution</span><span class='lparen'>(</span><span class='id identifier rubyid_population'>population</span><span class='rparen'>)</span>
589
+ <span class='id identifier rubyid_population'>population</span><span class='period'>.</span><span class='id identifier rubyid_best_evolvable'>best_evolvable</span><span class='period'>.</span><span class='id identifier rubyid_play'>play</span>
590
+ <span class='kw'>end</span>
591
+
592
+ <span class='comment'># ...
593
+ </span><span class='kw'>end</span></code></pre>
594
+
595
+ </div>
596
+
597
+
598
+ </div><table class="source_code">
599
+ <tr>
600
+ <td>
601
+ <pre class="lines">
602
+
603
+
604
+ 291</pre>
605
+ </td>
606
+ <td>
607
+ <pre class="code"><span class="info file"># File 'lib/evolvable.rb', line 291</span>
608
+
609
+ <span class='kw'>def</span> <span class='id identifier rubyid_before_evolution'>before_evolution</span><span class='lparen'>(</span><span class='id identifier rubyid_population'>population</span><span class='rparen'>)</span><span class='semicolon'>;</span> <span class='kw'>end</span></pre>
610
+ </td>
611
+ </tr>
612
+ </table>
613
+ </div>
614
+
615
+ <div class="method_details ">
616
+ <h3 class="signature " id="cluster-instance_method">
617
+
618
+ #<strong>cluster</strong>(cluster_name, type:, **opts) &#x21d2; <tt>Object</tt>
619
+
620
+
621
+
622
+
623
+
624
+ </h3><div class="docstring">
625
+ <div class="discussion">
626
+ <p>The <code>.cluster</code> macro applies a pre-defined group of related genes.</p>
627
+
628
+ <p>Clusters promote code organization through:</p>
629
+
630
+ <ul>
631
+ <li>Modularity: Define related genes once, reuse them</li>
632
+ <li>Organization: Group genes by function</li>
633
+ <li>Maintenance: Update in one place</li>
634
+ <li>Accessibility: Access via a single accessor</li>
635
+ </ul>
636
+
637
+
638
+ </div>
639
+ </div>
640
+ <div class="tags">
641
+
642
+ <div class="examples">
643
+ <h4 class="tag_title">Examples:</h4>
644
+
645
+
646
+ <h5 class="example_title"><div class='inline'><p>UI Component with Styling Cluster</p>
647
+ </div></h5>
648
+
649
+ <pre class="example code"><code><span class='comment'># Define a gene cluster for UI styling properties
650
+ </span><span class='kw'>class</span> <span class='const'>ColorSchemeCluster</span>
651
+ <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><span class='op'>::</span><span class='const'><span class='object_link'><a href="GeneCluster.html" title="Evolvable::GeneCluster (module)">GeneCluster</a></span></span>
652
+
653
+ <span class='id identifier rubyid_gene'>gene</span> <span class='symbol'>:background_color</span><span class='comma'>,</span> <span class='label'>type:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>ColorGene</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>count:</span> <span class='int'>1</span>
654
+ <span class='id identifier rubyid_gene'>gene</span> <span class='symbol'>:text_color</span><span class='comma'>,</span> <span class='label'>type:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>ColorGene</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>count:</span> <span class='int'>1</span>
655
+ <span class='id identifier rubyid_gene'>gene</span> <span class='symbol'>:accent_color</span><span class='comma'>,</span> <span class='label'>type:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>ColorGene</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>count:</span> <span class='int'>0</span><span class='op'>..</span><span class='int'>1</span>
656
+ <span class='kw'>end</span>
657
+
658
+ <span class='comment'># Use the cluster in an evolvable UI component
659
+ </span><span class='kw'>class</span> <span class='const'>Button</span>
660
+ <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>
661
+
662
+ <span class='id identifier rubyid_cluster'>cluster</span> <span class='symbol'>:colors</span><span class='comma'>,</span> <span class='label'>type:</span> <span class='const'>ColorSchemeCluster</span>
663
+ <span class='id identifier rubyid_gene'>gene</span> <span class='symbol'>:padding</span><span class='comma'>,</span> <span class='label'>type:</span> <span class='const'>PaddingGene</span><span class='comma'>,</span> <span class='label'>count:</span> <span class='int'>1</span>
664
+
665
+ <span class='kw'>def</span> <span class='id identifier rubyid_render'>render</span>
666
+ <span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Button with </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_colors'>colors</span><span class='period'>.</span><span class='id identifier rubyid_count'>count</span><span class='embexpr_end'>}</span><span class='tstring_content'> colors</span><span class='tstring_end'>&quot;</span></span>
667
+ <span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Background: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_colors'>colors</span><span class='period'>.</span><span class='id identifier rubyid_background_color'>background_color</span><span class='period'>.</span><span class='id identifier rubyid_hex_code'>hex_code</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
668
+ <span class='kw'>end</span>
669
+ <span class='kw'>end</span></code></pre>
670
+
671
+ </div>
672
+ <p class="tag_title">Parameters:</p>
673
+ <ul class="param">
674
+
675
+ <li>
676
+
677
+ <span class='name'>cluster_name</span>
678
+
679
+
680
+ <span class='type'>(<tt>Symbol</tt>)</span>
681
+
682
+
683
+
684
+ &mdash;
685
+ <div class='inline'><p>The name for accessing the cluster</p>
686
+ </div>
687
+
688
+ </li>
689
+
690
+ <li>
691
+
692
+ <span class='name'>type</span>
693
+
694
+
695
+ <span class='type'>(<tt>Class</tt>, <tt>String</tt>)</span>
696
+
697
+
698
+
699
+ &mdash;
700
+ <div class='inline'><p>The class that defines the cluster</p>
701
+ </div>
702
+
703
+ </li>
704
+
705
+ <li>
706
+
707
+ <span class='name'>opts</span>
708
+
709
+
710
+ <span class='type'>(<tt>Hash</tt>)</span>
711
+
712
+
713
+
714
+ &mdash;
715
+ <div class='inline'><p>Optional arguments passed to the cluster initializer</p>
716
+ </div>
717
+
718
+ </li>
719
+
720
+ </ul>
721
+
722
+
723
+ </div><table class="source_code">
724
+ <tr>
725
+ <td>
726
+ <pre class="lines">
727
+
728
+
729
+ 234
730
+ 235
731
+ 236
732
+ 237
733
+ 238
734
+ 239
735
+ 240
736
+ 241
737
+ 242
738
+ 243</pre>
739
+ </td>
740
+ <td>
741
+ <pre class="code"><span class="info file"># File 'lib/evolvable.rb', line 234</span>
742
+
743
+ <span class='kw'>def</span> <span class='id identifier rubyid_cluster'>cluster</span><span class='lparen'>(</span><span class='id identifier rubyid_cluster_name'>cluster_name</span><span class='comma'>,</span> <span class='label'>type:</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_opts'>opts</span><span class='rparen'>)</span>
744
+ <span class='id identifier rubyid_recipe'>recipe</span> <span class='op'>=</span> <span class='id identifier rubyid_type'>type</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>String</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='const'>Object</span><span class='period'>.</span><span class='id identifier rubyid_const_get'>const_get</span><span class='lparen'>(</span><span class='id identifier rubyid_type'>type</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='id identifier rubyid_type'>type</span>
745
+ <span class='kw'>unless</span> <span class='id identifier rubyid_recipe'>recipe</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:apply_cluster</span><span class='rparen'>)</span>
746
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_recipe'>recipe</span><span class='embexpr_end'>}</span><span class='tstring_content'> cannot apply a gene cluster</span><span class='tstring_end'>&quot;</span></span>
747
+ <span class='kw'>end</span>
748
+
749
+ <span class='id identifier rubyid_recipe'>recipe</span><span class='period'>.</span><span class='id identifier rubyid_apply_cluster'>apply_cluster</span><span class='lparen'>(</span><span class='kw'>self</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_opts'>opts</span><span class='rparen'>)</span>
750
+
751
+ <span class='id identifier rubyid_define_method'>define_method</span><span class='lparen'>(</span><span class='id identifier rubyid_cluster_name'>cluster_name</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='id identifier rubyid_find_gene_cluster'>find_gene_cluster</span><span class='lparen'>(</span><span class='id identifier rubyid_cluster_name'>cluster_name</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
752
+ <span class='kw'>end</span></pre>
753
+ </td>
754
+ </tr>
755
+ </table>
756
+ </div>
757
+
758
+ <div class="method_details ">
759
+ <h3 class="signature " id="gene-instance_method">
760
+
761
+ #<strong>gene</strong>(name, type:, count: 1, cluster: nil) &#x21d2; <tt>Object</tt>
762
+
763
+
764
+
765
+
766
+
767
+ </h3><div class="docstring">
768
+ <div class="discussion">
769
+ <p>The <code>.gene</code> macro defines traits that can mutate and evolve over time.
770
+ Syntactically similar to ActiveRecord-style macros, it sets up the genetic structure of your model.</p>
771
+
772
+ <p>Key features:</p>
773
+
774
+ <ul>
775
+ <li>Fixed or variable gene counts</li>
776
+ <li>Automatic accessor methods</li>
777
+ <li>Optional clustering for related genes</li>
778
+ </ul>
779
+
780
+
781
+ </div>
782
+ </div>
783
+ <div class="tags">
784
+
785
+ <div class="examples">
786
+ <h4 class="tag_title">Examples:</h4>
787
+
788
+
789
+ <h5 class="example_title"><div class='inline'><p>Basic gene definition</p>
790
+ </div></h5>
791
+
792
+ <pre class="example code"><code><span class='kw'>class</span> <span class='const'>Melody</span>
793
+ <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>
794
+
795
+ <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><span class='op'>..</span><span class='int'>16</span> <span class='comment'># Can have 4-16 notes
796
+ </span> <span class='id identifier rubyid_gene'>gene</span> <span class='symbol'>:instrument</span><span class='comma'>,</span> <span class='label'>type:</span> <span class='const'>InstrumentGene</span><span class='comma'>,</span> <span class='label'>count:</span> <span class='int'>1</span>
797
+
798
+ <span class='kw'>def</span> <span class='id identifier rubyid_play'>play</span>
799
+ <span class='id identifier rubyid_instrument'>instrument</span><span class='period'>.</span><span class='id identifier rubyid_play'>play</span><span class='lparen'>(</span><span class='id identifier rubyid_notes'>notes</span><span class='rparen'>)</span>
800
+ <span class='kw'>end</span>
801
+ <span class='kw'>end</span></code></pre>
802
+
803
+ </div>
804
+ <p class="tag_title">Parameters:</p>
805
+ <ul class="param">
806
+
807
+ <li>
808
+
809
+ <span class='name'>name</span>
810
+
811
+
812
+ <span class='type'>(<tt>Symbol</tt>)</span>
813
+
814
+
815
+
816
+ &mdash;
817
+ <div class='inline'><p>The name of the gene</p>
818
+ </div>
819
+
820
+ </li>
821
+
822
+ <li>
823
+
824
+ <span class='name'>type</span>
825
+
826
+
827
+ <span class='type'>(<tt>String</tt>, <tt>Class</tt>)</span>
828
+
829
+
830
+
831
+ &mdash;
832
+ <div class='inline'><p>The gene type or class name</p>
833
+ </div>
834
+
835
+ </li>
836
+
837
+ <li>
838
+
839
+ <span class='name'>count</span>
840
+
841
+
842
+ <span class='type'>(<tt>Integer</tt>, <tt>Range</tt>)</span>
843
+
844
+
845
+ <em class="default">(defaults to: <tt>1</tt>)</em>
846
+
847
+
848
+ &mdash;
849
+ <div class='inline'><p>Number or range of gene instances</p>
850
+ </div>
851
+
852
+ </li>
853
+
854
+ <li>
855
+
856
+ <span class='name'>cluster</span>
857
+
858
+
859
+ <span class='type'>(<tt>Symbol</tt>, <tt>nil</tt>)</span>
860
+
861
+
862
+ <em class="default">(defaults to: <tt>nil</tt>)</em>
863
+
864
+
865
+ &mdash;
866
+ <div class='inline'><p>Optional cluster name for grouping related genes</p>
867
+ </div>
868
+
869
+ </li>
870
+
871
+ </ul>
872
+
873
+ <p class="tag_title">Raises:</p>
874
+ <ul class="raise">
875
+
876
+ <li>
877
+
878
+
879
+ <span class='type'>(<tt><span class='object_link'><a href="Error.html" title="Evolvable::Error (class)">Error</a></span></tt>)</span>
880
+
881
+
882
+
883
+ </li>
884
+
885
+ </ul>
886
+
887
+ </div><table class="source_code">
888
+ <tr>
889
+ <td>
890
+ <pre class="lines">
891
+
892
+
893
+ 174
894
+ 175
895
+ 176
896
+ 177
897
+ 178
898
+ 179
899
+ 180
900
+ 181
901
+ 182
902
+ 183
903
+ 184
904
+ 185
905
+ 186
906
+ 187
907
+ 188
908
+ 189
909
+ 190
910
+ 191
911
+ 192
912
+ 193
913
+ 194
914
+ 195</pre>
915
+ </td>
916
+ <td>
917
+ <pre class="code"><span class="info file"># File 'lib/evolvable.rb', line 174</span>
918
+
919
+ <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='label'>type:</span><span class='comma'>,</span> <span class='label'>count:</span> <span class='int'>1</span><span class='comma'>,</span> <span class='label'>cluster:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
920
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="Error.html" title="Evolvable::Error (class)">Error</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Gene name &#39;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_content'>&#39; is already defined</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='ivar'>@gene_config</span><span class='period'>.</span><span class='id identifier rubyid_key?'>key?</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='rparen'>)</span>
921
+
922
+ <span class='ivar'>@gene_config</span><span class='lbracket'>[</span><span class='id identifier rubyid_name'>name</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='lbrace'>{</span> <span class='label'>type:</span> <span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='label'>count:</span> <span class='id identifier rubyid_count'>count</span> <span class='rbrace'>}</span>
923
+
924
+ <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_count'>count</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Range</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_count'>count</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span> <span class='op'>:</span> <span class='id identifier rubyid_count'>count</span><span class='rparen'>)</span> <span class='op'>&gt;</span> <span class='int'>1</span>
925
+ <span class='id identifier rubyid_define_method'>define_method</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='id identifier rubyid_find_genes'>find_genes</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
926
+ <span class='kw'>else</span>
927
+ <span class='id identifier rubyid_define_method'>define_method</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='id identifier rubyid_find_gene'>find_gene</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
928
+ <span class='kw'>end</span>
929
+
930
+ <span class='kw'>if</span> <span class='id identifier rubyid_cluster'>cluster</span>
931
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="Error.html" title="Evolvable::Error (class)">Error</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Cluster name &#39;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_cluster'>cluster</span><span class='embexpr_end'>}</span><span class='tstring_content'>&#39; conflicts with an existing gene name</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='ivar'>@gene_config</span><span class='period'>.</span><span class='id identifier rubyid_key?'>key?</span><span class='lparen'>(</span><span class='id identifier rubyid_cluster'>cluster</span><span class='rparen'>)</span>
932
+
933
+ <span class='kw'>if</span> <span class='ivar'>@cluster_config</span><span class='lbracket'>[</span><span class='id identifier rubyid_cluster'>cluster</span><span class='rbracket'>]</span>
934
+ <span class='ivar'>@cluster_config</span><span class='lbracket'>[</span><span class='id identifier rubyid_cluster'>cluster</span><span class='rbracket'>]</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_name'>name</span>
935
+ <span class='kw'>else</span>
936
+ <span class='ivar'>@cluster_config</span><span class='lbracket'>[</span><span class='id identifier rubyid_cluster'>cluster</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_name'>name</span><span class='rbracket'>]</span>
937
+ <span class='id identifier rubyid_define_method'>define_method</span><span class='lparen'>(</span><span class='id identifier rubyid_cluster'>cluster</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='id identifier rubyid_find_gene_cluster'>find_gene_cluster</span><span class='lparen'>(</span><span class='id identifier rubyid_cluster'>cluster</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
938
+ <span class='kw'>end</span>
939
+ <span class='kw'>end</span>
940
+ <span class='kw'>end</span></pre>
941
+ </td>
942
+ </tr>
943
+ </table>
944
+ </div>
945
+
946
+ <div class="method_details ">
947
+ <h3 class="signature " id="inherited-instance_method">
948
+
949
+ #<strong>inherited</strong>(subclass) &#x21d2; <tt>void</tt>
950
+
951
+
952
+
953
+
954
+
955
+ </h3><div class="docstring">
956
+ <div class="discussion">
957
+ <p class="note returns_void">This method returns an undefined value.</p><p>Ensures that subclasses inherit the gene and cluster configuration.</p>
958
+
959
+
960
+ </div>
961
+ </div>
962
+ <div class="tags">
963
+ <p class="tag_title">Parameters:</p>
964
+ <ul class="param">
965
+
966
+ <li>
967
+
968
+ <span class='name'>subclass</span>
969
+
970
+
971
+ <span class='type'>(<tt>Class</tt>)</span>
972
+
973
+
974
+
975
+ &mdash;
976
+ <div class='inline'><p>The subclass that is inheriting from this class</p>
977
+ </div>
978
+
979
+ </li>
980
+
981
+ </ul>
982
+
983
+
984
+ </div><table class="source_code">
985
+ <tr>
986
+ <td>
987
+ <pre class="lines">
988
+
989
+
990
+ 263
991
+ 264
992
+ 265
993
+ 266
994
+ 267</pre>
995
+ </td>
996
+ <td>
997
+ <pre class="code"><span class="info file"># File 'lib/evolvable.rb', line 263</span>
998
+
999
+ <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>
1000
+ <span class='kw'>super</span>
1001
+ <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'>:@gene_config</span><span class='comma'>,</span> <span class='ivar'>@gene_config</span><span class='period'>.</span><span class='id identifier rubyid_dup'>dup</span><span class='rparen'>)</span>
1002
+ <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>
1003
+ <span class='kw'>end</span></pre>
1004
+ </td>
1005
+ </tr>
1006
+ </table>
1007
+ </div>
1008
+
1009
+ <div class="method_details ">
1010
+ <h3 class="signature " id="initialize_evolvable-instance_method">
1011
+
1012
+ #<strong>initialize_evolvable</strong> &#x21d2; <tt><span class='object_link'><a href="../Evolvable.html" title="Evolvable (module)">Evolvable</a></span></tt>
1013
+
1014
+
1015
+
1016
+
1017
+
1018
+ </h3><div class="docstring">
1019
+ <div class="discussion">
1020
+ <p>Override this method to customize how your evolvable instances are initialized.
1021
+ By default, simply calls new with no arguments.</p>
1022
+
1023
+
1024
+ </div>
1025
+ </div>
1026
+ <div class="tags">
1027
+
1028
+ <p class="tag_title">Returns:</p>
1029
+ <ul class="return">
1030
+
1031
+ <li>
1032
+
1033
+
1034
+ <span class='type'>(<tt><span class='object_link'><a href="../Evolvable.html" title="Evolvable (module)">Evolvable</a></span></tt>)</span>
1035
+
1036
+
1037
+
1038
+ &mdash;
1039
+ <div class='inline'><p>A new evolvable instance</p>
1040
+ </div>
1041
+
1042
+ </li>
1043
+
1044
+ </ul>
1045
+
1046
+ </div><table class="source_code">
1047
+ <tr>
1048
+ <td>
1049
+ <pre class="lines">
1050
+
1051
+
1052
+ 143
1053
+ 144
1054
+ 145</pre>
1055
+ </td>
1056
+ <td>
1057
+ <pre class="code"><span class="info file"># File 'lib/evolvable.rb', line 143</span>
1058
+
1059
+ <span class='kw'>def</span> <span class='id identifier rubyid_initialize_evolvable'>initialize_evolvable</span>
1060
+ <span class='id identifier rubyid_new'>new</span>
1061
+ <span class='kw'>end</span></pre>
1062
+ </td>
1063
+ </tr>
1064
+ </table>
1065
+ </div>
1066
+
1067
+ <div class="method_details ">
1068
+ <h3 class="signature " id="new_evolvable-instance_method">
1069
+
1070
+ #<strong>new_evolvable</strong>(population: nil, genome: nil, generation_index: nil) &#x21d2; <tt>Object</tt>
1071
+
1072
+
1073
+
1074
+
1075
+
1076
+ </h3><div class="docstring">
1077
+ <div class="discussion">
1078
+ <p>Initializes a new instance. Accepts a population object, an array of gene objects,
1079
+ and the instance&#39;s population index. This method is useful for re-initializing
1080
+ instances and populations that have been saved.</p>
1081
+
1082
+ <p><em>It is not recommended that you override this method</em> as it is used by
1083
+ Evolvable internals. If you need to customize how your instances are
1084
+ initialized you can override either of the following two &quot;initialize_instance&quot;
1085
+ methods.</p>
1086
+
1087
+
1088
+ </div>
1089
+ </div>
1090
+ <div class="tags">
1091
+
1092
+
1093
+ </div><table class="source_code">
1094
+ <tr>
1095
+ <td>
1096
+ <pre class="lines">
1097
+
1098
+
1099
+ 130
1100
+ 131
1101
+ 132
1102
+ 133
1103
+ 134
1104
+ 135</pre>
1105
+ </td>
1106
+ <td>
1107
+ <pre class="code"><span class="info file"># File 'lib/evolvable.rb', line 130</span>
1108
+
1109
+ <span class='kw'>def</span> <span class='id identifier rubyid_new_evolvable'>new_evolvable</span><span class='lparen'>(</span><span class='label'>population:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>genome:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>generation_index:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
1110
+ <span class='id identifier rubyid_evolvable'>evolvable</span> <span class='op'>=</span> <span class='id identifier rubyid_initialize_evolvable'>initialize_evolvable</span>
1111
+ <span class='id identifier rubyid_evolvable'>evolvable</span><span class='period'>.</span><span class='id identifier rubyid_make_evolvable'>make_evolvable</span><span class='lparen'>(</span><span class='label'>population:</span> <span class='id identifier rubyid_population'>population</span><span class='comma'>,</span> <span class='label'>genome:</span> <span class='id identifier rubyid_genome'>genome</span><span class='comma'>,</span> <span class='label'>generation_index:</span> <span class='id identifier rubyid_generation_index'>generation_index</span><span class='rparen'>)</span>
1112
+ <span class='id identifier rubyid_evolvable'>evolvable</span><span class='period'>.</span><span class='id identifier rubyid_after_initialize_evolvable'>after_initialize_evolvable</span>
1113
+ <span class='id identifier rubyid_evolvable'>evolvable</span>
1114
+ <span class='kw'>end</span></pre>
1115
+ </td>
1116
+ </tr>
1117
+ </table>
1118
+ </div>
1119
+
1120
+ <div class="method_details ">
1121
+ <h3 class="signature " id="new_gene_space-instance_method">
1122
+
1123
+ #<strong>new_gene_space</strong> &#x21d2; <tt><span class='object_link'><a href="GeneSpace.html" title="Evolvable::GeneSpace (class)">Evolvable::GeneSpace</a></span></tt>
1124
+
1125
+
1126
+
1127
+
1128
+
1129
+ </h3><div class="docstring">
1130
+ <div class="discussion">
1131
+ <p>Creates a new gene space for this evolvable class.
1132
+ Used internally when initializing populations.</p>
1133
+
1134
+
1135
+ </div>
1136
+ </div>
1137
+ <div class="tags">
1138
+
1139
+ <p class="tag_title">Returns:</p>
1140
+ <ul class="return">
1141
+
1142
+ <li>
1143
+
1144
+
1145
+ <span class='type'>(<tt><span class='object_link'><a href="GeneSpace.html" title="Evolvable::GeneSpace (class)">Evolvable::GeneSpace</a></span></tt>)</span>
1146
+
1147
+
1148
+
1149
+ &mdash;
1150
+ <div class='inline'><p>A new gene space</p>
1151
+ </div>
1152
+
1153
+ </li>
1154
+
1155
+ </ul>
1156
+
1157
+ </div><table class="source_code">
1158
+ <tr>
1159
+ <td>
1160
+ <pre class="lines">
1161
+
1162
+
1163
+ 253
1164
+ 254
1165
+ 255</pre>
1166
+ </td>
1167
+ <td>
1168
+ <pre class="code"><span class="info file"># File 'lib/evolvable.rb', line 253</span>
1169
+
1170
+ <span class='kw'>def</span> <span class='id identifier rubyid_new_gene_space'>new_gene_space</span>
1171
+ <span class='const'><span class='object_link'><a href="GeneSpace.html" title="Evolvable::GeneSpace (class)">GeneSpace</a></span></span><span class='period'>.</span><span class='id identifier rubyid_build'><span class='object_link'><a href="GeneSpace.html#build-class_method" title="Evolvable::GeneSpace.build (method)">build</a></span></span><span class='lparen'>(</span><span class='ivar'>@gene_config</span><span class='comma'>,</span> <span class='kw'>self</span><span class='rparen'>)</span>
1172
+ <span class='kw'>end</span></pre>
1173
+ </td>
1174
+ </tr>
1175
+ </table>
1176
+ </div>
1177
+
1178
+ <div class="method_details ">
1179
+ <h3 class="signature " id="new_population-instance_method">
1180
+
1181
+ #<strong>new_population</strong>(keyword_args = {}) &#x21d2; <tt>Object</tt>
1182
+
1183
+
1184
+
1185
+
1186
+
1187
+ </h3><div class="docstring">
1188
+ <div class="discussion">
1189
+ <p>Initializes a population with defaults that can be changed using the same named parameters as
1190
+ <a href="https://mattruzicka.github.io/evolvable/Evolvable/Population#initialize">Population#initialize</a>.</p>
1191
+
1192
+
1193
+ </div>
1194
+ </div>
1195
+ <div class="tags">
1196
+
1197
+
1198
+ </div><table class="source_code">
1199
+ <tr>
1200
+ <td>
1201
+ <pre class="lines">
1202
+
1203
+
1204
+ 115
1205
+ 116
1206
+ 117
1207
+ 118</pre>
1208
+ </td>
1209
+ <td>
1210
+ <pre class="code"><span class="info file"># File 'lib/evolvable.rb', line 115</span>
1211
+
1212
+ <span class='kw'>def</span> <span class='id identifier rubyid_new_population'>new_population</span><span class='lparen'>(</span><span class='id identifier rubyid_keyword_args'>keyword_args</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
1213
+ <span class='id identifier rubyid_keyword_args'>keyword_args</span><span class='lbracket'>[</span><span class='symbol'>:evolvable_type</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='kw'>self</span>
1214
+ <span class='const'><span class='object_link'><a href="Population.html" title="Evolvable::Population (class)">Population</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="Population.html#initialize-instance_method" title="Evolvable::Population#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='op'>**</span><span class='id identifier rubyid_keyword_args'>keyword_args</span><span class='rparen'>)</span>
1215
+ <span class='kw'>end</span></pre>
1216
+ </td>
1217
+ </tr>
1218
+ </table>
1219
+ </div>
1220
+
1221
+ </div>
1222
+
1223
+ </div>
1224
+
1225
+ <div id="footer">
1226
+ Generated on Sat May 10 18:39:22 2025 by
1227
+ <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1228
+ 0.9.37 (ruby-3.4.2).
1229
+ </div>
1230
+
1231
+ </div>
1232
+ </body>
1233
+ </html>