The type-erased wrappers now have additional member functions to interact at runtime with the contained user-defined objects. Specifically, it is now possible to fetch
voidpointers to the user-defined objects without knowing their type, and to query at runtime the
std::type_indexof the user-defined objects (#410).
get_name()implementations for the type-erased wrappers now return the demangled C++ name on most platforms (#410).
User-defined topologies can now (optionally) implement a conversion function to a Boost graph object (#405).
Introduce a workaround for an issue present on some compiler/standard library combinations, where the
dynamic_castused in the
extract()implementations would fail when crossing the boundaries between
dlopen()-ed libraries (#410).
Build fixes for recent CMake versions (#410).
The batch fitness evaluation functionality has been completed on the Python side. This includes 2 new batch fitness evaluation schemes usable with Pythonic problems (
ipyparallel_bfe), and additional testing (#380).
BREAKING: as anticipated, Python 2 support has been removed from pygmo. pygmo now requires Python 3.4 or later.
Allow to specify arguments to the construction of both the client and the view in
ipyparallel_island(#380). Note that this is a BREAKING change for non-standard usages of
The hypervolume code has been moved to the compiled pagmo library (#376).
BREAKING: the mechanism for managing the interaction of an
ipyparallel_islandwith an ipyparallel cluster has changed. Please refer to the documentation for details (#368).
BREAKING: the machinery for the translation between C++ and Python of vectors of unsigned integral types (e.g., sparsity patterns, individual IDs, etc.) now requires that, on the Python side, NumPy arrays are created with the appropriate unsigned integral dtype (i.e.,
uint64in most cases). Previously, pagmo would accept also signed integral dtypes (#342).
NSGA2 can optionally use the batch fitness evaluation framework (#308).
Implement the WFG test suite (#298).
Migration framework (#296).
Various additions to the C++ API of user-defined classes (#294).
Ipopt is now included in the linux pip packages (#293).
uninstalltarget in the build system when using the CMake
Unix Makefilesgenerator (#282).
Implement the Grey Wolf Optimizer algorithm (#268).
Add CircleCI to the continuous integration pipeline (#266).
Implement the Extended Ant Colony Optimization algorithm (#249).
Implement the Lennard-Jones and Golomb ruler problems (#247).
Batch fitness evaluation framework (#226).
Various improvements to the MinGW pip packages: the toolchain and the dependencies have been updated, support for Python 3.7 has been added (#292).
BREAKING: the serialization backend was switched from the Cereal library to the Boost.serialization library. This change has no consequences for Python users, nor for C++ users who use pagmo’s CMake machinery. For those C++ users who don’t use CMake, this means that in order to use pagmo it is now necessary to link to the Boost.serialization library (#278).
BREAKING: pagmo is not any more a header-only library, it has now a compiled component. This change has no consequences for Python users, nor for C++ users who use pagmo’s CMake machinery. For those C++ users who don’t use CMake, this means that in order to use pagmo it is now necessary to link to a compiled library (#278).
pygmo.algorithmcannot be used as UDPs and UDAs any more. This change makes the behaviour of pygmo consistent with the behaviour of pagmo (#248).
Fix a bug in pygmo’s plotting utils (#330).
Fix a bug in PSO’s error handling (#323).
Fix a bug in MOEA/D when
Fix type mismatches in the constrained/MO utils (#315).
Fix a potential deadlock when setting/getting an island’s population/algorithm (#309).
Fix a build failure when pagmo is configured without Eigen3 (#281).
Fix a build failure in the Ipopt algorithm wrapper when using the Debian/Ubuntu Ipopt packages (#266).
Fix a few test suite build failures in debug mode when using recent Clang versions (#266).
Fix the behaviour of NSGA2 and MOEAD when the problem has equal lower/upper bounds (#244).
py27mbuild variant for the manylinux packages (#239).
The Python multiprocessing island
mp_islandcan now optionally spawn a new process for each evolution, rather than using a process pool (#221).
Python user-defined classes can now be extracted from their type-erased containers using the Python
objecttype (#219). This allows extraction without knowing the exact type of the object being extracted.
Avoid linking pygmo to the Python library on OSX with clang. This may fix the
Fatal Python error: take_gil: NULL tstateerrors which are occasionally reported by users (#230).
Correct the detection of the Boost libraries’ version in the build system (#230).
The Python multiprocessing island
mp_islandshould now be more robust with respect to serialization errors in problems/algorithms (#229).
Tentative fix for a pygmo build failure in Cygwin (#221).
It is now possible to explicitly shut down the process pool of
Start using intersphinx in the documentation (used at the moment for hyperlinking to the Python online documentation) (#187).
The constraints’ tolerances for a problem can now be set via a scalar in pygmo (#185).
Update the copyright date to 2018 (#190).
BREAKING: user-defined islands in Python must now return the algorithm object used for the evolution in addition to the evolved population (#186). This change ensures that the state of an algorithm executed on a pythonic island is now correctly propagated back to the original algorithm object at the end of an evolution.
Initial release of the pagmo/pygmo C++ software-development kit (SDK). The purpose of the SDK is to make the process of writing C++ extensions for pagmo/pygmo as easy as possible. The SDK is a beta-quality feature at this time, and it is lightly documented - no tutorials are available yet. Please come to the gitter channel and ask there if you are interested in it (#110).
Improve support for integer and mixed integer optimization (#115).
pygmo now depends on pagmo, and it is now effectively a separate package. That is, in order to compile and install pygmo from source, you will need first to install the pagmo C++ headers. Users of pip/conda are not affected by this change (as pip and conda manage dependencies automatically).
BREAKING: as a consequence of the overhaul of (mixed) integer programming support in pagmo, the problem’s integer part is no longer available as an argument when constructing algorithms such as
pagmo::nsga2, it must instead be specified in the definition of the UDP via the optional
Move from dill to cloudpickle as a serialization backend. This fixes various serialization issues reported in #106.
Various documentation fixes/improvements, headers sanitization, etc.