org.encog.ml.prg.opp

## Class SubtreeCrossover

- java.lang.Object
- - org.encog.ml.prg.opp.SubtreeCrossover

- All Implemented Interfaces:
    EvolutionaryOperator

      public class SubtreeCrossover
      extends Object
      implements EvolutionaryOperator

  Perform a type-safe subtree crossover. The crossover points will be chosen randomly but must be type-safe. The first parent will be cloned to produce the child. The tree formed from the crossover point of the second child will be copied and grafted into the parent's clone and its crossover point.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `SubtreeCrossover()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `init(EvolutionaryAlgorithm theOwner)` Called to setup the evolutionary operator.
    `int` | `offspringProduced()`
    `int` | `parentsNeeded()`
    `void` | `performOperation(Random rnd, Genome[] parents, int parentIndex, Genome[] offspring, int offspringIndex)` Perform the evolutionary operation.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### SubtreeCrossover

          public SubtreeCrossover()

  - ### Method Detail

    - #### init

          public void init(EvolutionaryAlgorithm theOwner)

      Called to setup the evolutionary operator.
      Specified by:
        `init` in interface `EvolutionaryOperator`
      Parameters:
        `theOwner` - The evolutionary algorithm used with this operator.

    - #### offspringProduced

          public int offspringProduced()

      Specified by:
        `offspringProduced` in interface `EvolutionaryOperator`
      Returns:
        Returns the number of offspring produced. In this case, one.

    - #### parentsNeeded

          public int parentsNeeded()

      Specified by:
        `parentsNeeded` in interface `EvolutionaryOperator`
      Returns:
        Returns the number of parents needed. In this case, two.

    - #### performOperation

          public void performOperation(Random rnd,
                              Genome[] parents,
                              int parentIndex,
                              Genome[] offspring,
                              int offspringIndex)

      Perform the evolutionary operation.
      Specified by:
        `performOperation` in interface `EvolutionaryOperator`
      Parameters:
        `rnd` - A random number generator.
        `parents` - The parents.
        `parentIndex` - The index into the parents array.
        `offspring` - The offspring.
        `offspringIndex` - An index into the offspring array.

Copyright © 2014. All Rights Reserved.