rubyneat 0.3.5.alpha.3 → 0.3.5.alpha.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.semver +1 -1
- data/Gemfile +19 -19
- data/Gemfile.lock +39 -33
- data/README.md +66 -0
- data/Rakefile +19 -2
- data/bin/neat +4 -60
- data/lib/rubyneat/cli.rb +5 -0
- data/lib/rubyneat/cli/generate.rb +131 -0
- data/lib/rubyneat/cli/main.rb +54 -0
- data/lib/rubyneat/cli/templates/generate/Gemfile.tt +17 -0
- data/lib/rubyneat/cli/templates/generate/README.md.tt +1 -0
- data/lib/rubyneat/cli/templates/generate/bin/neat.tt +14 -0
- data/{neater/xor_neat.rb → lib/rubyneat/cli/templates/generate/neater.tt} +7 -22
- data/rubyneat.gemspec +73 -297
- data/rubyneat.gemspec.orig +384 -0
- metadata +76 -292
- data/.idea/.name +0 -1
- data/.idea/.rakeTasks +0 -7
- data/.idea/dictionaries/trader.xml +0 -3
- data/.idea/encodings.xml +0 -5
- data/.idea/misc.xml +0 -5
- data/.idea/modules.xml +0 -9
- data/.idea/rubyneat.iml +0 -198
- data/.idea/runConfigurations/invpend_neat.xml +0 -26
- data/.idea/runConfigurations/sigdebug_neat.xml +0 -24
- data/.idea/runConfigurations/xor_neat.xml +0 -26
- data/.idea/runConfigurations/xordebug_neat.xml +0 -24
- data/.idea/runConfigurations/xorsin_neat.xml +0 -24
- data/.idea/scopes/scope_settings.xml +0 -5
- data/.idea/vcs.xml +0 -7
- data/.idea/workspace.xml +0 -1151
- data/.yardoc/checksums +0 -11
- data/.yardoc/object_types +0 -0
- data/.yardoc/objects/root.dat +0 -0
- data/.yardoc/proxy_types +0 -0
- data/Guardfile +0 -8
- data/doc/ControllerPoint.html +0 -125
- data/doc/CuteA.html +0 -286
- data/doc/CuteB.html +0 -297
- data/doc/DSL.html +0 -883
- data/doc/NEAT.html +0 -588
- data/doc/NEAT/BasicNeuronTypes.html +0 -136
- data/doc/NEAT/BasicNeuronTypes/BiasNeuron.html +0 -518
- data/doc/NEAT/BasicNeuronTypes/CosineNeuron.html +0 -274
- data/doc/NEAT/BasicNeuronTypes/InputNeuron.html +0 -366
- data/doc/NEAT/BasicNeuronTypes/SigmoidNeuron.html +0 -275
- data/doc/NEAT/BasicNeuronTypes/SineNeuron.html +0 -274
- data/doc/NEAT/BasicNeuronTypes/TanhNeuron.html +0 -274
- data/doc/NEAT/Controller.html +0 -2490
- data/doc/NEAT/Controller/NeatSettings.html +0 -3985
- data/doc/NEAT/Critter.html +0 -1037
- data/doc/NEAT/Critter/Genotype.html +0 -1601
- data/doc/NEAT/Critter/Genotype/Gene.html +0 -979
- data/doc/NEAT/Critter/Phenotype.html +0 -603
- data/doc/NEAT/DSL.html +0 -1255
- data/doc/NEAT/Evaluator.html +0 -420
- data/doc/NEAT/Evolver.html +0 -602
- data/doc/NEAT/Evolver/CritterOp.html +0 -551
- data/doc/NEAT/Expressor.html +0 -327
- data/doc/NEAT/Graph.html +0 -402
- data/doc/NEAT/Graph/DependencyResolver.html +0 -478
- data/doc/NEAT/Graph/GraphException.html +0 -123
- data/doc/NEAT/NeatException.html +0 -123
- data/doc/NEAT/NeatOb.html +0 -567
- data/doc/NEAT/Neuron.html +0 -1067
- data/doc/NEAT/Operator.html +0 -162
- data/doc/NEAT/Population.html +0 -1961
- data/doc/NEAT/Trait.html +0 -169
- data/doc/_index.html +0 -373
- data/doc/class_list.html +0 -54
- data/doc/css/common.css +0 -1
- data/doc/css/full_list.css +0 -57
- data/doc/css/style.css +0 -339
- data/doc/file_list.html +0 -53
- data/doc/frames.html +0 -26
- data/doc/index.html +0 -373
- data/doc/js/app.js +0 -219
- data/doc/js/full_list.js +0 -178
- data/doc/js/jquery.js +0 -4
- data/doc/method_list.html +0 -1415
- data/doc/top-level-namespace.html +0 -164
- data/foo/foo_aquarium_example.rb +0 -38
- data/foo/foo_gosu.rb +0 -99
- data/foo/foo_rubygoo.rb +0 -104
- data/foo/foo_sdl.rb +0 -34
- data/foo/icon.png +0 -0
- data/neater/invpend_neat.rb +0 -150
- data/neater/rnlib/inverted_pendulum.rb +0 -380
- data/neater/rnlib/xor.rb +0 -10
- data/neater/sigdebug_neat.rb +0 -136
- data/neater/xoranalog_neat.rb +0 -138
- data/neater/xorsin_neat.rb +0 -143
- data/projectFilesBackup/.idea/rubyneat.iml +0 -180
- data/public/.directory +0 -4
- data/public/background.png +0 -0
- data/public/background.xcf +0 -0
- data/public/cart.png +0 -0
- data/public/cart.xcf +0 -0
- data/public/metalpoles_molton_ball_l.jpg +0 -0
- data/public/old_background.png +0 -0
- data/public/pointer.png +0 -0
- data/public/pointer.xcf +0 -0
- data/public/pole.kra +0 -0
- data/public/pole.png +0 -0
- data/public/pole.xcf +0 -0
- data/public/wheel-of-year-stone-DD-131-WOYS.jpg +0 -0
- data/public/wheel.png +0 -0
- data/public/wheel.xcf +0 -0
- data/public/wood-planks-texture.jpg +0 -0
- data/rdoc/ControllerPoint.html +0 -116
- data/rdoc/CuteA.html +0 -177
- data/rdoc/CuteB.html +0 -178
- data/rdoc/DSLSetup.html +0 -177
- data/rdoc/GameTestWindow.html +0 -242
- data/rdoc/GameWindow.html +0 -292
- data/rdoc/Gemfile.html +0 -215
- data/rdoc/Gemfile_lock.html +0 -327
- data/rdoc/GraphTest.html +0 -210
- data/rdoc/Guardfile.html +0 -198
- data/rdoc/InvertedPendulum.html +0 -198
- data/rdoc/InvertedPendulum/Cart.html +0 -668
- data/rdoc/InvertedPendulum/DSL.html +0 -259
- data/rdoc/InvertedPendulum/InvPendWindow.html +0 -402
- data/rdoc/Logger.html +0 -98
- data/rdoc/NEAT.html +0 -422
- data/rdoc/NEAT/BasicNeuronTypes.html +0 -107
- data/rdoc/NEAT/BasicNeuronTypes/BiasNeuron.html +0 -265
- data/rdoc/NEAT/BasicNeuronTypes/CosineNeuron.html +0 -162
- data/rdoc/NEAT/BasicNeuronTypes/InputNeuron.html +0 -206
- data/rdoc/NEAT/BasicNeuronTypes/SigmoidNeuron.html +0 -162
- data/rdoc/NEAT/BasicNeuronTypes/SineNeuron.html +0 -162
- data/rdoc/NEAT/BasicNeuronTypes/TanhNeuron.html +0 -161
- data/rdoc/NEAT/Controller.html +0 -729
- data/rdoc/NEAT/Controller/NeatSettings.html +0 -880
- data/rdoc/NEAT/Critter.html +0 -489
- data/rdoc/NEAT/Critter/Genotype.html +0 -735
- data/rdoc/NEAT/Critter/Genotype/Gene.html +0 -457
- data/rdoc/NEAT/Critter/Phenotype.html +0 -330
- data/rdoc/NEAT/DSL.html +0 -729
- data/rdoc/NEAT/Evaluator.html +0 -256
- data/rdoc/NEAT/Evolver.html +0 -891
- data/rdoc/NEAT/Evolver/CritterOp.html +0 -349
- data/rdoc/NEAT/Expressor.html +0 -402
- data/rdoc/NEAT/Graph.html +0 -263
- data/rdoc/NEAT/Graph/DependencyResolver.html +0 -291
- data/rdoc/NEAT/Graph/GraphException.html +0 -105
- data/rdoc/NEAT/NeatException.html +0 -105
- data/rdoc/NEAT/NeatOb.html +0 -325
- data/rdoc/NEAT/Neuron.html +0 -481
- data/rdoc/NEAT/Operator.html +0 -109
- data/rdoc/NEAT/Population.html +0 -935
- data/rdoc/NEAT/Trait.html +0 -117
- data/rdoc/Object.html +0 -384
- data/rdoc/Phi.html +0 -98
- data/rdoc/Player.html +0 -383
- data/rdoc/Rakefile.html +0 -254
- data/rdoc/RubyNEAT.html +0 -98
- data/rdoc/RubyNEAT/Application.html +0 -105
- data/rdoc/SDL.html +0 -98
- data/rdoc/SDL/Event2.html +0 -98
- data/rdoc/Vector.html +0 -195
- data/rdoc/created.rid +0 -125
- data/rdoc/doc/ControllerPoint_html.html +0 -299
- data/rdoc/doc/CuteA_html.html +0 -438
- data/rdoc/doc/CuteB_html.html +0 -436
- data/rdoc/doc/DSL_html.html +0 -992
- data/rdoc/doc/NEAT/BasicNeuronTypes/BiasNeuron_html.html +0 -617
- data/rdoc/doc/NEAT/BasicNeuronTypes/CosineNeuron_html.html +0 -413
- data/rdoc/doc/NEAT/BasicNeuronTypes/InputNeuron_html.html +0 -498
- data/rdoc/doc/NEAT/BasicNeuronTypes/SigmoidNeuron_html.html +0 -413
- data/rdoc/doc/NEAT/BasicNeuronTypes/SineNeuron_html.html +0 -413
- data/rdoc/doc/NEAT/BasicNeuronTypes/TanhNeuron_html.html +0 -412
- data/rdoc/doc/NEAT/BasicNeuronTypes_html.html +0 -310
- data/rdoc/doc/NEAT/Controller/NeatSettings_html.html +0 -3324
- data/rdoc/doc/NEAT/Controller_html.html +0 -2212
- data/rdoc/doc/NEAT/Critter/Genotype/Gene_html.html +0 -997
- data/rdoc/doc/NEAT/Critter/Genotype_html.html +0 -1556
- data/rdoc/doc/NEAT/Critter/Phenotype_html.html +0 -687
- data/rdoc/doc/NEAT/Critter_html.html +0 -1037
- data/rdoc/doc/NEAT/DSL_html.html +0 -1349
- data/rdoc/doc/NEAT/Evaluator_html.html +0 -556
- data/rdoc/doc/NEAT/Evolver/CritterOp_html.html +0 -690
- data/rdoc/doc/NEAT/Evolver_html.html +0 -677
- data/rdoc/doc/NEAT/Expressor_html.html +0 -468
- data/rdoc/doc/NEAT/Graph/DependencyResolver_html.html +0 -598
- data/rdoc/doc/NEAT/Graph/GraphException_html.html +0 -299
- data/rdoc/doc/NEAT/Graph_html.html +0 -527
- data/rdoc/doc/NEAT/NeatException_html.html +0 -299
- data/rdoc/doc/NEAT/NeatOb_html.html +0 -671
- data/rdoc/doc/NEAT/Neuron_html.html +0 -1095
- data/rdoc/doc/NEAT/Operator_html.html +0 -337
- data/rdoc/doc/NEAT/Population_html.html +0 -1795
- data/rdoc/doc/NEAT/Trait_html.html +0 -344
- data/rdoc/doc/NEAT_html.html +0 -736
- data/rdoc/doc/_index_html.html +0 -559
- data/rdoc/doc/class_list_html.html +0 -369
- data/rdoc/doc/css/common_css.html +0 -188
- data/rdoc/doc/css/full_list_css.html +0 -243
- data/rdoc/doc/css/style_css.html +0 -530
- data/rdoc/doc/file_list_html.html +0 -240
- data/rdoc/doc/frames_html.html +0 -217
- data/rdoc/doc/index_html.html +0 -559
- data/rdoc/doc/js/app_js.html +0 -423
- data/rdoc/doc/js/full_list_js.html +0 -372
- data/rdoc/doc/js/jquery_js.html +0 -1536
- data/rdoc/doc/method_list_html.html +0 -1375
- data/rdoc/doc/top-level-namespace_html.html +0 -317
- data/rdoc/fonts.css +0 -167
- data/rdoc/fonts/Lato-Light.ttf +0 -0
- data/rdoc/fonts/Lato-LightItalic.ttf +0 -0
- data/rdoc/fonts/Lato-Regular.ttf +0 -0
- data/rdoc/fonts/Lato-RegularItalic.ttf +0 -0
- data/rdoc/fonts/SourceCodePro-Bold.ttf +0 -0
- data/rdoc/fonts/SourceCodePro-Regular.ttf +0 -0
- data/rdoc/images/add.png +0 -0
- data/rdoc/images/arrow_up.png +0 -0
- data/rdoc/images/brick.png +0 -0
- data/rdoc/images/brick_link.png +0 -0
- data/rdoc/images/bug.png +0 -0
- data/rdoc/images/bullet_black.png +0 -0
- data/rdoc/images/bullet_toggle_minus.png +0 -0
- data/rdoc/images/bullet_toggle_plus.png +0 -0
- data/rdoc/images/date.png +0 -0
- data/rdoc/images/delete.png +0 -0
- data/rdoc/images/find.png +0 -0
- data/rdoc/images/loadingAnimation.gif +0 -0
- data/rdoc/images/macFFBgHack.png +0 -0
- data/rdoc/images/package.png +0 -0
- data/rdoc/images/page_green.png +0 -0
- data/rdoc/images/page_white_text.png +0 -0
- data/rdoc/images/page_white_width.png +0 -0
- data/rdoc/images/plugin.png +0 -0
- data/rdoc/images/ruby.png +0 -0
- data/rdoc/images/tag_blue.png +0 -0
- data/rdoc/images/tag_green.png +0 -0
- data/rdoc/images/transparent.png +0 -0
- data/rdoc/images/wrench.png +0 -0
- data/rdoc/images/wrench_orange.png +0 -0
- data/rdoc/images/zoom.png +0 -0
- data/rdoc/index.html +0 -282
- data/rdoc/js/darkfish.js +0 -140
- data/rdoc/js/jquery.js +0 -18
- data/rdoc/js/navigation.js +0 -142
- data/rdoc/js/search.js +0 -109
- data/rdoc/js/search_index.js +0 -1
- data/rdoc/js/searcher.js +0 -228
- data/rdoc/rdoc.css +0 -580
- data/rdoc/rubyneat_gemspec.html +0 -387
- data/rdoc/table_of_contents.html +0 -2502
- data/rdoc/xordebug_log.html +0 -170598
- data/rdoc/xorsin_log.html +0 -22569
@@ -1,349 +0,0 @@
|
|
1
|
-
<!DOCTYPE html>
|
2
|
-
|
3
|
-
<html>
|
4
|
-
<head>
|
5
|
-
<meta charset="UTF-8">
|
6
|
-
|
7
|
-
<title>class NEAT::Evolver::CritterOp - rubyneat 0.3.4</title>
|
8
|
-
|
9
|
-
<link href="../../fonts.css" rel="stylesheet">
|
10
|
-
<link href="../../rdoc.css" rel="stylesheet">
|
11
|
-
|
12
|
-
<script type="text/javascript">
|
13
|
-
var rdoc_rel_prefix = "../../";
|
14
|
-
</script>
|
15
|
-
|
16
|
-
<script src="../../js/jquery.js"></script>
|
17
|
-
<script src="../../js/navigation.js"></script>
|
18
|
-
<script src="../../js/search_index.js"></script>
|
19
|
-
<script src="../../js/search.js"></script>
|
20
|
-
<script src="../../js/searcher.js"></script>
|
21
|
-
<script src="../../js/darkfish.js"></script>
|
22
|
-
|
23
|
-
|
24
|
-
<body id="top" role="document" class="class">
|
25
|
-
<nav role="navigation">
|
26
|
-
<div id="project-navigation">
|
27
|
-
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
|
28
|
-
<h2>
|
29
|
-
<a href="../../index.html" rel="home">Home</a>
|
30
|
-
</h2>
|
31
|
-
|
32
|
-
<div id="table-of-contents-navigation">
|
33
|
-
<a href="../../table_of_contents.html#pages">Pages</a>
|
34
|
-
<a href="../../table_of_contents.html#classes">Classes</a>
|
35
|
-
<a href="../../table_of_contents.html#methods">Methods</a>
|
36
|
-
</div>
|
37
|
-
</div>
|
38
|
-
|
39
|
-
<div id="search-section" role="search" class="project-section initially-hidden">
|
40
|
-
<form action="#" method="get" accept-charset="utf-8">
|
41
|
-
<div id="search-field-wrapper">
|
42
|
-
<input id="search-field" role="combobox" aria-label="Search"
|
43
|
-
aria-autocomplete="list" aria-controls="search-results"
|
44
|
-
type="text" name="search" placeholder="Search" spellcheck="false"
|
45
|
-
title="Type to search, Up and Down to navigate, Enter to load">
|
46
|
-
</div>
|
47
|
-
|
48
|
-
<ul id="search-results" aria-label="Search Results"
|
49
|
-
aria-busy="false" aria-expanded="false"
|
50
|
-
aria-atomic="false" class="initially-hidden"></ul>
|
51
|
-
</form>
|
52
|
-
</div>
|
53
|
-
|
54
|
-
</div>
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
<div id="class-metadata">
|
59
|
-
|
60
|
-
<div id="parent-class-section" class="nav-section">
|
61
|
-
<h3>Parent</h3>
|
62
|
-
|
63
|
-
|
64
|
-
<p class="link">NeatOb
|
65
|
-
|
66
|
-
</div>
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
<!-- Method Quickref -->
|
71
|
-
<div id="method-list-section" class="nav-section">
|
72
|
-
<h3>Methods</h3>
|
73
|
-
|
74
|
-
<ul class="link-list" role="directory">
|
75
|
-
|
76
|
-
<li class="calls-super" ><a href="#method-c-new">::new</a>
|
77
|
-
|
78
|
-
<li ><a href="#method-i-add_gene-21">#add_gene!</a>
|
79
|
-
|
80
|
-
<li ><a href="#method-i-add_neuron-21">#add_neuron!</a>
|
81
|
-
|
82
|
-
<li ><a href="#method-i-disable_gene-21">#disable_gene!</a>
|
83
|
-
|
84
|
-
<li ><a href="#method-i-reenable_gene-21">#reenable_gene!</a>
|
85
|
-
|
86
|
-
</ul>
|
87
|
-
</div>
|
88
|
-
|
89
|
-
</div>
|
90
|
-
</nav>
|
91
|
-
|
92
|
-
<main role="main" aria-labelledby="class-NEAT::Evolver::CritterOp">
|
93
|
-
<h1 id="class-NEAT::Evolver::CritterOp" class="class">
|
94
|
-
class NEAT::Evolver::CritterOp
|
95
|
-
</h1>
|
96
|
-
|
97
|
-
<section class="description">
|
98
|
-
|
99
|
-
<p>A set of <a href="../Critter.html">Critter</a> Genotype operators.</p>
|
100
|
-
|
101
|
-
</section>
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
<section id="5Buntitled-5D" class="documentation-section">
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
|
117
|
-
<header>
|
118
|
-
<h3>Public Class Methods</h3>
|
119
|
-
</header>
|
120
|
-
|
121
|
-
|
122
|
-
<div id="method-c-new" class="method-detail ">
|
123
|
-
|
124
|
-
<div class="method-heading">
|
125
|
-
<span class="method-name">new</span><span
|
126
|
-
class="method-args">(evol)</span>
|
127
|
-
|
128
|
-
<span class="method-click-advice">click to toggle source</span>
|
129
|
-
|
130
|
-
</div>
|
131
|
-
|
132
|
-
|
133
|
-
<div class="method-description">
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
<div class="method-calls-super">
|
139
|
-
Calls superclass method
|
140
|
-
|
141
|
-
</div>
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
<div class="method-source-code" id="new-source">
|
146
|
-
<pre><span class="ruby-comment"># File lib/rubyneat/evolver.rb, line 254</span>
|
147
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">evol</span>)
|
148
|
-
<span class="ruby-keyword">super</span> <span class="ruby-identifier">evol</span>.<span class="ruby-identifier">controller</span>
|
149
|
-
<span class="ruby-ivar">@evolver</span> = <span class="ruby-identifier">evol</span>
|
150
|
-
<span class="ruby-ivar">@npop</span> = <span class="ruby-identifier">evol</span>.<span class="ruby-identifier">npop</span>
|
151
|
-
<span class="ruby-keyword">end</span></pre>
|
152
|
-
</div>
|
153
|
-
|
154
|
-
</div>
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
</div>
|
160
|
-
|
161
|
-
|
162
|
-
</section>
|
163
|
-
|
164
|
-
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
|
165
|
-
<header>
|
166
|
-
<h3>Public Instance Methods</h3>
|
167
|
-
</header>
|
168
|
-
|
169
|
-
|
170
|
-
<div id="method-i-add_gene-21" class="method-detail ">
|
171
|
-
|
172
|
-
<div class="method-heading">
|
173
|
-
<span class="method-name">add_gene!</span><span
|
174
|
-
class="method-args">(crit)</span>
|
175
|
-
|
176
|
-
<span class="method-click-advice">click to toggle source</span>
|
177
|
-
|
178
|
-
</div>
|
179
|
-
|
180
|
-
|
181
|
-
<div class="method-description">
|
182
|
-
|
183
|
-
<h1 id="method-i-add_gene-21-label-Add+a+gene+to+the+genome">Add a gene to the genome<span><a href="#method-i-add_gene-21-label-Add+a+gene+to+the+genome">¶</a> <a href="#documentation">↑</a></span></h1>
|
184
|
-
|
185
|
-
<pre>Unlike adding a new neuron, adding a new gene
|
186
|
-
could result in a circular dependency. If so,
|
187
|
-
and if recurrency is switched off, we must detect
|
188
|
-
this condition and switch off the offending neurons.
|
189
|
-
|
190
|
-
Obviously, this might result in a loss of functionality, but
|
191
|
-
oh well.
|
192
|
-
|
193
|
-
An easy and obvious check is to make sure we don't
|
194
|
-
accept any inputs from output neurons, and we don't
|
195
|
-
do any outputs to input neurons.
|
196
|
-
|
197
|
-
Constructs for handling recurrency are present in Expressor.</pre>
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
<div class="method-source-code" id="add_gene-21-source">
|
203
|
-
<pre><span class="ruby-comment"># File lib/rubyneat/evolver.rb, line 290</span>
|
204
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">add_gene!</span>(<span class="ruby-identifier">crit</span>)
|
205
|
-
<span class="ruby-identifier">n1</span> = <span class="ruby-identifier">crit</span>.<span class="ruby-identifier">genotype</span>.<span class="ruby-identifier">neurons</span>.<span class="ruby-identifier">values</span>.<span class="ruby-identifier">sample</span> <span class="ruby-comment"># input</span>
|
206
|
-
<span class="ruby-identifier">n2</span> = <span class="ruby-identifier">crit</span>.<span class="ruby-identifier">genotype</span>.<span class="ruby-identifier">neurons</span>.<span class="ruby-identifier">values</span>.<span class="ruby-identifier">sample</span> <span class="ruby-comment"># output</span>
|
207
|
-
|
208
|
-
<span class="ruby-comment"># Sanity checks!</span>
|
209
|
-
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">n1</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">n2</span> <span class="ruby-keyword">or</span> <span class="ruby-identifier">n1</span>.<span class="ruby-identifier">output?</span> <span class="ruby-keyword">or</span> <span class="ruby-identifier">n2</span>.<span class="ruby-identifier">input?</span>
|
210
|
-
<span class="ruby-identifier">gene</span> = <span class="ruby-constant">Critter</span><span class="ruby-operator">::</span><span class="ruby-constant">Genotype</span><span class="ruby-operator">::</span><span class="ruby-constant">Gene</span>[<span class="ruby-identifier">crit</span>.<span class="ruby-identifier">genotype</span>, <span class="ruby-identifier">n1</span>.<span class="ruby-identifier">name</span>, <span class="ruby-identifier">n2</span>.<span class="ruby-identifier">name</span>, <span class="ruby-constant">NEAT</span><span class="ruby-operator">::</span><span class="ruby-identifier">controller</span>.<span class="ruby-identifier">gaussian</span>]
|
211
|
-
<span class="ruby-identifier">crit</span>.<span class="ruby-identifier">genotype</span>.<span class="ruby-identifier">add_genes</span> <span class="ruby-identifier">gene</span>
|
212
|
-
<span class="ruby-identifier">log</span>.<span class="ruby-identifier">debug</span> <span class="ruby-node">"add_gene! Added gene #{gene}(#{n1.name} -> #{n2.name}) to #{crit}"</span>
|
213
|
-
<span class="ruby-keyword">end</span>
|
214
|
-
<span class="ruby-keyword">end</span></pre>
|
215
|
-
</div>
|
216
|
-
|
217
|
-
</div>
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
</div>
|
223
|
-
|
224
|
-
|
225
|
-
<div id="method-i-add_neuron-21" class="method-detail ">
|
226
|
-
|
227
|
-
<div class="method-heading">
|
228
|
-
<span class="method-name">add_neuron!</span><span
|
229
|
-
class="method-args">(crit)</span>
|
230
|
-
|
231
|
-
<span class="method-click-advice">click to toggle source</span>
|
232
|
-
|
233
|
-
</div>
|
234
|
-
|
235
|
-
|
236
|
-
<div class="method-description">
|
237
|
-
|
238
|
-
<h1 id="method-i-add_neuron-21-label-Add+a+neuron+to+given+critter">Add a neuron to given critter<span><a href="#method-i-add_neuron-21-label-Add+a+neuron+to+given+critter">¶</a> <a href="#documentation">↑</a></span></h1>
|
239
|
-
|
240
|
-
<pre>Here, we add a neuron by randomly picking a
|
241
|
-
gene, and split it into two genes with an intervening
|
242
|
-
neuron. The old gene is not replaced, but disabled. 2 new genes are
|
243
|
-
created along with the new neuron.</pre>
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
<div class="method-source-code" id="add_neuron-21-source">
|
249
|
-
<pre><span class="ruby-comment"># File lib/rubyneat/evolver.rb, line 265</span>
|
250
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">add_neuron!</span>(<span class="ruby-identifier">crit</span>)
|
251
|
-
<span class="ruby-identifier">gene</span> = <span class="ruby-identifier">crit</span>.<span class="ruby-identifier">genotype</span>.<span class="ruby-identifier">genes</span>.<span class="ruby-identifier">values</span>.<span class="ruby-identifier">sample</span>
|
252
|
-
<span class="ruby-identifier">neu</span> = <span class="ruby-identifier">controller</span>.<span class="ruby-identifier">neural_hidden</span>.<span class="ruby-identifier">values</span>.<span class="ruby-identifier">sample</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">controller</span>)
|
253
|
-
<span class="ruby-identifier">g1</span> = <span class="ruby-constant">Critter</span><span class="ruby-operator">::</span><span class="ruby-constant">Genotype</span><span class="ruby-operator">::</span><span class="ruby-constant">Gene</span>[<span class="ruby-identifier">crit</span>.<span class="ruby-identifier">genotype</span>, <span class="ruby-identifier">gene</span>.<span class="ruby-identifier">in_neuron</span>, <span class="ruby-identifier">neu</span>.<span class="ruby-identifier">name</span>, <span class="ruby-identifier">gene</span>.<span class="ruby-identifier">weight</span>]
|
254
|
-
<span class="ruby-identifier">g2</span> = <span class="ruby-constant">Critter</span><span class="ruby-operator">::</span><span class="ruby-constant">Genotype</span><span class="ruby-operator">::</span><span class="ruby-constant">Gene</span>[<span class="ruby-identifier">crit</span>.<span class="ruby-identifier">genotype</span>, <span class="ruby-identifier">neu</span>.<span class="ruby-identifier">name</span>, <span class="ruby-identifier">gene</span>.<span class="ruby-identifier">out_neuron</span>, <span class="ruby-identifier">gene</span>.<span class="ruby-identifier">weight</span>]
|
255
|
-
<span class="ruby-identifier">gene</span>.<span class="ruby-identifier">enabled</span> = <span class="ruby-keyword">false</span>
|
256
|
-
<span class="ruby-identifier">crit</span>.<span class="ruby-identifier">genotype</span>.<span class="ruby-identifier">add_neurons</span> <span class="ruby-identifier">neu</span>
|
257
|
-
<span class="ruby-identifier">crit</span>.<span class="ruby-identifier">genotype</span>.<span class="ruby-identifier">add_genes</span> <span class="ruby-identifier">g1</span>, <span class="ruby-identifier">g2</span>
|
258
|
-
<span class="ruby-identifier">log</span>.<span class="ruby-identifier">debug</span> <span class="ruby-node">"add_neuron!: neu #{neu}, g1 #{g1}, g2 #{g2}"</span>
|
259
|
-
<span class="ruby-keyword">end</span></pre>
|
260
|
-
</div>
|
261
|
-
|
262
|
-
</div>
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
</div>
|
268
|
-
|
269
|
-
|
270
|
-
<div id="method-i-disable_gene-21" class="method-detail ">
|
271
|
-
|
272
|
-
<div class="method-heading">
|
273
|
-
<span class="method-name">disable_gene!</span><span
|
274
|
-
class="method-args">(crit)</span>
|
275
|
-
|
276
|
-
<span class="method-click-advice">click to toggle source</span>
|
277
|
-
|
278
|
-
</div>
|
279
|
-
|
280
|
-
|
281
|
-
<div class="method-description">
|
282
|
-
|
283
|
-
<p>Pick an enabled gene at random and disable it.</p>
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
<div class="method-source-code" id="disable_gene-21-source">
|
289
|
-
<pre><span class="ruby-comment"># File lib/rubyneat/evolver.rb, line 303</span>
|
290
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">disable_gene!</span>(<span class="ruby-identifier">crit</span>)
|
291
|
-
<span class="ruby-identifier">gene</span> = <span class="ruby-identifier">crit</span>.<span class="ruby-identifier">genotype</span>.<span class="ruby-identifier">genes</span>.<span class="ruby-identifier">values</span>.<span class="ruby-identifier">reject</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">gene</span><span class="ruby-operator">|</span> <span class="ruby-identifier">gene</span>.<span class="ruby-identifier">disabled?</span> }.<span class="ruby-identifier">sample</span>
|
292
|
-
<span class="ruby-identifier">gene</span>.<span class="ruby-identifier">enabled</span> = <span class="ruby-keyword">false</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">gene</span>.<span class="ruby-identifier">nil?</span>
|
293
|
-
<span class="ruby-keyword">end</span></pre>
|
294
|
-
</div>
|
295
|
-
|
296
|
-
</div>
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
</div>
|
302
|
-
|
303
|
-
|
304
|
-
<div id="method-i-reenable_gene-21" class="method-detail ">
|
305
|
-
|
306
|
-
<div class="method-heading">
|
307
|
-
<span class="method-name">reenable_gene!</span><span
|
308
|
-
class="method-args">(crit)</span>
|
309
|
-
|
310
|
-
<span class="method-click-advice">click to toggle source</span>
|
311
|
-
|
312
|
-
</div>
|
313
|
-
|
314
|
-
|
315
|
-
<div class="method-description">
|
316
|
-
|
317
|
-
<p>Pick a disabled gene at random and reenable it.</p>
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
<div class="method-source-code" id="reenable_gene-21-source">
|
323
|
-
<pre><span class="ruby-comment"># File lib/rubyneat/evolver.rb, line 309</span>
|
324
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">reenable_gene!</span>(<span class="ruby-identifier">crit</span>)
|
325
|
-
<span class="ruby-identifier">gene</span> = <span class="ruby-identifier">crit</span>.<span class="ruby-identifier">genotype</span>.<span class="ruby-identifier">genes</span>.<span class="ruby-identifier">values</span>.<span class="ruby-identifier">reject</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">gene</span><span class="ruby-operator">|</span> <span class="ruby-identifier">gene</span>.<span class="ruby-identifier">enabled?</span> }.<span class="ruby-identifier">sample</span>
|
326
|
-
<span class="ruby-identifier">gene</span>.<span class="ruby-identifier">enabled</span> = <span class="ruby-keyword">true</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">gene</span>.<span class="ruby-identifier">nil?</span>
|
327
|
-
<span class="ruby-keyword">end</span></pre>
|
328
|
-
</div>
|
329
|
-
|
330
|
-
</div>
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
</div>
|
336
|
-
|
337
|
-
|
338
|
-
</section>
|
339
|
-
|
340
|
-
</section>
|
341
|
-
</main>
|
342
|
-
|
343
|
-
|
344
|
-
<footer id="validator-badges" role="contentinfo">
|
345
|
-
<p><a href="http://validator.w3.org/check/referer">Validate</a>
|
346
|
-
<p>Generated by <a href="http://rdoc.rubyforge.org">RDoc</a> 4.1.1.
|
347
|
-
<p>Based on <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
|
348
|
-
</footer>
|
349
|
-
|
data/rdoc/NEAT/Expressor.html
DELETED
@@ -1,402 +0,0 @@
|
|
1
|
-
<!DOCTYPE html>
|
2
|
-
|
3
|
-
<html>
|
4
|
-
<head>
|
5
|
-
<meta charset="UTF-8">
|
6
|
-
|
7
|
-
<title>class NEAT::Expressor - rubyneat 0.3.4</title>
|
8
|
-
|
9
|
-
<link href="../fonts.css" rel="stylesheet">
|
10
|
-
<link href="../rdoc.css" rel="stylesheet">
|
11
|
-
|
12
|
-
<script type="text/javascript">
|
13
|
-
var rdoc_rel_prefix = "../";
|
14
|
-
</script>
|
15
|
-
|
16
|
-
<script src="../js/jquery.js"></script>
|
17
|
-
<script src="../js/navigation.js"></script>
|
18
|
-
<script src="../js/search_index.js"></script>
|
19
|
-
<script src="../js/search.js"></script>
|
20
|
-
<script src="../js/searcher.js"></script>
|
21
|
-
<script src="../js/darkfish.js"></script>
|
22
|
-
|
23
|
-
|
24
|
-
<body id="top" role="document" class="class">
|
25
|
-
<nav role="navigation">
|
26
|
-
<div id="project-navigation">
|
27
|
-
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
|
28
|
-
<h2>
|
29
|
-
<a href="../index.html" rel="home">Home</a>
|
30
|
-
</h2>
|
31
|
-
|
32
|
-
<div id="table-of-contents-navigation">
|
33
|
-
<a href="../table_of_contents.html#pages">Pages</a>
|
34
|
-
<a href="../table_of_contents.html#classes">Classes</a>
|
35
|
-
<a href="../table_of_contents.html#methods">Methods</a>
|
36
|
-
</div>
|
37
|
-
</div>
|
38
|
-
|
39
|
-
<div id="search-section" role="search" class="project-section initially-hidden">
|
40
|
-
<form action="#" method="get" accept-charset="utf-8">
|
41
|
-
<div id="search-field-wrapper">
|
42
|
-
<input id="search-field" role="combobox" aria-label="Search"
|
43
|
-
aria-autocomplete="list" aria-controls="search-results"
|
44
|
-
type="text" name="search" placeholder="Search" spellcheck="false"
|
45
|
-
title="Type to search, Up and Down to navigate, Enter to load">
|
46
|
-
</div>
|
47
|
-
|
48
|
-
<ul id="search-results" aria-label="Search Results"
|
49
|
-
aria-busy="false" aria-expanded="false"
|
50
|
-
aria-atomic="false" class="initially-hidden"></ul>
|
51
|
-
</form>
|
52
|
-
</div>
|
53
|
-
|
54
|
-
</div>
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
<div id="class-metadata">
|
59
|
-
|
60
|
-
<div id="parent-class-section" class="nav-section">
|
61
|
-
<h3>Parent</h3>
|
62
|
-
|
63
|
-
|
64
|
-
<p class="link">Operator
|
65
|
-
|
66
|
-
</div>
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
<!-- Method Quickref -->
|
71
|
-
<div id="method-list-section" class="nav-section">
|
72
|
-
<h3>Methods</h3>
|
73
|
-
|
74
|
-
<ul class="link-list" role="directory">
|
75
|
-
|
76
|
-
<li class="calls-super" ><a href="#method-c-new">::new</a>
|
77
|
-
|
78
|
-
<li ><a href="#method-i-express-21">#express!</a>
|
79
|
-
|
80
|
-
<li ><a href="#method-i-express_expression-21">#express_expression!</a>
|
81
|
-
|
82
|
-
<li ><a href="#method-i-express_genes-21">#express_genes!</a>
|
83
|
-
|
84
|
-
<li ><a href="#method-i-express_neurons-21">#express_neurons!</a>
|
85
|
-
|
86
|
-
</ul>
|
87
|
-
</div>
|
88
|
-
|
89
|
-
</div>
|
90
|
-
</nav>
|
91
|
-
|
92
|
-
<main role="main" aria-labelledby="class-NEAT::Expressor">
|
93
|
-
<h1 id="class-NEAT::Expressor" class="class">
|
94
|
-
class NEAT::Expressor
|
95
|
-
</h1>
|
96
|
-
|
97
|
-
<section class="description">
|
98
|
-
|
99
|
-
<h1 id="class-NEAT::Expressor-label-Basis+of+all+expressors.+">Basis of all expressors. <span><a href="#class-NEAT::Expressor-label-Basis+of+all+expressors.+">¶</a> <a href="#documentation">↑</a></span></h1>
|
100
|
-
|
101
|
-
<pre>Expressor object turn genotypes into phenotypes.</pre>
|
102
|
-
|
103
|
-
</section>
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
<section id="5Buntitled-5D" class="documentation-section">
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
|
119
|
-
<header>
|
120
|
-
<h3>Public Class Methods</h3>
|
121
|
-
</header>
|
122
|
-
|
123
|
-
|
124
|
-
<div id="method-c-new" class="method-detail ">
|
125
|
-
|
126
|
-
<div class="method-heading">
|
127
|
-
<span class="method-name">new</span><span
|
128
|
-
class="method-args">(c)</span>
|
129
|
-
|
130
|
-
<span class="method-click-advice">click to toggle source</span>
|
131
|
-
|
132
|
-
</div>
|
133
|
-
|
134
|
-
|
135
|
-
<div class="method-description">
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
<div class="method-calls-super">
|
141
|
-
Calls superclass method
|
142
|
-
|
143
|
-
</div>
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
<div class="method-source-code" id="new-source">
|
148
|
-
<pre><span class="ruby-comment"># File lib/rubyneat/expressor.rb, line 8</span>
|
149
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">c</span>)
|
150
|
-
<span class="ruby-keyword">super</span>
|
151
|
-
<span class="ruby-keyword">end</span></pre>
|
152
|
-
</div>
|
153
|
-
|
154
|
-
</div>
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
</div>
|
160
|
-
|
161
|
-
|
162
|
-
</section>
|
163
|
-
|
164
|
-
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
|
165
|
-
<header>
|
166
|
-
<h3>Public Instance Methods</h3>
|
167
|
-
</header>
|
168
|
-
|
169
|
-
|
170
|
-
<div id="method-i-express-21" class="method-detail ">
|
171
|
-
|
172
|
-
<div class="method-heading">
|
173
|
-
<span class="method-name">express!</span><span
|
174
|
-
class="method-args">(critter)</span>
|
175
|
-
|
176
|
-
<span class="method-click-advice">click to toggle source</span>
|
177
|
-
|
178
|
-
</div>
|
179
|
-
|
180
|
-
|
181
|
-
<div class="method-description">
|
182
|
-
|
183
|
-
<p>Take the genotype of the critter and create a phenotype from the genotype.</p>
|
184
|
-
|
185
|
-
<p>In the phenotype, it creates a function called stimulate(), which is called
|
186
|
-
with the input parameters and returns a response in the form of a response
|
187
|
-
hash (which corresponds directly to the output neurons).</p>
|
188
|
-
|
189
|
-
<p>This implementation assumes an acyclic graph (feed forward) and cannot
|
190
|
-
handle cycles at all. Later we may fix this or create a type of <a
|
191
|
-
href="Expressor.html">Expressor</a> that can.</p>
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
<div class="method-source-code" id="express-21-source">
|
197
|
-
<pre><span class="ruby-comment"># File lib/rubyneat/expressor.rb, line 23</span>
|
198
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">express!</span>(<span class="ruby-identifier">critter</span>)
|
199
|
-
<span class="ruby-identifier">critter</span>.<span class="ruby-identifier">ready_for_expression!</span>
|
200
|
-
<span class="ruby-identifier">express_neurons!</span> <span class="ruby-identifier">critter</span>
|
201
|
-
<span class="ruby-identifier">express_genes!</span> <span class="ruby-identifier">critter</span>
|
202
|
-
<span class="ruby-identifier">express_expression!</span> <span class="ruby-identifier">critter</span>
|
203
|
-
<span class="ruby-keyword">end</span></pre>
|
204
|
-
</div>
|
205
|
-
|
206
|
-
</div>
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
</div>
|
212
|
-
|
213
|
-
|
214
|
-
</section>
|
215
|
-
|
216
|
-
<section id="protected-instance-5Buntitled-5D-method-details" class="method-section">
|
217
|
-
<header>
|
218
|
-
<h3>Protected Instance Methods</h3>
|
219
|
-
</header>
|
220
|
-
|
221
|
-
|
222
|
-
<div id="method-i-express_expression-21" class="method-detail ">
|
223
|
-
|
224
|
-
<div class="method-heading">
|
225
|
-
<span class="method-name">express_expression!</span><span
|
226
|
-
class="method-args">(critter)</span>
|
227
|
-
|
228
|
-
<span class="method-click-advice">click to toggle source</span>
|
229
|
-
|
230
|
-
</div>
|
231
|
-
|
232
|
-
|
233
|
-
<div class="method-description">
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
<div class="method-source-code" id="express_expression-21-source">
|
241
|
-
<pre><span class="ruby-comment"># File lib/rubyneat/expressor.rb, line 106</span>
|
242
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">express_expression!</span>(<span class="ruby-identifier">critter</span>)
|
243
|
-
<span class="ruby-identifier">critter</span>.<span class="ruby-identifier">phenotype</span>.<span class="ruby-identifier">express!</span>
|
244
|
-
<span class="ruby-keyword">end</span></pre>
|
245
|
-
</div>
|
246
|
-
|
247
|
-
</div>
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
</div>
|
253
|
-
|
254
|
-
|
255
|
-
<div id="method-i-express_genes-21" class="method-detail ">
|
256
|
-
|
257
|
-
<div class="method-heading">
|
258
|
-
<span class="method-name">express_genes!</span><span
|
259
|
-
class="method-args">(critter)</span>
|
260
|
-
|
261
|
-
<span class="method-click-advice">click to toggle source</span>
|
262
|
-
|
263
|
-
</div>
|
264
|
-
|
265
|
-
|
266
|
-
<div class="method-description">
|
267
|
-
|
268
|
-
<h1 id="method-i-express_genes-21-label-Expression+of+the+Genotype+as+a+Phenotype.">Expression of the Genotype as a Phenotype.<span><a href="#method-i-express_genes-21-label-Expression+of+the+Genotype+as+a+Phenotype.">¶</a> <a href="#documentation">↑</a></span></h1>
|
269
|
-
|
270
|
-
<pre>What this really does is create the function that calls
|
271
|
-
all the functions.
|
272
|
-
|
273
|
-
This makes use of the Graph plugin for Neurons.</pre>
|
274
|
-
|
275
|
-
<h1 id="method-i-express_genes-21-label-Recurrency+and+Expression+of+Genes">Recurrency and Expression of Genes<span><a href="#method-i-express_genes-21-label-Recurrency+and+Expression+of+Genes">¶</a> <a href="#documentation">↑</a></span></h1>
|
276
|
-
|
277
|
-
<pre>A simple approach has been taken here to allow for recurrency in
|
278
|
-
our Critters. Basically, a looping construct has been put around the
|
279
|
-
activation of the neurons so that recurrency can be done in 2 ways:
|
280
|
-
1) Via yielding, thus treating the stimulus function as a enumerable.
|
281
|
-
In this approach, one would call the Critter's phenotype with a block of
|
282
|
-
code that would accept the output of the net. It would return 'true' to
|
283
|
-
continue the iteration, or 'false' to end the iteration.
|
284
|
-
2) Via multiple calls to the Pheontype instance:
|
285
|
-
Since the value of the prior activation is preserved in the instance variables
|
286
|
-
of the phenotype, subsequent activations will iterate the network.</pre>
|
287
|
-
|
288
|
-
<h2 id="method-i-express_genes-21-label-Cavets+to+recurrent+activation">Cavets to recurrent activation<span><a href="#method-i-express_genes-21-label-Cavets+to+recurrent+activation">¶</a> <a href="#documentation">↑</a></span></h2>
|
289
|
-
|
290
|
-
<pre>For (2) above, the input neurons would be overwritten on each subsequent call.
|
291
|
-
Since we do not allow recurrent connections to input neurons anyway, this should
|
292
|
-
not be an issue, though we may allow for this at a future date.</pre>
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
<div class="method-source-code" id="express_genes-21-source">
|
298
|
-
<pre><span class="ruby-comment"># File lib/rubyneat/expressor.rb, line 58</span>
|
299
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">express_genes!</span>(<span class="ruby-identifier">critter</span>)
|
300
|
-
<span class="ruby-identifier">g</span> = <span class="ruby-identifier">critter</span>.<span class="ruby-identifier">genotype</span>
|
301
|
-
<span class="ruby-identifier">p</span> = <span class="ruby-identifier">critter</span>.<span class="ruby-identifier">phenotype</span>
|
302
|
-
|
303
|
-
<span class="ruby-identifier">init_code</span> = <span class="ruby-string">"\n def initialize_neurons\n"</span>
|
304
|
-
|
305
|
-
<span class="ruby-comment"># 'stimulate' function call (really should be 'activate', but we'll reserve this for something else)</span>
|
306
|
-
<span class="ruby-identifier">p</span>.<span class="ruby-identifier">code</span> <span class="ruby-operator">+=</span> <span class="ruby-node">" def #{NEAT::STIMULUS}("</span>
|
307
|
-
<span class="ruby-identifier">p</span>.<span class="ruby-identifier">code</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">g</span>.<span class="ruby-identifier">neural_inputs</span>.<span class="ruby-identifier">reject</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">sym</span><span class="ruby-operator">|</span> <span class="ruby-identifier">g</span>.<span class="ruby-identifier">neural_inputs</span>[<span class="ruby-identifier">sym</span>].<span class="ruby-identifier">bias?</span> }.<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">sym</span>, <span class="ruby-identifier">neu</span><span class="ruby-operator">|</span> <span class="ruby-identifier">sym</span>}.<span class="ruby-identifier">join</span>(<span class="ruby-string">", "</span>)
|
308
|
-
<span class="ruby-identifier">p</span>.<span class="ruby-identifier">code</span> <span class="ruby-operator">+=</span> <span class="ruby-string">")\n"</span>
|
309
|
-
|
310
|
-
<span class="ruby-comment"># Assign all the parameters to instance variables.</span>
|
311
|
-
<span class="ruby-identifier">p</span>.<span class="ruby-identifier">code</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">g</span>.<span class="ruby-identifier">neural_inputs</span>.<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">sym</span>, <span class="ruby-identifier">neu</span><span class="ruby-operator">|</span> <span class="ruby-node">" @#{sym} = #{sym}\n"</span>}.<span class="ruby-identifier">join</span>(<span class="ruby-string">""</span>)
|
312
|
-
<span class="ruby-identifier">p</span>.<span class="ruby-identifier">code</span> <span class="ruby-operator">+=</span> <span class="ruby-string">" loop {\n"</span>
|
313
|
-
|
314
|
-
<span class="ruby-comment"># Resolve the order in which we shall call the neurons</span>
|
315
|
-
<span class="ruby-comment"># TODO handle the dependency list if it comes back!</span>
|
316
|
-
<span class="ruby-ivar">@resolved</span>, <span class="ruby-ivar">@dependencies</span> = <span class="ruby-constant">NEAT</span><span class="ruby-operator">::</span><span class="ruby-constant">Graph</span><span class="ruby-operator">::</span><span class="ruby-constant">DependencyResolver</span>[<span class="ruby-identifier">g</span>.<span class="ruby-identifier">neural_outputs</span>.<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">s</span>, <span class="ruby-identifier">neu</span><span class="ruby-operator">|</span> <span class="ruby-identifier">neu</span>}].<span class="ruby-identifier">resolve</span>
|
317
|
-
|
318
|
-
<span class="ruby-comment"># And now call them in that order!</span>
|
319
|
-
<span class="ruby-ivar">@resolved</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">neu</span><span class="ruby-operator">|</span>
|
320
|
-
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">neu</span>.<span class="ruby-identifier">input?</span>
|
321
|
-
<span class="ruby-identifier">init_code</span> <span class="ruby-operator">+=</span> <span class="ruby-node">" @#{neu.name} = 0\n"</span>
|
322
|
-
<span class="ruby-keyword">if</span> <span class="ruby-identifier">g</span>.<span class="ruby-identifier">neural_gene_map</span>.<span class="ruby-identifier">member?</span> <span class="ruby-identifier">neu</span>.<span class="ruby-identifier">name</span>
|
323
|
-
<span class="ruby-identifier">p</span>.<span class="ruby-identifier">code</span> <span class="ruby-operator">+=</span> <span class="ruby-node">" @#{neu.name} = #{neu.name}("</span>
|
324
|
-
<span class="ruby-identifier">p</span>.<span class="ruby-identifier">code</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">g</span>.<span class="ruby-identifier">neural_gene_map</span>[<span class="ruby-identifier">neu</span>.<span class="ruby-identifier">name</span>].<span class="ruby-identifier">map</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">gene</span><span class="ruby-operator">|</span>
|
325
|
-
<span class="ruby-string">"%s * @%s"</span> <span class="ruby-operator">%</span> [<span class="ruby-identifier">gene</span>.<span class="ruby-identifier">weight</span>, <span class="ruby-identifier">gene</span>.<span class="ruby-identifier">in_neuron</span>]
|
326
|
-
}.<span class="ruby-identifier">join</span>(<span class="ruby-string">", "</span>) <span class="ruby-operator">+</span> <span class="ruby-string">")\n"</span>
|
327
|
-
<span class="ruby-keyword">else</span>
|
328
|
-
<span class="ruby-identifier">g</span>.<span class="ruby-identifier">dangling_neurons</span> = <span class="ruby-keyword">true</span>
|
329
|
-
<span class="ruby-identifier">log</span>.<span class="ruby-identifier">debug</span> <span class="ruby-node">"Dangling neuron in critter #{critter} -- #{neu}"</span>
|
330
|
-
<span class="ruby-keyword">end</span>
|
331
|
-
<span class="ruby-keyword">end</span>
|
332
|
-
<span class="ruby-keyword">end</span>
|
333
|
-
<span class="ruby-identifier">init_code</span> <span class="ruby-operator">+=</span> <span class="ruby-string">" end\n"</span>
|
334
|
-
|
335
|
-
<span class="ruby-comment"># And now return the result as a vector of outputs.</span>
|
336
|
-
<span class="ruby-identifier">p</span>.<span class="ruby-identifier">code</span> <span class="ruby-operator">+=</span> <span class="ruby-string">" @_outvec = ["</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">g</span>.<span class="ruby-identifier">neural_outputs</span>.<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">sym</span>, <span class="ruby-identifier">neu</span><span class="ruby-operator">|</span> <span class="ruby-node">"@#{sym}"</span>}.<span class="ruby-identifier">join</span>(<span class="ruby-string">','</span>) <span class="ruby-operator">+</span> <span class="ruby-string">"]\n"</span>
|
337
|
-
<span class="ruby-identifier">p</span>.<span class="ruby-identifier">code</span> <span class="ruby-operator">+=</span> <span class="ruby-string">" break unless block_given?\n"</span>
|
338
|
-
<span class="ruby-identifier">p</span>.<span class="ruby-identifier">code</span> <span class="ruby-operator">+=</span> <span class="ruby-string">" break unless yield @_outvec\n"</span>
|
339
|
-
<span class="ruby-identifier">p</span>.<span class="ruby-identifier">code</span> <span class="ruby-operator">+=</span> <span class="ruby-string">" }\n"</span>
|
340
|
-
<span class="ruby-identifier">p</span>.<span class="ruby-identifier">code</span> <span class="ruby-operator">+=</span> <span class="ruby-string">" @_outvec\n"</span>
|
341
|
-
<span class="ruby-identifier">p</span>.<span class="ruby-identifier">code</span> <span class="ruby-operator">+=</span> <span class="ruby-string">" end\n"</span>
|
342
|
-
<span class="ruby-identifier">p</span>.<span class="ruby-identifier">code</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">init_code</span>
|
343
|
-
<span class="ruby-identifier">log</span>.<span class="ruby-identifier">debug</span> <span class="ruby-identifier">p</span>.<span class="ruby-identifier">code</span>
|
344
|
-
<span class="ruby-identifier">p</span>.<span class="ruby-identifier">express!</span>
|
345
|
-
<span class="ruby-keyword">end</span></pre>
|
346
|
-
</div>
|
347
|
-
|
348
|
-
</div>
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
</div>
|
354
|
-
|
355
|
-
|
356
|
-
<div id="method-i-express_neurons-21" class="method-detail ">
|
357
|
-
|
358
|
-
<div class="method-heading">
|
359
|
-
<span class="method-name">express_neurons!</span><span
|
360
|
-
class="method-args">(critter)</span>
|
361
|
-
|
362
|
-
<span class="method-click-advice">click to toggle source</span>
|
363
|
-
|
364
|
-
</div>
|
365
|
-
|
366
|
-
|
367
|
-
<div class="method-description">
|
368
|
-
|
369
|
-
<p>Express Neurons as methods</p>
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
<div class="method-source-code" id="express_neurons-21-source">
|
375
|
-
<pre><span class="ruby-comment"># File lib/rubyneat/expressor.rb, line 32</span>
|
376
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">express_neurons!</span>(<span class="ruby-identifier">critter</span>)
|
377
|
-
<span class="ruby-identifier">critter</span>.<span class="ruby-identifier">genotype</span>.<span class="ruby-identifier">neurons</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">name</span>, <span class="ruby-identifier">neuron</span><span class="ruby-operator">|</span>
|
378
|
-
<span class="ruby-identifier">neuron</span>.<span class="ruby-identifier">express</span>(<span class="ruby-identifier">critter</span>.<span class="ruby-identifier">phenotype</span>) <span class="ruby-keyword">unless</span> <span class="ruby-identifier">neuron</span>.<span class="ruby-identifier">input?</span> <span class="ruby-keyword">and</span> <span class="ruby-keyword">not</span> <span class="ruby-identifier">neuron</span>.<span class="ruby-identifier">bias?</span>
|
379
|
-
<span class="ruby-keyword">end</span>
|
380
|
-
<span class="ruby-keyword">end</span></pre>
|
381
|
-
</div>
|
382
|
-
|
383
|
-
</div>
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
</div>
|
389
|
-
|
390
|
-
|
391
|
-
</section>
|
392
|
-
|
393
|
-
</section>
|
394
|
-
</main>
|
395
|
-
|
396
|
-
|
397
|
-
<footer id="validator-badges" role="contentinfo">
|
398
|
-
<p><a href="http://validator.w3.org/check/referer">Validate</a>
|
399
|
-
<p>Generated by <a href="http://rdoc.rubyforge.org">RDoc</a> 4.1.1.
|
400
|
-
<p>Based on <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
|
401
|
-
</footer>
|
402
|
-
|