-
Notifications
You must be signed in to change notification settings - Fork 162
Home
Dario Izzo edited this page Mar 22, 2017
·
25 revisions
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 that is around and deals with the efficient coarse grained parallelization of your optimization tasks.
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
- add your meta prob/algo to the list of metas here: https://github.com/esa/pagmo2/blob/master/pygmo/pygmo_classes.hpp (just add a new element at the end of the tuple)
- implement a specialisation of the make_meta_problem_init structure to tell pygmo how to construct your meta prob/algo from a UDP/UDA. Example for translate: https://github.com/esa/pagmo2/blob/master/pygmo/problem_exposition_suite.hpp#L99
- use the expose_meta_problem helper function in core.cpp to expose your meta, example for translate: https://github.com/esa/pagmo2/blob/master/pygmo/core.cpp#L618
- add the relative patch lines here: https://github.com/esa/pagmo2/blob/master/pygmo/_patch_problem.py
- 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.