Module: NEAT

Included in:
DSL
Defined in:
lib/rubyneat/dsl.rb,
lib/rubyneat/graph.rb,
lib/rubyneat/neuron.rb,
lib/rubyneat/critter.rb,
lib/rubyneat/evolver.rb,
lib/rubyneat/rubyneat.rb,
lib/rubyneat/expressor.rb,
lib/rubyneat/evaluator.rb,
lib/rubyneat/population.rb

Overview

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 inplicit genotype and phenotype component. Neurons, from the Ruby persoective, 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”. Thier 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 someething more suiable for the neural network.

Issues

Multicore / Cloud Computing

Some thought needs to be given to how to make this anenable 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 Conroller.

Defined Under Namespace

Modules: BasicNeuronTypes, DSL, Graph Classes: Controller, Critter, Evaluator, Evolver, Expressor, NeatException, NeatOb, Neuron, Operator, Population, Trait

Constant Summary

STIMULUS =

Name of the stimulus method in NEAT::Critter::Phenotype to use for the singleton method expression of the critter.

:stimulate

Class Method Summary (collapse)

Class Method Details

+ (Object) controller



422
# File 'lib/rubyneat/rubyneat.rb', line 422

def self.controller ; @controller ; end

+ (Object) controller=(controller)



423
# File 'lib/rubyneat/rubyneat.rb', line 423

def self.controller=(controller) ; @controller = controller ; end

+ (Object) create_controller(*parms)



424
# File 'lib/rubyneat/rubyneat.rb', line 424

def self.create_controller(*parms); @controller = Controller.new(*parms); end

+ (Object) dpp(ob)

PrettyPrint to log.debug



77
78
79
# File 'lib/rubyneat/rubyneat.rb', line 77

def self.dpp ob
  #$log.ap ob
end

+ (Object) gaussian

Mixin for the gaussian object.



74
# File 'lib/rubyneat/rubyneat.rb', line 74

def self.gaussian ; @controller.gaussian; end

+ (Object) new_innovation

Mixin for new innovation numbers.



71
# File 'lib/rubyneat/rubyneat.rb', line 71

def self.new_innovation; @controller.new_innovation; end

+ (Object) random_name_generator



60
61
62
63
64
# File 'lib/rubyneat/rubyneat.rb', line 60

def self.random_name_generator
  (1..3).map {
    @rng_names[rand @rng_names.size]
  }.push(@rng_count += 1).join('_').to_sym
end