com.rubecula.darwin.domain.helper
Interface Taxon

All Superinterfaces:
Censusible, Evolvable, Generational, HasPhenotypeCache, net.sf.tostring0.Identifiable, Registry, Terminal, Theological
All Known Implementing Classes:
Taxon_, Taxon_Darwinian

public interface Taxon
extends Evolvable, Registry, HasPhenotypeCache, Censusible

Defines the methods supported by a unit of evolutionary computation (Taxon). Try not to get too hung up on the name "Taxon": a rose by any other name... Indeed, "unit", "system", "species", "clade", "phylogenetic entity", etc. would all be reasonable names for this type family. Essentially a Taxon is an evolvable object which "owns" a collection of Organisms which all share the same Genomic and Phenome, in other words what we commonly refer to as a species. If you want to model the interaction of two such species, for example predator and prey, then you need to have more than one taxon in your Evolution. The chief properties (fixed unless otherwise specified) of a taxon are:

realm
the implementer of Realm (i.e. the "model") to which the taxon belongs;
populations
a (variable) set of Population instances but TODO populations should belong to the realm, not the taxon;
fecundity
the implementer of the Fecundity interface,
which defines how well organisms of the taxon reproduce;
genomic
the implementer of the Genomic interface, which defines the genomic organization for all organisms of the taxon;
phenome
the implementer of the Phenome interface,
which defines the phenome for all organisms of the taxon;
mortality
the implementer of the Mortality interface, which defines how likely organisms of the taxon are to die;
chooser
the implementer of the MateChoice interface, which defines how organisms of the taxon choose a mate;
population listeners
a (variable) set of implementers of the VisualizableListener interface, each of which will be notified via its callback method when the population changes (typically at the end of each generation)
census taker
the implementer of the Census interface, which defines how census operations are performed on the organisms.

Version:
$Revision: 1.2 $
Author:
Robin Hillyard

Method Summary
 int addPopulation(Population population)
          Mutating method to add a population to the system.
 void addVisualizableListener(VisualizableListener listener)
          Mutating method to add, for each of this system's populations, a listener, i.e.
 void doCensus()
          Method to enumerate this population for census purposes.
 Census getCensusTaker()
           
 MateChoice getChooser()
           
 Fecundity getFecundity()
           
 Genomic getGenomic()
           
 Mortality getMortality()
           
 Phenome getPhenome()
          Method to get the phenome for this system, i.e.
 java.lang.Object getProperty(java.lang.Object key)
           
 Realm getRealm()
           
 int getSeedPopulation()
           
 java.util.Collection<VisualizableListener> getVisualizableListeners()
          Getter/setter typically called by reflection.
 boolean isLastGeneration()
           
 void setPopulations(java.util.Collection<Population> populations)
           
 java.lang.Object setProperty(java.lang.String key, java.lang.Object value)
          Method to set an arbitrary property for this system.
 void setVisualizableListeners(java.util.Collection<VisualizableListener> listeners)
          Getter/setter typically called by reflection.
 
Methods inherited from interface com.rubecula.darwin.foundation.Evolvable
getGeneration, getResult
 
Methods inherited from interface net.sf.tostring0.Identifiable
getIdentifier
 
Methods inherited from interface com.rubecula.darwin.foundation.Generational
nextGeneration
 
Methods inherited from interface com.rubecula.darwin.foundation.Theological
cullMembers, seedMembers
 
Methods inherited from interface com.rubecula.darwin.foundation.Terminal
isFinished
 
Methods inherited from interface com.rubecula.darwin.domain.helper.Registry
registerBirths, registerDeaths, registerMarriages
 
Methods inherited from interface com.rubecula.darwin.domain.helper.HasPhenotypeCache
getPhenotypeCache
 
Methods inherited from interface com.rubecula.darwin.domain.helper.Censusible
censusMe, getCensusibleChildren
 

Method Detail

addPopulation

int addPopulation(Population population)
Mutating method to add a population to the system.

Parameters:
population - an implementer of Population.
Returns:
true if the population was added successfully.

addVisualizableListener

void addVisualizableListener(VisualizableListener listener)
Mutating method to add, for each of this system's populations, a listener, i.e. an implementer of VisualizableListener.

Parameters:
listener - the listener of population change events.

doCensus

void doCensus()
              throws java.io.IOException
Method to enumerate this population for census purposes.

Throws:
java.io.IOException

getCensusTaker

Census getCensusTaker()
Returns:
the application-specific implementer of Census.

getChooser

MateChoice getChooser()
Returns:
the application-specific implementer of MateChoice.

getFecundity

Fecundity getFecundity()
Returns:
the application-specific implementer of Fecundity.

getGenomic

Genomic getGenomic()
Returns:
the Genomic for this Taxon System.

getMortality

Mortality getMortality()
Returns:
the application-specific implementer of Mortality.

getPhenome

Phenome getPhenome()
Method to get the phenome for this system, i.e. the implementer of Phenome.

Returns:
value of (private) field _Phenome.

getProperty

java.lang.Object getProperty(java.lang.Object key)
Parameters:
key -
Returns:
the property for the key.

getRealm

Realm getRealm()
Returns:
the realm to which this system belongs

getSeedPopulation

int getSeedPopulation()
Returns:
the seed population

getVisualizableListeners

java.util.Collection<VisualizableListener> getVisualizableListeners()
Getter/setter typically called by reflection.

Returns:
the population listeners as a collection.

isLastGeneration

boolean isLastGeneration()
Returns:
true if this is the last generation we will process

setPopulations

void setPopulations(java.util.Collection<Population> populations)
Parameters:
populations - Getter/setter typically called by reflection.

setProperty

java.lang.Object setProperty(java.lang.String key,
                             java.lang.Object value)
Method to set an arbitrary property for this system.

Parameters:
key -
value -
Returns:
the previous value of the property for this key, if any.

setVisualizableListeners

void setVisualizableListeners(java.util.Collection<VisualizableListener> listeners)
Getter/setter typically called by reflection.

Parameters:
listeners -


Copyright © 2010 Rubecula Software, LLC. All Rights Reserved.