/*
* Encog(tm) Core v3.4 - Java Version
* http://www.heatonresearch.com/encog/
* https://github.com/encog/encog-java-core
* Copyright 2008-2016 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.ml.ea.species;
import java.util.List;
import org.encog.ml.ea.genome.Genome;
import org.encog.ml.ea.population.Population;
/**
* Defines a species.
*/
public interface Species {
/**
* Add a genome to this species.
* @param genome The genome to add.
*/
void add(Genome genome);
/**
* Calculate this genome's share of the next population.
* @param shouldMinimize True if we see to minimize the score.
* @param maxScore The best score.
* @return The share of this species, as a percent ratio.
*/
double calculateShare(boolean shouldMinimize, double maxScore);
/**
* @return The age of this species.
*/
int getAge();
/**
* @return The best score for this species.
*/
double getBestScore();
/**
* @return The number of generations with no imrpvement.
*/
int getGensNoImprovement();
/**
* @return The leader of this species.
*/
Genome getLeader();
/**
* @return The members of this species.
*/
List<Genome> getMembers();
/**
* @return Get the offspring count.
*/
int getOffspringCount();
/**
* @return The offspring share for the next iteration's population.
*/
double getOffspringShare();
/**
* @return The population.
*/
Population getPopulation();
/**
* Set the age of this species.
* @param theAge The age.
*/
void setAge(int theAge);
/**
* Set the best score for this species.
* @param theBestScore The best score.
*/
void setBestScore(double theBestScore);
/**
* Set the number of generations with no improvement.
* @param theGensNoImprovement The generation count with no improvement.
*/
void setGensNoImprovement(int theGensNoImprovement);
/**
* Set the leader of this species.
* @param theLeader The leader.
*/
void setLeader(Genome theLeader);
/**
* Set the offspring count.
* @param offspringCount The offspring count.
*/
void setOffspringCount(int offspringCount);
/**
* Set the population.
* @param thePopulation The population.
*/
void setPopulation(Population thePopulation);
}