/* Copyright 2006 by Sean Luke Licensed under the Academic Free License version 3.0 See the file "LICENSE" for more information */ package ec; /* * SelectionMethod.java * * Created: Mon Aug 30 19:19:56 1999 * By: Sean Luke */ /** * A SelectionMethod is a BreedingSource which provides direct IMMUTABLE pointers * to original individuals in an old population, not fresh mutable copies. * If you use a SelectionMethod as your BreedingSource, you must * SelectionMethods might include Tournament Selection, Fitness Proportional Selection, etc. * SelectionMethods don't have parent sources. *

Typical Number of Individuals Produced Per produce(...) call
Always 1. * @author Sean Luke * @version 1.0 */ public abstract class SelectionMethod extends BreedingSource { public static final int INDS_PRODUCED = 1; /** Returns 1 (the typical default value) */ public int typicalIndsProduced() { return INDS_PRODUCED; } /** A default version of produces -- this method always returns true under the assumption that the selection method works with all Fitnesses. If this isn't the case, you should override this to return your own assessment. */ public boolean produces(final EvolutionState state, final Population newpop, final int subpopulation, final int thread) { return true; } /** A default version of prepareToProduce which does nothing. */ public void prepareToProduce(final EvolutionState s, final int subpopulation, final int thread) { return; } /** A default version of finishProducing, which does nothing. */ public void finishProducing(final EvolutionState s, final int subpopulation, final int thread) { return; } public int produce(final int min, final int max, final int start, final int subpopulation, final Individual[] inds, final EvolutionState state, final int thread) { int n=INDS_PRODUCED; if (nmax) n = max; for(int q=0;q