package jcgp.backend.modules.mutator;
import jcgp.backend.modules.Module;
import jcgp.backend.population.Chromosome;
import jcgp.backend.resources.Resources;
/**
* This class specifies the basic characteristics of a mutation operator. Its job is
* to modify the connections and functions of the chromosome according to the operator's
* parameters.
*
* Parameters may be specified to control the implemented mutation. Any parameters
* registered with {@code registerParameters()} should be displayed by the user interface,
* if it is being used. See {@link Module} for more information.
*
* It is advisable to use {@code Resources.reportln()} and {@code Resources.report()}
* to print any relevant information. Note that reportln() and report() are affected
* by the report interval base parameter. Use {@code Resources.println()} and
* {@code Resources.print()} to print information regardless of the current generation.
* See {@link Resources} for more information.
*
* @see Module
*
* @author Eduardo Pedroni
*
*/
public abstract class Mutator extends Module {
/**
* For internal use only, initialises the resources field.
*
* @param resources the experiment's resources.
*/
protected Mutator(Resources resources) {
super(resources);
}
/**
* Applies mutations to the specified chromosome according
* to the parameter values.
*
* @param chromosome the chromosome to mutate.
*/
public abstract void mutate(Chromosome chromosome);
}