package jcgp.backend.modules.mutator; import jcgp.backend.modules.Module; import jcgp.backend.population.Chromosome; import jcgp.backend.resources.Resources; /** * This interface specifies the required behaviour 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 * returned by {@code getLocalParameters()} should be displayed by the user interface, * if it is being used. See {@link Parameter} 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 interface Mutator extends Module { /** * Applies mutations to the specified chromosome according * to the parameter values. * * @param chromosome the chromosome to mutate. * @param resources parameters and utilities for optional reference. */ void mutate(Chromosome chromosome, Resources resources); }