package opt.ga; import dist.Distribution; import opt.EvaluationFunction; import opt.GenericOptimizationProblem; import shared.Instance; /** * * @author Andrew Guillory gtg008g@mail.gatech.edu * @version 1.0 */ public class GenericGeneticAlgorithmProblem extends GenericOptimizationProblem implements GeneticAlgorithmProblem { /** * The cross over function */ private CrossoverFunction crossover; /** * The mutation function */ private MutationFunction mutation; /** * Make a new generic genetic algorithm problem * @param crossover the cross over operator * @param muation the mutation operator * @param eval the evaluation function * @param dist the initial distribution */ public GenericGeneticAlgorithmProblem(EvaluationFunction eval, Distribution dist, MutationFunction mutation, CrossoverFunction crossover) { super(eval, dist); this.mutation = mutation; this.crossover = crossover; } /** * @see opt.ga.GeneticAlgorithmProblem#mate(opt.Instance, opt.Instance) */ public Instance mate(Instance a, Instance b) { return crossover.mate(a, b); } /** * @see opt.ga.GeneticAlgorithmProblem#mutate(opt.Instance) */ public void mutate(Instance d) { mutation.mutate(d); } }