module NEAT
Critter
¶ ↑
RubyNEAT
DSL
¶ ↑
DSL
is a domain-specific language for RubyNEAT
to allow you to configure the NEAT
engine for various evolutionary projects.
Neuron
Types¶ ↑
We create all the neuron types for this system here.
RubyNEAT
Reporting¶ ↑
Here we factor out all reporting-related functionality across the entire RubyNEAT
system to this one place, because reporting is not directly related to RubyNEAT
functionality. As such, it will make it much easier for forkers to slim down RubyNEAT
for some specific application where reporting may not be so needed.
As far as plugins go, we could insist that all plugins do their own reporting. However, we wish to insulate such activities from the internal structures of the Population
, Critters, etc. simply they are subject to change. This affords us the one place to look to update the API in response to deep structural changes.
NEAT
– Module for RubyNEAT
.¶ ↑
Synopsis¶ ↑
We have a Population
of Critters, and each Critter
represents a network of Neurons and a connection list specifying how those Neurons are connected.
Each Neuron
has an implicit genotype and phenotype component. Neurons, from the Ruby perspective, contain their own code to produce their own phenotypes.
There are input Neurons and output Neurons. The input Neurons are special, as they do not contain any input from other nodes, but serve as interfaces from the “real world”. Their range of inputs are open, and it shall be up to the input Neuron's phenotype generators to condition those inputs, if need be, to something more suitable for the neural network.
Issues¶ ↑
Multicore / Cloud Computing¶ ↑
Some thought needs to be given to how to make this amenable to multiple processes so that we can leverage the power of multicore systems as well as multiple computers in the Cloud, etc.
Our initial inclination is to put all of that functionality in the Controller
.
Uniquely Generated Named Objects (UGNOs)¶ ↑
Every RubyNEAT
Object
instance is assigned a unique name generated randomly. The name has no other significance other than to uniquely identify the object.
We have chosen the names of the letters of various alphabets to be the core of those names. The list may be subject to change until we are out of alpha, then will be set in quick drying concrete.
Constants
- STIMULUS
Name of the stimulus method in
NEAT::Critter::Phenotype
to use for the singleton method expression of the critter.
Public Class Methods
# File lib/rubyneat/rubyneat.rb, line 590 def self.controller ; @controller ; end
# File lib/rubyneat/rubyneat.rb, line 591 def self.controller=(controller) ; @controller = controller ; end
# File lib/rubyneat/rubyneat.rb, line 592 def self.create_controller(*parms); @controller = Controller.new(*parms); end
PrettyPrint to log.debug
# File lib/rubyneat/rubyneat.rb, line 89 def self.dpp ob #$log.ap ob end
Mixin for the gaussian object.
# File lib/rubyneat/rubyneat.rb, line 86 def self.gaussian ; @controller.gaussian; end
Mixin for new innovation numbers.
# File lib/rubyneat/rubyneat.rb, line 83 def self.new_innovation; @controller.new_innovation; end
# File lib/rubyneat/rubyneat.rb, line 72 def self.random_name_generator (1..3).map { @rng_names[rand @rng_names.size] }.push(@rng_count += 1).join('_').to_sym end