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
data/neater/xor_neat.rb
ADDED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
#!/usr/bin/env neat
|
|
2
|
+
require 'rubyneat/dsl'
|
|
3
|
+
require 'xor'
|
|
4
|
+
|
|
5
|
+
include NEAT::DSL
|
|
6
|
+
|
|
7
|
+
#= TEST FOR RubyNEAT
|
|
8
|
+
|
|
9
|
+
# The number of inputs to the xor function
|
|
10
|
+
XOR_INPUTS = 2
|
|
11
|
+
XOR_STATES = 2 ** XOR_INPUTS
|
|
12
|
+
MAX_FIT = XOR_STATES
|
|
13
|
+
ALMOST_FIT = XOR_STATES - 0.5
|
|
14
|
+
|
|
15
|
+
# This defines the controller
|
|
16
|
+
define "XOR System" do
|
|
17
|
+
# Define the IO neurons
|
|
18
|
+
inputs {
|
|
19
|
+
cinv = Hash[(1..XOR_INPUTS).map{|i| [("i%s" % i).to_sym, InputNeuron]}]
|
|
20
|
+
cinv[:bias] = BiasNeuron
|
|
21
|
+
cinv
|
|
22
|
+
}
|
|
23
|
+
outputs out: TanhNeuron
|
|
24
|
+
|
|
25
|
+
# Hidden neuron specification is optional.
|
|
26
|
+
# The name given here is largely meaningless, but may be useful as some sort
|
|
27
|
+
# of unique flag.
|
|
28
|
+
hidden tan: TanhNeuron
|
|
29
|
+
|
|
30
|
+
### Settings
|
|
31
|
+
## General
|
|
32
|
+
hash_on_fitness false
|
|
33
|
+
start_population_size 30
|
|
34
|
+
population_size 30
|
|
35
|
+
max_generations 10000
|
|
36
|
+
max_population_history 10
|
|
37
|
+
|
|
38
|
+
## Evolver probabilities and SDs
|
|
39
|
+
# Perturbations
|
|
40
|
+
mutate_perturb_gene_weights_prob 0.10
|
|
41
|
+
mutate_perturb_gene_weights_sd 0.25
|
|
42
|
+
|
|
43
|
+
# Complete Change of weight
|
|
44
|
+
mutate_change_gene_weights_prob 0.10
|
|
45
|
+
mutate_change_gene_weights_sd 1.00
|
|
46
|
+
|
|
47
|
+
# Adding new neurons and genes
|
|
48
|
+
mutate_add_neuron_prob 0.05
|
|
49
|
+
mutate_add_gene_prob 0.20
|
|
50
|
+
|
|
51
|
+
# Switching genes on and off
|
|
52
|
+
mutate_gene_disable_prob 0.01
|
|
53
|
+
mutate_gene_reenable_prob 0.01
|
|
54
|
+
|
|
55
|
+
interspecies_mate_rate 0.03
|
|
56
|
+
mate_only_prob 0.10 #0.7
|
|
57
|
+
|
|
58
|
+
# Mating
|
|
59
|
+
survival_threshold 0.20 # top % allowed to mate in a species.
|
|
60
|
+
survival_mininum_per_species 4 # for small populations, we need SOMETHING to go on.
|
|
61
|
+
|
|
62
|
+
# Fitness costs
|
|
63
|
+
fitness_cost_per_neuron 0#.00001
|
|
64
|
+
fitness_cost_per_gene 0#.00001
|
|
65
|
+
|
|
66
|
+
# Speciation
|
|
67
|
+
compatibility_threshold 2.5
|
|
68
|
+
disjoint_coefficient 0.6
|
|
69
|
+
excess_coefficient 0.6
|
|
70
|
+
weight_coefficient 0.2
|
|
71
|
+
max_species 20
|
|
72
|
+
dropoff_age 15
|
|
73
|
+
smallest_species 5
|
|
74
|
+
|
|
75
|
+
# Sequencing
|
|
76
|
+
start_sequence_at 0
|
|
77
|
+
end_sequence_at 2 ** XOR_INPUTS - 1
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
evolve do
|
|
81
|
+
# This query shall return a vector result that will serve
|
|
82
|
+
# as the inputs to the critter.
|
|
83
|
+
query { |seq|
|
|
84
|
+
# We'll use the seq to create the xor sequences via
|
|
85
|
+
# the least signficant bits.
|
|
86
|
+
condition_boolean_vector (0 ... XOR_INPUTS).map{|i| (seq & (1 << i)) != 0}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
# Compare the fitness of two critters. We may choose a different ordering
|
|
90
|
+
# here.
|
|
91
|
+
compare {|f1, f2| f2 <=> f1 }
|
|
92
|
+
|
|
93
|
+
# Here we integrate the cost with the fitness.
|
|
94
|
+
cost { |fitvec, cost|
|
|
95
|
+
fit = XOR_STATES - fitvec.reduce {|a,r| a+r} - cost
|
|
96
|
+
$log.debug ">>>>>>> fitvec #{fitvec} => #{fit}, cost #{cost}"
|
|
97
|
+
fit
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
fitness { |vin, vout, seq|
|
|
101
|
+
unless vout == :error
|
|
102
|
+
bin = uncondition_boolean_vector vin
|
|
103
|
+
bout = uncondition_boolean_vector vout
|
|
104
|
+
bactual = [xor(*vin)]
|
|
105
|
+
vactual = condition_boolean_vector bactual
|
|
106
|
+
fit = (bout == bactual) ? 0.00 : 1.00
|
|
107
|
+
#simple_fitness_error(vout, vactual.map{|f| f * 0.50 })
|
|
108
|
+
bfit = (bout == bactual) ? 'T' : 'F'
|
|
109
|
+
$log.debug "(%s) Fitness bin=%s, bout=%s, bactual=%s, vout=%s, fit=%6.3f, seq=%s" % [bfit,
|
|
110
|
+
bin,
|
|
111
|
+
bout,
|
|
112
|
+
bactual,
|
|
113
|
+
vout,
|
|
114
|
+
fit,
|
|
115
|
+
seq]
|
|
116
|
+
fit
|
|
117
|
+
else
|
|
118
|
+
$log.debug "Error on #{vin} [#{seq}]"
|
|
119
|
+
1.0
|
|
120
|
+
end
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
stop_on_fitness {|fitness, c|
|
|
124
|
+
puts "*** Generation Run #{c.generation_num}, best is #{fitness[:best]} ***\n\n"
|
|
125
|
+
fitness[:best] >= ALMOST_FIT
|
|
126
|
+
}
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
report do |rept|
|
|
130
|
+
$log.info "REPORT #{rept.to_yaml}"
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
# The block here is called upon the completion of each generation
|
|
134
|
+
run_engine do |c|
|
|
135
|
+
$log.info "******** Run of generation %s completed, history count %d ********" %
|
|
136
|
+
[c.generation_num, c.population_history.size]
|
|
137
|
+
end
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
#!/usr/bin/env neat
|
|
2
|
+
require 'rubyneat/dsl'
|
|
3
|
+
require 'xor'
|
|
4
|
+
|
|
5
|
+
include NEAT::DSL
|
|
6
|
+
|
|
7
|
+
#= TEST FOR RubyNEAT -- Analog Fitness Vector for XOR
|
|
8
|
+
|
|
9
|
+
# The number of inputs to the xor function
|
|
10
|
+
XOR_INPUTS = 2
|
|
11
|
+
XOR_STATES = 2 ** XOR_INPUTS
|
|
12
|
+
MAX_FIT = XOR_STATES
|
|
13
|
+
ALMOST_FIT = XOR_STATES - 0.3
|
|
14
|
+
|
|
15
|
+
# This defines the controller
|
|
16
|
+
define "XOR Analog Fitness System" do
|
|
17
|
+
# Define the IO neurons
|
|
18
|
+
inputs {
|
|
19
|
+
cinv = Hash[(1..XOR_INPUTS).map{|i| [("i%s" % i).to_sym, InputNeuron]}]
|
|
20
|
+
cinv[:bias] = BiasNeuron
|
|
21
|
+
cinv
|
|
22
|
+
}
|
|
23
|
+
outputs out: TanhNeuron
|
|
24
|
+
|
|
25
|
+
# Hidden neuron specification is optional.
|
|
26
|
+
# The name given here is largely meaningless, but may be useful as some sort
|
|
27
|
+
# of unique flag.
|
|
28
|
+
hidden tan: TanhNeuron
|
|
29
|
+
|
|
30
|
+
### Settings
|
|
31
|
+
## General
|
|
32
|
+
hash_on_fitness false
|
|
33
|
+
start_population_size 30
|
|
34
|
+
population_size 30
|
|
35
|
+
max_generations 10000
|
|
36
|
+
max_population_history 10
|
|
37
|
+
|
|
38
|
+
## Evolver probabilities and SDs
|
|
39
|
+
# Perturbations
|
|
40
|
+
mutate_perturb_gene_weights_prob 0.10
|
|
41
|
+
mutate_perturb_gene_weights_sd 0.50
|
|
42
|
+
|
|
43
|
+
# Complete Change of weight
|
|
44
|
+
mutate_change_gene_weights_prob 0.05
|
|
45
|
+
mutate_change_gene_weights_sd 2.00
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
# Adding new neurons and genes
|
|
49
|
+
mutate_add_neuron_prob 0.07
|
|
50
|
+
mutate_add_gene_prob 0.20
|
|
51
|
+
|
|
52
|
+
# Switching genes on and off
|
|
53
|
+
mutate_gene_disable_prob 0.01
|
|
54
|
+
mutate_gene_reenable_prob 0.01
|
|
55
|
+
|
|
56
|
+
interspecies_mate_rate 0.03
|
|
57
|
+
mate_only_prob 0.10 #0.7
|
|
58
|
+
|
|
59
|
+
# Mating
|
|
60
|
+
survival_threshold 0.20 # top % allowed to mate in a species.
|
|
61
|
+
survival_mininum_per_species 4 # for small populations, we need SOMETHING to go on.
|
|
62
|
+
|
|
63
|
+
# Fitness costs
|
|
64
|
+
fitness_cost_per_neuron 0#.00001
|
|
65
|
+
fitness_cost_per_gene 0#.00001
|
|
66
|
+
|
|
67
|
+
# Speciation
|
|
68
|
+
compatibility_threshold 2.5
|
|
69
|
+
disjoint_coefficient 0.6
|
|
70
|
+
excess_coefficient 0.6
|
|
71
|
+
weight_coefficient 0.2
|
|
72
|
+
max_species 20
|
|
73
|
+
dropoff_age 15
|
|
74
|
+
smallest_species 5
|
|
75
|
+
|
|
76
|
+
# Sequencing
|
|
77
|
+
start_sequence_at 0
|
|
78
|
+
end_sequence_at 2 ** XOR_INPUTS - 1
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
evolve do
|
|
82
|
+
# This query shall return a vector result that will serve
|
|
83
|
+
# as the inputs to the critter.
|
|
84
|
+
query { |seq|
|
|
85
|
+
# We'll use the seq to create the xor sequences via
|
|
86
|
+
# the least signficant bits.
|
|
87
|
+
condition_boolean_vector (0 ... XOR_INPUTS).map{|i| (seq & (1 << i)) != 0}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
# Compare the fitness of two critters. We may choose a different ordering
|
|
91
|
+
# here.
|
|
92
|
+
compare {|f1, f2| f2 <=> f1 }
|
|
93
|
+
|
|
94
|
+
# Here we integrate the cost with the fitness.
|
|
95
|
+
cost { |fitvec, cost|
|
|
96
|
+
fit = XOR_STATES - fitvec.reduce {|a,r| a+r} - cost
|
|
97
|
+
$log.debug ">>>>>>> fitvec #{fitvec} => #{fit}, cost #{cost}"
|
|
98
|
+
fit
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
fitness { |vin, vout, seq|
|
|
102
|
+
unless vout == :error
|
|
103
|
+
bin = uncondition_boolean_vector vin
|
|
104
|
+
bout = uncondition_boolean_vector vout
|
|
105
|
+
bactual = [xor(*vin)]
|
|
106
|
+
vactual = condition_boolean_vector bactual
|
|
107
|
+
#fit = (bout == bactual) ? 0.00 : 1.00
|
|
108
|
+
fit = simple_fitness_error(vout, vactual) / 2.0
|
|
109
|
+
bfit = (bout == bactual) ? 'T' : 'F'
|
|
110
|
+
$log.debug "(%s) Fitness bin=%s, bout=%s, bactual=%s, vout=%s, fit=%6.3f, seq=%s" % [bfit,
|
|
111
|
+
bin,
|
|
112
|
+
bout,
|
|
113
|
+
bactual,
|
|
114
|
+
vout,
|
|
115
|
+
fit,
|
|
116
|
+
seq]
|
|
117
|
+
fit
|
|
118
|
+
else
|
|
119
|
+
$log.debug "Error on #{vin} [#{seq}]"
|
|
120
|
+
1.0
|
|
121
|
+
end
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
stop_on_fitness {|fitness, c|
|
|
125
|
+
puts "*** Generation Run #{c.generation_num}, best is #{fitness[:best]} ***\n\n"
|
|
126
|
+
fitness[:best] >= ALMOST_FIT
|
|
127
|
+
}
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
report do |rept|
|
|
131
|
+
$log.info "REPORT #{rept.to_yaml}"
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
# The block here is called upon the completion of each generation
|
|
135
|
+
run_engine do |c|
|
|
136
|
+
$log.info "******** Run of generation %s completed, history count %d ********" %
|
|
137
|
+
[c.generation_num, c.population_history.size]
|
|
138
|
+
end
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
#!/usr/bin/env neat
|
|
2
|
+
require 'rubyneat/dsl'
|
|
3
|
+
require 'xor'
|
|
4
|
+
|
|
5
|
+
include NEAT::DSL
|
|
6
|
+
|
|
7
|
+
#= DEBUGGING FOR RubyNEAT using SineNeurons
|
|
8
|
+
|
|
9
|
+
# The number of inputs to the xor function
|
|
10
|
+
XOR_INPUTS = 2
|
|
11
|
+
XOR_STATES = 2 ** XOR_INPUTS
|
|
12
|
+
MAX_FIT = XOR_STATES
|
|
13
|
+
ALMOST_FIT = (XOR_STATES - 0.5)
|
|
14
|
+
|
|
15
|
+
# This defines the controller
|
|
16
|
+
define "XOR Sin CPPN Debug System" do
|
|
17
|
+
# Define the IO neurons
|
|
18
|
+
inputs {
|
|
19
|
+
cinv = Hash[(1..XOR_INPUTS).map{|i| [("i%s" % i).to_sym, InputNeuron]}]
|
|
20
|
+
cinv[:bias] = BiasNeuron
|
|
21
|
+
cinv
|
|
22
|
+
}
|
|
23
|
+
outputs out: SineNeuron
|
|
24
|
+
|
|
25
|
+
# Hidden neuron specification is optional.
|
|
26
|
+
# The key names given here is largely meaningless,
|
|
27
|
+
# but may be useful as some sort
|
|
28
|
+
# of unique flag.
|
|
29
|
+
hidden sin: SineNeuron, cos: CosineNeuron, tanh: TanhNeuron
|
|
30
|
+
|
|
31
|
+
### Settings
|
|
32
|
+
## General
|
|
33
|
+
hash_on_fitness = false
|
|
34
|
+
start_population_size 60
|
|
35
|
+
population_size 60
|
|
36
|
+
max_generations 10000
|
|
37
|
+
max_population_history 10
|
|
38
|
+
|
|
39
|
+
## Evolver probabilities and SDs
|
|
40
|
+
# Perturbations
|
|
41
|
+
mutate_perturb_gene_weights_prob 0.200
|
|
42
|
+
mutate_perturb_gene_weights_sd 0.25
|
|
43
|
+
|
|
44
|
+
# Complete Change of weight
|
|
45
|
+
mutate_change_gene_weights_prob 0.01
|
|
46
|
+
mutate_change_gene_weights_sd 2.00
|
|
47
|
+
|
|
48
|
+
# Adding new neurons and genes
|
|
49
|
+
mutate_add_neuron_prob 0.20
|
|
50
|
+
mutate_add_gene_prob 0.20
|
|
51
|
+
|
|
52
|
+
# Switching genes on and off
|
|
53
|
+
mutate_gene_disable_prob 0.01
|
|
54
|
+
mutate_gene_reenable_prob 0.01
|
|
55
|
+
|
|
56
|
+
interspecies_mate_rate 0.03
|
|
57
|
+
mate_only_prob 0.05
|
|
58
|
+
|
|
59
|
+
# Mating
|
|
60
|
+
survival_threshold 0.20 # top % allowed to mate in a species.
|
|
61
|
+
survival_mininum_per_species 4 # for small populations, we need SOMETHING to go on.
|
|
62
|
+
|
|
63
|
+
# Fitness costs
|
|
64
|
+
fitness_cost_per_neuron 0.00001
|
|
65
|
+
fitness_cost_per_gene 0.00001
|
|
66
|
+
|
|
67
|
+
# Speciation
|
|
68
|
+
compatibility_threshold 2.5
|
|
69
|
+
disjoint_coefficient 0.6
|
|
70
|
+
excess_coefficient 0.6
|
|
71
|
+
weight_coefficient 0.2
|
|
72
|
+
max_species 20
|
|
73
|
+
dropoff_age 15
|
|
74
|
+
smallest_species 5
|
|
75
|
+
|
|
76
|
+
# Sequencing
|
|
77
|
+
start_sequence_at 0
|
|
78
|
+
end_sequence_at 2 ** XOR_INPUTS - 1
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
evolve do
|
|
82
|
+
# This query shall return a vector result that will serve
|
|
83
|
+
# as the inputs to the critter.
|
|
84
|
+
query { |seq| @seq = seq
|
|
85
|
+
# We'll use the seq to create the xor sequences via
|
|
86
|
+
# the least signficant bits.
|
|
87
|
+
condition_boolean_vector (0 ... XOR_INPUTS).map{|i| (seq & (1 << i)) != 0}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
# This block is called directly by the neuron through its yield, if given.
|
|
91
|
+
# It will be called repeatedly until you return false here.
|
|
92
|
+
recurrence { |outvec| false }
|
|
93
|
+
|
|
94
|
+
# Compare the fitness of two critters. We may choose a different ordering
|
|
95
|
+
# here.
|
|
96
|
+
compare {|f1, f2| f2 <=> f1 }
|
|
97
|
+
|
|
98
|
+
# Here we integrate the cost with the fitness.
|
|
99
|
+
cost { |fitvec, cost|
|
|
100
|
+
fit = (XOR_STATES - fitvec.reduce {|a,r| a+r}) - cost # ((rand(5) == 0) ? cost : 0)
|
|
101
|
+
$log.debug ">>>>>>> fitvec #{fitvec} => #{fit}, cost #{cost}"
|
|
102
|
+
fit
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
fitness { |vin, vout, seq|
|
|
106
|
+
unless vout == :error
|
|
107
|
+
bin = uncondition_boolean_vector vin
|
|
108
|
+
bout = uncondition_boolean_vector vout
|
|
109
|
+
bactual = [xor(*vin)]
|
|
110
|
+
vactual = condition_boolean_vector bactual
|
|
111
|
+
fit = (bout == bactual) ? 0.00 : 1.00
|
|
112
|
+
#simple_fitness_error(vout, vactual.map{|f| f * 0.50 })
|
|
113
|
+
bfit = (bout == bactual) ? 'T' : 'F'
|
|
114
|
+
$log.debug "(%s) Fitness bin=%s, bout=%s, bactual=%s, vout=%s, fit=%6.3f, seq=%s" % [bfit,
|
|
115
|
+
bin,
|
|
116
|
+
bout,
|
|
117
|
+
bactual,
|
|
118
|
+
vout,
|
|
119
|
+
fit,
|
|
120
|
+
seq]
|
|
121
|
+
fit
|
|
122
|
+
else
|
|
123
|
+
$log.debug "Error on #{vin} [#{seq}]"
|
|
124
|
+
1.00
|
|
125
|
+
end
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
stop_on_fitness {|fitness, c|
|
|
129
|
+
puts "*** Generation Run #{c.generation_num}, best is #{fitness[:best]} ***\n\n"
|
|
130
|
+
fitness[:best] >= MAX_FIT - 0.5
|
|
131
|
+
}
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
report do |rept|
|
|
135
|
+
$log.info "REPORT #{rept.to_yaml}"
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
# The block here is called upon the completion of each generation
|
|
139
|
+
run_engine do |c|
|
|
140
|
+
$log.info "******** Run of generation %s completed, history count %d ********" %
|
|
141
|
+
[c.generation_num, c.population_history.size]
|
|
142
|
+
end
|
|
143
|
+
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<module type="RUBY_MODULE" version="4">
|
|
3
|
+
<component name="ModuleRunConfigurationManager">
|
|
4
|
+
<configuration default="false" name="Run spec 'oread_spec': rubyneat" type="RSpecRunConfigurationType" factoryName="RSpec" temporary="true">
|
|
5
|
+
<predefined_log_file id="RUBY_RSPEC" enabled="true" />
|
|
6
|
+
<module name="rubyneat" />
|
|
7
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
|
|
8
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
|
|
9
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
|
|
10
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
|
|
11
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
|
|
12
|
+
<envs>
|
|
13
|
+
<env name="JRUBY_OPTS" value="-X+O" />
|
|
14
|
+
</envs>
|
|
15
|
+
<EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
|
|
16
|
+
<EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
|
|
17
|
+
<EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
|
|
18
|
+
<COVERAGE_PATTERN ENABLED="true">
|
|
19
|
+
<PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
|
|
20
|
+
</COVERAGE_PATTERN>
|
|
21
|
+
</EXTENSION>
|
|
22
|
+
<EXTENSION ID="org.jetbrains.plugins.ruby.motion.run.MotionSimulatorRunExtension" />
|
|
23
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
|
|
24
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="$MODULE_DIR$/spec/lib/deep_dive/deep_dive_spec.rb" />
|
|
25
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_RUNNER_PATH" VALUE="" />
|
|
26
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="**/*_spec.rb" />
|
|
27
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_EXAMPLE_NAME" VALUE="" />
|
|
28
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_SCRIPT" />
|
|
29
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_ARGS" VALUE="" />
|
|
30
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_VERSION" VALUE="" />
|
|
31
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="USE_CUSTOM_SPEC_RUNNER" VALUE="false" />
|
|
32
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
|
|
33
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
|
|
34
|
+
<RSPEC_RUN_CONFIG_SETTINGS_ID NAME="FULL_BACKTRACE" VALUE="false" />
|
|
35
|
+
<RunnerSettings RunnerId="RubyDebugRunner" />
|
|
36
|
+
<ConfigurationWrapper RunnerId="RubyDebugRunner" />
|
|
37
|
+
<method />
|
|
38
|
+
</configuration>
|
|
39
|
+
<configuration default="false" name="neat" type="RubyRunConfigurationType" factoryName="Ruby">
|
|
40
|
+
<module name="rubyneat" />
|
|
41
|
+
<RUBY_RUN_CONFIG NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
|
|
42
|
+
<RUBY_RUN_CONFIG NAME="WORK DIR" VALUE="$MODULE_DIR$/bin" />
|
|
43
|
+
<RUBY_RUN_CONFIG NAME="SHOULD_USE_SDK" VALUE="false" />
|
|
44
|
+
<RUBY_RUN_CONFIG NAME="ALTERN_SDK_NAME" VALUE="" />
|
|
45
|
+
<RUBY_RUN_CONFIG NAME="myPassParentEnvs" VALUE="true" />
|
|
46
|
+
<envs>
|
|
47
|
+
<env name="RUBYLIB" value="$MODULE_DIR$/lib:$MODULE_DIR$/neater" />
|
|
48
|
+
</envs>
|
|
49
|
+
<EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
|
|
50
|
+
<EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
|
|
51
|
+
<EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
|
|
52
|
+
<COVERAGE_PATTERN ENABLED="true">
|
|
53
|
+
<PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
|
|
54
|
+
</COVERAGE_PATTERN>
|
|
55
|
+
</EXTENSION>
|
|
56
|
+
<EXTENSION ID="org.jetbrains.plugins.ruby.motion.run.MotionSimulatorRunExtension" />
|
|
57
|
+
<RUBY_RUN_CONFIG NAME="SCRIPT_PATH" VALUE="$MODULE_DIR$/bin/neat.rb" />
|
|
58
|
+
<RUBY_RUN_CONFIG NAME="SCRIPT_ARGS" VALUE="run xor" />
|
|
59
|
+
<RunnerSettings RunnerId="RubyCover" />
|
|
60
|
+
<RunnerSettings RunnerId="RubyDebugRunner" />
|
|
61
|
+
<RunnerSettings RunnerId="RubyRunner" />
|
|
62
|
+
<ConfigurationWrapper RunnerId="RubyCover" />
|
|
63
|
+
<ConfigurationWrapper RunnerId="RubyDebugRunner" />
|
|
64
|
+
<ConfigurationWrapper RunnerId="RubyRunner" />
|
|
65
|
+
<method />
|
|
66
|
+
</configuration>
|
|
67
|
+
<configuration default="false" name="xor_neat" type="RubyRunConfigurationType" factoryName="Ruby">
|
|
68
|
+
<module name="rubyneat" />
|
|
69
|
+
<RUBY_RUN_CONFIG NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
|
|
70
|
+
<RUBY_RUN_CONFIG NAME="WORK DIR" VALUE="$MODULE_DIR$" />
|
|
71
|
+
<RUBY_RUN_CONFIG NAME="SHOULD_USE_SDK" VALUE="false" />
|
|
72
|
+
<RUBY_RUN_CONFIG NAME="ALTERN_SDK_NAME" VALUE="" />
|
|
73
|
+
<RUBY_RUN_CONFIG NAME="myPassParentEnvs" VALUE="true" />
|
|
74
|
+
<envs />
|
|
75
|
+
<EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
|
|
76
|
+
<EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
|
|
77
|
+
<EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
|
|
78
|
+
<COVERAGE_PATTERN ENABLED="true">
|
|
79
|
+
<PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
|
|
80
|
+
</COVERAGE_PATTERN>
|
|
81
|
+
</EXTENSION>
|
|
82
|
+
<EXTENSION ID="org.jetbrains.plugins.ruby.motion.run.MotionSimulatorRunExtension" />
|
|
83
|
+
<RUBY_RUN_CONFIG NAME="SCRIPT_PATH" VALUE="$MODULE_DIR$/xor_neat.rb" />
|
|
84
|
+
<RUBY_RUN_CONFIG NAME="SCRIPT_ARGS" VALUE="" />
|
|
85
|
+
<RunnerSettings RunnerId="RubyDebugRunner" />
|
|
86
|
+
<RunnerSettings RunnerId="RubyRunner" />
|
|
87
|
+
<ConfigurationWrapper RunnerId="RubyDebugRunner" />
|
|
88
|
+
<ConfigurationWrapper RunnerId="RubyRunner" />
|
|
89
|
+
<method />
|
|
90
|
+
</configuration>
|
|
91
|
+
<configuration default="false" name="deep_dive" type="RubyRunConfigurationType" factoryName="Ruby" temporary="true">
|
|
92
|
+
<module name="rubyneat" />
|
|
93
|
+
<RUBY_RUN_CONFIG NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
|
|
94
|
+
<RUBY_RUN_CONFIG NAME="WORK DIR" VALUE="$MODULE_DIR$/lib/deep_dive" />
|
|
95
|
+
<RUBY_RUN_CONFIG NAME="SHOULD_USE_SDK" VALUE="false" />
|
|
96
|
+
<RUBY_RUN_CONFIG NAME="ALTERN_SDK_NAME" VALUE="" />
|
|
97
|
+
<RUBY_RUN_CONFIG NAME="myPassParentEnvs" VALUE="true" />
|
|
98
|
+
<envs />
|
|
99
|
+
<EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
|
|
100
|
+
<EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
|
|
101
|
+
<EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
|
|
102
|
+
<COVERAGE_PATTERN ENABLED="true">
|
|
103
|
+
<PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
|
|
104
|
+
</COVERAGE_PATTERN>
|
|
105
|
+
</EXTENSION>
|
|
106
|
+
<EXTENSION ID="org.jetbrains.plugins.ruby.motion.run.MotionSimulatorRunExtension" />
|
|
107
|
+
<RUBY_RUN_CONFIG NAME="SCRIPT_PATH" VALUE="$MODULE_DIR$/lib/deep_dive/deep_dive.rb" />
|
|
108
|
+
<RUBY_RUN_CONFIG NAME="SCRIPT_ARGS" VALUE="" />
|
|
109
|
+
<RunnerSettings RunnerId="RubyDebugRunner" />
|
|
110
|
+
<ConfigurationWrapper RunnerId="RubyDebugRunner" />
|
|
111
|
+
<method />
|
|
112
|
+
</configuration>
|
|
113
|
+
</component>
|
|
114
|
+
<component name="NewModuleRootManager">
|
|
115
|
+
<content url="file://$MODULE_DIR$">
|
|
116
|
+
<sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
|
|
117
|
+
</content>
|
|
118
|
+
<orderEntry type="jdk" jdkName="RVM: ruby-2.0.0-p353" jdkType="RUBY_SDK" />
|
|
119
|
+
<orderEntry type="sourceFolder" forTests="false" />
|
|
120
|
+
<orderEntry type="library" scope="PROVIDED" name="addressable (v2.3.5, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
121
|
+
<orderEntry type="library" scope="PROVIDED" name="aquarium (v0.5.1, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
122
|
+
<orderEntry type="library" scope="PROVIDED" name="awesome_print (v1.2.0, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
123
|
+
<orderEntry type="library" scope="PROVIDED" name="bson (v1.9.2, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
124
|
+
<orderEntry type="library" scope="PROVIDED" name="bson_ext (v1.9.2, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
125
|
+
<orderEntry type="library" scope="PROVIDED" name="builder (v3.2.2, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
126
|
+
<orderEntry type="library" scope="PROVIDED" name="bundler (v1.3.5, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
127
|
+
<orderEntry type="library" scope="PROVIDED" name="celluloid (v0.15.2, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
128
|
+
<orderEntry type="library" scope="PROVIDED" name="coderay (v1.1.0, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
129
|
+
<orderEntry type="library" scope="PROVIDED" name="debase (v0.0.9, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
130
|
+
<orderEntry type="library" scope="PROVIDED" name="debugger-ruby_core_source (v1.3.0, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
131
|
+
<orderEntry type="library" scope="PROVIDED" name="deep_dive (v0.0.4, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
132
|
+
<orderEntry type="library" scope="PROVIDED" name="diff-lcs (v1.2.5, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
133
|
+
<orderEntry type="library" scope="PROVIDED" name="distribution (v0.7.0, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
134
|
+
<orderEntry type="library" scope="PROVIDED" name="docile (v1.1.1, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
135
|
+
<orderEntry type="library" scope="PROVIDED" name="faraday (v0.8.8, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
136
|
+
<orderEntry type="library" scope="PROVIDED" name="ffi (v1.9.3, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
137
|
+
<orderEntry type="library" scope="PROVIDED" name="formatador (v0.2.4, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
138
|
+
<orderEntry type="library" scope="PROVIDED" name="git (v1.2.6, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
139
|
+
<orderEntry type="library" scope="PROVIDED" name="github_api (v0.10.1, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
140
|
+
<orderEntry type="library" scope="PROVIDED" name="guard (v2.2.5, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
141
|
+
<orderEntry type="library" scope="PROVIDED" name="guard-rspec (v4.2.3, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
142
|
+
<orderEntry type="library" scope="PROVIDED" name="hashie (v2.0.5, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
143
|
+
<orderEntry type="library" scope="PROVIDED" name="highline (v1.6.20, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
144
|
+
<orderEntry type="library" scope="PROVIDED" name="httpauth (v0.2.0, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
145
|
+
<orderEntry type="library" scope="PROVIDED" name="jeweler (v1.8.8, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
146
|
+
<orderEntry type="library" scope="PROVIDED" name="json (v1.8.1, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
147
|
+
<orderEntry type="library" scope="PROVIDED" name="jwt (v0.1.8, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
148
|
+
<orderEntry type="library" scope="PROVIDED" name="listen (v2.4.0, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
149
|
+
<orderEntry type="library" scope="PROVIDED" name="lumberjack (v1.0.4, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
150
|
+
<orderEntry type="library" scope="PROVIDED" name="method_source (v0.8.2, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
151
|
+
<orderEntry type="library" scope="PROVIDED" name="mongo (v1.9.2, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
152
|
+
<orderEntry type="library" scope="PROVIDED" name="multi_json (v1.8.2, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
153
|
+
<orderEntry type="library" scope="PROVIDED" name="multi_xml (v0.5.5, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
154
|
+
<orderEntry type="library" scope="PROVIDED" name="multipart-post (v1.2.0, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
155
|
+
<orderEntry type="library" scope="PROVIDED" name="nokogiri (v1.5.10, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
156
|
+
<orderEntry type="library" scope="PROVIDED" name="oauth2 (v0.9.2, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
157
|
+
<orderEntry type="library" scope="PROVIDED" name="pry (v0.9.12.4, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
158
|
+
<orderEntry type="library" scope="PROVIDED" name="rack (v1.5.2, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
159
|
+
<orderEntry type="library" scope="PROVIDED" name="rake (v10.1.1, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
160
|
+
<orderEntry type="library" scope="PROVIDED" name="rb-fsevent (v0.9.4, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
161
|
+
<orderEntry type="library" scope="PROVIDED" name="rb-inotify (v0.9.3, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
162
|
+
<orderEntry type="library" scope="PROVIDED" name="rdoc (v4.1.0, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
163
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec (v2.14.1, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
164
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec-core (v2.14.7, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
165
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v2.14.4, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
166
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v2.14.4, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
167
|
+
<orderEntry type="library" scope="PROVIDED" name="semver (v1.0.1, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
168
|
+
<orderEntry type="library" scope="PROVIDED" name="simplecov (v0.8.2, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
169
|
+
<orderEntry type="library" scope="PROVIDED" name="simplecov-html (v0.8.0, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
170
|
+
<orderEntry type="library" scope="PROVIDED" name="slop (v3.4.7, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
171
|
+
<orderEntry type="library" scope="PROVIDED" name="thor (v0.18.1, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
172
|
+
<orderEntry type="library" scope="PROVIDED" name="timers (v1.1.0, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
173
|
+
<orderEntry type="library" scope="PROVIDED" name="yard (v0.8.7.3, RVM: ruby-2.0.0-p353) [gem]" level="application" />
|
|
174
|
+
</component>
|
|
175
|
+
<component name="RModuleSettingsStorage">
|
|
176
|
+
<LOAD_PATH number="1" string0="$MODULE_DIR$/bin" />
|
|
177
|
+
<I18N_FOLDERS number="0" />
|
|
178
|
+
</component>
|
|
179
|
+
</module>
|
|
180
|
+
|
data/public/.directory
ADDED
|
Binary file
|
|
Binary file
|
data/public/cart.png
ADDED
|
Binary file
|
data/public/cart.xcf
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
data/public/pointer.png
ADDED
|
Binary file
|
data/public/pointer.xcf
ADDED
|
Binary file
|
data/public/pole.kra
ADDED
|
Binary file
|
data/public/pole.png
ADDED
|
Binary file
|
data/public/pole.xcf
ADDED
|
Binary file
|
|
Binary file
|
data/public/wheel.png
ADDED
|
Binary file
|
data/public/wheel.xcf
ADDED
|
Binary file
|
|
Binary file
|