Package com.rubecula.darwin.domain.world

Darwin

See:
          Description

Interface Summary
Asexual Defines operations on asexual organisms.
Attraction This interface enables sexual selection.
HasMean  
Managed Interface to define the operations on a Population where after stabilizing on a best (fittest) solution, we update the environment, kill off the colonies other than the one containing the best organism, create daughter colonies, each of which has a differently modified environment based on the original environment.
Viability  
 

Class Summary
Attraction_ Base class for Attraction.
Attraction_Uniform Lifespan: permanent.
Best_Organism This class keeps track of the best organism, where best is defined as having the greatest fitness.
Census_Darwinian Class to provide a default implementation of Census_Sink TODO do we really need this class? No it is obsolete!
Census_Detail Implementation of SinkCensus specifically which tries to do sensible things for general types of phenotypes and genotypes.
Colony_  
Colony_Mayrian Default implementation of a Colony.
Environment_Muirian Lifespan: permanent.
Expresser_Mendelian Lifespan: permanent.
Expresser_Sex Lifespan: permanent.
Frequency Well, sometimes Java is simply bizarre.
FrequencyMap<T> Class to implement a frequency map.
Function_Choosy This class implements the Choosy.getMinimumDesirability(double) function and allows dynamic varying of the specific formula, by emplying an Evaluator.
Function_Desirable Concrete implementation of Desirable which extends Function_ and implements HasExpressions (thus it can be updated graphically at runtime).
Genomic_Asexual Lifespan: permanent.
Genomic_Sexual Lifespan: permanent.
Lek Lifespan: temporary Concrete class to model a collection of breeding males from which a female may choose a mate.
Mate Class to model a potential (male) mate.
MateChoice_ Abstract class defining the base methods of MateChoice.
MateChoice_Evaluator  
MateChoice_Wrightian Default implementation of MateChoice.
Messages  
MortalityStats  
NumericFrequencyMap This is a FrequencyMap where the keys each have an intrinsic value, yielded by invoking Number.doubleValue().
Organism_ Abstract class defining the base methods and fields of an implementation of Organism interface.
Organism_Asexual This concrete class represents an individual organism within a Taxon .
Organism_Sexual This concrete class represents an individual organism within a Taxon .
OrganismCensusContext  
OrganismFactory Factory Class to create Organism objects.
Population_ Abstract class defining the base methods and fields for an instance of the Population interface.
Population_Malthusian This concrete class is the default implementation of Population.
Population_Managed This abstract class is designed to be a base class for populations whose evolution is "managed".
QuantifiableFrequencyMap This is a FrequencyMap where the keys each have an intrinsic value, yielded by invoking Quantifiable.doubleValue().
Realm_Wallacian Standard implementation of Realm.
Registry_  
Registry_None This is the default concrete implementation of Registry and, as the name suggests, it does nothing at all.
Taxon_ Abstract class implementing Taxon interface.
Taxon_Darwinian Lifespan: permanent.
TraitFrequencyMap Note that the objects that go into this frequency map may be variable and therefore we call Trait.getKey() to determine how to uniquely identify the trait for purposes of the frequency map.
Viability_  
VisualizableListener_Census Implementation of VisualizableListener which knows how to take a census of the (changed) population.
 

Package com.rubecula.darwin.domain.world Description

Darwin

Contents:


Copyright Notice

Darwin Framework Project.
Copyright (C) 2003, 2007, 2009 Rubecula Software.
This library is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

CVS Version: $Revision: 1.5 $

Back to Top


World Package Overview

Here's an update of the registration text:

This project provides a set of framework classes for the development of Evolutionary Computation applications in Java. Such applications, which might be classed as genetic algorithms, genetic programming, etc., enable problems, typically complex and non-analytical, to be solved by successively evaluating a population of possible solutions and breeding from the better-fitting solutions to generate a new population. The code is platform-independent. It is my intention to make this project a resource which can be used and or contributed to by anyone working in the field. As such it is designed to be extremely general in its class structure, with a well-defined separation between method (framework) code and application code.

Back to Top


Darwin Philosophy

Here are some of the tenets of the philosophy behind the design and development of Darwin:

Back to Top


Programming Conventions

Back to Top


Class Structure

The following is an introduction to the major classes and interfaces of the darwin package. Use it as a starting point and/or as an adjunct to the javadoc. [NOTE: This section is far from complete - see the javadoc!] However, if there are discrepancies, then the javadoc must of course be considered definitive.  Most of the classes described are found in the com.rubecula.darwin package.  Some utilities, of a more general nature, are found in com.rubecula.util.

Following are descriptions of the darwin framework interfaces each having a simple concept name: Concept.

Following are descriptions of the darwin classes.

Back to Top

Important Notes:

The package is bundled with the Jakarta Commons Logging facility, without which it will not compile. You don't need your own logger to work with JCL but a log4j configuration file is provided and, if log4j is in your classpath, it will run as expected.
However, by default, all logging is turned off (logging is directed to the NoOpLog implementation). In order to turn it on, open up LogFactory_Darwin.java (currently in the util package but needs to be moved) and comment out the return new NoOpLog(); line and uncomment the LogFactory.getLog... line.

TODO THIS IS OUTDATED. You will find a working example applet: the PepperedMoth example, in the examples package. This applet has an optional feature provided which allows you to vary the formula expressions (in the options window of the applet). Normally, you will leave this feature off (and filter out the compilation of the Evaluator_JEP class which you won't need). In order to turn this feature "on" you must do the following:

  1. Procure an (open-source) license to JEP;
  2. Reenable compilation of Evaluator_JEP;
  3. In the config/pepperedMoth.properties file, set the expressionsEnabled property value to true.


Links:

Back to Top


Last Updated: 2007-03-01 By: Robin Hillyard



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