/*
* Encog(tm) Core v2.5 - Java Version
* http://www.heatonresearch.com/encog/
* http://code.google.com/p/encog-java/
* Copyright 2008-2010 Heaton Research, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* For more information on Heaton Research copyrights, licenses
* and trademarks visit:
* http://www.heatonresearch.com/copyright
*/
package org.encog.solve.genetic.species;
import java.util.List;
import org.encog.solve.genetic.genome.Genome;
/**
* Defines the features used in a species. A species is a group of genomes.
*/
public interface Species {
/**
* Calculate the amount that a species will spawn.
*/
void calculateSpawnAmount();
/**
* Choose a worthy parent for mating.
*
* @return The parent genome.
*/
Genome chooseParent();
/**
* @return The age of this species.
*/
int getAge();
/**
* @return The best score for this species.
*/
double getBestScore();
/**
* @return How many generations with no improvement.
*/
int getGensNoImprovement();
/**
* @return Get the leader for this species. The leader is the genome with
* the best score.
*/
Genome getLeader();
/**
* @return The numbers of this species.
*/
List<Genome> getMembers();
/**
* @return The number of genomes this species will try to spawn into the
* next generation.
*/
double getNumToSpawn();
/**
* @return The number of spawns this species requires.
*/
double getSpawnsRequired();
/**
* @return The species ID.
*/
long getSpeciesID();
/**
* Purge old unsuccessful genomes.
*/
void purge();
/**
* Set the age of this species.
* @param age The age.
*/
void setAge(int age);
/**
* Set the best score.
* @param bestScore The best score.
*/
void setBestScore(double bestScore);
/**
* Set the number of generations with no improvement.
* @param gensNoImprovement The number of generations with
* no improvement.
*/
void setGensNoImprovement(int gensNoImprovement);
/**
* Set the leader of this species.
* @param leader The leader of this species.
*/
void setLeader(Genome leader);
/**
* Set the number of spawns required.
* @param spawnsRequired The number of spawns required.
*/
void setSpawnsRequired(double spawnsRequired);
}