/*
 * This file is part of JGAP.
 *
 * JGAP offers a dual license model containing the LGPL as well as the MPL.
 *
 * For licensing information please see the file license.txt included with JGAP
 * or have a look at the top of class org.jgap.Chromosome which representatively
 * includes the JGAP license policy applicable for any file delivered with JGAP.
 */
package org.jgap;

import org.jgap.audit.*;

/**
 * Base class for any implementation of interface GeneticOperator.
 * See MutationOperator or CrossoverOperator for examples.
 *
 * @author Klaus Meffert
 * @since 3.0
 */
public abstract class BaseGeneticOperator
    implements GeneticOperator, Comparable {
  /** String containing the CVS revision. Read out via reflection!*/
  private final static String CVS_REVISION = "$Revision: 1.7 $";

  private Configuration m_configuration;

  protected IEvolutionMonitor m_monitor;

  protected boolean m_monitorActive;

  /**
   * The only constructor in this class. Sets the immutable configuration.
   * @param a_configuration the configuration to set (must not be null)
   * @throws InvalidConfigurationException
   * @author Klaus Meffert
   * @since 3.0
   */
  public BaseGeneticOperator(Configuration a_configuration)
      throws InvalidConfigurationException {
    if (a_configuration == null) {
      throw new InvalidConfigurationException("Configuration must not be null");
    }
    m_configuration = a_configuration;
    // Monitoring stuff:
    IEvolutionMonitor m_monitor = getConfiguration().getMonitor();
    boolean m_monitorActive = m_monitor != null;
  }

  /**
   * @todo make returned object immutable
   * @return the configuration set
   *
   * @author Klaus Meffert
   * @since 3.0
   */
  public Configuration getConfiguration() {
    return m_configuration;
  }

  /**
   * Compares this GeneticOperator against the specified object. The result is
   * true if the argument is an instance of this class and is equal with respect
   * to the data.
   *
   * @param a_other the object to compare against
   * @return true: if the objects are the same, false otherwise
   *
   * @author Klaus Meffert
   * @since 2.6
   */
  public boolean equals(final Object a_other) {
    try {
      /**@todo also compare Configuration?*/
      return compareTo(a_other) == 0;
    }
    catch (ClassCastException cex) {
      return false;
    }
  }

}

 

Ads help maintain this website.