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,2826 @@
|
|
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::Population
|
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::Population";
|
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 (P)</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">Population</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::Population
|
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::Population</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/population.rb</dd>
|
103
|
+
</dl>
|
104
|
+
|
105
|
+
</div>
|
106
|
+
|
107
|
+
<h2>Overview</h2><div class="docstring">
|
108
|
+
<div class="discussion">
|
109
|
+
<p>Populations orchestrate the evolutionary process through four key components:</p>
|
110
|
+
|
111
|
+
<ol>
|
112
|
+
<li><strong>Evaluation</strong>: Sorts evolvable instances by fitness</li>
|
113
|
+
<li><strong>Selection</strong>: Chooses parents for combination</li>
|
114
|
+
<li><strong>Combination</strong>: Creates new evolvables from selected parents</li>
|
115
|
+
<li><strong>Mutation</strong>: Introduces variation to maintain genetic diversity</li>
|
116
|
+
</ol>
|
117
|
+
|
118
|
+
<p><strong>Features</strong>:</p>
|
119
|
+
|
120
|
+
<p>Initialize a population with default or custom parameters:</p>
|
121
|
+
|
122
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_population'>population</span> <span class='op'>=</span> <span class='const'>YourEvolvable</span><span class='period'>.</span><span class='id identifier rubyid_new_population'>new_population</span><span class='lparen'>(</span>
|
123
|
+
<span class='label'>size:</span> <span class='int'>50</span><span class='comma'>,</span>
|
124
|
+
<span class='label'>evaluation:</span> <span class='lbrace'>{</span> <span class='label'>equalize:</span> <span class='int'>0</span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
125
|
+
<span class='label'>selection:</span> <span class='lbrace'>{</span> <span class='label'>size:</span> <span class='int'>10</span> <span class='rbrace'>}</span><span class='comma'>,</span>
|
126
|
+
<span class='label'>mutation:</span> <span class='lbrace'>{</span> <span class='label'>probability:</span> <span class='float'>0.2</span><span class='comma'>,</span> <span class='label'>rate:</span> <span class='float'>0.02</span> <span class='rbrace'>}</span>
|
127
|
+
<span class='rparen'>)</span>
|
128
|
+
</code></pre>
|
129
|
+
|
130
|
+
<p>Or inject fully customized strategy objects:</p>
|
131
|
+
|
132
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_population'>population</span> <span class='op'>=</span> <span class='const'>YourEvolvable</span><span class='period'>.</span><span class='id identifier rubyid_new_population'>new_population</span><span class='lparen'>(</span>
|
133
|
+
<span class='label'>evaluation:</span> <span class='const'>Your</span><span class='op'>::</span><span class='const'>Evaluation</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='comma'>,</span>
|
134
|
+
<span class='label'>evolution:</span> <span class='const'>Your</span><span class='op'>::</span><span class='const'>Evolution</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='comma'>,</span>
|
135
|
+
<span class='label'>selection:</span> <span class='const'>Your</span><span class='op'>::</span><span class='const'>Selection</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='comma'>,</span>
|
136
|
+
<span class='label'>combination:</span> <span class='const'>Your</span><span class='op'>::</span><span class='const'>Combination</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='comma'>,</span>
|
137
|
+
<span class='label'>mutation:</span> <span class='const'>Your</span><span class='op'>::</span><span class='const'>Mutation</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
|
138
|
+
<span class='rparen'>)</span>
|
139
|
+
</code></pre>
|
140
|
+
|
141
|
+
<p>Evolve your population:</p>
|
142
|
+
|
143
|
+
<pre class="code ruby"><code class="ruby">population.evolve(count: 20) # Run for 20 generations
|
144
|
+
population.evolve_to_goal # Run until the current goal is met
|
145
|
+
population.evolve_to_goal(0.0) # Run until a specific goal is met
|
146
|
+
population.evolve_forever # Run indefinitely, ignoring any goal
|
147
|
+
population.evolve_selected([...]) # Use a custom subset of evolvables
|
148
|
+
</code></pre>
|
149
|
+
|
150
|
+
<p>Create new evolvables:</p>
|
151
|
+
|
152
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_new'>new</span> <span class='op'>=</span> <span class='id identifier rubyid_population'>population</span><span class='period'>.</span><span class='id identifier rubyid_new_evolvable'>new_evolvable</span>
|
153
|
+
<span class='id identifier rubyid_many'>many</span> <span class='op'>=</span> <span class='id identifier rubyid_population'>population</span><span class='period'>.</span><span class='id identifier rubyid_new_evolvables'>new_evolvables</span><span class='lparen'>(</span><span class='label'>count:</span> <span class='int'>10</span><span class='rparen'>)</span>
|
154
|
+
<span class='id identifier rubyid_with_genome'>with_genome</span> <span class='op'>=</span> <span class='id identifier rubyid_population'>population</span><span class='period'>.</span><span class='id identifier rubyid_new_evolvable'>new_evolvable</span><span class='lparen'>(</span><span class='label'>genome:</span> <span class='id identifier rubyid_another'>another</span><span class='period'>.</span><span class='id identifier rubyid_genome'>genome</span><span class='rparen'>)</span>
|
155
|
+
</code></pre>
|
156
|
+
|
157
|
+
<p>Customize the evolution lifecycle by implementing hooks:</p>
|
158
|
+
|
159
|
+
<pre class="code ruby"><code class="ruby"><span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_before_evaluation'>before_evaluation</span><span class='lparen'>(</span><span class='id identifier rubyid_pop'>pop</span><span class='rparen'>)</span><span class='semicolon'>;</span> <span class='kw'>end</span>
|
160
|
+
<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_pop'>pop</span><span class='rparen'>)</span><span class='semicolon'>;</span> <span class='kw'>end</span>
|
161
|
+
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_after_evolution'>after_evolution</span><span class='lparen'>(</span><span class='id identifier rubyid_pop'>pop</span><span class='rparen'>)</span><span class='semicolon'>;</span> <span class='kw'>end</span>
|
162
|
+
</code></pre>
|
163
|
+
|
164
|
+
<p>Evaluate progress:</p>
|
165
|
+
|
166
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_best'>best</span> <span class='op'>=</span> <span class='id identifier rubyid_population'>population</span><span class='period'>.</span><span class='id identifier rubyid_best_evolvable'>best_evolvable</span> <span class='kw'>if</span> <span class='id identifier rubyid_population'>population</span><span class='period'>.</span><span class='id identifier rubyid_met_goal?'>met_goal?</span>
|
167
|
+
</code></pre>
|
168
|
+
|
169
|
+
|
170
|
+
</div>
|
171
|
+
</div>
|
172
|
+
<div class="tags">
|
173
|
+
|
174
|
+
|
175
|
+
</div>
|
176
|
+
|
177
|
+
<h2>
|
178
|
+
Constant Summary
|
179
|
+
<small><a href="#" class="constants_summary_toggle">collapse</a></small>
|
180
|
+
</h2>
|
181
|
+
|
182
|
+
<dl class="constants">
|
183
|
+
|
184
|
+
<dt id="DUMP_METHODS-constant" class="">DUMP_METHODS =
|
185
|
+
<div class="docstring">
|
186
|
+
<div class="discussion">
|
187
|
+
<p>List of attributes that can be dumped during serialization.</p>
|
188
|
+
|
189
|
+
|
190
|
+
</div>
|
191
|
+
</div>
|
192
|
+
<div class="tags">
|
193
|
+
|
194
|
+
<p class="tag_title">Returns:</p>
|
195
|
+
<ul class="return">
|
196
|
+
|
197
|
+
<li>
|
198
|
+
|
199
|
+
|
200
|
+
<span class='type'>(<tt>Array<Symbol></tt>)</span>
|
201
|
+
|
202
|
+
|
203
|
+
|
204
|
+
—
|
205
|
+
<div class='inline'><p>The dumpable attributes</p>
|
206
|
+
</div>
|
207
|
+
|
208
|
+
</li>
|
209
|
+
|
210
|
+
</ul>
|
211
|
+
|
212
|
+
</div>
|
213
|
+
</dt>
|
214
|
+
<dd><pre class="code"><span class='qsymbols_beg'>%i[</span><span class='tstring_content'>evolvable_type</span><span class='words_sep'>
|
215
|
+
</span><span class='tstring_content'>id</span><span class='words_sep'>
|
216
|
+
</span><span class='tstring_content'>name</span><span class='words_sep'>
|
217
|
+
</span><span class='tstring_content'>size</span><span class='words_sep'>
|
218
|
+
</span><span class='tstring_content'>evolutions_count</span><span class='words_sep'>
|
219
|
+
</span><span class='tstring_content'>gene_space</span><span class='words_sep'>
|
220
|
+
</span><span class='tstring_content'>evolution</span><span class='words_sep'>
|
221
|
+
</span><span class='tstring_content'>evaluation</span><span class='tstring_end'>]</span></span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span></pre></dd>
|
222
|
+
|
223
|
+
</dl>
|
224
|
+
|
225
|
+
|
226
|
+
|
227
|
+
|
228
|
+
|
229
|
+
<h2>Instance Attribute Summary <small><a href="#" class="summary_toggle">collapse</a></small></h2>
|
230
|
+
<ul class="summary">
|
231
|
+
|
232
|
+
<li class="public ">
|
233
|
+
<span class="summary_signature">
|
234
|
+
|
235
|
+
<a href="#evaluation-instance_method" title="#evaluation (instance method)">#<strong>evaluation</strong> ⇒ Evolvable::Evaluation </a>
|
236
|
+
|
237
|
+
|
238
|
+
|
239
|
+
</span>
|
240
|
+
|
241
|
+
|
242
|
+
|
243
|
+
|
244
|
+
|
245
|
+
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
|
250
|
+
|
251
|
+
|
252
|
+
<span class="summary_desc"><div class='inline'><p>The evaluation strategy used to assess evolvables.</p>
|
253
|
+
</div></span>
|
254
|
+
|
255
|
+
</li>
|
256
|
+
|
257
|
+
|
258
|
+
<li class="public ">
|
259
|
+
<span class="summary_signature">
|
260
|
+
|
261
|
+
<a href="#evolution-instance_method" title="#evolution (instance method)">#<strong>evolution</strong> ⇒ Object </a>
|
262
|
+
|
263
|
+
|
264
|
+
|
265
|
+
</span>
|
266
|
+
|
267
|
+
|
268
|
+
|
269
|
+
|
270
|
+
|
271
|
+
|
272
|
+
|
273
|
+
|
274
|
+
|
275
|
+
|
276
|
+
|
277
|
+
|
278
|
+
<span class="summary_desc"><div class='inline'><p>Population properties.</p>
|
279
|
+
</div></span>
|
280
|
+
|
281
|
+
</li>
|
282
|
+
|
283
|
+
|
284
|
+
<li class="public ">
|
285
|
+
<span class="summary_signature">
|
286
|
+
|
287
|
+
<a href="#evolutions_count-instance_method" title="#evolutions_count (instance method)">#<strong>evolutions_count</strong> ⇒ Object </a>
|
288
|
+
|
289
|
+
|
290
|
+
|
291
|
+
</span>
|
292
|
+
|
293
|
+
|
294
|
+
|
295
|
+
|
296
|
+
|
297
|
+
|
298
|
+
|
299
|
+
|
300
|
+
|
301
|
+
|
302
|
+
|
303
|
+
|
304
|
+
<span class="summary_desc"><div class='inline'><p>Population properties.</p>
|
305
|
+
</div></span>
|
306
|
+
|
307
|
+
</li>
|
308
|
+
|
309
|
+
|
310
|
+
<li class="public ">
|
311
|
+
<span class="summary_signature">
|
312
|
+
|
313
|
+
<a href="#evolvable_type-instance_method" title="#evolvable_type (instance method)">#<strong>evolvable_type</strong> ⇒ Object </a>
|
314
|
+
|
315
|
+
|
316
|
+
|
317
|
+
</span>
|
318
|
+
|
319
|
+
|
320
|
+
|
321
|
+
|
322
|
+
|
323
|
+
|
324
|
+
|
325
|
+
|
326
|
+
|
327
|
+
|
328
|
+
|
329
|
+
|
330
|
+
<span class="summary_desc"><div class='inline'><p>Population properties.</p>
|
331
|
+
</div></span>
|
332
|
+
|
333
|
+
</li>
|
334
|
+
|
335
|
+
|
336
|
+
<li class="public ">
|
337
|
+
<span class="summary_signature">
|
338
|
+
|
339
|
+
<a href="#evolvables-instance_method" title="#evolvables (instance method)">#<strong>evolvables</strong> ⇒ Object </a>
|
340
|
+
|
341
|
+
|
342
|
+
|
343
|
+
</span>
|
344
|
+
|
345
|
+
|
346
|
+
|
347
|
+
|
348
|
+
|
349
|
+
|
350
|
+
|
351
|
+
|
352
|
+
|
353
|
+
|
354
|
+
|
355
|
+
|
356
|
+
<span class="summary_desc"><div class='inline'><p>Population properties.</p>
|
357
|
+
</div></span>
|
358
|
+
|
359
|
+
</li>
|
360
|
+
|
361
|
+
|
362
|
+
<li class="public ">
|
363
|
+
<span class="summary_signature">
|
364
|
+
|
365
|
+
<a href="#gene_space-instance_method" title="#gene_space (instance method)">#<strong>gene_space</strong> ⇒ Object </a>
|
366
|
+
|
367
|
+
|
368
|
+
|
369
|
+
</span>
|
370
|
+
|
371
|
+
|
372
|
+
|
373
|
+
|
374
|
+
|
375
|
+
|
376
|
+
|
377
|
+
|
378
|
+
|
379
|
+
|
380
|
+
|
381
|
+
|
382
|
+
<span class="summary_desc"><div class='inline'><p>Population properties.</p>
|
383
|
+
</div></span>
|
384
|
+
|
385
|
+
</li>
|
386
|
+
|
387
|
+
|
388
|
+
<li class="public ">
|
389
|
+
<span class="summary_signature">
|
390
|
+
|
391
|
+
<a href="#id-instance_method" title="#id (instance method)">#<strong>id</strong> ⇒ Object </a>
|
392
|
+
|
393
|
+
|
394
|
+
|
395
|
+
</span>
|
396
|
+
|
397
|
+
|
398
|
+
|
399
|
+
|
400
|
+
|
401
|
+
|
402
|
+
|
403
|
+
|
404
|
+
|
405
|
+
|
406
|
+
|
407
|
+
|
408
|
+
<span class="summary_desc"><div class='inline'><p>Population properties.</p>
|
409
|
+
</div></span>
|
410
|
+
|
411
|
+
</li>
|
412
|
+
|
413
|
+
|
414
|
+
<li class="public ">
|
415
|
+
<span class="summary_signature">
|
416
|
+
|
417
|
+
<a href="#name-instance_method" title="#name (instance method)">#<strong>name</strong> ⇒ Object </a>
|
418
|
+
|
419
|
+
|
420
|
+
|
421
|
+
</span>
|
422
|
+
|
423
|
+
|
424
|
+
|
425
|
+
|
426
|
+
|
427
|
+
|
428
|
+
|
429
|
+
|
430
|
+
|
431
|
+
|
432
|
+
|
433
|
+
|
434
|
+
<span class="summary_desc"><div class='inline'><p>Population properties.</p>
|
435
|
+
</div></span>
|
436
|
+
|
437
|
+
</li>
|
438
|
+
|
439
|
+
|
440
|
+
<li class="public ">
|
441
|
+
<span class="summary_signature">
|
442
|
+
|
443
|
+
<a href="#parent_evolvables-instance_method" title="#parent_evolvables (instance method)">#<strong>parent_evolvables</strong> ⇒ Object </a>
|
444
|
+
|
445
|
+
|
446
|
+
|
447
|
+
</span>
|
448
|
+
|
449
|
+
|
450
|
+
|
451
|
+
|
452
|
+
|
453
|
+
|
454
|
+
|
455
|
+
|
456
|
+
|
457
|
+
|
458
|
+
|
459
|
+
|
460
|
+
<span class="summary_desc"><div class='inline'><p>Population properties.</p>
|
461
|
+
</div></span>
|
462
|
+
|
463
|
+
</li>
|
464
|
+
|
465
|
+
|
466
|
+
<li class="public ">
|
467
|
+
<span class="summary_signature">
|
468
|
+
|
469
|
+
<a href="#selected_evolvables-instance_method" title="#selected_evolvables (instance method)">#<strong>selected_evolvables</strong> ⇒ Object </a>
|
470
|
+
|
471
|
+
|
472
|
+
|
473
|
+
</span>
|
474
|
+
|
475
|
+
|
476
|
+
|
477
|
+
|
478
|
+
|
479
|
+
|
480
|
+
|
481
|
+
|
482
|
+
|
483
|
+
|
484
|
+
|
485
|
+
|
486
|
+
<span class="summary_desc"><div class='inline'><p>Population properties.</p>
|
487
|
+
</div></span>
|
488
|
+
|
489
|
+
</li>
|
490
|
+
|
491
|
+
|
492
|
+
<li class="public ">
|
493
|
+
<span class="summary_signature">
|
494
|
+
|
495
|
+
<a href="#size-instance_method" title="#size (instance method)">#<strong>size</strong> ⇒ Object </a>
|
496
|
+
|
497
|
+
|
498
|
+
|
499
|
+
</span>
|
500
|
+
|
501
|
+
|
502
|
+
|
503
|
+
|
504
|
+
|
505
|
+
|
506
|
+
|
507
|
+
|
508
|
+
|
509
|
+
|
510
|
+
|
511
|
+
|
512
|
+
<span class="summary_desc"><div class='inline'><p>Population properties.</p>
|
513
|
+
</div></span>
|
514
|
+
|
515
|
+
</li>
|
516
|
+
|
517
|
+
|
518
|
+
</ul>
|
519
|
+
|
520
|
+
|
521
|
+
|
522
|
+
|
523
|
+
|
524
|
+
<h2>
|
525
|
+
Class Method Summary
|
526
|
+
<small><a href="#" class="summary_toggle">collapse</a></small>
|
527
|
+
</h2>
|
528
|
+
|
529
|
+
<ul class="summary">
|
530
|
+
|
531
|
+
<li class="public ">
|
532
|
+
<span class="summary_signature">
|
533
|
+
|
534
|
+
<a href="#load-class_method" title="load (class method)">.<strong>load</strong>(data) ⇒ Evolvable::Population </a>
|
535
|
+
|
536
|
+
|
537
|
+
|
538
|
+
</span>
|
539
|
+
|
540
|
+
|
541
|
+
|
542
|
+
|
543
|
+
|
544
|
+
|
545
|
+
|
546
|
+
|
547
|
+
|
548
|
+
<span class="summary_desc"><div class='inline'><p>Loads a population from serialized data.</p>
|
549
|
+
</div></span>
|
550
|
+
|
551
|
+
</li>
|
552
|
+
|
553
|
+
|
554
|
+
</ul>
|
555
|
+
|
556
|
+
<h2>
|
557
|
+
Instance Method Summary
|
558
|
+
<small><a href="#" class="summary_toggle">collapse</a></small>
|
559
|
+
</h2>
|
560
|
+
|
561
|
+
<ul class="summary">
|
562
|
+
|
563
|
+
<li class="public ">
|
564
|
+
<span class="summary_signature">
|
565
|
+
|
566
|
+
<a href="#best_evolvable-instance_method" title="#best_evolvable (instance method)">#<strong>best_evolvable</strong> ⇒ Evolvable </a>
|
567
|
+
|
568
|
+
|
569
|
+
|
570
|
+
</span>
|
571
|
+
|
572
|
+
|
573
|
+
|
574
|
+
|
575
|
+
|
576
|
+
|
577
|
+
|
578
|
+
|
579
|
+
|
580
|
+
<span class="summary_desc"><div class='inline'><p>Returns the best evolvable in the population according to the evaluation goal.</p>
|
581
|
+
</div></span>
|
582
|
+
|
583
|
+
</li>
|
584
|
+
|
585
|
+
|
586
|
+
<li class="public ">
|
587
|
+
<span class="summary_signature">
|
588
|
+
|
589
|
+
<a href="#dump-instance_method" title="#dump (instance method)">#<strong>dump</strong>(only: nil, except: nil) ⇒ String </a>
|
590
|
+
|
591
|
+
|
592
|
+
|
593
|
+
</span>
|
594
|
+
|
595
|
+
|
596
|
+
|
597
|
+
|
598
|
+
|
599
|
+
|
600
|
+
|
601
|
+
|
602
|
+
|
603
|
+
<span class="summary_desc"><div class='inline'><p>Serializes the population to a string.</p>
|
604
|
+
</div></span>
|
605
|
+
|
606
|
+
</li>
|
607
|
+
|
608
|
+
|
609
|
+
<li class="public ">
|
610
|
+
<span class="summary_signature">
|
611
|
+
|
612
|
+
<a href="#dump_attrs-instance_method" title="#dump_attrs (instance method)">#<strong>dump_attrs</strong>(only: nil, except: nil) ⇒ Hash </a>
|
613
|
+
|
614
|
+
|
615
|
+
|
616
|
+
</span>
|
617
|
+
|
618
|
+
|
619
|
+
|
620
|
+
|
621
|
+
|
622
|
+
|
623
|
+
|
624
|
+
|
625
|
+
|
626
|
+
<span class="summary_desc"><div class='inline'><p>Returns a hash of attributes for serialization.</p>
|
627
|
+
</div></span>
|
628
|
+
|
629
|
+
</li>
|
630
|
+
|
631
|
+
|
632
|
+
<li class="public ">
|
633
|
+
<span class="summary_signature">
|
634
|
+
|
635
|
+
<a href="#evolve-instance_method" title="#evolve (instance method)">#<strong>evolve</strong>(count: 1, goal_value: nil) ⇒ Evolvable::Population </a>
|
636
|
+
|
637
|
+
|
638
|
+
|
639
|
+
</span>
|
640
|
+
|
641
|
+
|
642
|
+
|
643
|
+
|
644
|
+
|
645
|
+
|
646
|
+
|
647
|
+
|
648
|
+
|
649
|
+
<span class="summary_desc"><div class='inline'><p>Evolves the population for a specified number of generations or until the goal is achieved.</p>
|
650
|
+
</div></span>
|
651
|
+
|
652
|
+
</li>
|
653
|
+
|
654
|
+
|
655
|
+
<li class="public ">
|
656
|
+
<span class="summary_signature">
|
657
|
+
|
658
|
+
<a href="#evolve_forever-instance_method" title="#evolve_forever (instance method)">#<strong>evolve_forever</strong> ⇒ Evolvable::Population </a>
|
659
|
+
|
660
|
+
|
661
|
+
|
662
|
+
</span>
|
663
|
+
|
664
|
+
|
665
|
+
|
666
|
+
|
667
|
+
|
668
|
+
|
669
|
+
|
670
|
+
|
671
|
+
|
672
|
+
<span class="summary_desc"><div class='inline'><p>Evolves the population indefinitely, ignoring any goal.</p>
|
673
|
+
</div></span>
|
674
|
+
|
675
|
+
</li>
|
676
|
+
|
677
|
+
|
678
|
+
<li class="public ">
|
679
|
+
<span class="summary_signature">
|
680
|
+
|
681
|
+
<a href="#evolve_selected-instance_method" title="#evolve_selected (instance method)">#<strong>evolve_selected</strong>(selected_evolvables) ⇒ Evolvable::Population </a>
|
682
|
+
|
683
|
+
|
684
|
+
|
685
|
+
</span>
|
686
|
+
|
687
|
+
|
688
|
+
|
689
|
+
|
690
|
+
|
691
|
+
|
692
|
+
|
693
|
+
|
694
|
+
|
695
|
+
<span class="summary_desc"><div class='inline'><p>Evolves the population using a pre-selected set of evolvables.</p>
|
696
|
+
</div></span>
|
697
|
+
|
698
|
+
</li>
|
699
|
+
|
700
|
+
|
701
|
+
<li class="public ">
|
702
|
+
<span class="summary_signature">
|
703
|
+
|
704
|
+
<a href="#evolve_to_goal-instance_method" title="#evolve_to_goal (instance method)">#<strong>evolve_to_goal</strong>(goal_value = nil) ⇒ Evolvable::Population </a>
|
705
|
+
|
706
|
+
|
707
|
+
|
708
|
+
</span>
|
709
|
+
|
710
|
+
|
711
|
+
|
712
|
+
|
713
|
+
|
714
|
+
|
715
|
+
|
716
|
+
|
717
|
+
|
718
|
+
<span class="summary_desc"><div class='inline'><p>Evolves the population until the goal is met.</p>
|
719
|
+
</div></span>
|
720
|
+
|
721
|
+
</li>
|
722
|
+
|
723
|
+
|
724
|
+
<li class="public ">
|
725
|
+
<span class="summary_signature">
|
726
|
+
|
727
|
+
<a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(evolvable_type:, id: nil, name: nil, size: 0, evolutions_count: 0, gene_space: nil, parent_evolvables: [], selected_evolvables: [], evaluation: Evaluation.new, evolution: Evolution.new, selection: nil, combination: nil, mutation: nil, evolvables: []) ⇒ Population </a>
|
728
|
+
|
729
|
+
|
730
|
+
|
731
|
+
</span>
|
732
|
+
|
733
|
+
|
734
|
+
<span class="note title constructor">constructor</span>
|
735
|
+
|
736
|
+
|
737
|
+
|
738
|
+
|
739
|
+
|
740
|
+
|
741
|
+
|
742
|
+
|
743
|
+
<span class="summary_desc"><div class='inline'><p>Initializes an Evolvable::Population.</p>
|
744
|
+
</div></span>
|
745
|
+
|
746
|
+
</li>
|
747
|
+
|
748
|
+
|
749
|
+
<li class="public ">
|
750
|
+
<span class="summary_signature">
|
751
|
+
|
752
|
+
<a href="#met_goal%3F-instance_method" title="#met_goal? (instance method)">#<strong>met_goal?</strong> ⇒ Boolean </a>
|
753
|
+
|
754
|
+
|
755
|
+
|
756
|
+
</span>
|
757
|
+
|
758
|
+
|
759
|
+
|
760
|
+
|
761
|
+
|
762
|
+
|
763
|
+
|
764
|
+
|
765
|
+
|
766
|
+
<span class="summary_desc"><div class='inline'><p>Checks if the goal has been met by any evolvable in the population.</p>
|
767
|
+
</div></span>
|
768
|
+
|
769
|
+
</li>
|
770
|
+
|
771
|
+
|
772
|
+
<li class="public ">
|
773
|
+
<span class="summary_signature">
|
774
|
+
|
775
|
+
<a href="#new_evolvable-instance_method" title="#new_evolvable (instance method)">#<strong>new_evolvable</strong>(genome: nil) ⇒ Evolvable </a>
|
776
|
+
|
777
|
+
|
778
|
+
|
779
|
+
</span>
|
780
|
+
|
781
|
+
|
782
|
+
|
783
|
+
|
784
|
+
|
785
|
+
|
786
|
+
|
787
|
+
|
788
|
+
|
789
|
+
<span class="summary_desc"><div class='inline'><p>Creates a new evolvable instance with an optional genome.</p>
|
790
|
+
</div></span>
|
791
|
+
|
792
|
+
</li>
|
793
|
+
|
794
|
+
|
795
|
+
<li class="public ">
|
796
|
+
<span class="summary_signature">
|
797
|
+
|
798
|
+
<a href="#new_evolvables-instance_method" title="#new_evolvables (instance method)">#<strong>new_evolvables</strong>(count:) ⇒ Array<Evolvable> </a>
|
799
|
+
|
800
|
+
|
801
|
+
|
802
|
+
</span>
|
803
|
+
|
804
|
+
|
805
|
+
|
806
|
+
|
807
|
+
|
808
|
+
|
809
|
+
|
810
|
+
|
811
|
+
|
812
|
+
<span class="summary_desc"><div class='inline'><p>Creates multiple new evolvable instances.</p>
|
813
|
+
</div></span>
|
814
|
+
|
815
|
+
</li>
|
816
|
+
|
817
|
+
|
818
|
+
<li class="public ">
|
819
|
+
<span class="summary_signature">
|
820
|
+
|
821
|
+
<a href="#new_genome-instance_method" title="#new_genome (instance method)">#<strong>new_genome</strong> ⇒ Evolvable::Genome </a>
|
822
|
+
|
823
|
+
|
824
|
+
|
825
|
+
</span>
|
826
|
+
|
827
|
+
|
828
|
+
|
829
|
+
|
830
|
+
|
831
|
+
|
832
|
+
|
833
|
+
|
834
|
+
|
835
|
+
<span class="summary_desc"><div class='inline'><p>Creates a new genome from the gene space.</p>
|
836
|
+
</div></span>
|
837
|
+
|
838
|
+
</li>
|
839
|
+
|
840
|
+
|
841
|
+
<li class="public ">
|
842
|
+
<span class="summary_signature">
|
843
|
+
|
844
|
+
<a href="#new_parent_genome_cycle-instance_method" title="#new_parent_genome_cycle (instance method)">#<strong>new_parent_genome_cycle</strong> ⇒ Enumerator </a>
|
845
|
+
|
846
|
+
|
847
|
+
|
848
|
+
</span>
|
849
|
+
|
850
|
+
|
851
|
+
|
852
|
+
|
853
|
+
|
854
|
+
|
855
|
+
|
856
|
+
|
857
|
+
|
858
|
+
<span class="summary_desc"><div class='inline'><p>Creates a cycle of parent genome pairs for combination.</p>
|
859
|
+
</div></span>
|
860
|
+
|
861
|
+
</li>
|
862
|
+
|
863
|
+
|
864
|
+
<li class="public ">
|
865
|
+
<span class="summary_signature">
|
866
|
+
|
867
|
+
<a href="#reset_evolvables-instance_method" title="#reset_evolvables (instance method)">#<strong>reset_evolvables</strong> ⇒ Array<Evolvable> </a>
|
868
|
+
|
869
|
+
|
870
|
+
|
871
|
+
</span>
|
872
|
+
|
873
|
+
|
874
|
+
|
875
|
+
|
876
|
+
|
877
|
+
|
878
|
+
|
879
|
+
|
880
|
+
|
881
|
+
<span class="summary_desc"><div class='inline'><p>Resets the population by clearing all evolvables and creating new ones.</p>
|
882
|
+
</div></span>
|
883
|
+
|
884
|
+
</li>
|
885
|
+
|
886
|
+
|
887
|
+
</ul>
|
888
|
+
|
889
|
+
|
890
|
+
|
891
|
+
<div id="constructor_details" class="method_details_list">
|
892
|
+
<h2>Constructor Details</h2>
|
893
|
+
|
894
|
+
<div class="method_details first">
|
895
|
+
<h3 class="signature first" id="initialize-instance_method">
|
896
|
+
|
897
|
+
#<strong>initialize</strong>(evolvable_type:, id: nil, name: nil, size: 0, evolutions_count: 0, gene_space: nil, parent_evolvables: [], selected_evolvables: [], evaluation: Evaluation.new, evolution: Evolution.new, selection: nil, combination: nil, mutation: nil, evolvables: []) ⇒ <tt><span class='object_link'><a href="" title="Evolvable::Population (class)">Population</a></span></tt>
|
898
|
+
|
899
|
+
|
900
|
+
|
901
|
+
|
902
|
+
|
903
|
+
</h3><div class="docstring">
|
904
|
+
<div class="discussion">
|
905
|
+
<p>Initializes an Evolvable::Population.</p>
|
906
|
+
|
907
|
+
|
908
|
+
</div>
|
909
|
+
</div>
|
910
|
+
<div class="tags">
|
911
|
+
<p class="tag_title">Parameters:</p>
|
912
|
+
<ul class="param">
|
913
|
+
|
914
|
+
<li>
|
915
|
+
|
916
|
+
<span class='name'>evolvable_type</span>
|
917
|
+
|
918
|
+
|
919
|
+
<span class='type'>(<tt>Class</tt>)</span>
|
920
|
+
|
921
|
+
|
922
|
+
|
923
|
+
—
|
924
|
+
<div class='inline'><p>Required. The class of evolvables to create</p>
|
925
|
+
</div>
|
926
|
+
|
927
|
+
</li>
|
928
|
+
|
929
|
+
<li>
|
930
|
+
|
931
|
+
<span class='name'>id</span>
|
932
|
+
|
933
|
+
|
934
|
+
<span class='type'>(<tt>String</tt>, <tt>nil</tt>)</span>
|
935
|
+
|
936
|
+
|
937
|
+
<em class="default">(defaults to: <tt>nil</tt>)</em>
|
938
|
+
|
939
|
+
|
940
|
+
—
|
941
|
+
<div class='inline'><p>Optional identifier, not used by Evolvable internally</p>
|
942
|
+
</div>
|
943
|
+
|
944
|
+
</li>
|
945
|
+
|
946
|
+
<li>
|
947
|
+
|
948
|
+
<span class='name'>name</span>
|
949
|
+
|
950
|
+
|
951
|
+
<span class='type'>(<tt>String</tt>, <tt>nil</tt>)</span>
|
952
|
+
|
953
|
+
|
954
|
+
<em class="default">(defaults to: <tt>nil</tt>)</em>
|
955
|
+
|
956
|
+
|
957
|
+
—
|
958
|
+
<div class='inline'><p>Optional name, not used by Evolvable internally</p>
|
959
|
+
</div>
|
960
|
+
|
961
|
+
</li>
|
962
|
+
|
963
|
+
<li>
|
964
|
+
|
965
|
+
<span class='name'>size</span>
|
966
|
+
|
967
|
+
|
968
|
+
<span class='type'>(<tt>Integer</tt>)</span>
|
969
|
+
|
970
|
+
|
971
|
+
<em class="default">(defaults to: <tt>0</tt>)</em>
|
972
|
+
|
973
|
+
|
974
|
+
—
|
975
|
+
<div class='inline'><p>The number of instances in the population (default: 0)</p>
|
976
|
+
</div>
|
977
|
+
|
978
|
+
</li>
|
979
|
+
|
980
|
+
<li>
|
981
|
+
|
982
|
+
<span class='name'>evolutions_count</span>
|
983
|
+
|
984
|
+
|
985
|
+
<span class='type'>(<tt>Integer</tt>)</span>
|
986
|
+
|
987
|
+
|
988
|
+
<em class="default">(defaults to: <tt>0</tt>)</em>
|
989
|
+
|
990
|
+
|
991
|
+
—
|
992
|
+
<div class='inline'><p>The number of evolutions completed (default: 0)</p>
|
993
|
+
</div>
|
994
|
+
|
995
|
+
</li>
|
996
|
+
|
997
|
+
<li>
|
998
|
+
|
999
|
+
<span class='name'>gene_space</span>
|
1000
|
+
|
1001
|
+
|
1002
|
+
<span class='type'>(<tt><span class='object_link'><a href="GeneSpace.html" title="Evolvable::GeneSpace (class)">Evolvable::GeneSpace</a></span></tt>, <tt>nil</tt>)</span>
|
1003
|
+
|
1004
|
+
|
1005
|
+
<em class="default">(defaults to: <tt>nil</tt>)</em>
|
1006
|
+
|
1007
|
+
|
1008
|
+
—
|
1009
|
+
<div class='inline'><p>The gene space for initializing evolvables</p>
|
1010
|
+
</div>
|
1011
|
+
|
1012
|
+
</li>
|
1013
|
+
|
1014
|
+
<li>
|
1015
|
+
|
1016
|
+
<span class='name'>parent_evolvables</span>
|
1017
|
+
|
1018
|
+
|
1019
|
+
<span class='type'>(<tt>Array<<span class='object_link'><a href="../Evolvable.html" title="Evolvable (module)">Evolvable</a></span>></tt>)</span>
|
1020
|
+
|
1021
|
+
|
1022
|
+
<em class="default">(defaults to: <tt>[]</tt>)</em>
|
1023
|
+
|
1024
|
+
|
1025
|
+
—
|
1026
|
+
<div class='inline'><p>Parent evolvables for breeding the next generation</p>
|
1027
|
+
</div>
|
1028
|
+
|
1029
|
+
</li>
|
1030
|
+
|
1031
|
+
<li>
|
1032
|
+
|
1033
|
+
<span class='name'>selected_evolvables</span>
|
1034
|
+
|
1035
|
+
|
1036
|
+
<span class='type'>(<tt>Array<<span class='object_link'><a href="../Evolvable.html" title="Evolvable (module)">Evolvable</a></span>></tt>)</span>
|
1037
|
+
|
1038
|
+
|
1039
|
+
<em class="default">(defaults to: <tt>[]</tt>)</em>
|
1040
|
+
|
1041
|
+
|
1042
|
+
—
|
1043
|
+
<div class='inline'><p>Evolvables selected for combinations</p>
|
1044
|
+
</div>
|
1045
|
+
|
1046
|
+
</li>
|
1047
|
+
|
1048
|
+
<li>
|
1049
|
+
|
1050
|
+
<span class='name'>evaluation</span>
|
1051
|
+
|
1052
|
+
|
1053
|
+
<span class='type'>(<tt><span class='object_link'><a href="Evaluation.html" title="Evolvable::Evaluation (class)">Evolvable::Evaluation</a></span></tt>, <tt>Hash</tt>)</span>
|
1054
|
+
|
1055
|
+
|
1056
|
+
<em class="default">(defaults to: <tt>Evaluation.new</tt>)</em>
|
1057
|
+
|
1058
|
+
|
1059
|
+
—
|
1060
|
+
<div class='inline'><p>The evaluation strategy</p>
|
1061
|
+
</div>
|
1062
|
+
|
1063
|
+
</li>
|
1064
|
+
|
1065
|
+
<li>
|
1066
|
+
|
1067
|
+
<span class='name'>evolution</span>
|
1068
|
+
|
1069
|
+
|
1070
|
+
<span class='type'>(<tt><span class='object_link'><a href="Evolution.html" title="Evolvable::Evolution (class)">Evolvable::Evolution</a></span></tt>, <tt>Hash</tt>)</span>
|
1071
|
+
|
1072
|
+
|
1073
|
+
<em class="default">(defaults to: <tt>Evolution.new</tt>)</em>
|
1074
|
+
|
1075
|
+
|
1076
|
+
—
|
1077
|
+
<div class='inline'><p>The evolution strategy</p>
|
1078
|
+
</div>
|
1079
|
+
|
1080
|
+
</li>
|
1081
|
+
|
1082
|
+
<li>
|
1083
|
+
|
1084
|
+
<span class='name'>selection</span>
|
1085
|
+
|
1086
|
+
|
1087
|
+
<span class='type'>(<tt><span class='object_link'><a href="Selection.html" title="Evolvable::Selection (class)">Evolvable::Selection</a></span></tt>, <tt>Hash</tt>, <tt>nil</tt>)</span>
|
1088
|
+
|
1089
|
+
|
1090
|
+
<em class="default">(defaults to: <tt>nil</tt>)</em>
|
1091
|
+
|
1092
|
+
|
1093
|
+
—
|
1094
|
+
<div class='inline'><p>Optional selection strategy</p>
|
1095
|
+
</div>
|
1096
|
+
|
1097
|
+
</li>
|
1098
|
+
|
1099
|
+
<li>
|
1100
|
+
|
1101
|
+
<span class='name'>combination</span>
|
1102
|
+
|
1103
|
+
|
1104
|
+
<span class='type'>(<tt>Evolvable::Combination</tt>, <tt>Hash</tt>, <tt>nil</tt>)</span>
|
1105
|
+
|
1106
|
+
|
1107
|
+
<em class="default">(defaults to: <tt>nil</tt>)</em>
|
1108
|
+
|
1109
|
+
|
1110
|
+
—
|
1111
|
+
<div class='inline'><p>Optional combination strategy</p>
|
1112
|
+
</div>
|
1113
|
+
|
1114
|
+
</li>
|
1115
|
+
|
1116
|
+
<li>
|
1117
|
+
|
1118
|
+
<span class='name'>mutation</span>
|
1119
|
+
|
1120
|
+
|
1121
|
+
<span class='type'>(<tt><span class='object_link'><a href="Mutation.html" title="Evolvable::Mutation (class)">Evolvable::Mutation</a></span></tt>, <tt>Hash</tt>, <tt>nil</tt>)</span>
|
1122
|
+
|
1123
|
+
|
1124
|
+
<em class="default">(defaults to: <tt>nil</tt>)</em>
|
1125
|
+
|
1126
|
+
|
1127
|
+
—
|
1128
|
+
<div class='inline'><p>Optional mutation strategy</p>
|
1129
|
+
</div>
|
1130
|
+
|
1131
|
+
</li>
|
1132
|
+
|
1133
|
+
<li>
|
1134
|
+
|
1135
|
+
<span class='name'>evolvables</span>
|
1136
|
+
|
1137
|
+
|
1138
|
+
<span class='type'>(<tt>Array<<span class='object_link'><a href="../Evolvable.html" title="Evolvable (module)">Evolvable</a></span>></tt>)</span>
|
1139
|
+
|
1140
|
+
|
1141
|
+
<em class="default">(defaults to: <tt>[]</tt>)</em>
|
1142
|
+
|
1143
|
+
|
1144
|
+
—
|
1145
|
+
<div class='inline'><p>Initial evolvables (will be supplemented if fewer than size)</p>
|
1146
|
+
</div>
|
1147
|
+
|
1148
|
+
</li>
|
1149
|
+
|
1150
|
+
</ul>
|
1151
|
+
|
1152
|
+
|
1153
|
+
</div><table class="source_code">
|
1154
|
+
<tr>
|
1155
|
+
<td>
|
1156
|
+
<pre class="lines">
|
1157
|
+
|
1158
|
+
|
1159
|
+
102
|
1160
|
+
103
|
1161
|
+
104
|
1162
|
+
105
|
1163
|
+
106
|
1164
|
+
107
|
1165
|
+
108
|
1166
|
+
109
|
1167
|
+
110
|
1168
|
+
111
|
1169
|
+
112
|
1170
|
+
113
|
1171
|
+
114
|
1172
|
+
115
|
1173
|
+
116
|
1174
|
+
117
|
1175
|
+
118
|
1176
|
+
119
|
1177
|
+
120
|
1178
|
+
121
|
1179
|
+
122
|
1180
|
+
123
|
1181
|
+
124
|
1182
|
+
125
|
1183
|
+
126
|
1184
|
+
127
|
1185
|
+
128
|
1186
|
+
129
|
1187
|
+
130
|
1188
|
+
131</pre>
|
1189
|
+
</td>
|
1190
|
+
<td>
|
1191
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/population.rb', line 102</span>
|
1192
|
+
|
1193
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>evolvable_type:</span><span class='comma'>,</span>
|
1194
|
+
<span class='label'>id:</span> <span class='kw'>nil</span><span class='comma'>,</span>
|
1195
|
+
<span class='label'>name:</span> <span class='kw'>nil</span><span class='comma'>,</span>
|
1196
|
+
<span class='label'>size:</span> <span class='int'>0</span><span class='comma'>,</span>
|
1197
|
+
<span class='label'>evolutions_count:</span> <span class='int'>0</span><span class='comma'>,</span>
|
1198
|
+
<span class='label'>gene_space:</span> <span class='kw'>nil</span><span class='comma'>,</span>
|
1199
|
+
<span class='label'>parent_evolvables:</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
1200
|
+
<span class='label'>selected_evolvables:</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='comma'>,</span>
|
1201
|
+
<span class='label'>evaluation:</span> <span class='const'><span class='object_link'><a href="Evaluation.html" title="Evolvable::Evaluation (class)">Evaluation</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="Evaluation.html#initialize-instance_method" title="Evolvable::Evaluation#initialize (method)">new</a></span></span><span class='comma'>,</span>
|
1202
|
+
<span class='label'>evolution:</span> <span class='const'><span class='object_link'><a href="Evolution.html" title="Evolvable::Evolution (class)">Evolution</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="Evolution.html#initialize-instance_method" title="Evolvable::Evolution#initialize (method)">new</a></span></span><span class='comma'>,</span>
|
1203
|
+
<span class='label'>selection:</span> <span class='kw'>nil</span><span class='comma'>,</span>
|
1204
|
+
<span class='label'>combination:</span> <span class='kw'>nil</span><span class='comma'>,</span>
|
1205
|
+
<span class='label'>mutation:</span> <span class='kw'>nil</span><span class='comma'>,</span>
|
1206
|
+
<span class='label'>evolvables:</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
1207
|
+
<span class='ivar'>@id</span> <span class='op'>=</span> <span class='id identifier rubyid_id'>id</span>
|
1208
|
+
<span class='ivar'>@evolvable_type</span> <span class='op'>=</span> <span class='id identifier rubyid_evolvable_type'>evolvable_type</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Class</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_evolvable_type'>evolvable_type</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_evolvable_type'>evolvable_type</span><span class='rparen'>)</span>
|
1209
|
+
<span class='ivar'>@name</span> <span class='op'>=</span> <span class='id identifier rubyid_name'>name</span>
|
1210
|
+
<span class='ivar'>@size</span> <span class='op'>=</span> <span class='id identifier rubyid_size'>size</span>
|
1211
|
+
<span class='ivar'>@evolutions_count</span> <span class='op'>=</span> <span class='id identifier rubyid_evolutions_count'>evolutions_count</span>
|
1212
|
+
<span class='ivar'>@gene_space</span> <span class='op'>=</span> <span class='id identifier rubyid_initialize_gene_space'>initialize_gene_space</span><span class='lparen'>(</span><span class='id identifier rubyid_gene_space'>gene_space</span><span class='rparen'>)</span>
|
1213
|
+
<span class='ivar'>@parent_evolvables</span> <span class='op'>=</span> <span class='id identifier rubyid_parent_evolvables'>parent_evolvables</span>
|
1214
|
+
<span class='ivar'>@selected_evolvables</span> <span class='op'>=</span> <span class='id identifier rubyid_selected_evolvables'>selected_evolvables</span>
|
1215
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_evaluation'>evaluation</span> <span class='op'>=</span> <span class='id identifier rubyid_evaluation'>evaluation</span>
|
1216
|
+
<span class='ivar'>@evolution</span> <span class='op'>=</span> <span class='id identifier rubyid_evolution'>evolution</span>
|
1217
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_selection'>selection</span> <span class='op'>=</span> <span class='id identifier rubyid_selection'>selection</span> <span class='kw'>if</span> <span class='id identifier rubyid_selection'>selection</span>
|
1218
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_combination'>combination</span> <span class='op'>=</span> <span class='id identifier rubyid_combination'>combination</span> <span class='kw'>if</span> <span class='id identifier rubyid_combination'>combination</span>
|
1219
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_mutation'>mutation</span> <span class='op'>=</span> <span class='id identifier rubyid_mutation'>mutation</span> <span class='kw'>if</span> <span class='id identifier rubyid_mutation'>mutation</span>
|
1220
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_evolvables'>evolvables</span> <span class='op'>=</span> <span class='id identifier rubyid_evolvables'>evolvables</span> <span class='op'>||</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
1221
|
+
<span class='id identifier rubyid_new_evolvables'>new_evolvables</span><span class='lparen'>(</span><span class='label'>count:</span> <span class='ivar'>@size</span> <span class='op'>-</span> <span class='id identifier rubyid_evolvables'>evolvables</span><span class='period'>.</span><span class='id identifier rubyid_count'>count</span><span class='rparen'>)</span>
|
1222
|
+
<span class='kw'>end</span></pre>
|
1223
|
+
</td>
|
1224
|
+
</tr>
|
1225
|
+
</table>
|
1226
|
+
</div>
|
1227
|
+
|
1228
|
+
</div>
|
1229
|
+
|
1230
|
+
<div id="instance_attr_details" class="attr_details">
|
1231
|
+
<h2>Instance Attribute Details</h2>
|
1232
|
+
|
1233
|
+
|
1234
|
+
<span id="evaluation=-instance_method"></span>
|
1235
|
+
<div class="method_details first">
|
1236
|
+
<h3 class="signature first" id="evaluation-instance_method">
|
1237
|
+
|
1238
|
+
#<strong>evaluation</strong> ⇒ <tt><span class='object_link'><a href="Evaluation.html" title="Evolvable::Evaluation (class)">Evolvable::Evaluation</a></span></tt>
|
1239
|
+
|
1240
|
+
|
1241
|
+
|
1242
|
+
|
1243
|
+
|
1244
|
+
</h3><div class="docstring">
|
1245
|
+
<div class="discussion">
|
1246
|
+
<p>The evaluation strategy used to assess evolvables</p>
|
1247
|
+
|
1248
|
+
|
1249
|
+
</div>
|
1250
|
+
</div>
|
1251
|
+
<div class="tags">
|
1252
|
+
|
1253
|
+
<p class="tag_title">Returns:</p>
|
1254
|
+
<ul class="return">
|
1255
|
+
|
1256
|
+
<li>
|
1257
|
+
|
1258
|
+
|
1259
|
+
<span class='type'>(<tt><span class='object_link'><a href="Evaluation.html" title="Evolvable::Evaluation (class)">Evolvable::Evaluation</a></span></tt>)</span>
|
1260
|
+
|
1261
|
+
|
1262
|
+
|
1263
|
+
—
|
1264
|
+
<div class='inline'><p>The current evaluation object</p>
|
1265
|
+
</div>
|
1266
|
+
|
1267
|
+
</li>
|
1268
|
+
|
1269
|
+
</ul>
|
1270
|
+
|
1271
|
+
</div><table class="source_code">
|
1272
|
+
<tr>
|
1273
|
+
<td>
|
1274
|
+
<pre class="lines">
|
1275
|
+
|
1276
|
+
|
1277
|
+
184
|
1278
|
+
185
|
1279
|
+
186</pre>
|
1280
|
+
</td>
|
1281
|
+
<td>
|
1282
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/population.rb', line 184</span>
|
1283
|
+
|
1284
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_evaluation'>evaluation</span>
|
1285
|
+
<span class='ivar'>@evaluation</span>
|
1286
|
+
<span class='kw'>end</span></pre>
|
1287
|
+
</td>
|
1288
|
+
</tr>
|
1289
|
+
</table>
|
1290
|
+
</div>
|
1291
|
+
|
1292
|
+
|
1293
|
+
<span id="evolution=-instance_method"></span>
|
1294
|
+
<div class="method_details ">
|
1295
|
+
<h3 class="signature " id="evolution-instance_method">
|
1296
|
+
|
1297
|
+
#<strong>evolution</strong> ⇒ <tt>Object</tt>
|
1298
|
+
|
1299
|
+
|
1300
|
+
|
1301
|
+
|
1302
|
+
|
1303
|
+
</h3><div class="docstring">
|
1304
|
+
<div class="discussion">
|
1305
|
+
<p>Population properties</p>
|
1306
|
+
|
1307
|
+
|
1308
|
+
</div>
|
1309
|
+
</div>
|
1310
|
+
<div class="tags">
|
1311
|
+
|
1312
|
+
|
1313
|
+
</div><table class="source_code">
|
1314
|
+
<tr>
|
1315
|
+
<td>
|
1316
|
+
<pre class="lines">
|
1317
|
+
|
1318
|
+
|
1319
|
+
136
|
1320
|
+
137
|
1321
|
+
138</pre>
|
1322
|
+
</td>
|
1323
|
+
<td>
|
1324
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/population.rb', line 136</span>
|
1325
|
+
|
1326
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_evolution'>evolution</span>
|
1327
|
+
<span class='ivar'>@evolution</span>
|
1328
|
+
<span class='kw'>end</span></pre>
|
1329
|
+
</td>
|
1330
|
+
</tr>
|
1331
|
+
</table>
|
1332
|
+
</div>
|
1333
|
+
|
1334
|
+
|
1335
|
+
<span id="evolutions_count=-instance_method"></span>
|
1336
|
+
<div class="method_details ">
|
1337
|
+
<h3 class="signature " id="evolutions_count-instance_method">
|
1338
|
+
|
1339
|
+
#<strong>evolutions_count</strong> ⇒ <tt>Object</tt>
|
1340
|
+
|
1341
|
+
|
1342
|
+
|
1343
|
+
|
1344
|
+
|
1345
|
+
</h3><div class="docstring">
|
1346
|
+
<div class="discussion">
|
1347
|
+
<p>Population properties</p>
|
1348
|
+
|
1349
|
+
|
1350
|
+
</div>
|
1351
|
+
</div>
|
1352
|
+
<div class="tags">
|
1353
|
+
|
1354
|
+
|
1355
|
+
</div><table class="source_code">
|
1356
|
+
<tr>
|
1357
|
+
<td>
|
1358
|
+
<pre class="lines">
|
1359
|
+
|
1360
|
+
|
1361
|
+
136
|
1362
|
+
137
|
1363
|
+
138</pre>
|
1364
|
+
</td>
|
1365
|
+
<td>
|
1366
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/population.rb', line 136</span>
|
1367
|
+
|
1368
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_evolutions_count'>evolutions_count</span>
|
1369
|
+
<span class='ivar'>@evolutions_count</span>
|
1370
|
+
<span class='kw'>end</span></pre>
|
1371
|
+
</td>
|
1372
|
+
</tr>
|
1373
|
+
</table>
|
1374
|
+
</div>
|
1375
|
+
|
1376
|
+
|
1377
|
+
<span id="evolvable_type=-instance_method"></span>
|
1378
|
+
<div class="method_details ">
|
1379
|
+
<h3 class="signature " id="evolvable_type-instance_method">
|
1380
|
+
|
1381
|
+
#<strong>evolvable_type</strong> ⇒ <tt>Object</tt>
|
1382
|
+
|
1383
|
+
|
1384
|
+
|
1385
|
+
|
1386
|
+
|
1387
|
+
</h3><div class="docstring">
|
1388
|
+
<div class="discussion">
|
1389
|
+
<p>Population properties</p>
|
1390
|
+
|
1391
|
+
|
1392
|
+
</div>
|
1393
|
+
</div>
|
1394
|
+
<div class="tags">
|
1395
|
+
|
1396
|
+
|
1397
|
+
</div><table class="source_code">
|
1398
|
+
<tr>
|
1399
|
+
<td>
|
1400
|
+
<pre class="lines">
|
1401
|
+
|
1402
|
+
|
1403
|
+
136
|
1404
|
+
137
|
1405
|
+
138</pre>
|
1406
|
+
</td>
|
1407
|
+
<td>
|
1408
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/population.rb', line 136</span>
|
1409
|
+
|
1410
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_evolvable_type'>evolvable_type</span>
|
1411
|
+
<span class='ivar'>@evolvable_type</span>
|
1412
|
+
<span class='kw'>end</span></pre>
|
1413
|
+
</td>
|
1414
|
+
</tr>
|
1415
|
+
</table>
|
1416
|
+
</div>
|
1417
|
+
|
1418
|
+
|
1419
|
+
<span id="evolvables=-instance_method"></span>
|
1420
|
+
<div class="method_details ">
|
1421
|
+
<h3 class="signature " id="evolvables-instance_method">
|
1422
|
+
|
1423
|
+
#<strong>evolvables</strong> ⇒ <tt>Object</tt>
|
1424
|
+
|
1425
|
+
|
1426
|
+
|
1427
|
+
|
1428
|
+
|
1429
|
+
</h3><div class="docstring">
|
1430
|
+
<div class="discussion">
|
1431
|
+
<p>Population properties</p>
|
1432
|
+
|
1433
|
+
|
1434
|
+
</div>
|
1435
|
+
</div>
|
1436
|
+
<div class="tags">
|
1437
|
+
|
1438
|
+
|
1439
|
+
</div><table class="source_code">
|
1440
|
+
<tr>
|
1441
|
+
<td>
|
1442
|
+
<pre class="lines">
|
1443
|
+
|
1444
|
+
|
1445
|
+
136
|
1446
|
+
137
|
1447
|
+
138</pre>
|
1448
|
+
</td>
|
1449
|
+
<td>
|
1450
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/population.rb', line 136</span>
|
1451
|
+
|
1452
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_evolvables'>evolvables</span>
|
1453
|
+
<span class='ivar'>@evolvables</span>
|
1454
|
+
<span class='kw'>end</span></pre>
|
1455
|
+
</td>
|
1456
|
+
</tr>
|
1457
|
+
</table>
|
1458
|
+
</div>
|
1459
|
+
|
1460
|
+
|
1461
|
+
<span id="gene_space=-instance_method"></span>
|
1462
|
+
<div class="method_details ">
|
1463
|
+
<h3 class="signature " id="gene_space-instance_method">
|
1464
|
+
|
1465
|
+
#<strong>gene_space</strong> ⇒ <tt>Object</tt>
|
1466
|
+
|
1467
|
+
|
1468
|
+
|
1469
|
+
|
1470
|
+
|
1471
|
+
</h3><div class="docstring">
|
1472
|
+
<div class="discussion">
|
1473
|
+
<p>Population properties</p>
|
1474
|
+
|
1475
|
+
|
1476
|
+
</div>
|
1477
|
+
</div>
|
1478
|
+
<div class="tags">
|
1479
|
+
|
1480
|
+
|
1481
|
+
</div><table class="source_code">
|
1482
|
+
<tr>
|
1483
|
+
<td>
|
1484
|
+
<pre class="lines">
|
1485
|
+
|
1486
|
+
|
1487
|
+
136
|
1488
|
+
137
|
1489
|
+
138</pre>
|
1490
|
+
</td>
|
1491
|
+
<td>
|
1492
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/population.rb', line 136</span>
|
1493
|
+
|
1494
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_gene_space'>gene_space</span>
|
1495
|
+
<span class='ivar'>@gene_space</span>
|
1496
|
+
<span class='kw'>end</span></pre>
|
1497
|
+
</td>
|
1498
|
+
</tr>
|
1499
|
+
</table>
|
1500
|
+
</div>
|
1501
|
+
|
1502
|
+
|
1503
|
+
<span id="id=-instance_method"></span>
|
1504
|
+
<div class="method_details ">
|
1505
|
+
<h3 class="signature " id="id-instance_method">
|
1506
|
+
|
1507
|
+
#<strong>id</strong> ⇒ <tt>Object</tt>
|
1508
|
+
|
1509
|
+
|
1510
|
+
|
1511
|
+
|
1512
|
+
|
1513
|
+
</h3><div class="docstring">
|
1514
|
+
<div class="discussion">
|
1515
|
+
<p>Population properties</p>
|
1516
|
+
|
1517
|
+
|
1518
|
+
</div>
|
1519
|
+
</div>
|
1520
|
+
<div class="tags">
|
1521
|
+
|
1522
|
+
|
1523
|
+
</div><table class="source_code">
|
1524
|
+
<tr>
|
1525
|
+
<td>
|
1526
|
+
<pre class="lines">
|
1527
|
+
|
1528
|
+
|
1529
|
+
136
|
1530
|
+
137
|
1531
|
+
138</pre>
|
1532
|
+
</td>
|
1533
|
+
<td>
|
1534
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/population.rb', line 136</span>
|
1535
|
+
|
1536
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_id'>id</span>
|
1537
|
+
<span class='ivar'>@id</span>
|
1538
|
+
<span class='kw'>end</span></pre>
|
1539
|
+
</td>
|
1540
|
+
</tr>
|
1541
|
+
</table>
|
1542
|
+
</div>
|
1543
|
+
|
1544
|
+
|
1545
|
+
<span id="name=-instance_method"></span>
|
1546
|
+
<div class="method_details ">
|
1547
|
+
<h3 class="signature " id="name-instance_method">
|
1548
|
+
|
1549
|
+
#<strong>name</strong> ⇒ <tt>Object</tt>
|
1550
|
+
|
1551
|
+
|
1552
|
+
|
1553
|
+
|
1554
|
+
|
1555
|
+
</h3><div class="docstring">
|
1556
|
+
<div class="discussion">
|
1557
|
+
<p>Population properties</p>
|
1558
|
+
|
1559
|
+
|
1560
|
+
</div>
|
1561
|
+
</div>
|
1562
|
+
<div class="tags">
|
1563
|
+
|
1564
|
+
|
1565
|
+
</div><table class="source_code">
|
1566
|
+
<tr>
|
1567
|
+
<td>
|
1568
|
+
<pre class="lines">
|
1569
|
+
|
1570
|
+
|
1571
|
+
136
|
1572
|
+
137
|
1573
|
+
138</pre>
|
1574
|
+
</td>
|
1575
|
+
<td>
|
1576
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/population.rb', line 136</span>
|
1577
|
+
|
1578
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_name'>name</span>
|
1579
|
+
<span class='ivar'>@name</span>
|
1580
|
+
<span class='kw'>end</span></pre>
|
1581
|
+
</td>
|
1582
|
+
</tr>
|
1583
|
+
</table>
|
1584
|
+
</div>
|
1585
|
+
|
1586
|
+
|
1587
|
+
<span id="parent_evolvables=-instance_method"></span>
|
1588
|
+
<div class="method_details ">
|
1589
|
+
<h3 class="signature " id="parent_evolvables-instance_method">
|
1590
|
+
|
1591
|
+
#<strong>parent_evolvables</strong> ⇒ <tt>Object</tt>
|
1592
|
+
|
1593
|
+
|
1594
|
+
|
1595
|
+
|
1596
|
+
|
1597
|
+
</h3><div class="docstring">
|
1598
|
+
<div class="discussion">
|
1599
|
+
<p>Population properties</p>
|
1600
|
+
|
1601
|
+
|
1602
|
+
</div>
|
1603
|
+
</div>
|
1604
|
+
<div class="tags">
|
1605
|
+
|
1606
|
+
|
1607
|
+
</div><table class="source_code">
|
1608
|
+
<tr>
|
1609
|
+
<td>
|
1610
|
+
<pre class="lines">
|
1611
|
+
|
1612
|
+
|
1613
|
+
136
|
1614
|
+
137
|
1615
|
+
138</pre>
|
1616
|
+
</td>
|
1617
|
+
<td>
|
1618
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/population.rb', line 136</span>
|
1619
|
+
|
1620
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_parent_evolvables'>parent_evolvables</span>
|
1621
|
+
<span class='ivar'>@parent_evolvables</span>
|
1622
|
+
<span class='kw'>end</span></pre>
|
1623
|
+
</td>
|
1624
|
+
</tr>
|
1625
|
+
</table>
|
1626
|
+
</div>
|
1627
|
+
|
1628
|
+
|
1629
|
+
<span id="selected_evolvables=-instance_method"></span>
|
1630
|
+
<div class="method_details ">
|
1631
|
+
<h3 class="signature " id="selected_evolvables-instance_method">
|
1632
|
+
|
1633
|
+
#<strong>selected_evolvables</strong> ⇒ <tt>Object</tt>
|
1634
|
+
|
1635
|
+
|
1636
|
+
|
1637
|
+
|
1638
|
+
|
1639
|
+
</h3><div class="docstring">
|
1640
|
+
<div class="discussion">
|
1641
|
+
<p>Population properties</p>
|
1642
|
+
|
1643
|
+
|
1644
|
+
</div>
|
1645
|
+
</div>
|
1646
|
+
<div class="tags">
|
1647
|
+
|
1648
|
+
|
1649
|
+
</div><table class="source_code">
|
1650
|
+
<tr>
|
1651
|
+
<td>
|
1652
|
+
<pre class="lines">
|
1653
|
+
|
1654
|
+
|
1655
|
+
136
|
1656
|
+
137
|
1657
|
+
138</pre>
|
1658
|
+
</td>
|
1659
|
+
<td>
|
1660
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/population.rb', line 136</span>
|
1661
|
+
|
1662
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_selected_evolvables'>selected_evolvables</span>
|
1663
|
+
<span class='ivar'>@selected_evolvables</span>
|
1664
|
+
<span class='kw'>end</span></pre>
|
1665
|
+
</td>
|
1666
|
+
</tr>
|
1667
|
+
</table>
|
1668
|
+
</div>
|
1669
|
+
|
1670
|
+
|
1671
|
+
<span id="size=-instance_method"></span>
|
1672
|
+
<div class="method_details ">
|
1673
|
+
<h3 class="signature " id="size-instance_method">
|
1674
|
+
|
1675
|
+
#<strong>size</strong> ⇒ <tt>Object</tt>
|
1676
|
+
|
1677
|
+
|
1678
|
+
|
1679
|
+
|
1680
|
+
|
1681
|
+
</h3><div class="docstring">
|
1682
|
+
<div class="discussion">
|
1683
|
+
<p>Population properties</p>
|
1684
|
+
|
1685
|
+
|
1686
|
+
</div>
|
1687
|
+
</div>
|
1688
|
+
<div class="tags">
|
1689
|
+
|
1690
|
+
|
1691
|
+
</div><table class="source_code">
|
1692
|
+
<tr>
|
1693
|
+
<td>
|
1694
|
+
<pre class="lines">
|
1695
|
+
|
1696
|
+
|
1697
|
+
136
|
1698
|
+
137
|
1699
|
+
138</pre>
|
1700
|
+
</td>
|
1701
|
+
<td>
|
1702
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/population.rb', line 136</span>
|
1703
|
+
|
1704
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_size'>size</span>
|
1705
|
+
<span class='ivar'>@size</span>
|
1706
|
+
<span class='kw'>end</span></pre>
|
1707
|
+
</td>
|
1708
|
+
</tr>
|
1709
|
+
</table>
|
1710
|
+
</div>
|
1711
|
+
|
1712
|
+
</div>
|
1713
|
+
|
1714
|
+
|
1715
|
+
<div id="class_method_details" class="method_details_list">
|
1716
|
+
<h2>Class Method Details</h2>
|
1717
|
+
|
1718
|
+
|
1719
|
+
<div class="method_details first">
|
1720
|
+
<h3 class="signature first" id="load-class_method">
|
1721
|
+
|
1722
|
+
.<strong>load</strong>(data) ⇒ <tt><span class='object_link'><a href="" title="Evolvable::Population (class)">Evolvable::Population</a></span></tt>
|
1723
|
+
|
1724
|
+
|
1725
|
+
|
1726
|
+
|
1727
|
+
|
1728
|
+
</h3><div class="docstring">
|
1729
|
+
<div class="discussion">
|
1730
|
+
<p>Loads a population from serialized data.</p>
|
1731
|
+
|
1732
|
+
|
1733
|
+
</div>
|
1734
|
+
</div>
|
1735
|
+
<div class="tags">
|
1736
|
+
<p class="tag_title">Parameters:</p>
|
1737
|
+
<ul class="param">
|
1738
|
+
|
1739
|
+
<li>
|
1740
|
+
|
1741
|
+
<span class='name'>data</span>
|
1742
|
+
|
1743
|
+
|
1744
|
+
<span class='type'>(<tt>String</tt>)</span>
|
1745
|
+
|
1746
|
+
|
1747
|
+
|
1748
|
+
—
|
1749
|
+
<div class='inline'><p>The serialized population data</p>
|
1750
|
+
</div>
|
1751
|
+
|
1752
|
+
</li>
|
1753
|
+
|
1754
|
+
</ul>
|
1755
|
+
|
1756
|
+
<p class="tag_title">Returns:</p>
|
1757
|
+
<ul class="return">
|
1758
|
+
|
1759
|
+
<li>
|
1760
|
+
|
1761
|
+
|
1762
|
+
<span class='type'>(<tt><span class='object_link'><a href="" title="Evolvable::Population (class)">Evolvable::Population</a></span></tt>)</span>
|
1763
|
+
|
1764
|
+
|
1765
|
+
|
1766
|
+
—
|
1767
|
+
<div class='inline'><p>The loaded population</p>
|
1768
|
+
</div>
|
1769
|
+
|
1770
|
+
</li>
|
1771
|
+
|
1772
|
+
</ul>
|
1773
|
+
|
1774
|
+
</div><table class="source_code">
|
1775
|
+
<tr>
|
1776
|
+
<td>
|
1777
|
+
<pre class="lines">
|
1778
|
+
|
1779
|
+
|
1780
|
+
79
|
1781
|
+
80
|
1782
|
+
81
|
1783
|
+
82</pre>
|
1784
|
+
</td>
|
1785
|
+
<td>
|
1786
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/population.rb', line 79</span>
|
1787
|
+
|
1788
|
+
<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='rparen'>)</span>
|
1789
|
+
<span class='id identifier rubyid_dump_attrs'>dump_attrs</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="Serializer.html" title="Evolvable::Serializer (class)">Serializer</a></span></span><span class='period'>.</span><span class='id identifier rubyid_load'><span class='object_link'><a href="Serializer.html#load-class_method" title="Evolvable::Serializer.load (method)">load</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
|
1790
|
+
<span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>**</span><span class='id identifier rubyid_dump_attrs'>dump_attrs</span><span class='rparen'>)</span>
|
1791
|
+
<span class='kw'>end</span></pre>
|
1792
|
+
</td>
|
1793
|
+
</tr>
|
1794
|
+
</table>
|
1795
|
+
</div>
|
1796
|
+
|
1797
|
+
</div>
|
1798
|
+
|
1799
|
+
<div id="instance_method_details" class="method_details_list">
|
1800
|
+
<h2>Instance Method Details</h2>
|
1801
|
+
|
1802
|
+
|
1803
|
+
<div class="method_details first">
|
1804
|
+
<h3 class="signature first" id="best_evolvable-instance_method">
|
1805
|
+
|
1806
|
+
#<strong>best_evolvable</strong> ⇒ <tt><span class='object_link'><a href="../Evolvable.html" title="Evolvable (module)">Evolvable</a></span></tt>
|
1807
|
+
|
1808
|
+
|
1809
|
+
|
1810
|
+
|
1811
|
+
|
1812
|
+
</h3><div class="docstring">
|
1813
|
+
<div class="discussion">
|
1814
|
+
<p>Returns the best evolvable in the population according to the evaluation goal.</p>
|
1815
|
+
|
1816
|
+
|
1817
|
+
</div>
|
1818
|
+
</div>
|
1819
|
+
<div class="tags">
|
1820
|
+
|
1821
|
+
<p class="tag_title">Returns:</p>
|
1822
|
+
<ul class="return">
|
1823
|
+
|
1824
|
+
<li>
|
1825
|
+
|
1826
|
+
|
1827
|
+
<span class='type'>(<tt><span class='object_link'><a href="../Evolvable.html" title="Evolvable (module)">Evolvable</a></span></tt>)</span>
|
1828
|
+
|
1829
|
+
|
1830
|
+
|
1831
|
+
—
|
1832
|
+
<div class='inline'><p>The best evolvable based on the current goal</p>
|
1833
|
+
</div>
|
1834
|
+
|
1835
|
+
</li>
|
1836
|
+
|
1837
|
+
</ul>
|
1838
|
+
|
1839
|
+
</div><table class="source_code">
|
1840
|
+
<tr>
|
1841
|
+
<td>
|
1842
|
+
<pre class="lines">
|
1843
|
+
|
1844
|
+
|
1845
|
+
269
|
1846
|
+
270
|
1847
|
+
271</pre>
|
1848
|
+
</td>
|
1849
|
+
<td>
|
1850
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/population.rb', line 269</span>
|
1851
|
+
|
1852
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_best_evolvable'>best_evolvable</span>
|
1853
|
+
<span class='id identifier rubyid_evaluation'>evaluation</span><span class='period'>.</span><span class='id identifier rubyid_best_evolvable'>best_evolvable</span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span>
|
1854
|
+
<span class='kw'>end</span></pre>
|
1855
|
+
</td>
|
1856
|
+
</tr>
|
1857
|
+
</table>
|
1858
|
+
</div>
|
1859
|
+
|
1860
|
+
<div class="method_details ">
|
1861
|
+
<h3 class="signature " id="dump-instance_method">
|
1862
|
+
|
1863
|
+
#<strong>dump</strong>(only: nil, except: nil) ⇒ <tt>String</tt>
|
1864
|
+
|
1865
|
+
|
1866
|
+
|
1867
|
+
|
1868
|
+
|
1869
|
+
</h3><div class="docstring">
|
1870
|
+
<div class="discussion">
|
1871
|
+
<p>Serializes the population to a string.</p>
|
1872
|
+
|
1873
|
+
|
1874
|
+
</div>
|
1875
|
+
</div>
|
1876
|
+
<div class="tags">
|
1877
|
+
<p class="tag_title">Parameters:</p>
|
1878
|
+
<ul class="param">
|
1879
|
+
|
1880
|
+
<li>
|
1881
|
+
|
1882
|
+
<span class='name'>only</span>
|
1883
|
+
|
1884
|
+
|
1885
|
+
<span class='type'>(<tt>Array<Symbol></tt>, <tt>nil</tt>)</span>
|
1886
|
+
|
1887
|
+
|
1888
|
+
<em class="default">(defaults to: <tt>nil</tt>)</em>
|
1889
|
+
|
1890
|
+
|
1891
|
+
—
|
1892
|
+
<div class='inline'><p>Optional list of attributes to include</p>
|
1893
|
+
</div>
|
1894
|
+
|
1895
|
+
</li>
|
1896
|
+
|
1897
|
+
<li>
|
1898
|
+
|
1899
|
+
<span class='name'>except</span>
|
1900
|
+
|
1901
|
+
|
1902
|
+
<span class='type'>(<tt>Array<Symbol></tt>, <tt>nil</tt>)</span>
|
1903
|
+
|
1904
|
+
|
1905
|
+
<em class="default">(defaults to: <tt>nil</tt>)</em>
|
1906
|
+
|
1907
|
+
|
1908
|
+
—
|
1909
|
+
<div class='inline'><p>Optional list of attributes to exclude</p>
|
1910
|
+
</div>
|
1911
|
+
|
1912
|
+
</li>
|
1913
|
+
|
1914
|
+
</ul>
|
1915
|
+
|
1916
|
+
<p class="tag_title">Returns:</p>
|
1917
|
+
<ul class="return">
|
1918
|
+
|
1919
|
+
<li>
|
1920
|
+
|
1921
|
+
|
1922
|
+
<span class='type'>(<tt>String</tt>)</span>
|
1923
|
+
|
1924
|
+
|
1925
|
+
|
1926
|
+
—
|
1927
|
+
<div class='inline'><p>The serialized population</p>
|
1928
|
+
</div>
|
1929
|
+
|
1930
|
+
</li>
|
1931
|
+
|
1932
|
+
</ul>
|
1933
|
+
|
1934
|
+
</div><table class="source_code">
|
1935
|
+
<tr>
|
1936
|
+
<td>
|
1937
|
+
<pre class="lines">
|
1938
|
+
|
1939
|
+
|
1940
|
+
353
|
1941
|
+
354
|
1942
|
+
355</pre>
|
1943
|
+
</td>
|
1944
|
+
<td>
|
1945
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/population.rb', line 353</span>
|
1946
|
+
|
1947
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_dump'>dump</span><span class='lparen'>(</span><span class='label'>only:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>except:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
1948
|
+
<span class='const'><span class='object_link'><a href="Serializer.html" title="Evolvable::Serializer (class)">Serializer</a></span></span><span class='period'>.</span><span class='id identifier rubyid_dump'><span class='object_link'><a href="Serializer.html#dump-class_method" title="Evolvable::Serializer.dump (method)">dump</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_dump_attrs'>dump_attrs</span><span class='lparen'>(</span><span class='label'>only:</span> <span class='id identifier rubyid_only'>only</span><span class='comma'>,</span> <span class='label'>except:</span> <span class='id identifier rubyid_except'>except</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
1949
|
+
<span class='kw'>end</span></pre>
|
1950
|
+
</td>
|
1951
|
+
</tr>
|
1952
|
+
</table>
|
1953
|
+
</div>
|
1954
|
+
|
1955
|
+
<div class="method_details ">
|
1956
|
+
<h3 class="signature " id="dump_attrs-instance_method">
|
1957
|
+
|
1958
|
+
#<strong>dump_attrs</strong>(only: nil, except: nil) ⇒ <tt>Hash</tt>
|
1959
|
+
|
1960
|
+
|
1961
|
+
|
1962
|
+
|
1963
|
+
|
1964
|
+
</h3><div class="docstring">
|
1965
|
+
<div class="discussion">
|
1966
|
+
<p>Returns a hash of attributes for serialization.</p>
|
1967
|
+
|
1968
|
+
|
1969
|
+
</div>
|
1970
|
+
</div>
|
1971
|
+
<div class="tags">
|
1972
|
+
<p class="tag_title">Parameters:</p>
|
1973
|
+
<ul class="param">
|
1974
|
+
|
1975
|
+
<li>
|
1976
|
+
|
1977
|
+
<span class='name'>only</span>
|
1978
|
+
|
1979
|
+
|
1980
|
+
<span class='type'>(<tt>Array<Symbol></tt>, <tt>nil</tt>)</span>
|
1981
|
+
|
1982
|
+
|
1983
|
+
<em class="default">(defaults to: <tt>nil</tt>)</em>
|
1984
|
+
|
1985
|
+
|
1986
|
+
—
|
1987
|
+
<div class='inline'><p>Optional list of attributes to include</p>
|
1988
|
+
</div>
|
1989
|
+
|
1990
|
+
</li>
|
1991
|
+
|
1992
|
+
<li>
|
1993
|
+
|
1994
|
+
<span class='name'>except</span>
|
1995
|
+
|
1996
|
+
|
1997
|
+
<span class='type'>(<tt>Array<Symbol></tt>, <tt>nil</tt>)</span>
|
1998
|
+
|
1999
|
+
|
2000
|
+
<em class="default">(defaults to: <tt>nil</tt>)</em>
|
2001
|
+
|
2002
|
+
|
2003
|
+
—
|
2004
|
+
<div class='inline'><p>Optional list of attributes to exclude</p>
|
2005
|
+
</div>
|
2006
|
+
|
2007
|
+
</li>
|
2008
|
+
|
2009
|
+
</ul>
|
2010
|
+
|
2011
|
+
<p class="tag_title">Returns:</p>
|
2012
|
+
<ul class="return">
|
2013
|
+
|
2014
|
+
<li>
|
2015
|
+
|
2016
|
+
|
2017
|
+
<span class='type'>(<tt>Hash</tt>)</span>
|
2018
|
+
|
2019
|
+
|
2020
|
+
|
2021
|
+
—
|
2022
|
+
<div class='inline'><p>The attributes hash for serialization</p>
|
2023
|
+
</div>
|
2024
|
+
|
2025
|
+
</li>
|
2026
|
+
|
2027
|
+
</ul>
|
2028
|
+
|
2029
|
+
</div><table class="source_code">
|
2030
|
+
<tr>
|
2031
|
+
<td>
|
2032
|
+
<pre class="lines">
|
2033
|
+
|
2034
|
+
|
2035
|
+
378
|
2036
|
+
379
|
2037
|
+
380
|
2038
|
+
381
|
2039
|
+
382
|
2040
|
+
383
|
2041
|
+
384</pre>
|
2042
|
+
</td>
|
2043
|
+
<td>
|
2044
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/population.rb', line 378</span>
|
2045
|
+
|
2046
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_dump_attrs'>dump_attrs</span><span class='lparen'>(</span><span class='label'>only:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>except:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
2047
|
+
<span class='id identifier rubyid_attrs'>attrs</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
|
2048
|
+
<span class='id identifier rubyid_dump_methods'>dump_methods</span> <span class='op'>=</span> <span class='id identifier rubyid_only'>only</span> <span class='op'>||</span> <span class='const'><span class='object_link'><a href="#DUMP_METHODS-constant" title="Evolvable::Population::DUMP_METHODS (constant)">DUMP_METHODS</a></span></span>
|
2049
|
+
<span class='id identifier rubyid_dump_methods'>dump_methods</span> <span class='op'>-=</span> <span class='id identifier rubyid_except'>except</span> <span class='kw'>if</span> <span class='id identifier rubyid_except'>except</span>
|
2050
|
+
<span class='id identifier rubyid_dump_methods'>dump_methods</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_m'>m</span><span class='op'>|</span> <span class='id identifier rubyid_attrs'>attrs</span><span class='lbracket'>[</span><span class='id identifier rubyid_m'>m</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_m'>m</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
|
2051
|
+
<span class='id identifier rubyid_attrs'>attrs</span>
|
2052
|
+
<span class='kw'>end</span></pre>
|
2053
|
+
</td>
|
2054
|
+
</tr>
|
2055
|
+
</table>
|
2056
|
+
</div>
|
2057
|
+
|
2058
|
+
<div class="method_details ">
|
2059
|
+
<h3 class="signature " id="evolve-instance_method">
|
2060
|
+
|
2061
|
+
#<strong>evolve</strong>(count: 1, goal_value: nil) ⇒ <tt><span class='object_link'><a href="" title="Evolvable::Population (class)">Evolvable::Population</a></span></tt>
|
2062
|
+
|
2063
|
+
|
2064
|
+
|
2065
|
+
|
2066
|
+
|
2067
|
+
</h3><div class="docstring">
|
2068
|
+
<div class="discussion">
|
2069
|
+
<p>Evolves the population for a specified number of generations or until the goal is achieved.</p>
|
2070
|
+
|
2071
|
+
|
2072
|
+
</div>
|
2073
|
+
</div>
|
2074
|
+
<div class="tags">
|
2075
|
+
<p class="tag_title">Parameters:</p>
|
2076
|
+
<ul class="param">
|
2077
|
+
|
2078
|
+
<li>
|
2079
|
+
|
2080
|
+
<span class='name'>count</span>
|
2081
|
+
|
2082
|
+
|
2083
|
+
<span class='type'>(<tt>Integer</tt>, <tt>Float</tt>)</span>
|
2084
|
+
|
2085
|
+
|
2086
|
+
<em class="default">(defaults to: <tt>1</tt>)</em>
|
2087
|
+
|
2088
|
+
|
2089
|
+
—
|
2090
|
+
<div class='inline'><p>Number of generations to evolve. Use <code>Float::INFINITY</code> for indefinite evolution. Defaults to <code>1</code>.</p>
|
2091
|
+
</div>
|
2092
|
+
|
2093
|
+
</li>
|
2094
|
+
|
2095
|
+
<li>
|
2096
|
+
|
2097
|
+
<span class='name'>goal_value</span>
|
2098
|
+
|
2099
|
+
|
2100
|
+
<span class='type'>(<tt>Numeric</tt>, <tt>nil</tt>)</span>
|
2101
|
+
|
2102
|
+
|
2103
|
+
<em class="default">(defaults to: <tt>nil</tt>)</em>
|
2104
|
+
|
2105
|
+
|
2106
|
+
—
|
2107
|
+
<div class='inline'><p>Optional target value for the goal. If provided, evolution halts when this value is met.</p>
|
2108
|
+
</div>
|
2109
|
+
|
2110
|
+
</li>
|
2111
|
+
|
2112
|
+
</ul>
|
2113
|
+
|
2114
|
+
<p class="tag_title">Returns:</p>
|
2115
|
+
<ul class="return">
|
2116
|
+
|
2117
|
+
<li>
|
2118
|
+
|
2119
|
+
|
2120
|
+
<span class='type'>(<tt><span class='object_link'><a href="" title="Evolvable::Population (class)">Evolvable::Population</a></span></tt>)</span>
|
2121
|
+
|
2122
|
+
|
2123
|
+
|
2124
|
+
—
|
2125
|
+
<div class='inline'><p>The evolved population.</p>
|
2126
|
+
</div>
|
2127
|
+
|
2128
|
+
</li>
|
2129
|
+
|
2130
|
+
</ul>
|
2131
|
+
|
2132
|
+
</div><table class="source_code">
|
2133
|
+
<tr>
|
2134
|
+
<td>
|
2135
|
+
<pre class="lines">
|
2136
|
+
|
2137
|
+
|
2138
|
+
210
|
2139
|
+
211
|
2140
|
+
212
|
2141
|
+
213
|
2142
|
+
214
|
2143
|
+
215
|
2144
|
+
216
|
2145
|
+
217
|
2146
|
+
218
|
2147
|
+
219
|
2148
|
+
220
|
2149
|
+
221
|
2150
|
+
222</pre>
|
2151
|
+
</td>
|
2152
|
+
<td>
|
2153
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/population.rb', line 210</span>
|
2154
|
+
|
2155
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_evolve'>evolve</span><span class='lparen'>(</span><span class='label'>count:</span> <span class='int'>1</span><span class='comma'>,</span> <span class='label'>goal_value:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
2156
|
+
<span class='id identifier rubyid_goal'>goal</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_goal_value'>goal_value</span> <span class='kw'>if</span> <span class='id identifier rubyid_goal_value'>goal_value</span>
|
2157
|
+
<span class='int'>1</span><span class='period'>.</span><span class='id identifier rubyid_upto'>upto</span><span class='lparen'>(</span><span class='id identifier rubyid_count'>count</span><span class='rparen'>)</span> <span class='kw'>do</span>
|
2158
|
+
<span class='id identifier rubyid_before_evaluation'>before_evaluation</span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span>
|
2159
|
+
<span class='id identifier rubyid_evaluation'>evaluation</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span>
|
2160
|
+
<span class='id identifier rubyid_before_evolution'>before_evolution</span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span>
|
2161
|
+
<span class='kw'>break</span> <span class='kw'>if</span> <span class='id identifier rubyid_met_goal?'>met_goal?</span>
|
2162
|
+
|
2163
|
+
<span class='id identifier rubyid_evolution'>evolution</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span>
|
2164
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_evolutions_count'>evolutions_count</span> <span class='op'>+=</span> <span class='int'>1</span>
|
2165
|
+
<span class='id identifier rubyid_after_evolution'>after_evolution</span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span>
|
2166
|
+
<span class='kw'>end</span>
|
2167
|
+
<span class='kw'>end</span></pre>
|
2168
|
+
</td>
|
2169
|
+
</tr>
|
2170
|
+
</table>
|
2171
|
+
</div>
|
2172
|
+
|
2173
|
+
<div class="method_details ">
|
2174
|
+
<h3 class="signature " id="evolve_forever-instance_method">
|
2175
|
+
|
2176
|
+
#<strong>evolve_forever</strong> ⇒ <tt><span class='object_link'><a href="" title="Evolvable::Population (class)">Evolvable::Population</a></span></tt>
|
2177
|
+
|
2178
|
+
|
2179
|
+
|
2180
|
+
|
2181
|
+
|
2182
|
+
</h3><div class="docstring">
|
2183
|
+
<div class="discussion">
|
2184
|
+
<p>Evolves the population indefinitely, ignoring any goal.</p>
|
2185
|
+
|
2186
|
+
<p>Clears any previously set <code>goal.value</code> to ensure evolution continues indefinitely.</p>
|
2187
|
+
|
2188
|
+
|
2189
|
+
</div>
|
2190
|
+
</div>
|
2191
|
+
<div class="tags">
|
2192
|
+
|
2193
|
+
<p class="tag_title">Returns:</p>
|
2194
|
+
<ul class="return">
|
2195
|
+
|
2196
|
+
<li>
|
2197
|
+
|
2198
|
+
|
2199
|
+
<span class='type'>(<tt><span class='object_link'><a href="" title="Evolvable::Population (class)">Evolvable::Population</a></span></tt>)</span>
|
2200
|
+
|
2201
|
+
|
2202
|
+
|
2203
|
+
—
|
2204
|
+
<div class='inline'><p>The evolved population.</p>
|
2205
|
+
</div>
|
2206
|
+
|
2207
|
+
</li>
|
2208
|
+
|
2209
|
+
</ul>
|
2210
|
+
|
2211
|
+
</div><table class="source_code">
|
2212
|
+
<tr>
|
2213
|
+
<td>
|
2214
|
+
<pre class="lines">
|
2215
|
+
|
2216
|
+
|
2217
|
+
244
|
2218
|
+
245
|
2219
|
+
246
|
2220
|
+
247</pre>
|
2221
|
+
</td>
|
2222
|
+
<td>
|
2223
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/population.rb', line 244</span>
|
2224
|
+
|
2225
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_evolve_forever'>evolve_forever</span>
|
2226
|
+
<span class='id identifier rubyid_goal'>goal</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
2227
|
+
<span class='id identifier rubyid_evolve'>evolve</span><span class='lparen'>(</span><span class='label'>count:</span> <span class='const'>Float</span><span class='op'>::</span><span class='const'>INFINITY</span><span class='rparen'>)</span>
|
2228
|
+
<span class='kw'>end</span></pre>
|
2229
|
+
</td>
|
2230
|
+
</tr>
|
2231
|
+
</table>
|
2232
|
+
</div>
|
2233
|
+
|
2234
|
+
<div class="method_details ">
|
2235
|
+
<h3 class="signature " id="evolve_selected-instance_method">
|
2236
|
+
|
2237
|
+
#<strong>evolve_selected</strong>(selected_evolvables) ⇒ <tt><span class='object_link'><a href="" title="Evolvable::Population (class)">Evolvable::Population</a></span></tt>
|
2238
|
+
|
2239
|
+
|
2240
|
+
|
2241
|
+
|
2242
|
+
|
2243
|
+
</h3><div class="docstring">
|
2244
|
+
<div class="discussion">
|
2245
|
+
<p>Evolves the population using a pre-selected set of evolvables.
|
2246
|
+
This allows for custom selection beyond the built-in selection strategies.</p>
|
2247
|
+
|
2248
|
+
|
2249
|
+
</div>
|
2250
|
+
</div>
|
2251
|
+
<div class="tags">
|
2252
|
+
<p class="tag_title">Parameters:</p>
|
2253
|
+
<ul class="param">
|
2254
|
+
|
2255
|
+
<li>
|
2256
|
+
|
2257
|
+
<span class='name'>selected_evolvables</span>
|
2258
|
+
|
2259
|
+
|
2260
|
+
<span class='type'>(<tt>Array<<span class='object_link'><a href="../Evolvable.html" title="Evolvable (module)">Evolvable</a></span>></tt>)</span>
|
2261
|
+
|
2262
|
+
|
2263
|
+
|
2264
|
+
—
|
2265
|
+
<div class='inline'><p>The evolvables selected for combinations</p>
|
2266
|
+
</div>
|
2267
|
+
|
2268
|
+
</li>
|
2269
|
+
|
2270
|
+
</ul>
|
2271
|
+
|
2272
|
+
<p class="tag_title">Returns:</p>
|
2273
|
+
<ul class="return">
|
2274
|
+
|
2275
|
+
<li>
|
2276
|
+
|
2277
|
+
|
2278
|
+
<span class='type'>(<tt><span class='object_link'><a href="" title="Evolvable::Population (class)">Evolvable::Population</a></span></tt>)</span>
|
2279
|
+
|
2280
|
+
|
2281
|
+
|
2282
|
+
—
|
2283
|
+
<div class='inline'><p>The evolved population</p>
|
2284
|
+
</div>
|
2285
|
+
|
2286
|
+
</li>
|
2287
|
+
|
2288
|
+
</ul>
|
2289
|
+
|
2290
|
+
</div><table class="source_code">
|
2291
|
+
<tr>
|
2292
|
+
<td>
|
2293
|
+
<pre class="lines">
|
2294
|
+
|
2295
|
+
|
2296
|
+
256
|
2297
|
+
257
|
2298
|
+
258
|
2299
|
+
259
|
2300
|
+
260
|
2301
|
+
261
|
2302
|
+
262</pre>
|
2303
|
+
</td>
|
2304
|
+
<td>
|
2305
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/population.rb', line 256</span>
|
2306
|
+
|
2307
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_evolve_selected'>evolve_selected</span><span class='lparen'>(</span><span class='id identifier rubyid_selected_evolvables'>selected_evolvables</span><span class='rparen'>)</span>
|
2308
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_selected_evolvables'>selected_evolvables</span> <span class='op'>=</span> <span class='id identifier rubyid_selected_evolvables'>selected_evolvables</span>
|
2309
|
+
<span class='id identifier rubyid_before_evolution'>before_evolution</span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span>
|
2310
|
+
<span class='id identifier rubyid_evolution'>evolution</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span>
|
2311
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_evolutions_count'>evolutions_count</span> <span class='op'>+=</span> <span class='int'>1</span>
|
2312
|
+
<span class='id identifier rubyid_after_evolution'>after_evolution</span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span>
|
2313
|
+
<span class='kw'>end</span></pre>
|
2314
|
+
</td>
|
2315
|
+
</tr>
|
2316
|
+
</table>
|
2317
|
+
</div>
|
2318
|
+
|
2319
|
+
<div class="method_details ">
|
2320
|
+
<h3 class="signature " id="evolve_to_goal-instance_method">
|
2321
|
+
|
2322
|
+
#<strong>evolve_to_goal</strong>(goal_value = nil) ⇒ <tt><span class='object_link'><a href="" title="Evolvable::Population (class)">Evolvable::Population</a></span></tt>
|
2323
|
+
|
2324
|
+
|
2325
|
+
|
2326
|
+
|
2327
|
+
|
2328
|
+
</h3><div class="docstring">
|
2329
|
+
<div class="discussion">
|
2330
|
+
<p>Evolves the population until the goal is met.</p>
|
2331
|
+
|
2332
|
+
<p>If no goal value is provided, it uses the currently defined <code>goal.value</code>.</p>
|
2333
|
+
|
2334
|
+
|
2335
|
+
</div>
|
2336
|
+
</div>
|
2337
|
+
<div class="tags">
|
2338
|
+
<p class="tag_title">Parameters:</p>
|
2339
|
+
<ul class="param">
|
2340
|
+
|
2341
|
+
<li>
|
2342
|
+
|
2343
|
+
<span class='name'>goal_value</span>
|
2344
|
+
|
2345
|
+
|
2346
|
+
<span class='type'>(<tt>Numeric</tt>, <tt>nil</tt>)</span>
|
2347
|
+
|
2348
|
+
|
2349
|
+
<em class="default">(defaults to: <tt>nil</tt>)</em>
|
2350
|
+
|
2351
|
+
|
2352
|
+
—
|
2353
|
+
<div class='inline'><p>Optional target value. Overrides the current goal if provided.</p>
|
2354
|
+
</div>
|
2355
|
+
|
2356
|
+
</li>
|
2357
|
+
|
2358
|
+
</ul>
|
2359
|
+
|
2360
|
+
<p class="tag_title">Returns:</p>
|
2361
|
+
<ul class="return">
|
2362
|
+
|
2363
|
+
<li>
|
2364
|
+
|
2365
|
+
|
2366
|
+
<span class='type'>(<tt><span class='object_link'><a href="" title="Evolvable::Population (class)">Evolvable::Population</a></span></tt>)</span>
|
2367
|
+
|
2368
|
+
|
2369
|
+
|
2370
|
+
—
|
2371
|
+
<div class='inline'><p>The evolved population.</p>
|
2372
|
+
</div>
|
2373
|
+
|
2374
|
+
</li>
|
2375
|
+
|
2376
|
+
</ul>
|
2377
|
+
|
2378
|
+
</div><table class="source_code">
|
2379
|
+
<tr>
|
2380
|
+
<td>
|
2381
|
+
<pre class="lines">
|
2382
|
+
|
2383
|
+
|
2384
|
+
232
|
2385
|
+
233
|
2386
|
+
234
|
2387
|
+
235</pre>
|
2388
|
+
</td>
|
2389
|
+
<td>
|
2390
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/population.rb', line 232</span>
|
2391
|
+
|
2392
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_evolve_to_goal'>evolve_to_goal</span><span class='lparen'>(</span><span class='id identifier rubyid_goal_value'>goal_value</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
2393
|
+
<span class='id identifier rubyid_goal_value'>goal_value</span> <span class='op'>||=</span> <span class='id identifier rubyid_goal'>goal</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span>
|
2394
|
+
<span class='id identifier rubyid_evolve'>evolve</span><span class='lparen'>(</span><span class='label'>count:</span> <span class='const'>Float</span><span class='op'>::</span><span class='const'>INFINITY</span><span class='comma'>,</span> <span class='label'>goal_value:</span> <span class='id identifier rubyid_goal_value'>goal_value</span><span class='rparen'>)</span>
|
2395
|
+
<span class='kw'>end</span></pre>
|
2396
|
+
</td>
|
2397
|
+
</tr>
|
2398
|
+
</table>
|
2399
|
+
</div>
|
2400
|
+
|
2401
|
+
<div class="method_details ">
|
2402
|
+
<h3 class="signature " id="met_goal?-instance_method">
|
2403
|
+
|
2404
|
+
#<strong>met_goal?</strong> ⇒ <tt>Boolean</tt>
|
2405
|
+
|
2406
|
+
|
2407
|
+
|
2408
|
+
|
2409
|
+
|
2410
|
+
</h3><div class="docstring">
|
2411
|
+
<div class="discussion">
|
2412
|
+
<p>Checks if the goal has been met by any evolvable in the population.</p>
|
2413
|
+
|
2414
|
+
|
2415
|
+
</div>
|
2416
|
+
</div>
|
2417
|
+
<div class="tags">
|
2418
|
+
|
2419
|
+
<p class="tag_title">Returns:</p>
|
2420
|
+
<ul class="return">
|
2421
|
+
|
2422
|
+
<li>
|
2423
|
+
|
2424
|
+
|
2425
|
+
<span class='type'>(<tt>Boolean</tt>)</span>
|
2426
|
+
|
2427
|
+
|
2428
|
+
|
2429
|
+
—
|
2430
|
+
<div class='inline'><p>True if the goal has been met, false otherwise</p>
|
2431
|
+
</div>
|
2432
|
+
|
2433
|
+
</li>
|
2434
|
+
|
2435
|
+
</ul>
|
2436
|
+
|
2437
|
+
</div><table class="source_code">
|
2438
|
+
<tr>
|
2439
|
+
<td>
|
2440
|
+
<pre class="lines">
|
2441
|
+
|
2442
|
+
|
2443
|
+
278
|
2444
|
+
279
|
2445
|
+
280</pre>
|
2446
|
+
</td>
|
2447
|
+
<td>
|
2448
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/population.rb', line 278</span>
|
2449
|
+
|
2450
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_met_goal?'>met_goal?</span>
|
2451
|
+
<span class='id identifier rubyid_evaluation'>evaluation</span><span class='period'>.</span><span class='id identifier rubyid_met_goal?'>met_goal?</span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span>
|
2452
|
+
<span class='kw'>end</span></pre>
|
2453
|
+
</td>
|
2454
|
+
</tr>
|
2455
|
+
</table>
|
2456
|
+
</div>
|
2457
|
+
|
2458
|
+
<div class="method_details ">
|
2459
|
+
<h3 class="signature " id="new_evolvable-instance_method">
|
2460
|
+
|
2461
|
+
#<strong>new_evolvable</strong>(genome: nil) ⇒ <tt><span class='object_link'><a href="../Evolvable.html" title="Evolvable (module)">Evolvable</a></span></tt>
|
2462
|
+
|
2463
|
+
|
2464
|
+
|
2465
|
+
|
2466
|
+
|
2467
|
+
</h3><div class="docstring">
|
2468
|
+
<div class="discussion">
|
2469
|
+
<p>Creates a new evolvable instance with an optional genome.
|
2470
|
+
If no genome is provided and there are parent evolvables,
|
2471
|
+
a genome will be generated through combination.</p>
|
2472
|
+
|
2473
|
+
|
2474
|
+
</div>
|
2475
|
+
</div>
|
2476
|
+
<div class="tags">
|
2477
|
+
<p class="tag_title">Parameters:</p>
|
2478
|
+
<ul class="param">
|
2479
|
+
|
2480
|
+
<li>
|
2481
|
+
|
2482
|
+
<span class='name'>genome</span>
|
2483
|
+
|
2484
|
+
|
2485
|
+
<span class='type'>(<tt><span class='object_link'><a href="Genome.html" title="Evolvable::Genome (class)">Evolvable::Genome</a></span></tt>, <tt>nil</tt>)</span>
|
2486
|
+
|
2487
|
+
|
2488
|
+
<em class="default">(defaults to: <tt>nil</tt>)</em>
|
2489
|
+
|
2490
|
+
|
2491
|
+
—
|
2492
|
+
<div class='inline'><p>Optional genome for the new evolvable</p>
|
2493
|
+
</div>
|
2494
|
+
|
2495
|
+
</li>
|
2496
|
+
|
2497
|
+
</ul>
|
2498
|
+
|
2499
|
+
<p class="tag_title">Returns:</p>
|
2500
|
+
<ul class="return">
|
2501
|
+
|
2502
|
+
<li>
|
2503
|
+
|
2504
|
+
|
2505
|
+
<span class='type'>(<tt><span class='object_link'><a href="../Evolvable.html" title="Evolvable (module)">Evolvable</a></span></tt>)</span>
|
2506
|
+
|
2507
|
+
|
2508
|
+
|
2509
|
+
—
|
2510
|
+
<div class='inline'><p>A new evolvable instance</p>
|
2511
|
+
</div>
|
2512
|
+
|
2513
|
+
</li>
|
2514
|
+
|
2515
|
+
</ul>
|
2516
|
+
|
2517
|
+
</div><table class="source_code">
|
2518
|
+
<tr>
|
2519
|
+
<td>
|
2520
|
+
<pre class="lines">
|
2521
|
+
|
2522
|
+
|
2523
|
+
290
|
2524
|
+
291
|
2525
|
+
292
|
2526
|
+
293
|
2527
|
+
294
|
2528
|
+
295
|
2529
|
+
296
|
2530
|
+
297
|
2531
|
+
298</pre>
|
2532
|
+
</td>
|
2533
|
+
<td>
|
2534
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/population.rb', line 290</span>
|
2535
|
+
|
2536
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_new_evolvable'>new_evolvable</span><span class='lparen'>(</span><span class='label'>genome:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
2537
|
+
<span class='kw'>return</span> <span class='id identifier rubyid_generate_evolvables'>generate_evolvables</span><span class='lparen'>(</span><span class='int'>1</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span> <span class='kw'>unless</span> <span class='id identifier rubyid_genome'>genome</span> <span class='op'>||</span> <span class='id identifier rubyid_parent_evolvables'>parent_evolvables</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
|
2538
|
+
|
2539
|
+
<span class='id identifier rubyid_evolvable'>evolvable</span> <span class='op'>=</span> <span class='id identifier rubyid_evolvable_type'>evolvable_type</span><span class='period'>.</span><span class='id identifier rubyid_new_evolvable'>new_evolvable</span><span class='lparen'>(</span><span class='label'>population:</span> <span class='kw'>self</span><span class='comma'>,</span>
|
2540
|
+
<span class='label'>genome:</span> <span class='id identifier rubyid_genome'>genome</span> <span class='op'>||</span> <span class='id identifier rubyid_new_genome'>new_genome</span><span class='comma'>,</span>
|
2541
|
+
<span class='label'>generation_index:</span> <span class='ivar'>@evolvables</span><span class='period'>.</span><span class='id identifier rubyid_count'>count</span><span class='rparen'>)</span>
|
2542
|
+
<span class='ivar'>@evolvables</span> <span class='op'><<</span> <span class='id identifier rubyid_evolvable'>evolvable</span>
|
2543
|
+
<span class='id identifier rubyid_evolvable'>evolvable</span>
|
2544
|
+
<span class='kw'>end</span></pre>
|
2545
|
+
</td>
|
2546
|
+
</tr>
|
2547
|
+
</table>
|
2548
|
+
</div>
|
2549
|
+
|
2550
|
+
<div class="method_details ">
|
2551
|
+
<h3 class="signature " id="new_evolvables-instance_method">
|
2552
|
+
|
2553
|
+
#<strong>new_evolvables</strong>(count:) ⇒ <tt>Array<<span class='object_link'><a href="../Evolvable.html" title="Evolvable (module)">Evolvable</a></span>></tt>
|
2554
|
+
|
2555
|
+
|
2556
|
+
|
2557
|
+
|
2558
|
+
|
2559
|
+
</h3><div class="docstring">
|
2560
|
+
<div class="discussion">
|
2561
|
+
<p>Creates multiple new evolvable instances.</p>
|
2562
|
+
|
2563
|
+
|
2564
|
+
</div>
|
2565
|
+
</div>
|
2566
|
+
<div class="tags">
|
2567
|
+
<p class="tag_title">Parameters:</p>
|
2568
|
+
<ul class="param">
|
2569
|
+
|
2570
|
+
<li>
|
2571
|
+
|
2572
|
+
<span class='name'>count</span>
|
2573
|
+
|
2574
|
+
|
2575
|
+
<span class='type'>(<tt>Integer</tt>)</span>
|
2576
|
+
|
2577
|
+
|
2578
|
+
|
2579
|
+
—
|
2580
|
+
<div class='inline'><p>The number of evolvables to create</p>
|
2581
|
+
</div>
|
2582
|
+
|
2583
|
+
</li>
|
2584
|
+
|
2585
|
+
</ul>
|
2586
|
+
|
2587
|
+
<p class="tag_title">Returns:</p>
|
2588
|
+
<ul class="return">
|
2589
|
+
|
2590
|
+
<li>
|
2591
|
+
|
2592
|
+
|
2593
|
+
<span class='type'>(<tt>Array<<span class='object_link'><a href="../Evolvable.html" title="Evolvable (module)">Evolvable</a></span>></tt>)</span>
|
2594
|
+
|
2595
|
+
|
2596
|
+
|
2597
|
+
—
|
2598
|
+
<div class='inline'><p>The newly created evolvables</p>
|
2599
|
+
</div>
|
2600
|
+
|
2601
|
+
</li>
|
2602
|
+
|
2603
|
+
</ul>
|
2604
|
+
|
2605
|
+
</div><table class="source_code">
|
2606
|
+
<tr>
|
2607
|
+
<td>
|
2608
|
+
<pre class="lines">
|
2609
|
+
|
2610
|
+
|
2611
|
+
306
|
2612
|
+
307
|
2613
|
+
308
|
2614
|
+
309
|
2615
|
+
310
|
2616
|
+
311
|
2617
|
+
312
|
2618
|
+
313
|
2619
|
+
314
|
2620
|
+
315</pre>
|
2621
|
+
</td>
|
2622
|
+
<td>
|
2623
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/population.rb', line 306</span>
|
2624
|
+
|
2625
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_new_evolvables'>new_evolvables</span><span class='lparen'>(</span><span class='label'>count:</span><span class='rparen'>)</span>
|
2626
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_parent_evolvables'>parent_evolvables</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
|
2627
|
+
<span class='const'>Array</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_count'>count</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='id identifier rubyid_new_evolvable'>new_evolvable</span><span class='lparen'>(</span><span class='label'>genome:</span> <span class='id identifier rubyid_new_genome'>new_genome</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
|
2628
|
+
<span class='kw'>else</span>
|
2629
|
+
<span class='id identifier rubyid_evolvables'>evolvables</span> <span class='op'>=</span> <span class='id identifier rubyid_generate_evolvables'>generate_evolvables</span><span class='lparen'>(</span><span class='id identifier rubyid_count'>count</span><span class='rparen'>)</span>
|
2630
|
+
<span class='ivar'>@evolvables</span> <span class='op'>||=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
2631
|
+
<span class='ivar'>@evolvables</span><span class='period'>.</span><span class='id identifier rubyid_concat'>concat</span> <span class='id identifier rubyid_evolvables'>evolvables</span>
|
2632
|
+
<span class='id identifier rubyid_evolvables'>evolvables</span>
|
2633
|
+
<span class='kw'>end</span>
|
2634
|
+
<span class='kw'>end</span></pre>
|
2635
|
+
</td>
|
2636
|
+
</tr>
|
2637
|
+
</table>
|
2638
|
+
</div>
|
2639
|
+
|
2640
|
+
<div class="method_details ">
|
2641
|
+
<h3 class="signature " id="new_genome-instance_method">
|
2642
|
+
|
2643
|
+
#<strong>new_genome</strong> ⇒ <tt><span class='object_link'><a href="Genome.html" title="Evolvable::Genome (class)">Evolvable::Genome</a></span></tt>
|
2644
|
+
|
2645
|
+
|
2646
|
+
|
2647
|
+
|
2648
|
+
|
2649
|
+
</h3><div class="docstring">
|
2650
|
+
<div class="discussion">
|
2651
|
+
<p>Creates a new genome from the gene space.</p>
|
2652
|
+
|
2653
|
+
|
2654
|
+
</div>
|
2655
|
+
</div>
|
2656
|
+
<div class="tags">
|
2657
|
+
|
2658
|
+
<p class="tag_title">Returns:</p>
|
2659
|
+
<ul class="return">
|
2660
|
+
|
2661
|
+
<li>
|
2662
|
+
|
2663
|
+
|
2664
|
+
<span class='type'>(<tt><span class='object_link'><a href="Genome.html" title="Evolvable::Genome (class)">Evolvable::Genome</a></span></tt>)</span>
|
2665
|
+
|
2666
|
+
|
2667
|
+
|
2668
|
+
—
|
2669
|
+
<div class='inline'><p>A new genome</p>
|
2670
|
+
</div>
|
2671
|
+
|
2672
|
+
</li>
|
2673
|
+
|
2674
|
+
</ul>
|
2675
|
+
|
2676
|
+
</div><table class="source_code">
|
2677
|
+
<tr>
|
2678
|
+
<td>
|
2679
|
+
<pre class="lines">
|
2680
|
+
|
2681
|
+
|
2682
|
+
322
|
2683
|
+
323
|
2684
|
+
324</pre>
|
2685
|
+
</td>
|
2686
|
+
<td>
|
2687
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/population.rb', line 322</span>
|
2688
|
+
|
2689
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_new_genome'>new_genome</span>
|
2690
|
+
<span class='id identifier rubyid_gene_space'>gene_space</span><span class='period'>.</span><span class='id identifier rubyid_new_genome'>new_genome</span>
|
2691
|
+
<span class='kw'>end</span></pre>
|
2692
|
+
</td>
|
2693
|
+
</tr>
|
2694
|
+
</table>
|
2695
|
+
</div>
|
2696
|
+
|
2697
|
+
<div class="method_details ">
|
2698
|
+
<h3 class="signature " id="new_parent_genome_cycle-instance_method">
|
2699
|
+
|
2700
|
+
#<strong>new_parent_genome_cycle</strong> ⇒ <tt>Enumerator</tt>
|
2701
|
+
|
2702
|
+
|
2703
|
+
|
2704
|
+
|
2705
|
+
|
2706
|
+
</h3><div class="docstring">
|
2707
|
+
<div class="discussion">
|
2708
|
+
<p>Creates a cycle of parent genome pairs for combination.
|
2709
|
+
Shuffles parent genomes and creates combinations of two.</p>
|
2710
|
+
|
2711
|
+
|
2712
|
+
</div>
|
2713
|
+
</div>
|
2714
|
+
<div class="tags">
|
2715
|
+
|
2716
|
+
<p class="tag_title">Returns:</p>
|
2717
|
+
<ul class="return">
|
2718
|
+
|
2719
|
+
<li>
|
2720
|
+
|
2721
|
+
|
2722
|
+
<span class='type'>(<tt>Enumerator</tt>)</span>
|
2723
|
+
|
2724
|
+
|
2725
|
+
|
2726
|
+
—
|
2727
|
+
<div class='inline'><p>A cycle of parent genome pairs</p>
|
2728
|
+
</div>
|
2729
|
+
|
2730
|
+
</li>
|
2731
|
+
|
2732
|
+
</ul>
|
2733
|
+
|
2734
|
+
</div><table class="source_code">
|
2735
|
+
<tr>
|
2736
|
+
<td>
|
2737
|
+
<pre class="lines">
|
2738
|
+
|
2739
|
+
|
2740
|
+
342
|
2741
|
+
343
|
2742
|
+
344</pre>
|
2743
|
+
</td>
|
2744
|
+
<td>
|
2745
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/population.rb', line 342</span>
|
2746
|
+
|
2747
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_new_parent_genome_cycle'>new_parent_genome_cycle</span>
|
2748
|
+
<span class='id identifier rubyid_parent_evolvables'>parent_evolvables</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&</span><span class='symbol'>:genome</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_shuffle!'>shuffle!</span><span class='period'>.</span><span class='id identifier rubyid_combination'>combination</span><span class='lparen'>(</span><span class='int'>2</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_cycle'>cycle</span>
|
2749
|
+
<span class='kw'>end</span></pre>
|
2750
|
+
</td>
|
2751
|
+
</tr>
|
2752
|
+
</table>
|
2753
|
+
</div>
|
2754
|
+
|
2755
|
+
<div class="method_details ">
|
2756
|
+
<h3 class="signature " id="reset_evolvables-instance_method">
|
2757
|
+
|
2758
|
+
#<strong>reset_evolvables</strong> ⇒ <tt>Array<<span class='object_link'><a href="../Evolvable.html" title="Evolvable (module)">Evolvable</a></span>></tt>
|
2759
|
+
|
2760
|
+
|
2761
|
+
|
2762
|
+
|
2763
|
+
|
2764
|
+
</h3><div class="docstring">
|
2765
|
+
<div class="discussion">
|
2766
|
+
<p>Resets the population by clearing all evolvables and creating new ones.</p>
|
2767
|
+
|
2768
|
+
|
2769
|
+
</div>
|
2770
|
+
</div>
|
2771
|
+
<div class="tags">
|
2772
|
+
|
2773
|
+
<p class="tag_title">Returns:</p>
|
2774
|
+
<ul class="return">
|
2775
|
+
|
2776
|
+
<li>
|
2777
|
+
|
2778
|
+
|
2779
|
+
<span class='type'>(<tt>Array<<span class='object_link'><a href="../Evolvable.html" title="Evolvable (module)">Evolvable</a></span>></tt>)</span>
|
2780
|
+
|
2781
|
+
|
2782
|
+
|
2783
|
+
—
|
2784
|
+
<div class='inline'><p>The new collection of evolvables</p>
|
2785
|
+
</div>
|
2786
|
+
|
2787
|
+
</li>
|
2788
|
+
|
2789
|
+
</ul>
|
2790
|
+
|
2791
|
+
</div><table class="source_code">
|
2792
|
+
<tr>
|
2793
|
+
<td>
|
2794
|
+
<pre class="lines">
|
2795
|
+
|
2796
|
+
|
2797
|
+
331
|
2798
|
+
332
|
2799
|
+
333
|
2800
|
+
334</pre>
|
2801
|
+
</td>
|
2802
|
+
<td>
|
2803
|
+
<pre class="code"><span class="info file"># File 'lib/evolvable/population.rb', line 331</span>
|
2804
|
+
|
2805
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_reset_evolvables'>reset_evolvables</span>
|
2806
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_evolvables'>evolvables</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
2807
|
+
<span class='id identifier rubyid_new_evolvables'>new_evolvables</span><span class='lparen'>(</span><span class='label'>count:</span> <span class='id identifier rubyid_size'>size</span><span class='rparen'>)</span>
|
2808
|
+
<span class='kw'>end</span></pre>
|
2809
|
+
</td>
|
2810
|
+
</tr>
|
2811
|
+
</table>
|
2812
|
+
</div>
|
2813
|
+
|
2814
|
+
</div>
|
2815
|
+
|
2816
|
+
</div>
|
2817
|
+
|
2818
|
+
<div id="footer">
|
2819
|
+
Generated on Sat May 10 18:39:22 2025 by
|
2820
|
+
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
2821
|
+
0.9.37 (ruby-3.4.2).
|
2822
|
+
</div>
|
2823
|
+
|
2824
|
+
</div>
|
2825
|
+
</body>
|
2826
|
+
</html>
|