Logo
Distributed Genetic Programming Framework
print print

File org.dgpf.gp.regression.expressions.unary.AbsHandler.java

Here you can find all the information about the file org.dgpf.gp.regression.expressions.unary.AbsHandler.java. You may explore it here or download it onto your local disk.
/*
 * Copyright (c) 2006 Thomas Weise
 * 
 * E-Mail           : tweise@gmx.de
 * Creation Date    : 2006-07-25 16:15:36
 * Original Filename: org.dgpf.gp.regression.expressions.binary.AbsHandler.java
 * Version          : 1.0.0
 * Last modification: 2006-07-25
 *                by: Thomas Weise
 * 
 * License          : GNU LESSER GENERAL PUBLIC LICENSE
 *                    Version 2.1, February 1999
 *                    You should have received a copy of this license along
 *                    with this library; if not, write to the Free Software
 *                    Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 *                    MA 02111-1307, USA or download the license under
 *                    http://www.gnu.org/copyleft/lesser.html.
 *                    
 * Warranty         : This software is provided "as is" without any
 *                    warranty; without even the implied warranty of
 *                    merchantability or fitness for a particular purpose.
 *                    See the Gnu Lesser General Public License for more
 *                    details.
 */

 
package org.dgpf.gp.regression.expressions.unary;

import org.dgpf.gp.regression.base.Expression;
import org.dgpf.gp.regression.base.IWrapableExpressionHandler;
import org.dgpf.gp.regression.expressions.binary.Sub;
import org.dgpf.gp.regression.expressions.parameterless.Constant;

/**
 * The handler for the abs-expression.
 *
 * @author Thomas Weise
 */

public final  class AbsHandler extends UnaryExpressionHandler
  { 
/**
 * The serial version uid.
 */

  private static  final long   serialVersionUID  = 1;
  
/**
 * The shared singleton instance of the abs expression handler.
 */

  public static final IWrapableExpressionHandler INSTANCE =
                          new AbsHandler();

/**
 * Create the abs-handler. You cannot do this, use the globally shared
 * singleton instance.
 * @see #INSTANCE
 */

  private AbsHandler()
    {
    super(null);
    }
  

/**
 * Create an expression of the type this handler handles using the
 * specified sub-expressions.
 * @param p_sub   The first sub-expression.
 * @return  The newly created expression with the two sub-expressions.
 */

  @Override
  public    final  Expression  do_create (final Expression p_sub)
    {
    return new Abs(p_sub);
    }
  
/**
 * Optimize an expression.
 * @param p_source  The source expression to be optimized.
 * @return  The optimized version of the source expression, or the source
 *          expression itsef.
 */

  @Override
  public  Expression  optimize  (final Expression p_source)
    {
    Expression  l_e, l_x;
    Abs         l_a;
    Sub         l_s;
    
    l_a = ((Abs)(p_source));
    l_e = l_a.get_sub();
    
    if(l_e instanceof Constant)
      {
      return Constant.create(Math.abs(((Constant)l_e).get_value()));
      }    
    
    if(l_e instanceof Abs) return l_e;
    
    if(l_e instanceof Sub)
      {
      l_x = Constant.create(0.0d);
      l_s = ((Sub)l_e);
      if( l_x.equals( l_s.get_sub_1() ) )
        {
        return new Abs(l_s.get_sub_2() );
        }
      if( l_x.equals( l_s.get_sub_2() ) )
        {
        return new Abs(l_s.get_sub_1() );
        }
      }
    
    return l_a;
    }
  
  }

File Information:

file name:AbsHandler.java
package:org.dgpf.gp.regression.expressions.unary
qualified name:org.dgpf.gp.regression.expressions.unary.AbsHandler.java
file type:Java Source File
download location:download http://dgpf.sourceforge.net/source/org/dgpf/gp/regression/expressions/unary/AbsHandler.java
size:3.277 KB (3356 B)
uploaded: 2015-07-22 04:10:56 GMT+0000
last update: 2006-08-17 08:35:44 GMT+0000
last access: 2017-11-18 23:01:35 GMT+0000

statistics online since 2006-01-02.   RSS Feed
Contact us by sending an email to tweise@gmx.de to receive further information, to report errors, or to join our project.
All content on this site (http://dgpf.sourceforge.net/) is LGPL-licensed.
http://dgpf.sourceforge.net/scripts/source/source.php last modified at 2015-07-22 04:10:53 GMT+0000 served at 2017-11-18 23:01:35 GMT+0000.
Valid CSS Valid XHTML 1.1
Valid RSS SourceForge.net Logo