PaGMO  1.1.5
 All Data Structures Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
PaGMO (Parallel Global Multiobjective Optimizer)

Introduction

PaGMO offers a generalization of the island model paradigm working for global and local optimization algorithms. Its main parallelization approach makes use of multiple threads, but MPI is also implemented and can be mixed in with multithreading. It provides a set of C++ classes and their exposition in Python language (PyGMO) as to allow the user to solve, in a parallel fashion, global optimization tasks in the form:

$ \begin{array}{rl} \mbox{find:} & \mathbf x \in R^n \times N^m \\ \mbox{to minimize:} & \mathbf f(\mathbf x, \mathbf s) \\ \mbox{subject to:} & \mathbf {lb} \le \mathbf x \le \mathbf {ub} \\ & \mathbf c(\mathbf x) = \mathbf 0 \\ & \mathbf c_{in}(\mathbf x) \le \mathbf 0 \end{array} $



.... yes it is that good ... its framework is applicable to single-objective, multiple-objectives, continuous, integer, box-constrained, non linear constrained, stochastic, deterministic optimization!!!!

See Also
Izzo, D., PyGMO and PyKEP: Open Source Tools for Massively Parallel Optimization in Astrodynamics (the case of interplanetary trajectory optimization), International Conference on Astrodynamics Tools and Techniques - ICATT, 2012.
Izzo, D., Rucinski, M., and Biscani, F., The Generalized Island Model, Parallel Architectures and Bioinspired Algorithms, Springer Berlin/Heidelberg, pp.151–169, 2012.
Rucinski, M., Izzo, D., and Biscani, F., On the Impact of the Migration Topology on the Island Model, Parallel Computing, 36, Elsevier, pp.555-571, 2010.

Algorithms currently implemented in PaGMO

A number of algorithms are already implemented in PaGMO and thus immediately available after installation. The user can implement his own algorithms both in C++ and directly in Python. Check the algorithm documentation to verify whether a particolar problem class can be fed to it (i.e. box-constrained, mixed integer etc.):

Other algorithm are available via third parties libraries, and can be included activating the respective options in CMake, in particular:

When working only in Python the SciPy algorithms from the 'optimize module' are available too (see http://docs.scipy.org/doc/scipy/reference/optimize.html).

Problems currently implemented in PaGMO

A number of global otimization problems are already implemented in PaGMO and thus immediately available after installation. The user can implement his own problems both in C++ or directly in Python.

Installation guide

To install PaGMO from source code you will need git and CMake installed in your system.

On Unix systems:

ccmake.png

On Windows systems, the procedure is analogous (you will likely use the Windows CMake GUI instead of ccmake). We have so far tested compilation only using MinGW

Interactive python session

Our suggestion in using PaGMO is to activate the option PyGMO and, after installation, start an interactive session with ipython. In the image below you see an example on how to solve the 100 dimensional pagmo::problem::schwefel using a pagmo::topology::ring evolution of 8 island (20 individuals each) using pagmo::algorithm::de (Differential Evolution) in a 4 CPU machine.

ipython.png

MPI support

By default PaGMO parallelizes the optimization process by opening multiple local threads of execution, and hence the parallelism is confined to a single machine. For use in cluster environments, PaGMO can employ MPI (Message Passing Interface) to distribute the workload among multiple machines. Detailed instructions on how to enable and use the MPI support in PaGMO can be found in this page.