Welcome to the [Monte Carlo + Machine Learning = Library] (MCMLL) Webpage
Links |
What is MCMLL ? |
Licensing |
Platforms |
Software requirements |
Status |
MCMLL Features |
Tutorials |
Example applications |
TODO
Links
Download and Sourceforge project details |
wiki |
library reference
What is MCMLL ?
MCMLL is a C++ template library (header files only) for implementing applications using mainly Monte-Carlo methods.
An example is using evolutionary algorithms for global optimization.
MCMLL provides multi-threaded Differential Evolution (DE) with many variants,
Particle Swarm Optimization (PSO) and many other. Other available methods are
Sequential Monte-Carlo (Particle Filters) for state tracking.
MCMLL provides its own expression templates based vector and matrix classes to enable high performance
and programmer-friendly coding. MCMLL was initiated as a C++ platform for research projects and
became a solid foundation over the years. Therefore, please be aware that the library is targeted
primarily to experienced C++ programmers with C++ templates knowledge!
Licensing
MCMLL and the shipped example applications are licensed under GNU GPL v2
Platforms
MCMLL is developed on 64-bit Linux. Supported Compilers: GCC-4.5. Porting
to other platforms should be straightforward, patches are welcome. See also TODO section.
Software requirements
MCMLL requires the Boost libraries v1.46. See also TODO section.
Status
MCMLL is actively maintained and extended.
- version 1.1.3:
- added (actually: reactivated) Artificial Bee Colony Optimization (ABC)
- version 1.1.2:
- application model_based_superpositional_signal:
- BUGFIX: filter works again
- added an example data set: 'sines'
- added support for plotting of results (see README file in app/model_based_superpositional_signal folder)
- remove unnecessary gnuplot dependencies
- some code cleanup
- version 1.1.1:
- make CMA-ES usable again generally
- added support for 'subsamples' per particle (e.g. enable use of subgroups of particles/individuals)
- version 1.1.0:
- documentation was further extended (Doxygen generated doc)
- added four tutorials to ease the adoption of MCMLL
- added some small and trivial example programs
- added two more applications: global optimization based ANN training (go_ann) and EA benchmarking (ea_bench)
- extended usage of C++0x features, removed Boost-random dependency -> use std:: random facilities
- due to the switch to std:: random, the API has changed, especially on code using the random number facilities.
The best way of adapting to the changes is to take a look at the provided examples and tutorials
- many other small changes to extend functionality, usability and efficiency
MCMLL Features
- Use of some ISO C++0x features in code
- Expression Templates based vector and matrix classes with non-uniformly mixed types in expressions
- Evolutionary Algorithms (almost all multi-threaded):
- Differential Evolution (DE)
- DE variants: jDE, JADE, R2DE, SAR2DE, ...
- Particle Swarm Optimization (PSO)
- Covariance Matrix Adaptation Evolution Strategies (CMA-ES) (code borrowed from
here)
- Simple Genetic Algorithm (SGA)
- Monte Carlo Methods:
- A flexible framework to implement Sequential Monte Carlo (Particle Filter) methods
- MCMC: To implement Metropolis-Hastings based Monte Carlo based methods
Tutorials
- Tutorial 1: Demonstrating vector arithmetics
- Tutorial 2: How to create an application using a single-threaded Evolutionary Algorithm
- Tutorial 3: How to create an application using a multi-threaded Evolutionary Algorithm
- Tutorial 4: How to create an application using a Sequential Monte-Carlo methods (Particle Filters)
Example applications
MCMLL requiers/uses SCons for the build system of the example applications,
libsndfile (+dev files),
gnuplot, matplotlib (optional).
ncurses (+dev files), matplotlib (optional).
The included example applications are:
- model_based_superpositional_signal: Shows a rather advanced use of Particle Filters implementing Markov-Jump
system based event detection for superpositional signals
- ea_bench: global optimization with several Evolutionary Algorithms (EA's)
- go_ann: training of feedforward neural networks using EA's
TODO
- further improve documentation
- add more example applications
- further simplify code all everywhere using more C++0x features
- port to GCC-4.6
- extend library as the research requires
- decrease Boost dependency
- PATCHES ARE WELCOME!!
Acknowledgements
This project was supported by grants from the following institutions: