Package ec

# Class Subpopulation

java.lang.Object
ec.Subpopulation

All Implemented Interfaces:
  `Setup`, `Serializable`, `Cloneable`

Direct Known Subclasses:
  `Spatial1DSubpopulation`

public class Subpopulation extends Object implements Cloneable, Setup
Subpopulation is a group which is basically an array of Individuals. There is always one or more Subpopulations in the Population. Each Subpopulation has a Species, which governs the formation of the Individuals in that Subpopulation. Subpopulations also contain a Fitness prototype which is cloned to form Fitness objects for individuals in the subpopulation.

An initial subpopulation is populated with new random individuals using the populate(...) method. This method typically populates by filling the array with individuals created using the Subpopulations' species' emptyClone() method, though you might override this to create them with other means, by loading from text files for example.

In a multithreaded area of a run, Subpopulations should be considered immutable. That is, once they are created, they should not be modified, nor anything they contain. This protocol helps ensure read-safety under multithreading race conditions.

Parameters

base.`size` int >= 1 | (total number of individuals in the subpopulation)
base.`species` classname, inherits and != ec.Species | (the class of the subpopulations' Species)
base.`fitness` classname, inherits and != ec.Fitness | (the class for the prototypical Fitness for individuals in this subpopulation)
base.`file` String | (pathname of file from which the population is to be loaded. If not defined, or empty, then the population will be initialized at random in the standard manner)
base.`duplicate-retries` int >= 0 | (during initialization, when we produce an individual which already exists in the subpopulation, the number of times we try to replace it with something unique. Ignored if we're loading from a file.)

Default Base
ec.subpop

Parameter bases

base.`species` | species (the subpopulations' species)

See Also:
  - Serialized Form

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `int`
  `extraBehavior`
  What is our fill behavior beyond files?
  `Parameter`
  `file`
  `static final int`
  `FILL`
  `static final String`
  `INDIVIDUAL_INDEX_PREAMBLE`
  `ArrayList<Individual>`
  `individuals`
  The subpopulation's individuals.
  `int`
  `initialSize`
  initial expected size of the subpopulation
  `boolean`
  `loadInds`
  `static final String`
  `NUM_INDIVIDUALS_PREAMBLE`
  `int`
  `numDuplicateRetries`
  Do we allow duplicates?
  `static final String`
  `P_EXTRA_BEHAVIOR`
  `static final String`
  `P_FILE`
  `static final String`
  `P_RETRIES`
  `static final String`
  `P_SPECIES`
  `static final String`
  `P_SUBPOPSIZE`
  `static final String`
  `P_SUBPOPULATION`
  `Species`
  `species`
  The species for individuals in this subpopulation.
  `static final int`
  `TRUNCATE`
  `static final String`
  `V_FILL`
  `static final String`
  `V_TRUNCATE`
  `static final String`
  `V_WRAP`
  `static final int`
  `WRAP`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Subpopulation()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `clear()`
  Sets all Individuals in the Subpopulation to null, preparing it to be reused.
  `Parameter`
  `defaultBase()`
  `Subpopulation`
  `emptyClone()`
  Returns an instance of Subpopulation just like it had been before it was populated with individuals.
  `void`
  `populate(EvolutionState state, int thread)`
  `void`
  `printSubpopulation(EvolutionState state, int log)`
  Prints an entire subpopulation in a form readable by humans but also parseable by the computer using readSubpopulation(EvolutionState, LineNumberReader) with a verbosity of Output.V_NO_GENERAL.
  `final void`
  `printSubpopulation(EvolutionState state, int log, int verbosity)`
  Prints an entire subpopulation in a form readable by humans but also parseable by the computer using readSubpopulation(EvolutionState, LineNumberReader).
  `void`
  `printSubpopulation(EvolutionState state, PrintWriter writer)`
  Prints an entire subpopulation in a form readable by humans but also parseable by the computer using readSubpopulation(EvolutionState, LineNumberReader).
  `void`
  `printSubpopulationForHumans(EvolutionState state, int log)`
  `final void`
  `printSubpopulationForHumans(EvolutionState state, int log, int verbosity)`
  Prints an entire subpopulation in a form readable by humans.
  `void`
  `readSubpopulation(EvolutionState state, DataInput dataInput)`
  Reads a subpopulation in binary form, from the format generated by writeSubpopulation(...).
  `void`
  `readSubpopulation(EvolutionState state, LineNumberReader reader)`
  Reads a subpopulation from the format generated by printSubpopulation(....).
  `void`
  `setup(EvolutionState state, Parameter base)`
  Sets up the object by reading it from the parameters stored in state, built off of the parameter base base.
  `void`
  `truncate(int toThis)`
  Truncates the Subpopulation to a new size.
  `void`
  `writeSubpopulation(EvolutionState state, DataOutput dataOutput)`
  Writes a subpopulation in binary form, in a format readable by readSubpopulation(EvolutionState, DataInput).

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

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

- ## Field Details

  - ### loadInds

    public boolean loadInds

  - ### file

    public Parameter file

  - ### species

    public Species species
    The species for individuals in this subpopulation.

  - ### individuals

    public ArrayList<Individual> individuals
    The subpopulation's individuals.

  - ### initialSize

    public int initialSize
    initial expected size of the subpopulation

  - ### numDuplicateRetries

    public int numDuplicateRetries
    Do we allow duplicates?

  - ### extraBehavior

    public int extraBehavior
    What is our fill behavior beyond files?

  - ### P_SUBPOPULATION

    public static final String P_SUBPOPULATION
    See Also:
      - Constant Field Values

  - ### P_FILE

    public static final String P_FILE
    See Also:
      - Constant Field Values

  - ### P_SUBPOPSIZE

    public static final String P_SUBPOPSIZE
    See Also:
      - Constant Field Values

  - ### P_SPECIES

    public static final String P_SPECIES
    See Also:
      - Constant Field Values

  - ### P_RETRIES

    public static final String P_RETRIES
    See Also:
      - Constant Field Values

  - ### P_EXTRA_BEHAVIOR

    public static final String P_EXTRA_BEHAVIOR
    See Also:
      - Constant Field Values

  - ### V_TRUNCATE

    public static final String V_TRUNCATE
    See Also:
      - Constant Field Values

  - ### V_WRAP

    public static final String V_WRAP
    See Also:
      - Constant Field Values

  - ### V_FILL

    public static final String V_FILL
    See Also:
      - Constant Field Values

  - ### NUM_INDIVIDUALS_PREAMBLE

    public static final String NUM_INDIVIDUALS_PREAMBLE
    See Also:
      - Constant Field Values

  - ### INDIVIDUAL_INDEX_PREAMBLE

    public static final String INDIVIDUAL_INDEX_PREAMBLE
    See Also:
      - Constant Field Values

  - ### TRUNCATE

    public static final int TRUNCATE
    See Also:
      - Constant Field Values

  - ### WRAP

    public static final int WRAP
    See Also:
      - Constant Field Values

  - ### FILL

    public static final int FILL
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### Subpopulation

    public Subpopulation()

- ## Method Details

  - ### defaultBase

    public Parameter defaultBase()

  - ### emptyClone

    public Subpopulation emptyClone()
    Returns an instance of Subpopulation just like it had been before it was populated with individuals. You may need to override this if you override Subpopulation. IMPORTANT NOTE: if the size of the array in Subpopulation has been changed, then the clone will take on the new array size. This helps some evolution strategies.

  - ### truncate

    public void truncate(int toThis)
    Truncates the Subpopulation to a new size. The Subpopulation is truncated such that the higher indexed individuals may be deleted.

  - ### clear

    public void clear()
    Sets all Individuals in the Subpopulation to null, preparing it to be reused.

  - ### setup

    public void setup(EvolutionState state, Parameter base)
    Description copied from interface: `Setup`
    Sets up the object by reading it from the parameters stored in state, built off of the parameter base base. If an ancestor implements this method, be sure to call super.setup(state,base); before you do anything else.
    Specified by:
      `setup` in interface `Setup`

  - ### populate

    public void populate(EvolutionState state, int thread)

  - ### printSubpopulationForHumans

    public final void printSubpopulationForHumans(EvolutionState state, int log, int verbosity)
    Prints an entire subpopulation in a form readable by humans.

  - ### printSubpopulation

    public final void printSubpopulation(EvolutionState state, int log, int verbosity)
    Prints an entire subpopulation in a form readable by humans but also parseable by the computer using readSubpopulation(EvolutionState, LineNumberReader).

  - ### printSubpopulationForHumans

    public void printSubpopulationForHumans(EvolutionState state, int log)

  - ### printSubpopulation

    public void printSubpopulation(EvolutionState state, int log)
    Prints an entire subpopulation in a form readable by humans but also parseable by the computer using readSubpopulation(EvolutionState, LineNumberReader) with a verbosity of Output.V_NO_GENERAL.

  - ### printSubpopulation

    public void printSubpopulation(EvolutionState state, PrintWriter writer)
    Prints an entire subpopulation in a form readable by humans but also parseable by the computer using readSubpopulation(EvolutionState, LineNumberReader).

  - ### readSubpopulation

    public void readSubpopulation(EvolutionState state, LineNumberReader reader) throws IOException
    Reads a subpopulation from the format generated by printSubpopulation(....). If the number of individuals is not identical, the individuals array will be deleted and replaced with a new array, and a warning will be generated as individuals will have to be created using newIndividual(...) rather than readIndividual(...).
    Throws:
      `IOException`

  - ### writeSubpopulation

    public void writeSubpopulation(EvolutionState state, DataOutput dataOutput) throws IOException
    Writes a subpopulation in binary form, in a format readable by readSubpopulation(EvolutionState, DataInput).
    Throws:
      `IOException`

  - ### readSubpopulation

    public void readSubpopulation(EvolutionState state, DataInput dataInput) throws IOException
    Reads a subpopulation in binary form, from the format generated by writeSubpopulation(...). If the number of individuals is not identical, the individuals array will be deleted and replaced with a new array, and a warning will be generated as individuals will have to be created using newIndividual(...) rather than readIndividual(...)
    Throws:
      `IOException`