.. _changelog: Changelog ========= 2.19.0 (2023-01-21) ------------------- New ~~~ - Added batch fitness evaluation to cmaes algorithm (`#520 `__). - Added batch fitness evaluation to unconstrain problem (`#502 `__). - Added batch fitness evaluation to a new MOEAD generational algorithm (`#508 `__). - Improve performance for the task_queue class by caching and re-using existing threads. (`#512 `__). Changes ~~~~~~~ - Several typos were fixed in docs and also class name. Notably hock_schittkowsky.hpp becames hock_schittkowski.hpp and thus breaks backward compatibility if that problem is needed. (`#531 `__, `#509 `__). 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 ~~~~~~~ - pagmo's build system now honours the ``CMAKE_INSTALL_LIBDIR`` setting on Linux to determine the library installation path (`#482 `__). - Various internal changes/improvements in the serialisation functions (`#480 `__). 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 ~~~ - Various build system fixes/improvements (`#460 `__, `#459 `__, `#458 `__, `#457 `__). 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 :cpp:class:`~pagmo::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 `__). - **BREAKING**: pagmo now requires C++17 (`#414 `__, `#415 `__). - 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 :cpp:func:`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 the ``std::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 :cpp:func:`pagmo::base_bgl_topology::get_edge_weight()` function to fetch the weight of an edge in a BGL topology (`#407 `__). - Add the :cpp:class:`~pagmo::free_form` topology (`#405 `__). - User-defined topologies can now (optionally) implement a conversion function to a Boost graph object (`#405 `__). Fix ~~~ - Introduce a workaround for an issue present on some compiler/standard library combinations, where the ``dynamic_cast`` used in the ``extract()`` implementations would fail when crossing the boundaries between ``dlopen()``-ed libraries (`#410 `__). - Build fixes for recent CMake versions (`#410 `__). - Various doc fixes (`#410 `__, `#405 `__). 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 (:class:`~pygmo.mp_bfe` and :class:`~pygmo.ipyparallel_bfe`), and additional testing (`#380 `__). - The :cpp:class:`pagmo::not_implemented_error` C++ exception is now correctly translated to the :class:`NotImplementedError` 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 :class:`~pygmo.ipyparallel_island` (`#380 `__). Note that this is a **BREAKING** change for non-standard usages of :class:`~pygmo.ipyparallel_island`. - The hypervolume code has been moved to the compiled pagmo library (`#376 `__). Fix ~~~ - Fix a bug in the hypervolume utilities when NaNs are encountered (`#383 `__). - Fix an ambiguous archipelago constructor (`#381 `__). - Fix a compilation warning in debug mode when using recent Boost versions (`#377 `__). 2.12.0 (2019-12-18) ------------------- New ~~~ - The :cpp:class:`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 :class:`~pygmo.ipyparallel_island` with an ipyparallel cluster has changed. Please refer to the documentation for details (`#368 `__). Fix ~~~ - Fix a missing ``inline`` and a few wrong include files in the serialization header (`#355 `__). - Various build system/doc fixes (`#372 `__, `#363 `__, `#361 `__, `#350 `__, `#354 `__). 2.11.4 (2019-09-29) ------------------- Fix ~~~ - Fix an indexing bug in the :cpp:class:`pagmo::pso_gen` algorithm (`#349 `__). - Fix various fitness comparisons when nan values are involved (`#346 `__, `#347 `__). 2.11.3 (2019-09-09) ------------------- New ~~~ - :func:`pygmo.archipelago.push_back()` now also accepts :class:`~pygmo.island` 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 ~~~ - Various improvements, fixes and cleanups in the translation of C++ vectors to/from Python (`#342 `__). - Fix the printing of islands which contain MO problems (`#342 `__). - Various doc improvements and fixes (`#340 `__). 2.11.2 (2019-08-21) ------------------- Fix ~~~ - Fix the MinGW pip builds (`#338 `__). - Fix the default value for the NSGA2 ``eta_m`` parameter in the Python exposition (`#338 `__). 2.11.1 (2019-08-09) ------------------- Fix ~~~ - Fix a migration issue when multi-objective problems are involved (`#334 `__). - Various docstring fixes (`#334 `__). 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 CMake ``Unix 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 :cpp:class:`~pagmo::population` API (`#250 `__). - **BREAKING**: :class:`pygmo.problem` and :class:`pygmo.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 :cpp:class:`~pagmo::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 :mod:`pickle` module and `dill `__ (`#229 `__). - The Python multiprocessing island :class:`~pygmo.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 :class:`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 :class:`~pygmo.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 ~~~ - Implement the UDI extraction functionality for :cpp:class:`~pagmo::island` (`#207 `__). - Implement the :cpp:class:`~pagmo::fork_island` UDI (`#205 `__). - pip pygmo package for Python 3.7 (Linux) (`#196 `__). - Implement the :class:`~pygmo.decorator_problem` Python meta-problem (`#195 `__). - Various documentation additions (`#194 `__). Changes ~~~~~~~ - The build system now respects the ``CMAKE_CXX_STANDARD`` CMake setting (`#207 `__). - Ensure that, in :cpp:class:`~pagmo::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 ~~~ - Fix a missing ``inline`` specifier (`#206 `__). - Fix a bunch of missing includes in ``pagmo.hpp`` (`#202 `__). - Fixes for compiler warnings in GCC 8 (`#197 `__). - Various documentation, build system and CI fixes and enhancements (`#195 `__, `#196 `__, `#204 `__, `#205 `__, `#207 `__). 2.8 (2018-07-12) ---------------- New ~~~ - Implement the CEC2014 problem suite (`#188 `__, `#189 `__). - It is now possible to explicitly shut down the process pool of :class:`~pygmo.mp_island` (`#187 `__). - 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 `__). 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 ~~~ - Fix a compilation failure involving the IHS algorithm (`#192 `__). - Fix a bug in the Python exposition of the DE algorithm (`#183 `__). - Various documentation and CI fixes and improvements (`#183 `__, `#185 `__, `#190 `__, `#191 `__). 2.7 (2018-04-13) ---------------- New ~~~ - Implement the particle swarm optimization generational (GPSO) algorithm (`#161 `__). - Implement the exponential natural evolution strategies (xNES) algorithm (`#142 `__). - Implement the improved harmony search (IHS) algorithm (`#141 `__). Changes ~~~~~~~ - Update pygmo's dependencies in the manylinux builds to the latest versions (`#144 `__). 2.6 (2017-11-18) ---------------- Fix ~~~ - Fix a bug in NSGA2 when the bounds of the problem contain negative values (`#139 `__). - Various documentation fixes and improvements (`#139 `__). 2.5 (2017-11-12) ---------------- Fix ~~~ - Fix meta-problems not forwarding the integer dimension (`#134 `__). - Various continuous integration fixes (`#134 `__, `#136 `__). - Various build fixes for recent GCC versions (`#129 `__). - Various documentation fixes and improvements (`#121 `__). 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 :cpp:class:`pagmo::sga` and :cpp:class:`pagmo::nsga2`, it must instead be specified in the definition of the UDP via the optional ``get_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 ~~~ - Various documentation fixes and improvements (`#103 `__, `#104 `__, `#107 `__). 2.2 (2017-05-12) ---------------- New ~~~ - New tutorials (Schwefel and constrained problems) `(#91) `__. - Add support for `Ipopt `__ `(#92) `__. - Implement the simple genetic algorithm (SGA) `(#93) `__. Changes ~~~~~~~ - Rename, fix and improve the implementation of various archipelago-related methods `(#94) `__. - Remove the use of atomic counters in the problem `(#79) `__. Fix ~~~ - Various documentation fixes/improvements, headers sanitization, etc.