package gp;

public interface InterfaceIndividual {
	/**
	 * Evaluate the individual and return the fitness.
	 * 
	 * @return the individual fitness
	 */
	public double evaluate();

	/**
	 * A crossover operator.
	 * 
	 * @param y
	 */
	public void crossover(InterfaceIndividual y);

	/**
	 * This method performs a randomized mutation of every gene.
	 * 
	 * @param pMut
	 */
	public void mutate(double pMut);

	/**
	 * The replication operator. WTF!!
	 * 
	 * @return
	 */
	public Object clone();

	/**
	 * Return a String representing the individual.
	 * 
	 * @return a String representing the individual
	 */
	public String getStringRepresentation();

	/**
	 * This method initializes the genotype randomly
	 */
	public void defaultInit();
}
