|
PaGMO 1.0
|
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:
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).
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.
To install PaGMO from source code you will need git and CMake installed in your system. On Unix systems:
git clone git://pagmo.git.sourceforge.net/gitroot/pagmo/pagmo
cd pagmo
mkdir build
cd build
ccmake ../
make
make test
make install
On Windows systems, the procedure is analogous (you will likely use the Windows CMake GUI instead of ccmake).
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.
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.
1.7.3