Free cookie consent management tool by TermsFeed Policy Generator

source: branches/OKBJavaConnector/ECJClient/src/ec/multiobjective/nsga2/README @ 9598

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

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

File size: 3.0 KB
Line 
1This package contains an implementation of the Non-Dominated Sorting
2Genetic Algorithm 2 (NSGA-II).
3
4Details of this approach can be found in the following paper:
5
6Kalyanmoy Deb, Amrit Pratap, Sameer Agarwal, and T. Meyarivan. A Fast and
7Elitist Multiobjective Genetic Algorithm: NSGA-II. In IEEE Transactions
8On Evolutionary Computation.  6(2).  2002.
9
10The ec.app.moosuite package contains common multiobjective test cases
11to test NSGA-II against.
12
13
14
15How ECJ implements NSGA-II
16--------------------------
17
18NSGA-II is an "archive" elitist method which uses Pareto front ranks
19instead of composite fitness, and sparsity along the front rank when
20there is not enough remaining room to fill the archive.
21
22We extend SimpleBreeder merely to build the next-generation population
23by breeding children from the previous population (the archive) and then
24appending the current archive to the newly-generated children.  This
25is essentially a version of (mu+mu).
26
27Most of the actual work is done in a special version of SimpleEvaluator,
28where the Individuals are evaluated, then broken into Pareto Front Ranks,
29then loaded into the archive.  When there's not enough room left in the
30archive for another full rank, sparsity is used to decide who gets to be
31included.  The archive then forms the next-generation population.
32
33NSGA-II has fixed archive size (the population size), and so ignores the 'elites'
34declaration.  However it will adhere to the 'reevaluate-elites' parameter
35to determine whether to force fitness reevaluation.
36
37SPEA2 and NSGA-II have different approaches to building archives which impacts
38on how you need to set your population sizes in order to achieve the same number
39of evaluations.  In ECJ, NSGA-II does not include the archive as part of the basic
40population size.  Rather, it builds the archive separately, then builds the
41population by breeding from the archive, then gloms the two together.  On the
42other hand, SPEA2 uses a (tunable) portion of its population as the archive, and
43breeds individuals into the remainder of the population.  This means that to have
44a "population size" for SPEA2 that's the same as NSGA-II, you need to increase
45SPEA2's population size to NSGA-II's population size plus SPEA2's archive (elites)
46size.  For example, if you have an NSGA-II population size of 100, and SPEA2 is using
47an archive size of 50, to be fair you should make SPEA2's population size be 150.
48
49If you set things so that SPEA2 and NSGA-II must reevaluate the fitness of
50their archives (which is rare), things are different.  Now you should set SPEA2
51so that its archive size and population size is equal to twice NSGA-II's population
52size (because NSGA-II's archive size is the size of its population).
53
54The classes in question:
55
56
57ec.multiobjective.nsga2.NSGA2Breeder
58
59The SimpleBreeder subclass.
60
61
62ec.multiobjective.nsga2.NSGA2Evaluator
63
64The SimpleEvaluator subclass.
65
66
67ec.multiobjective.nsga2.NSGA2MultiObjectiveFitness
68
69A special subclass of MultiObjectiveFitness which adds auxillary fitness
70measures special to NSGA-II (notably rank and sparsity).
Note: See TracBrowser for help on using the repository browser.