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

controller() click to toggle source
# File lib/rubyneat/rubyneat.rb, line 590
def self.controller ; @controller ; end
controller=(controller) click to toggle source
# File lib/rubyneat/rubyneat.rb, line 591
def self.controller=(controller) ; @controller = controller ; end
create_controller(*parms) click to toggle source
# File lib/rubyneat/rubyneat.rb, line 592
def self.create_controller(*parms); @controller = Controller.new(*parms); end
dpp(ob) click to toggle source

PrettyPrint to log.debug

# File lib/rubyneat/rubyneat.rb, line 89
def self.dpp ob
  #$log.ap ob
end
gaussian() click to toggle source

Mixin for the gaussian object.

# File lib/rubyneat/rubyneat.rb, line 86
def self.gaussian ; @controller.gaussian; end
new_innovation() click to toggle source

Mixin for new innovation numbers.

# File lib/rubyneat/rubyneat.rb, line 83
def self.new_innovation; @controller.new_innovation; end
random_name_generator() click to toggle source
# 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