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

📄 jgaptreenode.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.impl;

import java.util.*;
import javax.swing.tree.TreeNode;
import org.jgap.gp.*;

/**
 * A CommandGene represented as a tree node.
 *
 * @author Klaus Meffert
 * @since 3.0
 */
public class JGAPTreeNode
    implements TreeNode {
  /** String containing the CVS revision. Read out via reflection!*/
  private final static String CVS_REVISION = "$Revision: 1.3 $";

  private ProgramChromosome m_chrom;

  private int m_index;

  public JGAPTreeNode(ProgramChromosome a_chrom, int a_index) {
    m_chrom = a_chrom;
    m_chrom.redepth();
    m_index = a_index;
  }

  public String getName() {
    return m_chrom.getFunctions()[m_index].getClass().getName();
  }

  /**
   * @param a_childIndex index of the child to get
   * @return the child TreeNode at index a_childIndex
   */
  public TreeNode getChildAt(int a_childIndex) {
    int child = m_chrom.getChild(m_index, a_childIndex);
    return new JGAPTreeNode(m_chrom, child);
  }

  /**
   * @return the number of children <code>TreeNode</code>s the receiver
   * contains
   */
  public int getChildCount() {
    int count = 0;
    try {
      do {
        if (m_chrom.getChild(m_index, count) < 0) {
          return count;
        }
        count++;
      } while (true);
    } catch (RuntimeException rex) {
      return count;
    }
  }

  /**
   * @return the parent <code>TreeNode</code> of the receiver
   */
  public TreeNode getParent() {
    return new JGAPTreeNode(m_chrom, m_chrom.getParentNode(m_index));
  }

  /**
   * @param a_node the node to retrieve the index for
   * @return the index of <code>node</code> in the receivers children.
   * If the receiver does not contain <code>node</code>, -1 will be
   * returned
   */
  public int getIndex(TreeNode a_node) {
    for (int i = 0; i < getChildCount(); i++) {
      if (getChildAt(i).equals(a_node)) {
        return i;
      }
    }
    return -1;
  }

  /**
   * @return true if the receiver allows children
   */
  public boolean getAllowsChildren() {
    return getChildCount() > 0;
  }

  /**
   * @return true if the receiver is a leaf
   */
  public boolean isLeaf() {
    return getChildCount() == 0;
  }

  /**
   * @return the children of the receiver as an <code>Enumeration</code>
   */
  public Enumeration children() {
    Vector l = new Vector();
    for (int i = 0; i < getChildCount(); i++) {
      l.add(getChildAt(i));
    }
    return l.elements();
  }
}

⌨️ 快捷键说明

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