1351 lines
62 KiB
Plaintext
1351 lines
62 KiB
Plaintext
|
Open BEAGLE Change Log
|
||
|
|
||
|
3.0.3: (29/11/2007)
|
||
|
|
||
|
- Fix bug in reading GP ephemeral random constants (CG)
|
||
|
|
||
|
Due to a wrong signature, method GP::EphemeralT<T>::readWithContext was
|
||
|
not properly called for reading a GP ephemeral random constant from a XML
|
||
|
file. (Thanks to Bartek)
|
||
|
|
||
|
3.0.2: (14/11/2007)
|
||
|
|
||
|
- Updated to PACC 1.3.1 (CG)
|
||
|
|
||
|
- Conditional compilation of code in 'tests' directory (CG)
|
||
|
|
||
|
Compilation of code in 'tests' directory is now disabled. It can be
|
||
|
enabled through option '--enable-tests' to the configure script. This
|
||
|
should reduce the compilation time for users, which are generally not
|
||
|
interested in compiling these various tests.
|
||
|
|
||
|
- Modification to build system for fast compilation on Unix (CG)
|
||
|
|
||
|
Heavy use of templates conjugated to division of code in several
|
||
|
independent .cpp files generate long compilation time on g++ and similar
|
||
|
Unix compilers. The modification allow building library from a single
|
||
|
.cpp file that includes other relevant source files used to generate the
|
||
|
library such that compilation time is reduced by a factor 5.
|
||
|
|
||
|
- Bug fix in reading method name for class GP::EphemeralT<T> (CG + JFD)
|
||
|
|
||
|
A change of reading method name in the interface of class GP::Primitive
|
||
|
was not propagated to class GP::EphemeralT<T>. This disabled correct
|
||
|
reading of an ephemeral from a file, for example from a milestone.
|
||
|
(Thanks to Jean-Francois Dupuis for spotting the bug.)
|
||
|
|
||
|
- Bug fix when reading a Beagle::Matrix from an empty string (CG)
|
||
|
|
||
|
- Bug fix: OversizeOp's ratio now scales the population (MW)
|
||
|
|
||
|
OversizeOp was previously increasing the deme size by DemeSize*Ratio.
|
||
|
Now it makes the deme size equal to DemeSize*Ratio. Also a special
|
||
|
ratio of -1.0 was added that makes the deme size the same size as
|
||
|
specified in 'ec.pop.size'.
|
||
|
|
||
|
- Bug fix: Fitness validity in TermMinFitnessOp and TermMaxFitnessOp (MW)
|
||
|
|
||
|
The two termination operators TermMinFitnessOp and TermMaxFitnessOp
|
||
|
were not testing the validity of the individuals' fitness values.
|
||
|
Validity of fitness values are now tested.
|
||
|
|
||
|
- Corrected inconsistance with hall-of-fame computation in knapsack (CG)
|
||
|
|
||
|
Configuration of knapsack have been modified for better computation
|
||
|
of the Pareto hall-of-fame during the evolution. (Thanks to Bastien)
|
||
|
|
||
|
- Bug Fix: MilestoneWriteOp now handles exceptions during write() (MW)
|
||
|
|
||
|
- Added commas to uint2ordinal() when num is 10,000 or more (MW)
|
||
|
|
||
|
- Fix bug in standard STGP mutation operator (CG)
|
||
|
|
||
|
Since the changes done in version 3.0.0, typed standard STGP mutation
|
||
|
was not working properly, because of a change in the architecture of the
|
||
|
GP initialization operators. (Thanks to Nicolas Navet)
|
||
|
|
||
|
- Altered parity example so that it matched Koza's work in GPII (MW)
|
||
|
|
||
|
Function set is now (AND,OR,NAND,NOR), as stated in GPII book.
|
||
|
|
||
|
- Maximum generation termination modified (CG)
|
||
|
|
||
|
Termination of an evolution is no more deactivated with a maximum
|
||
|
number of generation set to 0. This parameter value rather stop the
|
||
|
evolution after the application of bootstrap operator set.
|
||
|
|
||
|
- Bug fix to support ADF without arguments (CG)
|
||
|
|
||
|
Fixed GP::Invoker::execute to allow ADFs without arguments, without
|
||
|
having to use a fake argument primitive.
|
||
|
|
||
|
- Correction to minimal bounds for real-valued GA and ES (CG)
|
||
|
|
||
|
Minimal bounds for real-valued GA and ES has been changed from DBL_MIN
|
||
|
(1e-308) to -DBL_MAX (-1e308), which make more sense for usual
|
||
|
unbounded real-valued optimisation problems.
|
||
|
|
||
|
- Bug correction and improved support for CMA-ES. (CG)
|
||
|
|
||
|
An important bug as well as some numerical rounding errors has been
|
||
|
fixed in CMA-ES implementation. A new termination criterion specific the
|
||
|
algorithm has been defined in order to interrupt CMA evolutions that has
|
||
|
converged. Function MuWCommaLambdaCMAFltVecOp::operate has been separated
|
||
|
into several smaller sub-functions, for modularity purposes. (Thanks to
|
||
|
Olivier Teytaud, Sylvain Gelly, Nikolaus Hansen, and Anne Auger)
|
||
|
|
||
|
- Correction of randomizer reading/writing behavior (CG)
|
||
|
|
||
|
3.0.1: (11/10/2005)
|
||
|
|
||
|
- Several fixes to allow compilation on Mac OS X (CG + MP)
|
||
|
|
||
|
- Fixes in headers inclusion to allow precompiled headers (CG)
|
||
|
|
||
|
|
||
|
3.0.0: (04/10/2005)
|
||
|
|
||
|
- Customizable allocator for STL containers (CG)
|
||
|
|
||
|
Allocator used to instantiate elements of STL containers can be
|
||
|
customized, in order to use an allocator different from the standard one.
|
||
|
|
||
|
- IndividualSizeFrequencyStatsOp statistics operator (CG)
|
||
|
|
||
|
Statistics computation operator IndividualSizeFrequencyStatsOp has been
|
||
|
implemented in order to display the different individual size
|
||
|
frequencies over the evolutions. (Thanks to Matthew Walker)
|
||
|
|
||
|
- Methods to read individuals from files (CG)
|
||
|
|
||
|
New convenient methods readFromFile have been added to classes
|
||
|
Beagle::Individual and Beagle::IndividualBag in order to read individuals
|
||
|
from XML files without having to set-up an evolutionary context.
|
||
|
|
||
|
- GP ephemeral value mutation operators (CG)
|
||
|
|
||
|
New ephemeral constants mutation templated operator
|
||
|
GP::MutationEphemeralOpT, along with a specific instance for Double-typed
|
||
|
ephemeral mutation class named GP::MutationEphemeralDoubleOp, have been
|
||
|
added to the GP framework. These operators are useful to mutate the
|
||
|
values contained in ephemeral random constant primitives.
|
||
|
|
||
|
- TSP example to illustrate integer vector representation (CG)
|
||
|
|
||
|
Addition of a new integer vector representation example, that is the
|
||
|
Traveling Salesman Problem (TSP) solved by an indexed integer
|
||
|
representation GA.
|
||
|
|
||
|
- Integer vectors representation (CG)
|
||
|
|
||
|
An integer vector representation is now part of the GA framework. Proper
|
||
|
initialization, crossover and mutation operators has been defined, along
|
||
|
with a genotype and evolver classes. A special case of the integer
|
||
|
vector representation to contain a shuffled list of indices from
|
||
|
0 to (n-1), where n is the size of the vectors, has been defined.
|
||
|
Specific initialization, crossover and mutation operators has also been
|
||
|
defined to use the integer vector as a list of indices.
|
||
|
|
||
|
- NSGA2Op modified for a parametrized number of children (CG)
|
||
|
|
||
|
The ratio of the number of children generated at each generation over
|
||
|
the population size in the NSGA2 multiobjective replacement strategy
|
||
|
operator can now be configured by parameter 'ec.mulambda.ratio'. This
|
||
|
would allow an adjustment of the selection pressure at each generation.
|
||
|
This is a generalization of NSGA2 as a multiobjective (mu+lambda)
|
||
|
replacement strategy, common in the evolution strategy paradigm.
|
||
|
|
||
|
- Matrix and Vector classes inherit from their PACC-Math equivalents (CG)
|
||
|
|
||
|
Classes Beagle::Matrix and Beagle::Vector have been modified to inherit
|
||
|
from their PACC-Math equivalents, PACC::Matrix and PACC::Vector.
|
||
|
|
||
|
- Migration of Beagle's inputs/outputs to PACC-XML facilities (CG)
|
||
|
|
||
|
Beagle XML parsing and streaming facilities have been replaced by the
|
||
|
PACC-XML ones (which are simply a more mature version of them). The
|
||
|
read* and write* methods present in almost every Beagle classes have been
|
||
|
modified to comply with PACC-XML type and method names.
|
||
|
|
||
|
- Modified randomizer class (CG)
|
||
|
|
||
|
Beagle::Randomizer have been modified to inherit from PACC::Randomizer
|
||
|
in order to minimize functionality overlaps. PACC::Randomizer is a
|
||
|
different encapsulation of the Mersenne Twister random number generator.
|
||
|
Beagle::RandomizerMersenne class has been removed and roll* methods
|
||
|
have been changed from virtual to inline.
|
||
|
|
||
|
- ArrayT template (CG)
|
||
|
|
||
|
New generic array type defined. The template inherits from both
|
||
|
Beagle::Object and the std::vector template. Typedefs have been defined
|
||
|
for basic C++ types as IntArray, UIntArray, DoubleArray, FloatArray,
|
||
|
LongArray, BoolArray, ULongArray, ShortArray and UShortArray. Type
|
||
|
IntegerVector have been replaced by the functionally equivalent UIntArray
|
||
|
type.
|
||
|
|
||
|
- Whole system written in milestone files (CG)
|
||
|
|
||
|
All system components are now written into milestone files. Register is
|
||
|
now written as a part of the system.
|
||
|
|
||
|
- Modification to STGP support (CG)
|
||
|
|
||
|
STGP support in GP framework has been slightly modified. The typing now
|
||
|
use directly the std::type_info information to compare node typing.
|
||
|
For efficiency concerns, constrained initialization and crossover
|
||
|
operators has been changed to select node of compatible typing instead
|
||
|
of blindly trying different nodes. (Thanks to Graham Thomson)
|
||
|
|
||
|
- Dynamic configuration of primitive sets (CG)
|
||
|
|
||
|
Primitive set composition can now be stated dynamically (without
|
||
|
recompilation) into the configuration file.
|
||
|
|
||
|
- Evolutionary module acquisition support in GP framework (MW + CG)
|
||
|
|
||
|
Evolutionary module acquisition (Angeline and Pollack, 1993) is now
|
||
|
supported as a standard GP feature. (Thanks to Matthew Walker)
|
||
|
|
||
|
- Refactored ADF mechanism, generic GP::Invoker class (CG)
|
||
|
|
||
|
The mechanism for ADFs have been completely rewritten in a more generic
|
||
|
fashion. Evolvable module acquisition, automatically defined iterations
|
||
|
and such can now be relatively easily implemented over the GP::Invoker
|
||
|
class.
|
||
|
|
||
|
- Small bug fix in GP::PrimitiveUsageStatsOp (CG)
|
||
|
|
||
|
Primitive usage statistics didn't count the primitives of the first
|
||
|
individual of each deme. (Thanks to Graham Thomson)
|
||
|
|
||
|
- Mechanism to interrupt GP individual execution (CG + MW)
|
||
|
|
||
|
A new mechanism based on exception handling has been added to GP
|
||
|
framework in order to interrupt the execution of GP individuals after a
|
||
|
given number of nodes evaluation or when the time allowed is expired.
|
||
|
If one of this criterion is reached, an special exception is thrown and
|
||
|
must be caught in the GP fitness evaluation operator. New GP exception
|
||
|
operators has been defined for that purpose. The maximum number of nodes
|
||
|
and the time allowed is specified in the GP context used for the
|
||
|
individual execution. (Thanks to Matthew Walker)
|
||
|
|
||
|
- Migration of project files to KDevelop 3 (CG)
|
||
|
|
||
|
KDevelop 3 is now part of the recent Linux distributions, so the
|
||
|
different Open BEAGLE KDevelop project files have been migrated this
|
||
|
new version.
|
||
|
|
||
|
- Dynamic ADF with variable number of arguments (MW + CG)
|
||
|
|
||
|
Number of ADFs of the GP individuals can now be determined dynamically,
|
||
|
by the initialization or mutation operators. ADFs can be added
|
||
|
on-the-fly to a GP individual. The number of ADF arguments can also be
|
||
|
dynamically stated and can change from an individual to another. A new
|
||
|
ADFArgument type has been defined and should be used instead of simple
|
||
|
TokenT variable (as it was done before). Constrained operators must
|
||
|
also be used in order to generate valid individuals. (Thanks to Matthew
|
||
|
Walker)
|
||
|
|
||
|
- Explicit association of GP trees to GP primitive set (MW + CG)
|
||
|
|
||
|
The association between GP trees and GP primitive set has been changed.
|
||
|
Before, a given GP tree at the ith position in an individual was
|
||
|
implicitly associated to the ith primitive set of the primitive super
|
||
|
set. Now, the link between the two is explicit and relaxed, stated in
|
||
|
an integer member of GP tree. There is no constraints on the associations
|
||
|
possible between GP trees and GP primitive sets and there is no need to
|
||
|
have as much primitive sets as there is GP trees in an individual (i.e.
|
||
|
there could be only one primitive set available while having a variable
|
||
|
number of GP trees in the individuals). (Thanks to Matthew Walker)
|
||
|
|
||
|
- Dynamic selection weight in primitive set (MW + CG)
|
||
|
|
||
|
Selection weight of a primitive can now be stated dynamically, depending
|
||
|
on the context. Method GP::Primitive::isSelectionWeightStable state
|
||
|
whether, for a given number of argument, it is possible that the weight
|
||
|
of the primitive can change. Method GP::Primitive::getSelectionWeight is
|
||
|
used to generate the selection weight value in itself for the associated
|
||
|
primitive, in the given context. (Thanks to Matthew Walker)
|
||
|
|
||
|
- Dynamic number of arguments for GP primitives (MW + CG)
|
||
|
|
||
|
Number of arguments of GP primitives can now be stated dynamically, by
|
||
|
properly over-defining method GP::Primitive::giveReference. Selection of a
|
||
|
primitive in a primitive set has been changed, only one method
|
||
|
(GP::PrimitiveSet::select) do all kind of selection, using special
|
||
|
number of arguments values for selecting a primitive into all the branches
|
||
|
or all the primitives. (Thanks to Matthew Walker)
|
||
|
|
||
|
- GP primitives: GP::AbsT and GP::IfThenElseT (MW + CG)
|
||
|
|
||
|
Two new GP primitives added, AbsT, which compute the absolute value of its
|
||
|
argument, and IfThenElseT, a four-argument conditional primitive.
|
||
|
(Thanks to Matthew Walker)
|
||
|
|
||
|
- Stack trace mechanism added to exceptions try/catching (MW + CG)
|
||
|
|
||
|
Method call trace mechanism added to follow function calls when Beagle
|
||
|
exception is thrown but not caught. To trace a method call, the macros
|
||
|
Beagle_StackTraceBeginM and Beagle_StackTraceEndM must be added
|
||
|
respectively at the beginning and end of the method implementation. The
|
||
|
call stack is displayed along with the error message by calling the
|
||
|
method Exception::explain. All class methods of Open BEAGLE have been
|
||
|
modified to have the Beagle_StackTraceBeginM/Beagle_StackTraceEndM
|
||
|
macros surrounding them. (Thanks to Matthew Walker)
|
||
|
|
||
|
- Miscellaneous warning/error messages addition and improvements (MW)
|
||
|
|
||
|
Matthew slightly improved and added warning/error messages he encounters
|
||
|
during its developments.
|
||
|
|
||
|
- System components (MW + CG)
|
||
|
|
||
|
Component map added to the basic evolutionary system (class System).
|
||
|
A system component can be added dynamically to the system as a new system
|
||
|
composing element with no need to extend/define a class specific to the
|
||
|
problem/algorithm at hand. The logger, register and GP primitive super
|
||
|
set have been re-defined as system components. (Thanks to Matthew Walker)
|
||
|
|
||
|
- Object::getName() method and NamedObject class (MW + CG)
|
||
|
|
||
|
Method getName() added to class Beagle::Object in order to retrieve the
|
||
|
name of any objects. Generic named object class added into the
|
||
|
architecture. Several changes made in order to make specific named objects
|
||
|
inheriting from the new generic named object class.
|
||
|
(Thanks to Matthew Walker)
|
||
|
|
||
|
- Separation of log level parameter for console and file logging (MW + CG)
|
||
|
|
||
|
Log level is now separated for console and file logging. Two parameters
|
||
|
('lg.console.level' and 'lg.file.level') are now available to
|
||
|
independently set the log level at the console and into a file. Parameter
|
||
|
to disable/enable console logging have been removed from the system.
|
||
|
(Thanks to Matthew Walker)
|
||
|
|
||
|
- Change format of GA::FloatVector (CG + JS)
|
||
|
|
||
|
Now use ';' instead of ',' to separate vector components in order to
|
||
|
be consistent with Beagle::Matrix format. (Thanks to Jim Shepherd)
|
||
|
|
||
|
- Enhancement of DecimateOp operator (CG)
|
||
|
|
||
|
If value of parameter 'ec.decimation.ratio' is set to -1.0, DecimateOp
|
||
|
operator will resize the population to the real size given in parameter
|
||
|
'ec.pop.size'. This fix some problems encountered with the simultaneous
|
||
|
use of ES and Distributed BEAGLE.
|
||
|
|
||
|
- Bug fix in GA::ESVector::read (CG)
|
||
|
|
||
|
Bug fix to allow reading of ES vector. The bug was caused by the use
|
||
|
of double instead of float values in ES vector representation.
|
||
|
|
||
|
- Real-valued GA genotype values discretization (JS + CG)
|
||
|
|
||
|
Real-valued GA genotypes values can be discretized by setting an
|
||
|
increment on the possible values. For example, setting the increment of
|
||
|
0.5 make the domain of possible value equal to ...,-0.5,0.0,0.5,1.0,... .
|
||
|
(Thanks to Jim Shepherd)
|
||
|
|
||
|
- MutationGaussianFltVecOp: per-value setting for mu and sigma (JS + CG)
|
||
|
|
||
|
Mu and sigma parameters for MutationGaussianFltVecOp operator can now be
|
||
|
set on a per-value basis, allowing to modulate the mutation effect
|
||
|
for the different parameters composing the float vectors.
|
||
|
(Thanks to Jim Shepherd)
|
||
|
|
||
|
- Bug fix in Matrix::tql2 (CG)
|
||
|
|
||
|
Index out-of-bound bug fix in method Matrix::tql2, used to compute
|
||
|
eigenvalues and eigenvectors.
|
||
|
|
||
|
- Bug fix in method Matrix::extract (CG + MP)
|
||
|
|
||
|
Bug fix when extracting a sub-matrix from another matrix.
|
||
|
|
||
|
- Added InvalidateFitnessOp class (MW)
|
||
|
|
||
|
Fitness value for all the individuals of a deme can be invalidated by
|
||
|
adding the operator InvalidateFitnessOp to the evolver's main-loop.
|
||
|
(Thanks to Matthew Walker)
|
||
|
|
||
|
- Bug fix in GP::MutateSwapSubtreeOp (MW)
|
||
|
|
||
|
Silly bug in GP::MutateSwapSubtreeOp fixed. (Thanks to Matthew Walker)
|
||
|
|
||
|
- Added GP::ValidateOp class (MW)
|
||
|
|
||
|
Operator GP::ValidateOp check the validity of constrained GP trees and
|
||
|
report any invalid trees, which is useful for debugging.
|
||
|
(Thanks to Matthew Walker)
|
||
|
|
||
|
- Added GP::Tree::fixSubTreeSize() (MW)
|
||
|
|
||
|
Method GP::Tree::fixSubTreeSize() fix the sub-tree member of a GP::Node
|
||
|
after a GP::Tree alteration. (Thanks to Matthew Walker)
|
||
|
|
||
|
|
||
|
2.2.0: (28/10/2004)
|
||
|
|
||
|
- Fix to compile with gcc 3.4 (LS + CG)
|
||
|
|
||
|
Bug fix in files AbstractContainerAllocT.hpp and VivariumAllocT.hpp
|
||
|
to allow compilation with gcc 3.4. (Thanks to Laurent Steffan)
|
||
|
|
||
|
- SBX float vector crossover added (CG)
|
||
|
|
||
|
Operator for simulated binary crossover (SBX) (of Deb and Beyer) added
|
||
|
for float vector representation.
|
||
|
|
||
|
- CMA-ES implemented for float vectors representation (CG)
|
||
|
|
||
|
CMA-ES (of Nikolaus Hansen et al.), one of the most powerful evolutionary
|
||
|
algorithms for real-valued parameters function optimization, has been
|
||
|
implemented for float vector representation. The algorithm can be used
|
||
|
in any float vector problems, by specifying the use of the
|
||
|
GA-MuWCommaLambdaCMAFltVecOp replacement strategy and the
|
||
|
GA-MutationCMAFltVecOp mutation. See sample configuration file
|
||
|
"maxfctfloat-cmaes.conf" of the maxfctfloat example for an usage
|
||
|
illustration.
|
||
|
|
||
|
- Improved replacement strategy operators (CG)
|
||
|
|
||
|
NSGA2Op, MuCommaLambdaOp and MuPlusLambdaOp replacement strategy
|
||
|
operators have been improved to be used without evaluation operators in
|
||
|
the breeder tree. This will allow to use these replacement strategy
|
||
|
operators with special evaluation operators that can't be in a breeder
|
||
|
tree, such the ones of Distributed BEAGLE or the co-evolution framework.
|
||
|
|
||
|
- RandomizerNR class removed (CG)
|
||
|
|
||
|
Due to some concerns on the licensing policies of the code presented in
|
||
|
the book "Numerical Recipes in C", the random number generator class
|
||
|
RandomizerNR (which correspond to the routine rand1 of NR book) has been
|
||
|
removed.
|
||
|
|
||
|
- Improved float vector blend crossover (BLX-alpha) (CG)
|
||
|
|
||
|
Blend crossover for float GA and paired ES has been updated to be conform
|
||
|
to BLX-alpha crossover of Eshelman and Schaffer.
|
||
|
|
||
|
- Per-value range limits in GA framework (JS + CG + DS)
|
||
|
|
||
|
Float GA and paired ES now includes a range limit for each parameters
|
||
|
composing the individuals, instead of a global minimum and maximum.
|
||
|
(Thanks to Jim Shepherd for the code and David Stocks for the suggestion)
|
||
|
|
||
|
- GA individual initialization operations limited to one genotype (CG)
|
||
|
|
||
|
To ease the use of the GA framework, initialization operators are now
|
||
|
limited to generate individual with one genotype (bit string,
|
||
|
float vector or ES-pair vector). GA examples have been updated
|
||
|
accordingly.
|
||
|
|
||
|
- New Matrix and Vector classes for basic numerical computations (CG)
|
||
|
|
||
|
New classes Matrix and Vector are added with support for basic linear
|
||
|
algebra operations plus some special operations for the computation of
|
||
|
matrix inverse, determinants, and eigenvalues/eigenvector.
|
||
|
|
||
|
- Bug fix in the autoconf configuration of all examples (MD + CG)
|
||
|
|
||
|
(Thanks to Marc Dubreuil)
|
||
|
|
||
|
- Minor bug correction for compiling full debug (CG)
|
||
|
|
||
|
Small bug fix at line 185 of file HierarchicalFairCompetitionOp.cpp to
|
||
|
allow compilation in full debug mode. (Thanks to David Stocks)
|
||
|
|
||
|
- Changes in log outputs given by the evolver (CG)
|
||
|
|
||
|
Log outputs given by the evolver such as "Evolving the 1st deme for
|
||
|
generation 6" have been changed to avoid writing the generation
|
||
|
number. This change is necessary as there was confusion about generation
|
||
|
number given by the evolver vs the statistics for Distributed BEAGLE
|
||
|
applications.
|
||
|
|
||
|
- Primitive usage statistics operator (MW + CG)
|
||
|
|
||
|
Operator named GP::PrimitiveUsageStatsOp that compute usage statistics
|
||
|
of each primitives in GP trees and display the results in the logs.
|
||
|
(Thanks to Matthew Walker)
|
||
|
|
||
|
|
||
|
2.1.5: (03/08/2004)
|
||
|
|
||
|
- Re-writing of hierarchical fair competition operator (CG)
|
||
|
|
||
|
The HFC migration operator has been rewritten in order to use adaptive
|
||
|
fitness thresholds to migrate individuals from one deme to another,
|
||
|
instead of using unconditional migration policy.
|
||
|
|
||
|
- Major change in deme migration mechanism (CG)
|
||
|
|
||
|
A migration buffer has been added to the deme structure. This buffer
|
||
|
should now be used by all migration operators to move individuals
|
||
|
between demes. The migration buffer in deme is written in milestone
|
||
|
files, which allow reproduction of multiple demes evolutions.
|
||
|
MigrationRandomRingOp operator updated according to this change.
|
||
|
|
||
|
- Random number generator now initialized with /dev/urandom on Unix (CG)
|
||
|
|
||
|
Seed of random number generator is now taken from system device
|
||
|
/dev/urandom on Unix, when available.
|
||
|
|
||
|
- Bug fix in Beagle::MigrationRandomRingOp (CG)
|
||
|
|
||
|
Migration buffer in migration random ring operator was not checked to be
|
||
|
emptied when starting a new evolution with a given evolver.
|
||
|
(Thanks to Michel Fortin and Leila Dridi)
|
||
|
|
||
|
- Bug fix in GA::BitString::convertGray2Bin (MF)
|
||
|
|
||
|
Bug fix in computation for the conversion of Gray code to binary code.
|
||
|
(Thanks to Michel Fortin and Leila Dridi)
|
||
|
|
||
|
- Bug fix in statistics computation operator (CG)
|
||
|
|
||
|
Statistics calculation operator now computes vivarium statistics
|
||
|
only when all demes of a generation have been processed, with no
|
||
|
assumption on the order of the demes. This fix is necessary as
|
||
|
Distributed BEAGLE server send demes out-of-order to evolver clients.
|
||
|
|
||
|
- Genotype/phenotype distance measure methods (CG)
|
||
|
|
||
|
Two methods have been added to Beagle::Individual to compute distance
|
||
|
between two individuals in genotype and phenotype space:
|
||
|
getDistanceGenotype and getDistancePhenotype. These methods are
|
||
|
implemented by throwing an exception; they must be over defined by the
|
||
|
user for his application. (Suggestion of Jianjun Hu)
|
||
|
|
||
|
|
||
|
2.1.4: (04/07/2004)
|
||
|
|
||
|
- Hierarchical Fair Competition (HFC) operator (CG)
|
||
|
|
||
|
HFC operator inspired by the work of Hu and Goodman. The operator is
|
||
|
actually implemented as a migration operator that is at the same time a
|
||
|
replacement strategy. The breeder tree of the replacement strategy is
|
||
|
called to generate the new individuals.
|
||
|
|
||
|
- InitializationOp now a breeder operator (CG)
|
||
|
|
||
|
Abstract initialization operator now inherits from BreederOp, to enable
|
||
|
using it in breeder trees. The operator can be used pretty much like a
|
||
|
selection operator, as a leaf in a breeder tree that generate new
|
||
|
individuals. The breeding probability is the reproduction probability.
|
||
|
|
||
|
- Comments in XML output of configuration dump or milestone write (CG)
|
||
|
|
||
|
Comments in XML files when writing a configuration dump or a
|
||
|
milestone.
|
||
|
|
||
|
- Lexicographical parsimony pressure tournament selector operator (CG)
|
||
|
|
||
|
New selection operator based on tournaments selection, breaking ties by
|
||
|
selecting the smallest individual.
|
||
|
|
||
|
- getSize() methods added to Individual and Genotype classes (CG)
|
||
|
|
||
|
getSize() method added to Individual, Genotype, GA::BitString,
|
||
|
GA::FloatVector, GA::ESVector and GP::Tree classes. Return length for
|
||
|
genotype representation and total length composing an individual.
|
||
|
|
||
|
- Random shuffle deme operator (CG)
|
||
|
|
||
|
New operator to random shuffle individuals in a deme. Useful for
|
||
|
micro GA-like evolution with Distributed BEAGLE.
|
||
|
|
||
|
- Weights to modulate primitives selection in GP primitives sets (CG)
|
||
|
|
||
|
Primitives inserted in primitives set now get a weight that module
|
||
|
the importance of being selected during initialization and mutation.
|
||
|
Higher a weight value, higher chances are for the associated primitive
|
||
|
to be selected. Default weight value is 1.0.
|
||
|
|
||
|
- Bug fix in Pareto Hall-of-Fame update methods (CG)
|
||
|
|
||
|
Small index bug made update methods of Pareto hall-of-fame incorrect.
|
||
|
|
||
|
- Coev::TermBroadcastOp termination operator (CG)
|
||
|
|
||
|
Termination criterion to broadcast and receive termination criterion
|
||
|
notices between threads when doing co-evolution.
|
||
|
|
||
|
- Enhanced message of casting exception in Individual::operator= (CG)
|
||
|
|
||
|
Message thrown when fitness types mismatch during an individual
|
||
|
copy has been enhanced to help users figuring out the problem.
|
||
|
(Thanks to Matthew Walker)
|
||
|
|
||
|
- Bug fix in Register::interpretArgs (CG + MW)
|
||
|
|
||
|
Remove a test that throw an exception when a parameter value on the
|
||
|
command-line is empty. (Thanks to Matthew Walker)
|
||
|
|
||
|
- Bug fix in GP::Tree (MW)
|
||
|
|
||
|
Small typo in interpret() method. Only showed up with Beagle configured
|
||
|
with --enable-full-debug.
|
||
|
|
||
|
|
||
|
2.1.3: (13/04/2004)
|
||
|
|
||
|
- Bug fix in GA::CrossoverUniformOpT and GA::EvolverES (CG)
|
||
|
|
||
|
Small bug fix in constructors of GA::CrossoverUniformOpT and
|
||
|
GA::EvolverES.
|
||
|
|
||
|
|
||
|
2.1.2: (08/04/2004)
|
||
|
|
||
|
- Support for pre-compiled headers on MS Visual C++ .NET (CG)
|
||
|
|
||
|
Pre-compiled headers are now generated when compiling the libraries on
|
||
|
MS Visual Studio C++ .NET. This can speed-up significantly compilation
|
||
|
time.
|
||
|
|
||
|
- New method to get document root tag in XMLParser (CG)
|
||
|
|
||
|
Method XMLParser::getRootTagNode() has been added to conveniently allow
|
||
|
the user to get access the document root tag node in one line of code.
|
||
|
|
||
|
- Robust reading of unknown parameters in register file (CG)
|
||
|
|
||
|
When reading a register file, when a unknown parameter is met in a
|
||
|
configuration file, the new policy is to log a warning message,
|
||
|
instead of throwing an exception.
|
||
|
|
||
|
- Bug fix in Beagle::WrapperT<T>::read (CG)
|
||
|
|
||
|
Reading a wrapped value from a empty XML node doesn't change the value
|
||
|
of the wrapped value. This causes problem for the type Beagle::String,
|
||
|
where an empty XML node means an empty string value. The read method
|
||
|
is now changed to assign the default constructor value the wrapped value
|
||
|
when reading it from an empty XML node. (Thanks to Matthew Walker)
|
||
|
|
||
|
- Functions for searching in XML trees (MW + CG + MP)
|
||
|
|
||
|
Two functions XMLNode::find have been added to search for a given node
|
||
|
type and value in an XML tree. (Thanks to Matthew Walker)
|
||
|
|
||
|
- Update of Threading module and XMLNode class (MP + CG)
|
||
|
|
||
|
Module Threading has been updated and several methods to modify XML
|
||
|
tree has been added in class XMLNode, according to the changes made in
|
||
|
Marc Parizeau's classes.
|
||
|
|
||
|
- CrossoverBlendESVecOp operator added (CG)
|
||
|
|
||
|
This operator implements a crossover operation for ES vectors where the
|
||
|
offsprings are on a random position on the line connecting the values
|
||
|
of the parents' values and strategy parameters.
|
||
|
|
||
|
- File renamed when in the way of an Open BEAGLE file (CG)
|
||
|
|
||
|
If a file with the same name of a milestone, configuration or log file
|
||
|
that is going to be written to disk, the existing file is renamed by
|
||
|
appending an '~' to the filename. This allow some kind of backup
|
||
|
mechanism for existing files, avoiding undesired file deletion.
|
||
|
|
||
|
- Support for gzipped milestone / configuration files (CG)
|
||
|
|
||
|
On platforms where a zlib installation is detected (most modern Linux
|
||
|
distributions include it), support for reading gzipped milestone /
|
||
|
configuration files is provided. Milestones are now gzipped when
|
||
|
written on disk. Parameter "ms.write.compress" allows to disable
|
||
|
milestone compression. Windows users most have zlib installed on their
|
||
|
computer and set preprocessor flag BEAGLE_HAVE_LIBZ in header
|
||
|
config.hpp to make use of this feature.
|
||
|
|
||
|
- Method to sort hall-of-fames in the descending order (CG)
|
||
|
|
||
|
Method HallOfFame::sort() has been added to sort hall-of-fames
|
||
|
in the descending order.
|
||
|
|
||
|
- Method Logger::terminate() to close logger (CG)
|
||
|
|
||
|
Method Logger::terminate() added to manually close a running logger.
|
||
|
|
||
|
- DecimateOp and OversizeOp operators added. (CG)
|
||
|
|
||
|
Two new operators have been added: DecimateOp and OversizeOp.
|
||
|
DecimateOp shrinks the population by resizing to a ratio of the original
|
||
|
population size, keeping only the best individuals of the original
|
||
|
population. OversizeOp oversizes the population, using a breeder tree
|
||
|
to generate the new individuals. These two operators allow 1) a new way
|
||
|
to implement (mu+lambda) ES and 2) the implementation of a decimation
|
||
|
operation similar to the one described in Koza's GP1 book.
|
||
|
|
||
|
- Aliases for statistics computation of minimization fitnesses (CG)
|
||
|
|
||
|
Aliases for statistics computation operators have been defined for
|
||
|
minimization fitnesses measure. This allow, for example, to use
|
||
|
"StatsCalcFitnessSimpleMinOp" operator (aliased to operator
|
||
|
"StatsCalcFitnessSimpleOp") in conjunction of fitnesses of type
|
||
|
"FitnessSimpleMinOp".
|
||
|
|
||
|
- Configuration dumper changes (CG)
|
||
|
|
||
|
Small change to allow parameter "ec.conf.dump" to be in parameter file
|
||
|
with no value, without doing a configuration dump.
|
||
|
|
||
|
- Bug fix when parsing of big XML files (CG)
|
||
|
|
||
|
There was risk of stack overflow during the destruction of big XML trees.
|
||
|
The problem was that in the destruction of a XML node, the destructor of
|
||
|
the first child and next sibling node is called recursively
|
||
|
until the leaves are reached. The destructor is now more intelligent by
|
||
|
looping into children and siblings in order to avoid stack overflow.
|
||
|
|
||
|
- Validity attribute added to fitness and stats XML representation (CG)
|
||
|
|
||
|
An attribute named "valid" is added to fitness and statistics
|
||
|
representation. If the value of the attribute is "no", the fitness or
|
||
|
statistics read is considered invalid, and so the content is not read.
|
||
|
|
||
|
- Default constructor for specialized evolvers added (CG)
|
||
|
|
||
|
Default constructors of specialized Evolver classes now have a default
|
||
|
constructor that add the flavor-specific operators without setting
|
||
|
the bootstrap and main-loop operator sets.
|
||
|
|
||
|
|
||
|
2.1.1: (17/01/2004)
|
||
|
|
||
|
- Several small changes to compile on gcc 2.96. (CG)
|
||
|
|
||
|
- StatsCalcFitnessKozaOp class scoped in GP namespace (CG)
|
||
|
|
||
|
This class was misplaced into Beagle namespace while it should be scoped
|
||
|
into namespace Beagle::GP.
|
||
|
|
||
|
- Small changes in file format (CG)
|
||
|
|
||
|
Small changes are made in for file format. More specifically attribute
|
||
|
"mutdistribpb" renamed "distribpb" in operator CrossoverUniformOp, and
|
||
|
type of genotype for ES, renamed "esvector" instead of "ESVector".
|
||
|
Backward compatibility has been retained with old name. Attribute "size"
|
||
|
in four standard genotypes is now optional, the same for attribute
|
||
|
"depth" of GP tree genotype.
|
||
|
|
||
|
- Bug correction for multiobjective domination computation (CG)
|
||
|
|
||
|
Bug fix for Pareto domination computation. When comparing multiobjective
|
||
|
fitness measure A with B, fitness A was said not dominated by B in the
|
||
|
case where some objective values of A are equal to those of B, but none
|
||
|
objective values of A where greater than B.
|
||
|
|
||
|
- Bug correction in spambase example (CG)
|
||
|
|
||
|
Primitives in spambase example still used symbol as name. This cause
|
||
|
problem with new GP tree XML format, especially for LessThan primitive
|
||
|
which was using "<" symbol.
|
||
|
|
||
|
|
||
|
2.1.0: (11/12/2003)
|
||
|
|
||
|
- Move to MS Visual .NET 2003 solution and project files (CG)
|
||
|
|
||
|
Solution and project files for MS Visual Studio .NET are now generated
|
||
|
using version 2003, in opposition to version 2002 which was used
|
||
|
previously. Forward compatibility is not a practise at Microsoft, so
|
||
|
you probably need to pass to 2003 to use the solution and project files
|
||
|
provided. But, it is still possible to regenerate these files for
|
||
|
VS.NET 2002. Sorry for the problems that this might cause to Windows
|
||
|
users, but the VS.NET installation in my lab is now fully 2003.
|
||
|
|
||
|
- Evolution strategy example: function maximization (CG)
|
||
|
|
||
|
Usual GA function maximization example is implemented with ES as example
|
||
|
'maxfctes'.
|
||
|
|
||
|
- Evolution strategy support added to GA framework (CG)
|
||
|
|
||
|
Simple support for Evolution Strategy (ES) is added in the GA framework.
|
||
|
ES genotype, implemented in class GA::ESVector, is defined as a vector of
|
||
|
(value,strategy) pairs, where 'value' is the real value of the optimized
|
||
|
value, and 'strategy' is the mutation strategy parameter. A simple ES
|
||
|
mutation operator is defined in class GA::MutationESVecOp along with an
|
||
|
ES evolver. Generic GA crossover operators have also been adapted to ES.
|
||
|
|
||
|
- Bug fix in RandomizerMersenne::rollUniform (CG)
|
||
|
|
||
|
There was a bug in method RandomizerMersenne::rollUniform, when the lower
|
||
|
bound was not 0. (Thanks to "Graamone")
|
||
|
|
||
|
- Seeding population from file (CG + AM)
|
||
|
|
||
|
Seeding population from file code added in basic initialization
|
||
|
operator. File containing seeds is specified by parameter
|
||
|
"ec.init.seedsfile". (Thanks to Andrew Marek)
|
||
|
|
||
|
- New termination criterion operators (CG)
|
||
|
|
||
|
Three new termination criterion operator classes added. TermMaxEvalsOp:
|
||
|
interrupt evolution after the given number of fitness evaluation is done.
|
||
|
TermMaxFitnessOp: interrupt evolution when an individual has a fitness
|
||
|
value higher or equal to the given value. TermMinFitnessOp: interrupt
|
||
|
evolution when an individual has a fitness value less or equal to the
|
||
|
given value.
|
||
|
|
||
|
- Pareto front hall-of-fame (CG)
|
||
|
|
||
|
ParetoFrontHOF, Pareto front hall-of-fame class. Compute the Pareto front
|
||
|
of solution for multiobjective EA populations. ParetoFrontCalculateOp:
|
||
|
operator to compute Pareto front of population just before milestone
|
||
|
writing. This operator must be in evolver's operator set between
|
||
|
termination criterion operators and MilestoneWriteOp.
|
||
|
|
||
|
- Co-evolution example: co-evolutionary symbolic regression (JW + CG)
|
||
|
|
||
|
A two populations competitive co-evolution example, with a first population
|
||
|
of training set samples, and the second population of symbolic expressions.
|
||
|
Based on the paper "Methods for Evolving Robust Programs" of Panait and
|
||
|
Luke. (Mostly done by Jiachuan Wang)
|
||
|
|
||
|
- Changes in population constructors signatures (CG)
|
||
|
|
||
|
More coherent constructor signatures are used. Classes affected are:
|
||
|
Individual, Deme, Vivarium, GP::Individual, GP::Deme, GP::Vivarium,
|
||
|
IndividualAlloc, IndividualAllocT, DemeAlloc, DemeAllocT, VivariumAlloc,
|
||
|
and VivariumAllocT.
|
||
|
|
||
|
- Real-valued GA example: function maximization (CG)
|
||
|
|
||
|
Usual GA function maximization example is implemented with for real-valued
|
||
|
genotypes as example 'maxfctfloat'.
|
||
|
|
||
|
- Support for real-valued GA in GA framework (CG)
|
||
|
|
||
|
Basic real-valued GA fixed length genotype is added to the GA framework.
|
||
|
The following classes have been added to the distribution:
|
||
|
CrossoverOnePointFltVecOp, CrossoverTwoPointsFltVecOp,
|
||
|
CrossoverUniformFltVecOp, CrossoverBlendFltVecOp, EvolverFloatVector,
|
||
|
FloatVector, InitFltVecOp, MutationGaussianFltVecOp.
|
||
|
|
||
|
- New GA crossover operators (CG)
|
||
|
|
||
|
Two generic crossover operators has been added for vector-based EC:
|
||
|
two-points crossover and uniform crossover. Generic version of these
|
||
|
operators are defined as templates, while specific specialization of these
|
||
|
algorithms is defined for bit string and real-valued GA. Generic
|
||
|
implementation of one-point crossover, which was already available for
|
||
|
bit string GA is also given.
|
||
|
|
||
|
- Major changes in GA framework (CG)
|
||
|
|
||
|
Major changes happened in GA framework to allow future extension from a
|
||
|
simple bit string based GA to a more generic vector-based EA framework,
|
||
|
with support for bit string GA, real-valued GA, ES, and possibility to
|
||
|
extend to other types of vector-based EAs, including variable-length ones.
|
||
|
|
||
|
Changes include:
|
||
|
CrossoverOp --> CrossoverOnePointOpT and CrossoverOnePointBitStrOp
|
||
|
MutationOp --> MutationFlipBitStrOp
|
||
|
InitializationOp --> InitBitStrOp
|
||
|
Evolver --> EvolverBitString
|
||
|
GA::Individual --> removed
|
||
|
GA::Deme --> removed
|
||
|
GA::Vivarium --> removed
|
||
|
|
||
|
- Default GP fitness class changed (CG)
|
||
|
|
||
|
Default GP fitness measure changed from the overly complicated
|
||
|
GP::FitnessKoza class to the less confusing FitnessSimple class. New
|
||
|
computation statistics is added to GP framework, to compute statistics on
|
||
|
both simple fitness values and GP trees depth and size. GP examples and
|
||
|
configuration files have been updated accordingly.
|
||
|
|
||
|
- Co-evolution example: two-populations iterated prisoner's dilemma (CG)
|
||
|
|
||
|
Example two-populations iterated prisoner's dilemma, implemented with
|
||
|
3 bits bit strings, is added to illustrate co-evolution and Parizeau's
|
||
|
multi-threading classes.
|
||
|
|
||
|
- Multiple populations co-evolution basic support (CG)
|
||
|
|
||
|
Multiple populations co-evolution basic support is added with a
|
||
|
multi-thread-ready evaluation operator. The approach used need to
|
||
|
associate each co-evolving populations to a specific thread, and to do
|
||
|
the evaluation operation by "mating" the evaluation sets of the different
|
||
|
populations/threads. The OS specific multi-threading calls are encapsulated
|
||
|
by using Marc Parizeau's multi-threading classes, included in the
|
||
|
co-evolution framework. Parizeau's threading classes run on Win32 and
|
||
|
POSIX compliant Unix flavors, which includes Linux, Mac OS X, and Solaris.
|
||
|
|
||
|
- GA multiobjective example: Multiobjective 0/1 knapsack (CG)
|
||
|
|
||
|
Multiobjective 0/1 knapsack example illustrates the use of multiobjective
|
||
|
EA with GA.
|
||
|
|
||
|
- Multiobjective fitness and selection methods (CG)
|
||
|
|
||
|
Two multiobjective fitness measures have been added to the framework:
|
||
|
FitnessMultiObj and its minimization companion FitnessMultiObjMin. Two
|
||
|
multiobjective selection operators have been added: NSGA2Op, implementing
|
||
|
the NSGA-II MOEA selection algorithm as a breeder's replacement strategy,
|
||
|
and NPGA2Op, implementing the NPGA-II MOEA selection algorithm in a
|
||
|
standard selection operator.
|
||
|
|
||
|
- Improved configuration file support with libtool (CG)
|
||
|
|
||
|
The search path has been improved to correctly find configuration
|
||
|
files when debugging or executing Open BEAGLE binaries dynamically linked
|
||
|
using libtool.
|
||
|
|
||
|
- Example binaries *-debug removed (CG)
|
||
|
|
||
|
To reduce confusion and disk space, statically linked example binaries
|
||
|
(named *-debug) are removed from the autoconf/automake configuration.
|
||
|
|
||
|
- Bug correction in statistics computation operators (CG)
|
||
|
|
||
|
A computation bug with statistics computation operators of demes of
|
||
|
size 1 has been fixed. (Thanks to Jianjun Hu)
|
||
|
|
||
|
|
||
|
2.0.0: (24/09/2003)
|
||
|
|
||
|
- LVSN contact address added in license comments of headers/sources (CG)
|
||
|
|
||
|
- Two new selection operators: SelectRouletteOp and SelectRandomOp (CG)
|
||
|
|
||
|
Two new selection operators are added to Open BEAGLE: SelectRouletteOp
|
||
|
which is fitness proportional roulette selection, and SelectRandomOp
|
||
|
which is uniformly distributed random selection of individuals.
|
||
|
|
||
|
- GP operators supporting constrained trees splitted (CG)
|
||
|
|
||
|
GP operators that supports constrained trees (crossover, mutation,
|
||
|
and initialization) have been splitted in two operators, with one simple
|
||
|
version not including constraints handling, and a second version, with
|
||
|
word "Constrained" added in their name, supporting topological
|
||
|
constraints.
|
||
|
|
||
|
- Negative fitness values and higher precision statistics (CG)
|
||
|
|
||
|
The classes associated to the fitness measures now support the
|
||
|
possibility to use negative fitness value. The statistics are computed
|
||
|
using double-precision arithmetics, which allow better precision and
|
||
|
limit the effect of overflows.
|
||
|
|
||
|
- Initialization from file, without command-line arguments (CG)
|
||
|
|
||
|
It is possible for the user to initialize the whole system directly from
|
||
|
a file, without having to give the command-line values (argc/argv of
|
||
|
main() routine).
|
||
|
|
||
|
- Configuration files includes evolver structure (CG)
|
||
|
|
||
|
The configuration file (.conf file) now include in addition to the
|
||
|
parameters of the register, the possibility to set the configuration
|
||
|
of the evolver. The name of the parameters associated to the configuration
|
||
|
file have been changed to use the prefix "ec.conf" (i.e. configuration
|
||
|
file name: "ec.conf.file", configuration file dump: "ec.conf.dump").
|
||
|
The mechanism to read and write configuration has significantly changed.
|
||
|
|
||
|
- Dynamic evolver configuration from XML files (CG)
|
||
|
|
||
|
Operator sets composing evolvers can now be written and read from file
|
||
|
directly. A new way of doing things imply that each usable operators
|
||
|
are putted into the evolver, are used to compose the operator sets
|
||
|
when read from file. The operators have also been modified to be setup
|
||
|
dynamically from files.
|
||
|
|
||
|
- Modified operators to comply with breeder model (CG)
|
||
|
|
||
|
Several operators such crossover, mutation, selection, and evaluation
|
||
|
have been modified to be usable as breeder operators.
|
||
|
|
||
|
- (Mu,Lambda) and (Mu+Lambda) replacement strategies (CG)
|
||
|
|
||
|
The (Mu,Lambda) and (Mu+Lambda) replacement strategies, common in
|
||
|
Evolution Strategy (ES), have been added to the framework. (Mu,Lambda)
|
||
|
replacement strategy proceed by generating a new-born set of Lambda
|
||
|
individuals from a parent population of Mu individuals (where Lambda >
|
||
|
Mu). The Mu best individuals of the new-born population is used to make
|
||
|
the next generation of individuals. The (Mu+Lambda) differs from the
|
||
|
previous one by choosing the Mu best individuals to compose the new
|
||
|
generation from both the populations of Lambda new-borns and Mu parents.
|
||
|
|
||
|
- Breeders and replacement strategies (CG)
|
||
|
|
||
|
Breeders and replacement strategies concepts have been added to the
|
||
|
framework. A breeder operator is an operator that can process individuals
|
||
|
instead of demes, allowing a finer control over the evolutionary algorithm.
|
||
|
Breeders are structured as trees to generate new-born individuals one at
|
||
|
the time. Replacement strategies are the root of the breeder tree, which
|
||
|
insert each newly generated individual in the population following a given
|
||
|
strategy. Two replacement strategies have been implemented: generational
|
||
|
and steady-state.
|
||
|
|
||
|
- New exception class RunTimeException (CG)
|
||
|
|
||
|
New exception class RunTimeException added. This class covers
|
||
|
miscellaneous exception cases related to run time value checking.
|
||
|
Changes in different places in the code to throw RunTimeException instead
|
||
|
of other Beagle exceptions.
|
||
|
|
||
|
- Read parameter operator removed from standard evolvers (CG)
|
||
|
|
||
|
The RegisterReadOp has been removed from the bootstrap and main-loop
|
||
|
operator set of the standard evolvers, but still remain available in the
|
||
|
EC framework.
|
||
|
|
||
|
- Bug correction in minOf() and maxOf() (CG)
|
||
|
|
||
|
Bug correction in minOf() and maxOf(), by testing of the function
|
||
|
arguments for being Not-a-Number.
|
||
|
|
||
|
- Number of processed individuals added in context (CG)
|
||
|
|
||
|
Basic EC context now has four new members: number of individuals
|
||
|
processed (evaluated) in the actual deme for this generation, number of
|
||
|
individuals processed in the whole evolution, number of individuals
|
||
|
processed in the vivarium for this generation, and number of individuals
|
||
|
processed in the vivarium for the whole evolution.
|
||
|
|
||
|
- Changes in statistics mechanism (CG)
|
||
|
|
||
|
Dynamic addition of statistical element is now possible. The statistics
|
||
|
computation for a deme is now done in statistics calculation operator
|
||
|
(no more in fitness class). Two new statistics calculation operator
|
||
|
added: StatsCalcFitnessSimple, and StatsCalcFitnessKozaOp.
|
||
|
|
||
|
- File format changes (CG)
|
||
|
|
||
|
The file format has been changed, using the new XML I/O classes. Among
|
||
|
the changes, we note that file format is now completely XML standard
|
||
|
compliant, and that the GP trees are now written using a pure XML format.
|
||
|
|
||
|
- New XML reading/writing classes (CG + MP)
|
||
|
|
||
|
The Open BEAGLE XML input and output classes as been changed for
|
||
|
Marc Parizeau's XML parser and streamer. Signature of method Object::read
|
||
|
and Object::write has been changed accordingly. This imply that every
|
||
|
Open BEAGLE object that can be read and written have been changed to use
|
||
|
new XML I/O mechanism.
|
||
|
|
||
|
- Gray code decoding facilities for bit strings (CG)
|
||
|
|
||
|
A new decoding method has been added to the GA framework, to allow the
|
||
|
decoding of gray-coded bit string to floating-point vectors. The
|
||
|
maxfct example has been changed to use gray-coded strings instead of
|
||
|
binary-coded ones.
|
||
|
|
||
|
- Mersenne twister random number generator (CG)
|
||
|
|
||
|
A better (and faster) random number generator is now used in the
|
||
|
framework: the mersenne twister. This number generator is now used
|
||
|
by default by the framework, and I advice people to use it instead of
|
||
|
the old one. The old random number generator, based on rand1 of
|
||
|
"Numerical recipes in C", is still available.
|
||
|
See http://www.math.keio.ac.jp/~matumoto/emt.html for details on the
|
||
|
mersenne twister.
|
||
|
|
||
|
- Post-initialization hooks (CG)
|
||
|
|
||
|
Post-initialization hooks method called "postInit" has been added to
|
||
|
different components (logger, register, randomizer, operators). These
|
||
|
hooks provide an entry to a mechanism that is call once, after the system
|
||
|
is initialized and the parameters read from the configuration file, but
|
||
|
before the evolution is started.
|
||
|
|
||
|
- Changes in fitness classes (CG)
|
||
|
|
||
|
Some minor changes in fitness classes, to take account of invalid fitness
|
||
|
measure in comparison methods, and to enable calculation of statistics
|
||
|
for empty demes.
|
||
|
|
||
|
- Changes in Individual::isIdentical (CG)
|
||
|
|
||
|
The Individual::isIdentical method now tests whether two individuals are
|
||
|
equals, in term of their fitness value, before comparing their structural
|
||
|
similarity. This change affect the individuals putted in the hall-of-fame
|
||
|
as now, two structurally identical individuals, but with a different
|
||
|
fitness value, will no more considered as identical.
|
||
|
|
||
|
- New class HallOfFame, hall-of-fame in the vivarium (CG)
|
||
|
|
||
|
The hall-of-fame mechanisms, which is essentially to preserve the
|
||
|
best-of-run individuals into a persistent and evolution independent
|
||
|
container, is now encapsulated into class HallOfFame. An hall-of-fame
|
||
|
has been added to the vivarium. The hall-of-fame size parameter name has
|
||
|
been changed for "ec.hof.demesize" for each deme's hall-of-fame size, and
|
||
|
"ec.hof.vivasize" for the vivarium's hall-of-fame size. Default size
|
||
|
values are now 1 for the vivarium's hall-of-fame, and 0 for the deme's
|
||
|
one. The members of the hall-of-fame also includes their associated
|
||
|
generation number and deme index of the moment they were put in
|
||
|
the hall-of-fame.
|
||
|
|
||
|
- New GP mutation operator: MutationSwapSubtreeOp (CG + HJJ)
|
||
|
|
||
|
New mutation operator added to the GP framework: MutationSwapSubtreeOp.
|
||
|
This mutation operator implement a kind of self-crossover operation,
|
||
|
where two subtrees of the same individual are exchanged. Two types of
|
||
|
swap subtree mutation are possible: external subtree mutation, using two
|
||
|
exclusive subtrees, and internal subtree mutation, where one of the
|
||
|
swapped subtree is within the other. In the later case, three mutation
|
||
|
points are used. (In collaboration with Jianjun Hu)
|
||
|
|
||
|
- Bug fix in method Deme::updateHallOfFame (CG)
|
||
|
|
||
|
Hall-of-fame was not correctly updated when HOF size is > 1.
|
||
|
(Thanks to Jianjun Hu)
|
||
|
|
||
|
|
||
|
1.1.1: (28/05/2003)
|
||
|
|
||
|
- Ordinal numbers correctly displayed. (MW + CG)
|
||
|
|
||
|
Ordinal numbers (1st, 2nd, 27th, etc.) are now correctly outputted in logs
|
||
|
using new function uint2ordinal. (Thanks to Matthew Walker)
|
||
|
|
||
|
- Minor correction to compile with MS Visual C++ .NET 2003 (7.1). (CG)
|
||
|
|
||
|
Some minor code correction to allow compilation with MS Visual C++ .NET
|
||
|
2003 (7.1). (Thanks to sashan)
|
||
|
|
||
|
- Bug fix in GP::InitHalfOp. (CG)
|
||
|
|
||
|
Type mistake for typedef of type GP::InitHalfOp::Bag.
|
||
|
(Thanks to Matthew Walker)
|
||
|
|
||
|
- FitnessKoza now inherits from FitnessSimple. (CG)
|
||
|
|
||
|
The class FitnessKoza now inherits from FitnessSimple. The value of the
|
||
|
simple fitness is the normalized measure of the Koza's fitness. The
|
||
|
interface of the class stay unchanged. This will be useful as
|
||
|
selection operators usable with class FitnessSimple will also be usable
|
||
|
with class FitnessKoza.
|
||
|
|
||
|
- New GA example: All Zeros. (CG)
|
||
|
|
||
|
A new GA example is added to the distribution. It consists to discover
|
||
|
a bit string made only of zeros. It is expressed as a minimization
|
||
|
problem, as the fitness measure is the number of one in the bit string.
|
||
|
It also uses the new fitness class, FitnessSimpleMin.
|
||
|
|
||
|
- New fitness class: FitnessSimpleMin. (CG)
|
||
|
|
||
|
A new fitness class is added to the generic framework. The fitness is
|
||
|
similar to FitnessSimple with the exception that smaller values are
|
||
|
better. This new class is targeted for minimization problems.
|
||
|
|
||
|
- Bug fix: config.hpp was not correctly installed on Unix (CG)
|
||
|
|
||
|
Since version 1.0.3, file config.hpp was not correctly installed on Unix
|
||
|
with the command 'make install'.
|
||
|
|
||
|
|
||
|
1.1.0: (30/04/2003)
|
||
|
|
||
|
- Doxygen comments improvements (CG)
|
||
|
|
||
|
Code comments improved. New section "Modules" in the doxygen
|
||
|
documentation, where the classes are regrouped in a human-understandable
|
||
|
fashion. This new section is appropriate to get familiar with the
|
||
|
framework.
|
||
|
|
||
|
- Milestone file format modified (CG)
|
||
|
|
||
|
With the class name and in the statistics changes, the milestone file
|
||
|
format has been changed. The old format is not recognized by the
|
||
|
framework, until someone develop a XSLT to transform them (any
|
||
|
volunteer?). Note that the actual new format is transitory
|
||
|
and will _NOT_ be compatible with the new format announced with the new
|
||
|
XML readers/writers.
|
||
|
|
||
|
- GP tree size and depth measures added to GP::FitnessKoza (CG)
|
||
|
|
||
|
Class GP::FitnessKoza now contained two new measures: the number of nodes
|
||
|
in the individuals, and the tree depth of the individual. This is
|
||
|
appropriate to monitor code growth in the population during evolutions.
|
||
|
|
||
|
- Changes in statistics and fitness classes (CG)
|
||
|
|
||
|
A major revision of statistics classes has been made. Classes
|
||
|
MeasureStats and PopulationStats are eliminated. The GenerationStats is
|
||
|
renamed Stats, and the Measure struct is now in the same header than this
|
||
|
class ("beagle/Stats.hpp"). The members m3rdQuart (third quartile measure),
|
||
|
mMedian (median measure), and m1stQuart (first quartile measure) of the
|
||
|
Measure struct are eliminated. The mPopSize and mGeneration members
|
||
|
are moved into the Stats class and new member called mProcessed
|
||
|
(number of individuals processed (evaluated) in actual generation) and
|
||
|
mTotalProcessed (total number of individuals processed (evaluated) in the
|
||
|
whole evolution) are added to the class Stats. The statistics in the deme
|
||
|
are now only for the most recent generation. For the history statistics,
|
||
|
the user should consult the logs. A statistics member is added to the
|
||
|
vivarium. Class DisplayStatsOp merged into class StatsCalculateOp. The
|
||
|
statistics are generated directly by the class StatsCalculateOp and now
|
||
|
outputted passing by the logger. The declaration of the prototype of method
|
||
|
Fitness::calculateDemeStats is changed for Fitness::calculateStats.
|
||
|
|
||
|
- New logging mechanism (CG + MP)
|
||
|
|
||
|
A new logging mechanism has been developed. Two new classes are added
|
||
|
to the framework: Logger, abstract logging class, and LoggerXML, logger
|
||
|
that can write into a file and/or the standard output in a XML format.
|
||
|
A logger handle is added to the System class. There is 8 levels of logging
|
||
|
available, from level 0 (nothing) to level 7 (debug). High logging levels
|
||
|
include all the previous one. Macros are added to facilitate logging.
|
||
|
Several parameters for the logging are added in the register. See the
|
||
|
manual for more details. Almost half of the framework classes source
|
||
|
code, essentially the operators, have been modified to log their
|
||
|
operations.
|
||
|
|
||
|
- Some name changes of classes and files (CG)
|
||
|
|
||
|
In order to make the whole organization more coherent, the name of
|
||
|
the following classes, with their associated files, has been changed.
|
||
|
|
||
|
CalculateStatsOp -> StatsCalculateOp
|
||
|
GenerationStats -> Stats
|
||
|
MaxGenerationTermOp -> TermMaxGenOp
|
||
|
RandomRingMigrationOp -> MigrationRandomRingOp
|
||
|
ReadMilestoneOp -> MilestoneReadOp
|
||
|
ReadParametersOp -> RegisterReadOp
|
||
|
SimpleFitness -> FitnessSimple
|
||
|
TournamentSelectionOp -> SelectTournamentOp
|
||
|
WriteMilestoneOp -> MilestoneReadOp
|
||
|
GA::GenerationalEvolver -> GA::EvolverGenerational
|
||
|
GA::SteadyStateEvolver -> GA::EvolverSteadyState
|
||
|
GP::GenerationalEvolver -> GP::EvolverGenerational
|
||
|
GP::KozaFitness -> GP::FitnessKoza
|
||
|
GP::MaxHitsTermOp -> GP::TermMaxHitsOp
|
||
|
GP::ReadMilestoneOp -> GP::MilestoneReadOp
|
||
|
GP::ShrinkMutationOp -> GP::MutationShrinkOp
|
||
|
GP::StandardMutationOp -> GP::MutationStandardOp
|
||
|
GP::SteadyStateEvolver -> GP::EvolverSteadyState
|
||
|
GP::SwapMutationOp -> GP::MutationSwapOp
|
||
|
|
||
|
|
||
|
1.0.3: (20/03/2003)
|
||
|
|
||
|
- Prefix BEAGLE_ added to preprocessor flags in file config.hpp (CG)
|
||
|
|
||
|
The prefix BEAGLE_ is now used as prefix of all preprocessor flags
|
||
|
generated by autoconf in file config.hpp.
|
||
|
|
||
|
- Additional methods to read/write demes (CG)
|
||
|
|
||
|
The methods Deme::read and Deme::write have been cut into fine grained
|
||
|
methods to read/write the hall-of-fame and the population.
|
||
|
|
||
|
- New templated functions isNaN, isInfinity, and isFinite to check (CG)
|
||
|
whether a floating-point number is not-a-number, infinite or finite
|
||
|
|
||
|
These new functions enable the checking of finiteness of floating-point
|
||
|
numbers, that is a number is not NaN, infinite, or finite (nor NaN or
|
||
|
infinite). These functions are generic, portable replacements to previous
|
||
|
calls to the GNU macro isfinite, which is only available on gcc <= 2.95.
|
||
|
|
||
|
- New templated arithmetic functions maxOf, minOf, and pow2Of (CG)
|
||
|
|
||
|
These arithmetic functions replace the Beagle_MaxM, Beagle_MinM and
|
||
|
Beagle_Pow2M macros to evaluate respectively the maximum of two
|
||
|
numbers, the minimum of two numbers, and the square of a number.
|
||
|
|
||
|
- Members mHallOfFame and mStats in Deme changed from value to handle (CG)
|
||
|
|
||
|
Type of member Deme::mHallOfFame changed from Individual::Bag to
|
||
|
Individual::Bag::Handle. Type of member Deme::mStats changed from
|
||
|
PopulationStats to PopulationStats::Handle. This is to allow smart
|
||
|
pointing of deme's hall-of-fame and statistics. (Thanks to Jianjun Hu)
|
||
|
|
||
|
- Bug correction in SteadyState::operate (CG)
|
||
|
|
||
|
The steady-state now update the hall-of-fame with the best of run
|
||
|
individuals. The method Deme::updateHOFWithIndividual is added in order
|
||
|
to update the hall-of-fame with one individual. (Thanks to Jianjun Hu)
|
||
|
|
||
|
- Bug correction in Register::interpretArgs (CG)
|
||
|
|
||
|
Correction of a bug in the command-line parsing routines in the register.
|
||
|
When two consecutive arguments starting with -OB were given on the
|
||
|
command-line, the second was ignored. (Thanks to Jianjun Hu)
|
||
|
|
||
|
|
||
|
1.0.1: (20/11/2002)
|
||
|
|
||
|
- Autoconf/automake/libtool compilation front-end (CG)
|
||
|
|
||
|
This enable the compilation on different Unix systems using the GNU build
|
||
|
tools. It eliminates the manual setting of preprocessing flags to compile
|
||
|
on a given target (configure script now sets these flags automatically).
|
||
|
The preprocessing flags name are changed to be compliant with autoconf.
|
||
|
The user doesn't need anymore to edit the infamous 'beagle.make' and
|
||
|
'beagle-debug.make' files.
|
||
|
|
||
|
- Support for MS Visual C++ .NET (CG)
|
||
|
|
||
|
The framework now compiles under MS Visual C++ .NET. Some changes are
|
||
|
made to the code to allow it. Support for Borland C++ Builder is
|
||
|
abandoned. (Thanks to Mark Mikulec)
|
||
|
|
||
|
- Modification of the file structure (CG)
|
||
|
|
||
|
The examples are moved into the folder 'examples' and are now independent
|
||
|
projects. The 'make' and 'BCB' folders are eliminated and different
|
||
|
autoconf/automake files are added. The folders 'MSVCPP' contains the
|
||
|
MS Visual C++ .NET specific project files.
|
||
|
|
||
|
- Complete revision of parameter tags and descriptions (CG + MP)
|
||
|
|
||
|
The parameter tags are changed to augment consistency and organization.
|
||
|
Some useless and confusing parameters are eliminated. The short and
|
||
|
long help about the parameters is completely revised. The '-EC'
|
||
|
command-line prefix is changed for '-OB'.
|
||
|
|
||
|
- Code revision of the examples (CG + MP)
|
||
|
|
||
|
The four examples code are revised for clarity and simplicity.
|
||
|
|
||
|
- Bug correction in SteadyStateOp::operate (CG)
|
||
|
|
||
|
Correction of a bug in the steady-state operator when mating two
|
||
|
individuals for crossover. (Thanks to Jianjun Hu)
|
||
|
|
||
|
- Bug correction in symbolic regression example (CG)
|
||
|
|
||
|
The symbolic regression evaluation operator "initialize" method
|
||
|
previously called the random number generator. This may cause problems as
|
||
|
the random number generator internal state value may be changed after
|
||
|
this call. This situation is now corrected by sampling the equation to
|
||
|
regress at the first call to the method "evaluate". (Thanks to Brad
|
||
|
Pillow)
|
||
|
|
||
|
- Bug correction in MigrationOp::migrate (CG)
|
||
|
|
||
|
Correction of a bug that happen when determining whether migration happens
|
||
|
or not, given the migration interval. (Thanks to Mathieu Roy)
|
||
|
|
||
|
|
||
|
1.0.0: (22/07/2002)
|
||
|
|
||
|
- Modification of statistics classes (CG)
|
||
|
- Modification of copy behavior of bags and bag allocators (CG + MP)
|
||
|
- Several minor bug fixes (CG)
|
||
|
- Several minor comments revision (CG + MP)
|
||
|
- Minor changes to compile with Borland C++ Builder (CG)
|
||
|
|
||
|
0.16.2 (BETA): (13/06/2002)
|
||
|
|
||
|
- Merge of mixed and uniform bags into unified bags (CG + MP)
|
||
|
- Several class name changes (CG + MP)
|
||
|
- Several minor bug fixes (CG)
|
||
|
- The GP framework (CG)
|
||
|
- Tree GP test examples (CG)
|
||
|
|
||
|
0.16.1 (ALPHA): (21/03/2002)
|
||
|
|
||
|
- The makefiles structure (CG)
|
||
|
- The generic OO foundations (CG)
|
||
|
- The generic EC framework (CG)
|
||
|
- The GA framework (CG)
|
||
|
- A simple GA test example (CG)
|
||
|
|
||
|
|
||
|
|