Free cookie consent management tool by TermsFeed Policy Generator

source: branches/OKBJavaConnector/ECJClient/src/ec/Breeder.java @ 6244

Last change on this file since 6244 was 6152, checked in by bfarka, 14 years ago

added ecj and custom statistics to communicate with the okb services #1441

File size: 1.6 KB
Line 
1/*
2  Copyright 2006 by Sean Luke
3  Licensed under the Academic Free License version 3.0
4  See the file "LICENSE" for more information
5*/
6
7
8package ec;
9
10/*
11 * Breeder.java
12 *
13 * Created: Tue Aug 10 21:00:11 1999
14 * By: Sean Luke
15 */
16
17/**
18 * A Breeder is a singleton object which is responsible for the breeding
19 * process during the course of an evolutionary run.  Only one Breeder
20 * is created in a run, and is stored in the EvolutionState object.
21 *
22 * <p>Breeders typically do their work by applying a Species' BreedingPipelines
23 * on subpopulations of that species to produce new individuals for those
24 * subpopulations.
25 *
26 * <p>Breeders may be multithreaded.  The number of threads they may spawn
27 * (excepting a parent "gathering" thread) is governed by the EvolutionState's
28 * breedthreads value.
29 *
30 * <p>Be careful about spawning threads -- this system has no few synchronized
31 * methods for efficiency's sake, so you must either divvy up breeding in a
32 * thread-safe fashion and assume that all individuals
33 * in the current population are read-only (which you may assume for a generational
34 * breeder which needs to return a whole new population each generation), or
35 * otherwise you must obtain the appropriate locks on individuals in the population
36 * and other objects as necessary.
37 *
38 * @author Sean Luke
39 * @version 1.0
40 */
41
42public abstract class Breeder implements Singleton
43    {
44    /** Breeds state.population, returning a new population.  In general,
45        state.population should not be modified. */
46
47    public abstract Population breedPopulation(final EvolutionState state) ;
48    }
Note: See TracBrowser for help on using the repository browser.