motorRedNeuronal
Class Perceptron

java.lang.Object
  extended by motorRedNeuronal.Perceptron
All Implemented Interfaces:
INeurona

public class Perceptron
extends java.lang.Object
implements INeurona

Esta clase codifica el funcionamiento de un perceptron, para funcionar solo o en compañía de otros formando una red neuronal. El perceptrón tiene elementos entrantes y elementos salientes conectados. Si el perceptrón esta en la primera o últimca capa, estos elementos serán del tipo ElementoEntrada o ElementoSalida respectivamente. El cálculo de salida se realiza mediante un objeto IFuncionCalculo, al que se le pasa la suma de las entradas poderada con los pesos. El cálculo y la retroprogramación se realizan cuando todos los elementos entrantes y salientes le han pasado un valor. Si el perceptrón no tiene todos los valores, devuelve el control al método llamante, para que prosiga el cálculo por la red neuronal.


Field Summary
private  java.util.Map<INeurona,java.lang.Float> diferencialesAnteriores
          Almacena el diferencial de la retroprogramación anterior para aplicar con los momentos
private  java.util.HashMap<INeurona,java.lang.Float> entrantes
          Diccionario con pares K=INeurona, V=Float con las neuronas entrantes y los valores dados por estas.
private  int entrantesListas
          Entero para contar cuántas neuronas entrantes nos han pasado ya su dato.
private  java.util.HashMap<INeurona,java.lang.Float> entrantesSinDatos
          Diccionario auxiliar con todos los valores nulos para clonarlo y reiniciar el diccionario entrante
private  float fCorreccion
          Flotante que representa el factor de corrección.
private  IFuncionCalculo funcion
          Función de cálculo para calcular la salida del perceptrón.
private  float momento
          Flotante que representa el momento.
private  float pesoMaximo
          Flotante para calcular el peso máximo de una entrada.
private  float pesoMinimo
          Flotante para calcular el peso mínimo de una entrada.
private  java.util.Map<INeurona,java.lang.Float> pesos
          Pesos de las entradas
private  java.util.Map<INeurona,java.lang.Float> salientes
          Diccionario con pares K=INeurona, V=Float con las neuronas salientes y los valores dados por esta para la retroprogramación.
private  int salientesListas
          Entero para contar cuántas neuronas salientes nos han pasado ya su dato en la retroprogramación.
private  java.util.HashMap<INeurona,java.lang.Float> salientesSinDatos
          Diccionario auxiliar con todos los valores nulos para clonarlo y reiniciar el diccionario entrante
private  java.util.Map<INeurona,java.lang.Float> ultimaEntrada
          Almacena la última entrada para la cual se calculó el atributo ultimoValor
private  float ultimaSalida
          Almacena el último valor calculado para usarlo en la retroprogramación
 
Constructor Summary
Perceptron(float fCorreccion, float momento, float pesoMin, float pesoMax, IFuncionCalculo funcion)
          Constructor de la clase perceptron.
 
Method Summary
 void addElementoEntrante(INeurona entrante)
          Función para conectar un perceptrón a la salida
 void addElementoSaliente(INeurona saliente)
          Función para conectar un perceptrón como entrada
 void calcular(float in, INeurona origen)
          Calcular la salida del perceptron para los valores de entrada.
 java.util.List<java.lang.Float> getPesos()
          Recorre los pesos de las neuronas entrantes en orden de inserción -por ser pesos un LinkedHashMap- y devuelve una copia de los valores.
 java.lang.String getPesosString()
          Convierte la salida de getPesos() en un String donde cada peso está separado por un espacio.
private  float nuevoPeso()
           
 void retropropagar(float deltaPonderado, INeurona origen)
          Función de retropropagación.
 void setPesos(java.util.List<java.lang.Float> in)
          Recorre los pesos de las neuronas entrantes en orden de inserción -por ser pesos un LinkedHashMap- y sustituye los pesos por una copia de los pasados como parametro.
 void setPesos(java.lang.String s)
          Envoltorio de void setPesos(List in) que crea la lista de float a partir de un String
 java.lang.String toString()
          Redefinicion de toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

entrantes

private java.util.HashMap<INeurona,java.lang.Float> entrantes
Diccionario con pares K=INeurona, V=Float con las neuronas entrantes y los valores dados por estas.


salientes

private java.util.Map<INeurona,java.lang.Float> salientes
Diccionario con pares K=INeurona, V=Float con las neuronas salientes y los valores dados por esta para la retroprogramación.


entrantesSinDatos

private java.util.HashMap<INeurona,java.lang.Float> entrantesSinDatos
Diccionario auxiliar con todos los valores nulos para clonarlo y reiniciar el diccionario entrante


salientesSinDatos

private java.util.HashMap<INeurona,java.lang.Float> salientesSinDatos
Diccionario auxiliar con todos los valores nulos para clonarlo y reiniciar el diccionario entrante


entrantesListas

private int entrantesListas
Entero para contar cuántas neuronas entrantes nos han pasado ya su dato. Es uno porque el dato de la neurona umbral siempre está activo


salientesListas

private int salientesListas
Entero para contar cuántas neuronas salientes nos han pasado ya su dato en la retroprogramación.


pesoMinimo

private float pesoMinimo
Flotante para calcular el peso mínimo de una entrada.


pesoMaximo

private float pesoMaximo
Flotante para calcular el peso máximo de una entrada.


fCorreccion

private float fCorreccion
Flotante que representa el factor de corrección.


momento

private float momento
Flotante que representa el momento. Si no se desea momento, póngase a cero.


funcion

private IFuncionCalculo funcion
Función de cálculo para calcular la salida del perceptrón.


pesos

private java.util.Map<INeurona,java.lang.Float> pesos
Pesos de las entradas


ultimaSalida

private float ultimaSalida
Almacena el último valor calculado para usarlo en la retroprogramación


ultimaEntrada

private java.util.Map<INeurona,java.lang.Float> ultimaEntrada
Almacena la última entrada para la cual se calculó el atributo ultimoValor


diferencialesAnteriores

private java.util.Map<INeurona,java.lang.Float> diferencialesAnteriores
Almacena el diferencial de la retroprogramación anterior para aplicar con los momentos

Constructor Detail

Perceptron

public Perceptron(float fCorreccion,
                  float momento,
                  float pesoMin,
                  float pesoMax,
                  IFuncionCalculo funcion)
Constructor de la clase perceptron. Construye un perceptrón con los parámetros dados y sin ninguna conexión entrante o saliente. Lanza una IllegalArgumentException si pesoMin > pesoMax.

Method Detail

nuevoPeso

private float nuevoPeso()

calcular

public void calcular(float in,
                     INeurona origen)
Calcular la salida del perceptron para los valores de entrada. La función toma el valor de otra neurona de entrada y devuelve el control, si aun no tiene los valores de todas las neuronas entrantes. En el momento en que lo tenga, calcula su salida e invoca el cálculo en las neuronas salientes.

Specified by:
calcular in interface INeurona

retropropagar

public void retropropagar(float deltaPonderado,
                          INeurona origen)
Función de retropropagación. Recibe el resultado de la función delta del resultado esperado, multiplicado por el peso que asocia la neurona origen a este perceptron. De esta forma para obtener el sumatorio no necesitamo conocer los pesos que las neuronas salientes adjudican a este perceptron

Specified by:
retropropagar in interface INeurona

addElementoEntrante

public void addElementoEntrante(INeurona entrante)
Función para conectar un perceptrón a la salida

Specified by:
addElementoEntrante in interface INeurona

addElementoSaliente

public void addElementoSaliente(INeurona saliente)
Función para conectar un perceptrón como entrada

Specified by:
addElementoSaliente in interface INeurona

toString

public java.lang.String toString()
Redefinicion de toString

Overrides:
toString in class java.lang.Object

getPesos

public java.util.List<java.lang.Float> getPesos()
Recorre los pesos de las neuronas entrantes en orden de inserción -por ser pesos un LinkedHashMap- y devuelve una copia de los valores.


setPesos

public void setPesos(java.util.List<java.lang.Float> in)
Recorre los pesos de las neuronas entrantes en orden de inserción -por ser pesos un LinkedHashMap- y sustituye los pesos por una copia de los pasados como parametro. Si el número de pesos de la lista pasada como argumento no es igual al número de neuronas entrantes, eleva un IllegalArgumentException.


getPesosString

public java.lang.String getPesosString()
Convierte la salida de getPesos() en un String donde cada peso está separado por un espacio.


setPesos

public void setPesos(java.lang.String s)
Envoltorio de void setPesos(List in) que crea la lista de float a partir de un String