/*
* This file is part of JGAP.
*
* JGAP offers a dual license model containing the LGPL as well as the MPL.
*
* For licensing information please see the file license.txt included with JGAP
* or have a look at the top of class org.jgap.Chromosome which representatively
* includes the JGAP license policy applicable for any file delivered with JGAP.
*/
package org.jgap.gp;
import org.jgap.gp.impl.*;
import org.jgap.*;
/**
*
* Interface for creating a single program (IGPProgram).
*
* @author Klaus Meffert
* @since 3.2.2
*/
public interface IProgramCreator {
/** String containing the CVS revision. Read out via reflection!*/
final static String CVS_REVISION = "$Revision: 1.3 $";
/**
* Initializes the given population by adding new individuals to it.
*
* @param a_conf the configuration to use
* @param a_programIndex index of the current program in the population,
* starting with 0
* @param a_types Class[]
* @param a_argTypes Class[][]
* @param a_nodeSets CommandGene[][]
* @param a_minDepths int[]
* @param a_maxDepths int[]
* @param a_maxNodes int
* @param a_depth the required depth of the program
* @param a_grow true: use grow mode, false: use full mode
* @param a_tries maximum number of tries allowed to produce a valid program
* @param a_fullModeAllowed boolean[]
*
* @return the newly created program
*
* @throws InvalidConfigurationException in case of any error
*
* @author Klaus Meffert
* @since 3.2.2
*/
IGPProgram create(GPConfiguration a_conf, int a_programIndex, Class[] a_types,
Class[][] a_argTypes, CommandGene[][] a_nodeSets,
int[] a_minDepths, int[] a_maxDepths, int a_maxNodes,
int a_depth, boolean a_grow, int a_tries,
boolean[] a_fullModeAllowed)
throws InvalidConfigurationException;
}