/*
  Copyright 2006 by Sean Luke
  Licensed under the Academic Free License version 3.0
  See the file "LICENSE" for more information
*/


package ec;

/* 
 * Breeder.java
 * 
 * Created: Tue Aug 10 21:00:11 1999
 * By: Sean Luke
 */

/**
 * A Breeder is a singleton object which is responsible for the breeding
 * process during the course of an evolutionary run.  Only one Breeder
 * is created in a run, and is stored in the EvolutionState object.
 *
 * 

Breeders typically do their work by applying a Species' BreedingPipelines * on subpopulations of that species to produce new individuals for those * subpopulations. * *

Breeders may be multithreaded. The number of threads they may spawn * (excepting a parent "gathering" thread) is governed by the EvolutionState's * breedthreads value. * *

Be careful about spawning threads -- this system has no few synchronized * methods for efficiency's sake, so you must either divvy up breeding in a * thread-safe fashion and assume that all individuals * in the current population are read-only (which you may assume for a generational * breeder which needs to return a whole new population each generation), or * otherwise you must obtain the appropriate locks on individuals in the population * and other objects as necessary. * * @author Sean Luke * @version 1.0 */ public abstract class Breeder implements Singleton { /** Breeds state.population, returning a new population. In general, state.population should not be modified. */ public abstract Population breedPopulation(final EvolutionState state) ; }

Ads help maintain this website.