⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gpfitnessfunction.java

📁 一个开源的用java开发的遗传算法的封装好的工程
💻 JAVA
字号:
/*
 * This file is part of JGAP.
 *
 * JGAP offers a dual license model containing the LGPL as well as the MPL.
 *
 * For licencing 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.gp;

/**
 * Fitness function for GP-Programs.
 *
 * @author Klaus Meffert
 * @since 3.0
 */
public abstract class GPFitnessFunction
    implements java.io.Serializable {
  /** String containing the CVS revision. Read out via reflection!*/
  private final static String CVS_REVISION = "$Revision: 1.6 $";

  public final static double NO_FITNESS_VALUE = -1.0000000d;

  public final static double MAX_FITNESS_VALUE = Double.MAX_VALUE / 2;

  /**
   * The fitness value computed during the previous run
   */
  private double m_lastComputedFitnessValue = NO_FITNESS_VALUE;

  /**
   * Retrieves the fitness value of the given GPProgram. The fitness
   * value will be a positive double.
   *
   * @param a_program the GPProgram for which to compute and return the
   * fitness value
   * @return the fitness value of the given GPProgram
   *
   * @author Klaus Meffert
   * @since 3.0
   */
  public final double getFitnessValue(final IGPProgram a_program) {
    // Delegate to the evaluate() method to actually compute the
    // fitness value. If the returned value is less than one,
    // then we throw a runtime exception.
    // ---------------------------------------------------------
    double fitnessValue = evaluate(a_program);
    if (fitnessValue < 0.00000000d) {
      throw new RuntimeException(
          "Fitness values must be positive! Received value: "
          + fitnessValue);
    }
    m_lastComputedFitnessValue = fitnessValue;
    return fitnessValue;
  }

  /**
   * @return the last fitness value computed via method getFitnessValue(
   * Chromosome), or NO_FITNES_VALUE if the former method has not been called
   * yet
   *
   * @author Klaus Meffert
   * @since 2.4
   */
  public double getLastComputedFitnessValue() {
    return m_lastComputedFitnessValue;
  }

  /**
   * Determine the fitness of the given GPProgram instance. The higher the
   * return value, the more fit the instance. This method should always
   * return the same fitness value for two equivalent GPProgram instances.
   *
   * @param a_subject the GPProgram instance to evaluate
   *
   * @return positive double reflecting the fitness rating of the given
   * GPProgram. Note that if a non-positive double is returned, a
   * RuntimeException should be generated
   *
   * @author Klaus Meffert
   * @since 3.0
   */
  protected abstract double evaluate(IGPProgram a_subject);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -