Class: Ai4r::Som::Node
 Inherits:

Object
 Object
 Ai4r::Som::Node
 Includes:
 Data::Parameterizable
 Defined in:
 lib/ai4r/som/node.rb
Overview
this class is used for the individual node and will be (nodes * nodes)time instantiated
attributes

direct access to the x and y values is granted, those show the position of the node in
the square map

id => is the uniq and sequential ID of the node

weights => values of the current weights are stored in an array of dimension 'dimensions'.
Weights are of type float

instantiated_weight => the values of the first instantiation of weights. these values are
never changed
Class Method Summary collapse

.create(id, total, dimensions) ⇒ Object
creates an instance of Node and instantiates the weights the parameters is a uniq and sequential ID as well as the number of total nodes dimensions signals the dimension of the input vector.
Instance Method Summary collapse

#distance_to_input(input) ⇒ Object
returns the square distance between the current weights and the input the input is a vector/array of the same size as weights at the end, the square root is extracted from the sum of differences.

#distance_to_node(node) ⇒ Object
returns the distance in squareform from the instance node to the passed node example: 2 2 2 2 2 2 1 1 1 2 2 1 0 1 2 2 1 1 1 2 2 2 2 2 2 0 being the current node.

#instantiate_weight(dimensions) ⇒ Object
instantiates the weights to the dimension (of the input vector) for backup reasons, the instantiated weight is stored into @instantiated_weight as well.
Methods included from Data::Parameterizable
#get_parameters, included, #set_parameters
Class Method Details
.create(id, total, dimensions) ⇒ Object
creates an instance of Node and instantiates the weights the parameters is a uniq and sequential ID as well as the number of total nodes dimensions signals the dimension of the input vector
42 43 44 45 46 47 48 49 
# File 'lib/ai4r/som/node.rb', line 42 def self.create(id, total, dimensions) n = Node.new n.id = id n.instantiate_weight dimensions n.x = id % total n.y = (id / total.to_f).to_i n end 
Instance Method Details
#distance_to_input(input) ⇒ Object
returns the square distance between the current weights and the input the input is a vector/array of the same size as weights at the end, the square root is extracted from the sum of differences
65 66 67 68 69 70 71 72 
# File 'lib/ai4r/som/node.rb', line 65 def distance_to_input(input) dist = 0 input.each_with_index do i, index dist += (i  @weights[index]) ** 2 end Math.sqrt(dist) end 
#distance_to_node(node) ⇒ Object
returns the distance in squareform from the instance node to the passed node example: 2 2 2 2 2 2 1 1 1 2 2 1 0 1 2 2 1 1 1 2 2 2 2 2 2 0 being the current node
82 83 84 
# File 'lib/ai4r/som/node.rb', line 82 def distance_to_node(node) max((self.x  node.x).abs, (self.y  node.y).abs) end 
#instantiate_weight(dimensions) ⇒ Object
instantiates the weights to the dimension (of the input vector) for backup reasons, the instantiated weight is stored into @instantiated_weight as well
53 54 55 56 57 58 59 60 
# File 'lib/ai4r/som/node.rb', line 53 def instantiate_weight(dimensions) @weights = Array.new dimensions @instantiated_weight = Array.new dimensions @weights.each_with_index do weight, index @weights[index] = rand @instantiated_weight[index] = @weights[index] end end 