EC2:  A More Interesting Evolutionary Computation System

The Java code in this directory is a generalization of the EC1 code in
the directions discussed in Chapter 3, namely, the introduction of the
code for canonical versions of the three historically important
evolutionary algorithms (EAs): Evolutionary Strategies (ESs),
Evolutionary Programming (EP), and Genetic Algorithms (GAs).

The design goal for EC2 was to use the object-oriented features of
Java to build a simple but flexible system that allowed one to try out
the canonical EAs and get a sense for how they differ from each other,
and to provide some limited capabilities for changing some of the
internal components of an EA to see how EA behavior is affected.

In keeping with the KISS philosophy of EC1, EC2 is also implemented
as a "command line" system rather than a GUI, and uses the same
configuration file paradigm as EC1 to add user-selectable options
to EC2.  In particular, a configuration file can now contain:
	EA=xx
where xx can be one of:  ev, es, ep, or ga, allowing a user to
choose which EA to apply to a particular problem.  This is implemented
by generalizing the class EA and adding new specializations: ES_EA,
EP_EA, and GA_EA.

For simplicity in Chapter 3 and in the EC2 code, there is still only
one class of  problems (fitness landscapes), namely, real-valued
parameter optimization problems.  However, canonical EAs differ in
how they represent such problems internally and what reproductive
operators they use.  Such choices are parameterized in EC2 and
take the form:
	Representation=xxx
	Mutation=yyy ...
	Crossover=zzz ...
where xxx can be: real or binary;
where yyy can be: none, delta, gaussian, or bitflip;
where zzz can be: none, one_point, or two_point

So, an example EC2 configuration file might be:

  EA=es
  PopSize=1 5
  Representation=real
  Mutation=gaussian 1.0
  Crossover=none
  Landscape=RVP Parabola 1 -5.0 5.0 hard
  SimLimit=1000
  RandSeed=12345
  Report=full

that represents a fairly traditional (1+5)-ES with a real-valued
representation and Gaussian mutation and no crossover.

Alternately, a fairly traditional GA can be specified as:

  EA=ga
  PopSize=50
  Representation=binary
  Mutation=bitflip
  Crossover=one_point
  Landscape=RVP Parabola 1 -5.0 5.0 hard
  SimLimit=1000
  RandSeed=12345
  Report=full
 

As with EC1 the complete details are best understood by reading the
EC2 code, which is what you are expected to do!  In comparing the EC2
code with EC1 what you should see in addition to the EA extensions is
that the Genome class is now the base class for binary and real
representations and their associated operators, and the classes
Population and Individual have been generalized and specialized to
handle both real and binary representations.




