Welcome to the [Monte Carlo + Machine Learning = Library] (MCMLL) Webpage
What is MCMLL ? |
Software requirements |
MCMLL Features |
Example applications |
Download and Sourceforge project details |
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!
MCMLL and the shipped example applications are licensed under GNU GPL v2
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.
MCMLL requires the Boost libraries v1.46. See also TODO section.
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
- 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
- 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
- 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)
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
- 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!!
This project was supported by grants from the following institutions: