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

📄 igpchromosome.java

📁 JGAP是一种遗传算法和遗传规划的组成部分提供了一个Java框架。它提供了基本的遗传机制
💻 JAVA
字号:
/*
 * 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.gp;

import java.io.*;
import org.jgap.gp.impl.*;

/**
 * Interface for GP chromosomes. See ProgramChromosome for an implementation.
 *
 * @author Klaus Meffert
 * @since 3.01
 */
public interface IGPChromosome
    extends Serializable {
  /** String containing the CVS revision. Read out via reflection!*/
  final static String CVS_REVISION = "$Revision: 1.7 $";

  /**
   * @return the individual containing this chromosome
   *
   * @author Klaus Meffert
   * @since 3.01
   */
  IGPProgram getIndividual();

  /**
   * Sets the individual the chromosome belongs to.
   *
   * @param a_ind the individual containing this chromosome
   *
   * @author Klaus Meffert
   * @since 3.01
   */
  void setIndividual(IGPProgram a_ind);

  /**
   * Clean up the chromosome.
   *
   * @author Klaus Meffert
   * @since 3.01
   */
  void cleanup();

  /**
   * Output program in "natural" notion (e.g.: "X + Y" for "X + Y")
   * @param a_startNode the node to start with
   * @return output in normalized notion
   *
   * @author Klaus Meffert
   * @since 3.01
   */
  String toStringNorm(final int a_startNode);

  /**
   * Recalculate the depths of each node.
   *
   * @author Klaus Meffert
   * @since 3.01
   */
  void redepth();

  /**
   * @return the number of terminals in this chromosome
   *
   * @author Klaus Meffert
   * @since 3.01
   */
  int numTerminals();

  /**
   * @return the number of functions in this chromosome
   *
   * @author Klaus Meffert
   * @since 3.01
   */
  int numFunctions();

  /**
   * Counts the number of terminals of the given type in this chromosome.
   *
   * @param a_type the type of terminal to count
   * @param a_subType the subtype to consider
   * @return the number of terminals in this chromosome
   *
   * @author Klaus Meffert
   * @since 3.01
   */
  int numTerminals(Class a_type, int a_subType);

  /**
   * Counts the number of functions of the given type in this chromosome.
   *
   * @param a_type the type of function to count
   * @param a_subType the subtype to consider
   * @return the number of functions in this chromosome.
   *
   * @author Klaus Meffert
   * @since 3.01
   */
  int numFunctions(Class a_type, int a_subType);

  /**
   * Gets the a_index'th node in this chromosome. The nodes are counted in a
   * depth-first manner, with node 0 being the root of this chromosome.
   *
   * @param a_index the node number to get
   * @return the node
   *
   * @author Klaus Meffert
   * @since 3.01
   */
  CommandGene getNode(int a_index);

  /**
   * Gets the a_child'th child of the a_index'th node in this chromosome. This
   * is the same as the a_child'th node whose depth is one more than the depth
   * of the a_index'th node.
   *
   * @param a_index the node number of the parent
   * @param a_child the child number (starting from 0) of the parent
   * @return the node number of the child, or -1 if not found
   *
   * @author Klaus Meffert
   * @since 3.01
   */
  int getChild(int a_index, int a_child);

  /**
   * Gets the i'th terminal in this chromosome. The nodes are counted in a
   * depth-first manner, with node 0 being the first terminal in this
   * chromosome.
   *
   * @param a_index the i'th terminal to get
   * @return the terminal
   *
   * @author Klaus Meffert
   * @since 3.01
   */
  int getTerminal(int a_index);

  /**
   * Gets the a_index'th function in this chromosome. The nodes are counted in a
   * depth-first manner, with node 0 being the first function in this
   * chromosome.
   *
   * @param a_index the a_index'th function to get
   * @return the function
   *
   * @author Klaus Meffert
   * @since 3.01
   */
  int getFunction(int a_index);

  /**
   * Gets the a_index'th terminal of the given type in this chromosome. The nodes
   * are counted in a depth-first manner, with node 0 being the first terminal of
   * the given type in this chromosome.
   *
   * @param a_index the a_index'th terminal to get
   * @param a_type the type of terminal to get
   * @param a_subType the subtype to consider
   * @return the index of the terminal found, or -1 if no appropriate terminal
   * was found
   *
   * @author Klaus Meffert
   * @since 3.01
   */
  int getTerminal(int a_index, Class a_type, int a_subType);

  /**
   * Gets the i'th function of the given type in this chromosome. The nodes are
   * counted in a depth-first manner, with node 0 being the first function of
   * the given type in this chromosome.
   *
   * @param a_index the i'th function to get
   * @param a_type the type of function to get
   * @param a_subType the subtype to consider
   * @return the index of the function found, or -1 if no appropriate function
   * was found
   *
   * @author Klaus Meffert
   * @since 3.01
   */
  int getFunction(int a_index, Class a_type, int a_subType);

  CommandGene[] getFunctions();

  /**
   * @return set of CommandGene instances allowed
   *
   * @author Klaus Meffert
   * @since 3.2.1
   */
  CommandGene[] getFunctionSet();

  GPConfiguration getGPConfiguration();

  /**
   * @return the persistent representation of the population, including all
   * GP programs
   *
   * @author Klaus Meffert
   * @since 3.3
   */
  String getPersistentRepresentation();
}

⌨️ 快捷键说明

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