Releases: N-Wouda/ALNS
Version 2.0.1
Maintenance release.
- Add RCPSP example notebook.
- Switch to Github Actions (from Travis, which we no longer use).
Version 2.0.0
Features
- Weight schemes, which control how
alns.ALNS
selects operators. Two schemes commonly used in the literature (convex updating and segmented weights) have been implemented, asalns.weight_schemes.SimpleWeights
andalns.weight_schemes.SegmentedWeights
, respectively (issue #29). - An
autofit()
function foralns.criteria.SimulatedAnnealing
(issue #35). - The
alns
package is considerably better typed now, and passesmypy
static analysis.
The weighting schemes and acceptance criteria have been given an example notebook, showcasing their use.
API changes
The following list details all breaking API changes. The example notebooks in the repository have been updated to the new behaviour, and can be used as a reference for how to adapt your own algorithm.
alns.ALNS.iterate()
now takes aweight_scheme
argument, rather than various weight-related parameters it previously accepted.alns.ALNS.iterate()
no longer provides the option not to collect statistics. Statistics are now always collected.- Any criterion implementing
alns.criteria.AcceptanceCriterion
should now implement__call__
, notaccept()
. The function signature is unchanged. alns.Result.plot_operator_counts()
now takes afig
argument, rather thanfigure
.- Removed
alns.tools.exceptions.NotCollectedError
, since statistics are now always collected. - Removed
alns.tools.warnings.OverwriteWarning
. Operators are now silently overwritten when a new operator with the same name as an existing one is passed into the ALNS instance.
Drop Py3.6
- Use pyproject.toml
- Drop Py3.6 (EOL December 2021)
- Drop Codacy
Bugfix
Bugfix
Support for Python 3.9
- Support Py3.9
- Clean-up and simplify callback implementation
Unofficial support for numpy's new generators
This is intended as a quick fix to support generators in the SimulatedAnnealing class. Eventually, of course, they are to replace the deprecated RandomState class.
Improve ALNS solution evaluation order
This is more in line with the reference implementation given in Ropke and Pisinger (2019), and has the added benefit that it guarantees accept() is called for each iteration. That's nice if you want to estimate e.g. the step parameter for simulated annealing based on the number of iterations.
Plot global best in objective plots
Plot objective legend (#23) * Objective plot legend
Remove support for Python 3.4
Going forward, the range of supported Python versions is 3.5 and up. Older versions might work, but there is no guarantee.