package net.sourceforge.cilib.algorithm.population;

import java.io.Serializable;

import net.sourceforge.cilib.util.Cloneable;

public interface IterationStrategy<E extends PopulationBasedAlgorithm> extends Cloneable, Serializable {
	
	/**
	 * {@inheritDoc}
	 */
	public abstract IterationStrategy<E> getClone();
	
	/**
	 * Perform the iteration of the PopulationBasedAlgorithm.
	 * <p>
	 * Due to the nature of the PopulationBasedAlgorithms, the actual manner in which the algorithm's
	 * iteration is performed is deferred to the specific iteration strategy being used.
	 * <p>
	 * This implies that the general structure of the iteration for a specific flavour of
	 * algorithm is constant with modifications on that algorithm being made. For example,
	 * within a Genetic Algorithm you would expect:
	 * <ol>
	 *   <li>Parent individuals to be <b>selected</b> in some manner</li>
	 *   <li>A <b>crossover</b> process to be done on the selected parent individuals to create
	 *       the offspring</li>
	 *   <li>A <b>mutation</b> process to alter the generated offspring</li>
	 *   <li><b>Recombine</b> the existing parent individuals and the generated offspring to create
	 *       the next generation</li>
	 * </ol>
	 *       
	 * @param algorithm The algorithm to perform the iteration process on.
	 */
	public abstract void performIteration(E algorithm);

}
@@ -1,8 +1,891 @@
+/*%0A * Copyright (C) 2003 - 2008%0A * Computational Intelligence Research Group (CIRG@UP)%0A * Department of Computer Science%0A * University of Pretoria%0A * South Africa%0A *%0A * This program is free software; you can redistribute it and/or modify%0A * it under the terms of the GNU General Public License as published by%0A * the Free Software Foundation; either version 2 of the License, or%0A * (at your option) any later version.%0A *%0A * This program is distributed in the hope that it will be useful,%0A * but WITHOUT ANY WARRANTY; without even the implied warranty of%0A * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the%0A * GNU General Public License for more details.%0A *%0A * You should have received a copy of the GNU General Public License%0A * along with this program; if not, write to the Free Software%0A * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA%0A */%0A
 package 

gpampara | 2008-06-03 10:35:13 +0200 Corrected the javadoc.