Changelog#
2.19.1 (2024-08-09)#
New#
Add support for CMake
UNITY_BUILD
(#564).
Fix#
2.19.0 (2023-01-21)#
New#
Changes#
Fix#
A fix for the gaco algorithm that now throws if
ker
size is < 2 (#490).
2.18.0 (2021-08-03)#
New#
pagmo now officially supports 64-bit ARM and PowerPC processors (#481).
Changes#
Fix#
Do not force the static runtime on MSVC when building pagmo as a static library (#474).
2.17.0 (2021-03-05)#
Fix#
Enable support in the build system for the latest TBB version (oneTBB) (#469).
2.16.1 (2020-12-22)#
New#
The pagmo conda package now enables Ipopt on Windows (#460).
Changes#
pagmo now requires CMake >= 3.8 (#458).
Fix#
2.16.0 (2020-09-25)#
New#
pagmo can now be built as a static library (#426).
Add a flag to build pagmo with link-time optimizations (#413).
The
thread_island
UDI now can use a thread pool (#409).
Changes#
NLopt support in pagmo now requires version 2.6 or greater (#451).
Eigen3 support in pagmo now requires version 3.3 or greater (#451).
Rework the way in which binary data is included in the CEC2013/CEC2014 problem suites. As a result, these problems are now available on all platforms (#412).
Various internal simplifications to the implementation of the type-erased classes (#411).
Fix#
Various build system fixes/improvements (#451).
Fix an indexing bug in the PSO implementation (#448).
Fix build failure with Boost 1.74 (#447).
Fixes in SBX and polynomial mutation (#436).
Avoid quadratic complexity in
pagmo::population::push_back()
(#434).Fix build with recent Ipopt versions (#412).
2.15.0 (2020-04-02)#
New#
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
void
pointers to the user-defined objects without knowing their type, and to query at runtime thestd::type_index
of the user-defined objects (#410).The default
get_name()
implementations for the type-erased wrappers now return the demangled C++ name on most platforms (#410).Add a
pagmo::base_bgl_topology::get_edge_weight()
function to fetch the weight of an edge in a BGL topology (#407).User-defined topologies can now (optionally) implement a conversion function to a Boost graph object (#405).
Fix#
2.14.0 (2020-03-04)#
New#
IMPORTANT: pygmo has been split off into a separate project. Please see the website for pygmo’s documentation and changelog.
pagmo’s core classes now support pretty-printing in the xeus-cling notebook (#397).
Implement a setter for the migration database of an archipelago (#390).
Changes#
Various performance improvements for the Pareto dominance utilities (#394).
Fix#
Fix an error message in the CEC2009 test suite (#402).
2.13.0 (2020-01-10)#
New#
The batch fitness evaluation functionality has been completed on the Python side. This includes 2 new batch fitness evaluation schemes usable with Pythonic problems (
mp_bfe
andipyparallel_bfe
), and additional testing (#380).The
pagmo::not_implemented_error
C++ exception is now correctly translated to theNotImplementedError
Python exception (#380).
Changes#
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 ofipyparallel_island
.The hypervolume code has been moved to the compiled pagmo library (#376).
Fix#
2.12.0 (2019-12-18)#
New#
The
pagmo::pso_gen
algorithm can now use the batch fitness evaluation scheme (#348).Implement the multi-objective hypervolume-based ant colony optimizer (MHACO) (#326).
Implement the NSPSO algorithm (#314).
Changes#
BREAKING: the mechanism for managing the interaction of an
ipyparallel_island
with an ipyparallel cluster has changed. Please refer to the documentation for details (#368).
Fix#
2.11.4 (2019-09-29)#
Fix#
Fix an indexing bug in the
pagmo::pso_gen
algorithm (#349).Fix various fitness comparisons when nan values are involved (#346, #347).
2.11.3 (2019-09-09)#
New#
pygmo.archipelago.push_back()
now also acceptsisland
objects as input arguments (#342).
Changes#
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.,
uint64
in most cases). Previously, pagmo would accept also signed integral dtypes (#342).
Fix#
2.11.2 (2019-08-21)#
Fix#
2.11.1 (2019-08-09)#
Fix#
2.11 (2019-08-07)#
New#
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).
Implement an
uninstall
target in the build system when using the CMakeUnix Makefiles
generator (#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).
Changes#
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: unconditionally disable the CEC2013/CEC2014 problem suites on OSX and MinGW, as they cause build issues (#266, #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).
Various performance improvements in the
population
API (#250).BREAKING:
pygmo.problem
andpygmo.algorithm
cannot be used as UDPs and UDAs any more. This change makes the behaviour of pygmo consistent with the behaviour of pagmo (#248).
Fix#
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
m_neighbours<2
(#320).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).
Various documentation, build system and unit testing fixes/improvements (#243, #245, #248, #257, #262, #265, #266, #279, #287, #288, #327, #328).
The
fork_island
UDI now properly cleans up zombie processes (#242).
2.10 (2019-01-02)#
New#
Enable the
py27m
build variant for the manylinux packages (#239).It is now possible to select a serialization backend other than cloudpickle. The other available backends are the standard
pickle
module and dill (#229).The Python multiprocessing island
mp_island
can 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
object
type (#219). This allows extraction without knowing the exact type of the object being extracted.
Fix#
Avoid linking pygmo to the Python library on OSX with clang. This may fix the
Fatal Python error: take_gil: NULL tstate
errors 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_island
should now be more robust with respect to serialization errors in problems/algorithms (#229).Tentative fix for a pygmo build failure in Cygwin (#221).
Various documentation fixes and enhancements (#217, #218, #220, #221).
2.9 (2018-08-31)#
New#
Changes#
The build system now respects the
CMAKE_CXX_STANDARD
CMake setting (#207).Ensure that, in
thread_island
, the algorithm used for the evolution replaces the original algorithm at the end of the evolution (#203).The pip pygmo package for Python 3.4 (Linux) has been dropped (#196).
Fix#
2.8 (2018-07-12)#
New#
Changes#
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.
Fix#
2.7 (2018-04-13)#
New#
Changes#
Update pygmo’s dependencies in the manylinux builds to the latest versions (#144).
2.6 (2017-11-18)#
Fix#
2.5 (2017-11-12)#
Fix#
2.4 (2017-06-09)#
New#
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).
Changes#
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::sga
andpagmo::nsga2
, it must instead be specified in the definition of the UDP via the optionalget_nix()
method.
Fix#
Fix a bug in the plotting submodule (#118).
Various documentation fixes and improvements.
2.3 (2017-05-19)#
Changes#
Move from dill to cloudpickle as a serialization backend. This fixes various serialization issues reported in #106.
Fix#
2.2 (2017-05-12)#
New#
Changes#
Fix#
Various documentation fixes/improvements, headers sanitization, etc.