ec
Class Population

java.lang.Object
  extended by ec.Population
All Implemented Interfaces:
Group, Setup, java.io.Serializable, java.lang.Cloneable

public class Population
extends java.lang.Object
implements Group

A Population is the repository for all the Individuals being bred or evaluated in the evolutionary run at a given time. A Population is basically an array of Subpopulations, each of which are arrays of Individuals coupled with a single Species per Subpoulation.

The first Population is created using the initializePopulation method of the Initializer object, which typically calls the Population's populate() method in turn. On generational systems, subsequent populations are created on a generation-by-generation basis by the Breeder object, replacing the previous Population.

In a multithreaded area of a run, Populations 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.subpops
int >= 1
(the number of subpopulations)
base.subpop.n
classname, inherits or = ec.Subpopulation
(the class for subpopulation #n)

Parameter bases

base.subpop.n Subpopulation #n.

Version:
1.0
Author:
Sean Luke
See Also:
Serialized Form

Field Summary
static java.lang.String NUM_SUBPOPS_PREAMBLE
           
static java.lang.String P_SIZE
           
static java.lang.String P_SUBPOP
           
static java.lang.String SUBPOP_INDEX_PREAMBLE
           
 Subpopulation[] subpops
           
 
Constructor Summary
Population()
           
 
Method Summary
 Group emptyClone()
          Returns an instance of Population just like it had been before it was populated with individuals.
 void populate(EvolutionState state, int thread)
          Populates the population with new random individuals.
 void printPopulation(EvolutionState state, int log, int verbosity)
          Prints an entire population in a form readable by humans but also parseable by the computer using readPopulation(EvolutionState, LineNumberReader).
 void printPopulation(EvolutionState state, java.io.PrintWriter writer)
          Prints an entire population in a form readable by humans but also parseable by the computer using readPopulation(EvolutionState, LineNumberReader).
 void printPopulationForHumans(EvolutionState state, int log, int verbosity)
          Prints an entire population in a form readable by humans.
 void readPopulation(EvolutionState state, java.io.DataInput dataInput)
          Reads a population in binary form, from the format generated by writePopulation(...).
 void readPopulation(EvolutionState state, java.io.LineNumberReader reader)
          Reads a population from the format generated by printPopulation(....).
 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 writePopulation(EvolutionState state, java.io.DataOutput dataOutput)
          Writes a population in binary form, in a format readable by readPopulation(EvolutionState, DataInput).
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

subpops

public Subpopulation[] subpops

P_SIZE

public static final java.lang.String P_SIZE
See Also:
Constant Field Values

P_SUBPOP

public static final java.lang.String P_SUBPOP
See Also:
Constant Field Values

NUM_SUBPOPS_PREAMBLE

public static final java.lang.String NUM_SUBPOPS_PREAMBLE
See Also:
Constant Field Values

SUBPOP_INDEX_PREAMBLE

public static final java.lang.String SUBPOP_INDEX_PREAMBLE
See Also:
Constant Field Values
Constructor Detail

Population

public Population()
Method Detail

emptyClone

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

Specified by:
emptyClone in interface Group
See Also:
Group.emptyClone()

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)
Populates the population with new random individuals.


printPopulationForHumans

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


printPopulation

public void printPopulation(EvolutionState state,
                            int log,
                            int verbosity)
Prints an entire population in a form readable by humans but also parseable by the computer using readPopulation(EvolutionState, LineNumberReader).


printPopulation

public void printPopulation(EvolutionState state,
                            java.io.PrintWriter writer)
Prints an entire population in a form readable by humans but also parseable by the computer using readPopulation(EvolutionState, LineNumberReader).


readPopulation

public void readPopulation(EvolutionState state,
                           java.io.LineNumberReader reader)
                    throws java.io.IOException
Reads a population from the format generated by printPopulation(....). The number of subpopulations and the species information must be identical.

Throws:
java.io.IOException

writePopulation

public void writePopulation(EvolutionState state,
                            java.io.DataOutput dataOutput)
                     throws java.io.IOException
Writes a population in binary form, in a format readable by readPopulation(EvolutionState, DataInput).

Throws:
java.io.IOException

readPopulation

public void readPopulation(EvolutionState state,
                           java.io.DataInput dataInput)
                    throws java.io.IOException
Reads a population in binary form, from the format generated by writePopulation(...). The number of subpopulations and the species information must be identical.

Throws:
java.io.IOException