The main changes for this release include:
- Added a parameter scan algorithm.
- Separated Simulated Annealing from Evolutionary Algorithms, making
it a first-class citizen.
- Separated multi-populations from Evolutionary Algorithms, making
them a first class citizen.
- Evolutionary Algorithms are now based on GParameterSet (just like all
other "basic" optimization algorithms, except for multi-populations).
- Reworked the entire broker architecture (GBrokerConnectorT was replaced
by GBrokerConnector2T, and the GBrokerT class as well as the
GAsioTCPConsumerT classes have been refactored).
- The broker, as implemented, now acts solely on GParameterSet-derivatives.
This simplifies the architecture.
- Renamed GIndividual to the more fitting "GOptimizableEntity".
- Removed the deprecated GIndividualFactoryT class in favor of the more
general GFactoryT.
- Gave optimization algorithm factories a common base class so generic
access becomes easier.
- Added global stores for GParameterSet-based consumers, optimization
algorithms and corresponding monitor classes.
- GParameterSet and GOptimizableEntity no longer depend on any specific
optimization algorithms. As a consequence, all major concepts are now
separated from each other, allowing for a far more independent development
style. Adding new algorithms and also consumers has become far easier.
- Gave GParameterBase objects a name to facilitate work with the
GExternalEvaluatorIndividual. A name to a parameter makes it much easier
to work with XML files and to identify the important variables.
- Simplified the optimization monitor infrastructure.
- Added pluggable optimization monitors that allow to easily monitor
common properties of all optimization algorithms. In this context,
added a monitor that allows to plot one or two variables together with
their fitness for all individuals touched during the optimization.
- Centralized conversion of smart pointers using a Gem::Common function.
- Removed non-portable "long double" functions from
GMathHelperFunctions.hpp/cpp.
- Moved GConstrainedValueLimitT<T> from "max()" to "lowest()/highest()".
- Added a simple logging framework, including exception handling, that
allows to stream information to be logged.
- Gave gemfony_error_condition the ability to be streamed.
- Removed the deprecated utilities directory and application.
- Removed most manual creation of ROOT output files in favor
of GPlotDesigner.
- Gave GPlotDesigner the ability to create 3D output through a new
class GGraph3D.
- Gave GPlotDesigner the ability to add more than one plot to the
same sub-canvas.
- Removed the deprecated Go class in favor of Go2 and updated all examples.
- Made Go2 independent from specific optimization algorithms and consumers,
thus broadening its scope. Note that during this rework, also most
command line parameters have been changed, and that command line
parameters specific to consumers are extracted at run-time from each
consumer. If you are running Geneva through a script, this might mean
that you need to adapt this script.
- Added a new example "GStarter" meant as a starting point for the
users' own projects.
- Added an example that illustrates meta-optimization (i.e. usage of
an evolutionary algorithm to optimize the configuration parameters
of an optimization algorithm.
- Added pluggable objects that allow to check parameter sets for validity,
to be used in an infrastructure for dealing with multi-parameter constraints.
- Instrumented most Geneva optimization classes with C++11 override
statements, wrapped into defines so the code can be used with
C++98-compilers. This allows to rule out a further class of errors,
hence making the code more robust.
- Ported to MacOS X (still highly experimental).
- Ported to Boost 1.54.
Recommended version of Boost: 1.54