/*
* BioJava development code This code may be freely distributed and modified
* under the terms of the GNU Lesser General Public Licence. This should be
* distributed with the code. If you do not have a copy, see:
* http://www.gnu.org/copyleft/lesser.html Copyright for this code is held
* jointly by the individual authors. These should be listed in @author doc
* comments. For more information on the BioJava project and its aims, or to
* join the biojava-l mailing list, visit the home page at:
* http://www.biojava.org/
*/
package org.biojavax.ga;
import org.biojava.bio.symbol.SymbolList;
import org.biojava.utils.ChangeType;
import org.biojava.utils.ChangeVetoException;
import org.biojava.utils.Changeable;
/**
* A GA 'organism' contains one or more Chromosomes
*
* @author Mark Schreiber
* @author Susanne Merz
* @author Andreas Dräger
* @version 1.0
* @since 1.5
*/
public interface Organism extends Changeable {
/**
* This method allows to set the fitness of this organism to the specified
* value. Generally this will be an array, which in the most cases contains
* just a single entry. In cases where we want to have multi-objective
* optimization we may want to make use of a more general fitness array with
* mutliple entries.
*
* @param fitness
*/
public void setFitness(double[] fitness);
/**
* Returns the current fitness of this organism. This is an array. Note that
* in the most cases this array may only contain one single value, but for
* multi-objective optimization it is necessary to store multiple fitness
* values.
*
* @return the fitness of the organism
*/
public double[] getFitness();
/**
* Gets the organisms 'chromosome' sequences
*
* @return a SymbolList[]
*/
public SymbolList[] getChromosomes();
/**
* Sets the organisms 'chromosome' sequences.
*
* @param chromosomes
* a SymbolList[]
* @throws ChangeVetoException
* if the Chromosome collection of the Organism is unchangable
*/
public void setChromosomes(SymbolList[] chromosomes)
throws ChangeVetoException;
/**
* Gets the organisms name
*
* @return the name String
*/
public String getName();
/**
* Sets the organisms name
*
* @param name
* the name of the organism.
* @throws ChangeVetoException
* if the name may not be changed.
*/
public void setName(String name) throws ChangeVetoException;
/**
* Creates a replica of this Organism
with a new name.
*
* @param name
* the new name for the sequence.
* @return the replicated organism.
*/
public Organism replicate(String name);
/**
* Is the organism Haploid?
*
* @return true if it is.
*/
public boolean isHaploid();
public static final ChangeType CHROMOSOMES = new ChangeType(
"Chromosomes changed",
"ga.Organism", "CHROMOSOMES");
public static final ChangeType NAME = new ChangeType("Name changed",
"ga.Organism", "NAME");
}