Geneva Optimization Library * Version 1.2, "Mont Blanc" - March 22, 2014 The main changes for this release include: ****************************** BREAKING CHANGES ******************************** - Sigma values of gauss adaption are now relative to the allowed or preferred value range of a parameter type. Values are given as a percentage of this value range. E.g., a sigma value of 0.1 and an allowed parameter range of [-50, 50] will result in the gaussian distribution using a "real" sigma value of 10. - The minimal BOOST version required for compiling Geneva is now v1.48. ******************************************************************************** - Added a simple parser that allows to evaluate mathematical formulas like "sin({{var1}})*pow(2.,3.)". - Introduced a method to deal with dependent boundary conditions a.k.a. "constraints" (double parameters only at the moment). - Added three possibilities to treat invalid parameter sets (i.e., parameter sets that violate a number of predefined constraints). - In this context, introduced a "transformed" and a "raw" fitness. The latter comes from the user's evaluation function, the former makes sure that individuals which violate one or more constraints still get a useful evaluation, without having to call the evaluation function. - Added a new "per-item" cross-over method to evolutionary algorithms. - Added a new mechanism to update adaptors in EA when optimization has stalled. - Based collection of best individuals on a priority queue and centralized the code for most cases (multi-populations and multi-criterion optimization need separate treatment). - Added a parser for parameter descriptions of the kind "d(MY_DPAR_01,-10.3,12.8,100)" to facilitate parameter scans from the command line (or in batch mode). - Added a new option to GParameterScan to randomly initialize a predefined number of work items. This "brute force" approach may help to find a good starting point. E.g., for the example 01_GSimpleOptimizer one may now run './GSimpleOptimizer -a "ps,ea" --parameterSpec="s(1000)"'. This would result in a random scan of 1000 work items. The best individuals found will then form the start values of an evolutionary algorithm. - Added further command line options (when using Go2), such as the maximum number of iterations or the maximum time for each algorithm type. Some options are now hidden and are only shown upon explicit request. - Added the ability to catch a SIGHUP signal and let GOptimizationAlgorithmT<> exit gracefully, without discarding results. This requires that GObject::sigHupHandler is registered as a signal handler, which needs to be done by the user, e.g. in main(). - In networked execution, the server now tells the client how long it should sleep before reconnecting. Repeated idle calls are so avoided, reducing the network load. - Added two functions for calculating a line best describing a set of data points. - Updated the GParallelisationOverhead test so that it automatically calculates the speed-up. - Added the possibility to specify the path to configuration files in an environment variable (GENEVA_CONFIG_BASENAME). Set this variable to the "/"-terminated path of a directory containg the "./config" sub-directory where the configuration files are to be found. - Added an option to enforce a specific C++ standard for the compilation procedure. - Starting with this version, stable release versions get an even minor version number. - Experimental port to MacOS 10.9. - Ported to Boost 1.55. Recommended version of Boost: 1.55; Minimum Boost version is 1.48