Version History
unnamed
The first operational version was developed in 2002 and it was composed of a few hundred lines of C code plus a collection of scripts. It has been retroactively named "µGP v1", although no specific name was used at the time.
ugp2
The second version was developed in 2003 and maintained since 2006; it consisted of about 15,000 lines in C. The first version was codenamed Chicken Pox, because the isolation caused by the infection enabled its developer to hack most of the code in a single week.
This version added several new features and significantly broadened the applicability of the tool. It was able to load a list of parametric code fragments, called macros, and optimize their order inside a test program. With time, it has been coerced into solving problems it was not meant for.
While useful for improving its performance, this extended usage made the basic limitations of the tool clear, and ultimately led to the need to re-implement µGP from scratch.
µGP3
The third version brought a complete change of paradigm: the focus goes from the problem to the tool, and the main design goal shifts from the solution of a specific class of problems to the development of a tool that can tackle a wide range of possible applications.
The development of the third version started in 2006 with the intent to provide a clean implementation able to replicate the behavior of the previous version. Additional goals were: maintainability, extendability, and portability.
Due to typographic limitations, this version is also known as ugp3
.
µGP3 v3.0: Noodle Soup
- Released in 2007
- Variable-strength genetic operators
- Possibility to shape the behavior smoothly from steady-state to generational, including several degrees of elitism and number of applied operators
- Priority-based multiple fitness with fitness holes
- Diversity protection, trough the concept of population entropy
- Clone detection, with optional scaling or extermination
- Support for multiple populations
- Support for different population topologies, from panmictic to lattice
- Support for dynamic fitness functions
- Support for parallel fitness evaluation
- Embryonic support for variable population size and offspring size
- Embryonic support for self adaptation of operator strength, operator activation probability, tournament size, population size
µGP3 v3.1: Bluebell
- Released in 2010
- Multi-objective optimization
- Support for migrations
- Enhanced support for variable population size and offspring size
- Enhanced entropy for diversity protection
- Enhanced self-adaptation mechanisms
µGP3 v3.2: Mistletoe
- Released in 2012
- Two genetic operators mimicking Differential Evolution
- Embryonic support for GROUPS
- Island model
- Code commented and cleaned
- Better integration with Win32 console
- Support for Allopatric Selection
- Scan mutation operators rewritten, enhanced and separated by types.
µGP3 v3.3: PalmTree
µGP3 v3.4: Camellia
- To be released on Q4 2015
- Completely ported to ISO/IEC 14882:2011 / 2011 (a.k.a., C++11)
- Extensive bug fix
- Support for GROUPS
- Enhanced algorithms for multi-objective optimization
- Operator selection through DMAB
- Alpha version GUI utilities in Qt
- For a detailed list of changes, see [Changes introduced in Camellia]
What µGP collective is planning:
µGP3 v3.5
- Graphical frontend in Qt (Thuban)
- Beta version GUI utilities in Qt
- And much more...