PaGMO 1.0

PaGMO (Parallel Global Multiobjective Optimizer)

Introduction

PaGMO is a generalization of the island model paradigm to parallelize global and local optimization algorithms using multiple threads/processes. It provides a set of C++ classes and their exposition in Python language 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} $



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 or 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).

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.

 All Data Structures Namespaces Functions Variables Typedefs Enumerations Enumerator Friends