Free cookie consent management tool by TermsFeed Policy Generator

source: branches/OKBJavaConnector/ECJClient/src/ec/steadystate/README @ 6703

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

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

File size: 4.5 KB
Line 
1This package implements steady state evolution and, by extension, asynchronous
2evolution when used in combination with the master/slave evaluation package.
3The steady state evolution facility in ECJ is fairly simple: each iteration
4the facility breeds a single individual, evaluates it, and reinserts it into
5the population (selecting an individual to die and be replaced with it).  In
6asynchronous evolution, the system breeds individuals and ships them off to
7remote slaves to evaluated whenever a remote slave is available; when an
8individual is completed from a remote slave, if the initial population has not
9yet been filed up, the individual is inserted directly in the population, else
10the system selects an individual to die and be replaced by it.
11
12To do this magic requires several replacement classes: a new top-level
13evolution state object provides the evolutionary loop, plus a custom breeder
14and evaluator.  Because steady-state isn't generational, certain ECJ classes
15are required to implement special interfaces in order to be compatible with
16it: breeding sources (breeding pipelines, selection methods) must be of
17SteadyStateBSourceform -- notably many selection methods don't work right,
18we suggest using Tournament Selection; the statistics facility must implement
19a different non-generational collection of statistics hooks embodied in
20SteadyStateStatisticsForm; and exchangers must implement
21SteadyStateExchangerForm.
22
23Steady state evolution doesn't have a notion of generations per se, as no
24entire generation is replaced each iteration.  Instead, the evolution state
25facility defines a "generation" as when a population's worth of individuals
26has just been introduced into the system.  Most statistics counts are run
27not off of these pseudo-generations but rather are based on the number of
28*evaluations* (a variable in SteadyStateEvolutionState) which have been
29done so far.  As such you have the option of either stating the number
30of evaluations that the system should run for, OR the number of "generations"
31(so to speak) the system should run for.  See the file steadystate.params
32for an example of how to set up steady state evolution.
33
34Classes of relevance:
35
36
37
38ec.steady.SteadyStateEvolutionState
39
40The top-level EvolutionState which performs steady-state and asynchronous
41evolution loops.
42
43
44ec.steady.SteadyStateBreeder
45
46The steady-state breeder.   A drop-in replacement for Breeder, except that
47it also requires an additional parameter 'deselector' which indicates the
48SelectionMethod used to pick individuals to be replaced with new incoming
49children.  This could be a random selector, or a Tournament Selection
50method picking the worst individuals, etc.  See steadystate.params for
51an example.
52
53
54ec.steady.SteadyStateEvaluator
55
56The steady-state evaluator.  A drop-in replacement for Evaluator.
57
58
59ec.steady.QueueIndividual
60
61A wrapper which holds an Individual, plus the subpopulation the Individual
62is stored in.  This class is used by the SteadyStateEvaluator and also by
63the master-slave evaluation system to maintain some additional information
64about the Individual for purposes of Asynchronous Evolution.  It's an
65internal class and shouldn't be fooled around with; it's public because
66the master-slave facility must also be able to use it.  Ignore it.
67
68
69ec.steady.SteadyStateStatisticsForm
70
71Statistics objects which implement this interface will receive additional
72statistics hooks appropriate for the steady state loop (based largely on
73individuals being evaluated rather than based around generations).  This
74is an optional interface and your Statistics object can always be used
75even if it doesn't implement this interface; it just won't receive the
76new method calls.
77
78
79ec.steady.SteadyStateExchangerForm
80
81All exchangers must implement the SteadyStateExchangerForm in order to be
82used with the steady state facility.  This is a "gold star" interface which
83has no methods but merely is implemented by exchangers which have agreed
84to perform certain special tasks (see the code of the class).
85
86
87ec.steady.SteadyStateBSourceForm
88
89All breeding sources (BreedingPipelines, SelectionMethods) must implement
90this interface in order to be used with the steady state facility.  The
91interface largely informs breeding sources that an individual has replaced
92another in the population  Some breeding sources (such as
93FitnessProportionateSelection) must update their distributions each time
94this happens, which is quite expensive, and so they do not implement this
95interface.  We suggest you use Tournament Selection, which is effective
96and fast.
97
98
Note: See TracBrowser for help on using the repository browser.