keel.Algorithms.Neural_Networks.NNEP_Common.neuralnet.InputNeuron.java Source code

Java tutorial

Introduction

Here is the source code for keel.Algorithms.Neural_Networks.NNEP_Common.neuralnet.InputNeuron.java

Source

/***********************************************************************
    
   This file is part of KEEL-software, the Data Mining tool for regression, 
   classification, clustering, pattern mining and so on.
    
   Copyright (C) 2004-2010
       
   F. Herrera (herrera@decsai.ugr.es)
L. Snchez (luciano@uniovi.es)
J. Alcal-Fdez (jalcala@decsai.ugr.es)
S. Garca (sglopez@ujaen.es)
A. Fernndez (alberto.fernandez@ujaen.es)
J. Luengo (julianlm@decsai.ugr.es)
    
   This program is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation, either version 3 of the License, or
   (at your option) any later version.
    
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.
    
   You should have received a copy of the GNU General Public License
   along with this program.  If not, see http://www.gnu.org/licenses/
      
**********************************************************************/

package keel.Algorithms.Neural_Networks.NNEP_Common.neuralnet;

import javolution.xml.XmlElement;
import javolution.xml.XmlFormat;
import keel.Algorithms.Neural_Networks.NNEP_Common.data.DoubleTransposedDataSet;

import org.apache.commons.lang.builder.HashCodeBuilder;

/**
 * <p>
 * @author Written by Pedro Antonio Gutierrez Penya, Aaron Ruiz Mora (University of Cordoba) 17/07/2007
 * @version 0.1
 * @since JDK1.5
 * </p>
 */

public class InputNeuron implements INeuron {

    /**
     * <p>
     * Input Neuron of a neural net
     * </p>
     */

    /////////////////////////////////////////////////////////////////
    // ------------------------------------- Marshal/unmarshal format
    /////////////////////////////////////////////////////////////////

    /**
     * <p>
     * Marshal/Unmarshal neuron index
     * </p>
     */
    protected static final javolution.xml.XmlFormat<InputNeuron> XML = new XmlFormat<InputNeuron>(
            InputNeuron.class) {
        public void format(InputNeuron source, XmlElement xml) {
            // Marshal index
            xml.setAttribute("index", source.index);
        }

        public InputNeuron parse(XmlElement xml) {
            // Resulting object
            InputNeuron result = (InputNeuron) xml.object();
            // Unmarshal index
            result.index = xml.getAttribute("index", 1);
            // Return result
            return result;
        }

        public String defaultName() {
            return "input-neuron";
        }
    };

    /////////////////////////////////////////////////////////////////
    // --------------------------------------- Serialization constant
    /////////////////////////////////////////////////////////////////

    /** Generated by Eclipse */

    private static final long serialVersionUID = -6041931197564234348L;

    /////////////////////////////////////////////////////////////////
    // --------------------------------------------------- Attributes
    /////////////////////////////////////////////////////////////////

    /** Index of the neuron */
    protected int index;

    /////////////////////////////////////////////////////////////////
    // -------------------------------------------------- Constructor
    /////////////////////////////////////////////////////////////////

    /**
     * Empty Constructor
     */

    public InputNeuron() {
        super();
    }

    /////////////////////////////////////////////////////////////////
    // ------------------------------- Getting and setting attributes
    /////////////////////////////////////////////////////////////////

    /**
     * <p>
     * Returns the index associated to this neuron
     * </p>
     * @return int Index of the neuron
     */
    public int getIndex() {
        return index;
    }

    /**
     * <p>
     * Sets the index associated to this neuron
     * </p>
     * @param index New index of the neuron
     */
    public void setIndex(int index) {
        this.index = index;
    }

    /////////////////////////////////////////////////////////////////
    // ------------------------------- Implementing INeuron interface
    /////////////////////////////////////////////////////////////////

    /**
     * <p>
    * Checks if this link is equal to another
    * </p>
    * @param other Other link to compare
    * @return true if both neurons are equal
    */
    public boolean equals(INeuron other) {
        if (this.hashCode() != other.hashCode())
            return false;
        else
            return true;
    }

    /**
     * <p>
    * Returns an integer number that identifies the neuron
    * </p>
    * @return int Hashcode
    */
    public int hashCode() {
        HashCodeBuilder hcb = new HashCodeBuilder(31, 37);
        hcb.append(index);
        return hcb.toHashCode();
    }

    /**
     * <p>
    * Operates this neuron. An input neuron has to do no operation
    * </p>
    * @param inputs Double array to be used for the inputs observations
    * @return double Output of the neuron for the array specified
    */
    public double operate(double[] inputs) {
        return inputs[index];
    }

    /**
     * <p>
     * Operates this neuron. An input neuron has to do no operation
     * </p>
     * @param dataSet DataSet to be used for the inputs observations
     * @return double [] Array outputs of the neuron for the dataSet specified
     */
    public double[] operate(DoubleTransposedDataSet dataSet) {
        return dataSet.getObservationsOf(index);
    }

    /**
     * <p>
     * Operates this neuron. An input neuron has to do no operation
     * </p>
     * @param inputs Input matrix to be used to feed the input neurons
     * @return double [] Array outputs of the neuron for the matrix specified
     */
    public double[] operate(double[][] inputs) {
        return inputs[index];
    }

    /////////////////////////////////////////////////////////////////
    // ----------------------------------------------- Public methods
    /////////////////////////////////////////////////////////////////

    /**
     * <p>
     * Returns a string representation of the InputNeuron
     * </p>
     * @return String Representation of the InputNeuron
     */
    public String toString() {
        StringBuffer sb = new StringBuffer();
        sb.append("x" + (index + 1));
        return sb.toString();
    }
}