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

Java tutorial

Introduction

Here is the source code for keel.Algorithms.Neural_Networks.NNEP_Common.neuralnet.Link.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 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 Link {

    /**
     * <p>
     * Link of a neuron
     * </p>
     */

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

    /**
     * <p>
     * Marshal/Unmarshal weight and state of the link
     * </p> 
     */
    protected static final javolution.xml.XmlFormat<Link> XML = new XmlFormat<Link>(Link.class) {
        public void format(Link source, XmlElement xml) {
            // Marshal weight
            xml.setAttribute("weight", source.weight);
            // Marshal broken
            xml.setAttribute("broken", source.broken);
        }

        public Link parse(XmlElement xml) {
            // Resulting object
            Link result = (Link) xml.object();
            // Unmarshal weight
            result.weight = xml.getAttribute("weight", 0.);
            // Unmarshal broken
            result.broken = xml.getAttribute("broken", true);
            // Return result
            return result;
        }

        public String defaultName() {
            return "link";
        }
    };

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

    /** Origin neuron */

    protected INeuron origin;

    /** Target neuron */

    protected INeuron target;

    /** Weight value */

    protected double weight;

    /** Link state */

    protected boolean broken = true;

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

    /**
     * <p>
     * Empty constructor
     * </p>
     */
    public Link() {
        super();
    }

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

    /**
     * <p>
     * Returns the origin neuron of the link, used to obtain its output value
     * </p>
     * @return INeuron Origin neuron
     */
    public INeuron getOrigin() {
        return origin;
    }

    /**
     * <p>
     * Sets the origin neuron of the link
     * </p>
     * @param origin New origin neuron
     */
    public void setOrigin(INeuron origin) {
        this.origin = origin;
    }

    /**
     * <p>
     * Returns the target neuron of the link
     * </p>
     * @return INeuron Target neuron
     */
    public INeuron getTarget() {
        return target;
    }

    /**
     * <p>
     * Sets the target neuron of the link
     * </p>
     * @param target New target neuron
     */
    public void setTarget(INeuron target) {
        this.target = target;
    }

    /**
     * <p>
     * Returns the weight associated to this link, used to obtain the output value of the destiny neuron
     * </p>
     * @return double Weight value
     */
    public double getWeight() {
        return weight;
    }

    /**
     * <p>
     * Sets the weight associated to this link
     * </p>
     * @param weight New weight value
     */
    public void setWeight(double weight) {
        this.weight = weight;
    }

    /**
     * <p>
     * Returns a boolean indicating if the link is or not broken
     * </p>
     * @return true if the link is broken
     */
    public boolean isBroken() {
        return broken;
    }

    /**
     * <p>
     * Sets a boolean indicating if the link is or not broken
     * </p>
     * @param broken New link state
     */
    public void setBroken(boolean broken) {
        this.broken = broken;
    }

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

    /**
     * <p>
     * Returns an integer number that identifies the link
     * </p>
     * @return int Hashcode
     */
    public int hashCode() {

        HashCodeBuilder hcb = new HashCodeBuilder(23, 29);
        hcb.append(weight);
        hcb.append(broken);
        hcb.append(origin);
        return hcb.toHashCode();

    }

}