class Evolvable::GeneSpace

Attributes

config[R]

Public Class Methods

build(config) click to toggle source
# File lib/evolvable/gene_space.rb, line 5
def self.build(config)
  return config if config.respond_to?(:new_genes)

  new(config: config)
end
new(config: {}) click to toggle source
# File lib/evolvable/gene_space.rb, line 11
def initialize(config: {})
  @config = normalize_config(config)
end

Public Instance Methods

new_genes() click to toggle source
# File lib/evolvable/gene_space.rb, line 17
def new_genes
  genes = []
  config.each do |_gene_key, gene_config|
    (gene_config[:count] || 1).times do
      gene = gene_config[:class].new
      genes << gene
    end
  end
  genes
end

Private Instance Methods

normalize_config(config) click to toggle source
# File lib/evolvable/gene_space.rb, line 30
def normalize_config(config)
  config.each do |gene_key, gene_config|
    next unless gene_config[:type]

    gene_class = Kernel.const_get(gene_config[:type])
    gene_class.key = gene_key
    gene_config[:class] = gene_class
  end
end