rubyneat 0.3.5.alpha.2
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 +7 -0
- data/.directory +4 -0
- data/.gitignore.orig +20 -0
- data/.idea/.name +1 -0
- data/.idea/.rakeTasks +7 -0
- data/.idea/dictionaries/trader.xml +3 -0
- data/.idea/encodings.xml +5 -0
- data/.idea/misc.xml +5 -0
- data/.idea/modules.xml +9 -0
- data/.idea/rubyneat.iml +197 -0
- data/.idea/runConfigurations/invpend_neat.xml +26 -0
- data/.idea/runConfigurations/sigdebug_neat.xml +24 -0
- data/.idea/runConfigurations/xor_neat.xml +26 -0
- data/.idea/runConfigurations/xordebug_neat.xml +24 -0
- data/.idea/runConfigurations/xorsin_neat.xml +24 -0
- data/.idea/scopes/scope_settings.xml +5 -0
- data/.idea/vcs.xml +7 -0
- data/.idea/workspace.xml +1124 -0
- data/.semver +5 -0
- data/.yardoc/checksums +11 -0
- data/.yardoc/object_types +0 -0
- data/.yardoc/objects/root.dat +0 -0
- data/.yardoc/proxy_types +0 -0
- data/Gemfile +32 -0
- data/Gemfile.lock +135 -0
- data/Gemfile.lock.orig +147 -0
- data/Guardfile +8 -0
- data/Rakefile +61 -0
- data/bin/neat +83 -0
- data/config/application.rb +5 -0
- data/doc/ControllerPoint.html +125 -0
- data/doc/CuteA.html +286 -0
- data/doc/CuteB.html +297 -0
- data/doc/DSL.html +883 -0
- data/doc/NEAT/BasicNeuronTypes/BiasNeuron.html +518 -0
- data/doc/NEAT/BasicNeuronTypes/CosineNeuron.html +274 -0
- data/doc/NEAT/BasicNeuronTypes/InputNeuron.html +366 -0
- data/doc/NEAT/BasicNeuronTypes/SigmoidNeuron.html +275 -0
- data/doc/NEAT/BasicNeuronTypes/SineNeuron.html +274 -0
- data/doc/NEAT/BasicNeuronTypes/TanhNeuron.html +274 -0
- data/doc/NEAT/BasicNeuronTypes.html +136 -0
- data/doc/NEAT/Controller/NeatSettings.html +3985 -0
- data/doc/NEAT/Controller.html +2490 -0
- data/doc/NEAT/Critter/Genotype/Gene.html +979 -0
- data/doc/NEAT/Critter/Genotype.html +1601 -0
- data/doc/NEAT/Critter/Phenotype.html +603 -0
- data/doc/NEAT/Critter.html +1037 -0
- data/doc/NEAT/DSL.html +1255 -0
- data/doc/NEAT/Evaluator.html +420 -0
- data/doc/NEAT/Evolver/CritterOp.html +551 -0
- data/doc/NEAT/Evolver.html +602 -0
- data/doc/NEAT/Expressor.html +327 -0
- data/doc/NEAT/Graph/DependencyResolver.html +478 -0
- data/doc/NEAT/Graph/GraphException.html +123 -0
- data/doc/NEAT/Graph.html +402 -0
- data/doc/NEAT/NeatException.html +123 -0
- data/doc/NEAT/NeatOb.html +567 -0
- data/doc/NEAT/Neuron.html +1067 -0
- data/doc/NEAT/Operator.html +162 -0
- data/doc/NEAT/Population.html +1961 -0
- data/doc/NEAT/Trait.html +169 -0
- data/doc/NEAT.html +588 -0
- data/doc/_index.html +373 -0
- data/doc/class_list.html +54 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +57 -0
- data/doc/css/style.css +339 -0
- data/doc/file_list.html +53 -0
- data/doc/frames.html +26 -0
- data/doc/index.html +373 -0
- data/doc/js/app.js +219 -0
- data/doc/js/full_list.js +178 -0
- data/doc/js/jquery.js +4 -0
- data/doc/method_list.html +1415 -0
- data/doc/top-level-namespace.html +164 -0
- data/foo/foo_aquarium_example.rb +38 -0
- data/foo/foo_gosu.rb +99 -0
- data/foo/foo_rubygoo.rb +104 -0
- data/foo/foo_sdl.rb +34 -0
- data/foo/icon.png +0 -0
- data/lib/rubyneat/critter.rb +374 -0
- data/lib/rubyneat/default_neat.rb +10 -0
- data/lib/rubyneat/dsl.rb +130 -0
- data/lib/rubyneat/evaluator.rb +51 -0
- data/lib/rubyneat/evolver.rb +315 -0
- data/lib/rubyneat/expressor.rb +110 -0
- data/lib/rubyneat/graph.rb +95 -0
- data/lib/rubyneat/neuron.rb +152 -0
- data/lib/rubyneat/population.rb +227 -0
- data/lib/rubyneat/rubyneat.rb +429 -0
- data/lib/rubyneat.rb +8 -0
- data/neater/invpend_neat.rb +150 -0
- data/neater/rnlib/inverted_pendulum.rb +380 -0
- data/neater/rnlib/xor.rb +10 -0
- data/neater/sigdebug_neat.rb +136 -0
- data/neater/xor_neat.rb +137 -0
- data/neater/xoranalog_neat.rb +138 -0
- data/neater/xorsin_neat.rb +143 -0
- data/projectFilesBackup/.idea/rubyneat.iml +180 -0
- data/public/.directory +4 -0
- 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 +116 -0
- data/rdoc/CuteA.html +177 -0
- data/rdoc/CuteB.html +178 -0
- data/rdoc/DSLSetup.html +177 -0
- data/rdoc/GameTestWindow.html +242 -0
- data/rdoc/GameWindow.html +292 -0
- data/rdoc/Gemfile.html +215 -0
- data/rdoc/Gemfile_lock.html +327 -0
- data/rdoc/GraphTest.html +210 -0
- data/rdoc/Guardfile.html +198 -0
- data/rdoc/InvertedPendulum/Cart.html +668 -0
- data/rdoc/InvertedPendulum/DSL.html +259 -0
- data/rdoc/InvertedPendulum/InvPendWindow.html +402 -0
- data/rdoc/InvertedPendulum.html +198 -0
- data/rdoc/Logger.html +98 -0
- data/rdoc/NEAT/BasicNeuronTypes/BiasNeuron.html +265 -0
- data/rdoc/NEAT/BasicNeuronTypes/CosineNeuron.html +162 -0
- data/rdoc/NEAT/BasicNeuronTypes/InputNeuron.html +206 -0
- data/rdoc/NEAT/BasicNeuronTypes/SigmoidNeuron.html +162 -0
- data/rdoc/NEAT/BasicNeuronTypes/SineNeuron.html +162 -0
- data/rdoc/NEAT/BasicNeuronTypes/TanhNeuron.html +161 -0
- data/rdoc/NEAT/BasicNeuronTypes.html +107 -0
- data/rdoc/NEAT/Controller/NeatSettings.html +880 -0
- data/rdoc/NEAT/Controller.html +729 -0
- data/rdoc/NEAT/Critter/Genotype/Gene.html +457 -0
- data/rdoc/NEAT/Critter/Genotype.html +735 -0
- data/rdoc/NEAT/Critter/Phenotype.html +330 -0
- data/rdoc/NEAT/Critter.html +489 -0
- data/rdoc/NEAT/DSL.html +729 -0
- data/rdoc/NEAT/Evaluator.html +256 -0
- data/rdoc/NEAT/Evolver/CritterOp.html +349 -0
- data/rdoc/NEAT/Evolver.html +891 -0
- data/rdoc/NEAT/Expressor.html +402 -0
- data/rdoc/NEAT/Graph/DependencyResolver.html +291 -0
- data/rdoc/NEAT/Graph/GraphException.html +105 -0
- data/rdoc/NEAT/Graph.html +263 -0
- data/rdoc/NEAT/NeatException.html +105 -0
- data/rdoc/NEAT/NeatOb.html +325 -0
- data/rdoc/NEAT/Neuron.html +481 -0
- data/rdoc/NEAT/Operator.html +109 -0
- data/rdoc/NEAT/Population.html +935 -0
- data/rdoc/NEAT/Trait.html +117 -0
- data/rdoc/NEAT.html +422 -0
- data/rdoc/Object.html +384 -0
- data/rdoc/Phi.html +98 -0
- data/rdoc/Player.html +383 -0
- data/rdoc/Rakefile.html +254 -0
- data/rdoc/RubyNEAT/Application.html +105 -0
- data/rdoc/RubyNEAT.html +98 -0
- data/rdoc/SDL/Event2.html +98 -0
- data/rdoc/SDL.html +98 -0
- data/rdoc/Vector.html +195 -0
- data/rdoc/created.rid +125 -0
- data/rdoc/doc/ControllerPoint_html.html +299 -0
- data/rdoc/doc/CuteA_html.html +438 -0
- data/rdoc/doc/CuteB_html.html +436 -0
- data/rdoc/doc/DSL_html.html +992 -0
- data/rdoc/doc/NEAT/BasicNeuronTypes/BiasNeuron_html.html +617 -0
- data/rdoc/doc/NEAT/BasicNeuronTypes/CosineNeuron_html.html +413 -0
- data/rdoc/doc/NEAT/BasicNeuronTypes/InputNeuron_html.html +498 -0
- data/rdoc/doc/NEAT/BasicNeuronTypes/SigmoidNeuron_html.html +413 -0
- data/rdoc/doc/NEAT/BasicNeuronTypes/SineNeuron_html.html +413 -0
- data/rdoc/doc/NEAT/BasicNeuronTypes/TanhNeuron_html.html +412 -0
- data/rdoc/doc/NEAT/BasicNeuronTypes_html.html +310 -0
- data/rdoc/doc/NEAT/Controller/NeatSettings_html.html +3324 -0
- data/rdoc/doc/NEAT/Controller_html.html +2212 -0
- data/rdoc/doc/NEAT/Critter/Genotype/Gene_html.html +997 -0
- data/rdoc/doc/NEAT/Critter/Genotype_html.html +1556 -0
- data/rdoc/doc/NEAT/Critter/Phenotype_html.html +687 -0
- data/rdoc/doc/NEAT/Critter_html.html +1037 -0
- data/rdoc/doc/NEAT/DSL_html.html +1349 -0
- data/rdoc/doc/NEAT/Evaluator_html.html +556 -0
- data/rdoc/doc/NEAT/Evolver/CritterOp_html.html +690 -0
- data/rdoc/doc/NEAT/Evolver_html.html +677 -0
- data/rdoc/doc/NEAT/Expressor_html.html +468 -0
- data/rdoc/doc/NEAT/Graph/DependencyResolver_html.html +598 -0
- data/rdoc/doc/NEAT/Graph/GraphException_html.html +299 -0
- data/rdoc/doc/NEAT/Graph_html.html +527 -0
- data/rdoc/doc/NEAT/NeatException_html.html +299 -0
- data/rdoc/doc/NEAT/NeatOb_html.html +671 -0
- data/rdoc/doc/NEAT/Neuron_html.html +1095 -0
- data/rdoc/doc/NEAT/Operator_html.html +337 -0
- data/rdoc/doc/NEAT/Population_html.html +1795 -0
- data/rdoc/doc/NEAT/Trait_html.html +344 -0
- data/rdoc/doc/NEAT_html.html +736 -0
- data/rdoc/doc/_index_html.html +559 -0
- data/rdoc/doc/class_list_html.html +369 -0
- data/rdoc/doc/css/common_css.html +188 -0
- data/rdoc/doc/css/full_list_css.html +243 -0
- data/rdoc/doc/css/style_css.html +530 -0
- data/rdoc/doc/file_list_html.html +240 -0
- data/rdoc/doc/frames_html.html +217 -0
- data/rdoc/doc/index_html.html +559 -0
- data/rdoc/doc/js/app_js.html +423 -0
- data/rdoc/doc/js/full_list_js.html +372 -0
- data/rdoc/doc/js/jquery_js.html +1536 -0
- data/rdoc/doc/method_list_html.html +1375 -0
- data/rdoc/doc/top-level-namespace_html.html +317 -0
- 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/fonts.css +167 -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 +282 -0
- data/rdoc/js/darkfish.js +140 -0
- data/rdoc/js/jquery.js +18 -0
- data/rdoc/js/navigation.js +142 -0
- data/rdoc/js/search.js +109 -0
- data/rdoc/js/search_index.js +1 -0
- data/rdoc/js/searcher.js +228 -0
- data/rdoc/rdoc.css +580 -0
- data/rdoc/rubyneat_gemspec.html +387 -0
- data/rdoc/table_of_contents.html +2502 -0
- data/rdoc/xordebug_log.html +170598 -0
- data/rdoc/xorsin_log.html +22569 -0
- data/rubyneat.gemspec +347 -0
- data/rubyneat.gemspec.orig +375 -0
- data/spec/lib/rubyneat/rubyneat_spec.rb +132 -0
- metadata +555 -0
|
@@ -0,0 +1,402 @@
|
|
|
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
|
+
|