Skip to content
Dario Izzo edited this page Mar 22, 2017 · 25 revisions

Welcome to the new pagmo!

We decided a few years back that pagmo code was growing out of control and was unmanageable. In June 2016 we finally found time and strength to redesign from scratch the whole code taking care from the beginning of seemingly unimportant issues such as a) continuous integration (osx, linux and win, 32/64), b) unit testing and c) code format. During the redesign we changed everything to change nothing: pagmo is still the coolest optimization framework around and deals with the efficient coarse grained parallelization of your optimization tasks. Its main vocation is to provide a unified interface to optimization algorithms, derivative free and not, while offering the easy parallelization of your tasks.

Code formatting

While developing use this line to format your code before committing. (use it from the pagmo2 dir)

git ls-files | grep -E "\.(in|h|hpp|cpp)$" | grep -vE "external" | xargs clang-format -i

Adding a meta-problem/algorithm (to pygmo)

Why should I move to PaGMO 2.0?

  • The old pagmo 1.0 will no longer be supported / maintained
  • PaGMO 2.0 installation process is less painful (pip install pygmo in python or just use the headers, no library in c++)
  • PaGMO algorithms now all have a get_log() allowing to look what happens during evolves
  • pygmo 2.0 multiprocessing works in windows, linux and osx
  • slowly all features in PaGMO 1.0 will also be available in PaGMO 2.0 (help to implement/transfer them is always wanted)
  • You can implement problems and algorithms in python and be sure not to create nasty crashes with meta-problems / meta-algorithms
  • pagmo 2.0 uses a superior continuous integration chain ensuring compilation and unit tests pass in all platforms (64-32 bits) win linux osx
  • You can now implement gradients and hessians for your problem and have pagmo pass the information to the algorithm that care.
  • Thanks to dill you can define problems in one machine and send them around in a cluster.
  • Documentation is kept up to date and is more complete.
Clone this wiki locally