Skip to content

v0.0.2

Choose a tag to compare

@HansBug HansBug released this 15 Sep 00:40
· 16 commits to main since this release

Upstream moved to PackingSolver 3f4faae1

This release only moves the vendored PackingSolver from a7e53303 to 3f4faae1; the Python API is unchanged.

  • boxstacks no longer returns an empty solution under a time limit. Upstream fontanf/packingsolver#571 (fixes #570) replaced the box tree search that computed the bound before the primal algorithms with closed-form volume bounds, a one-dimensional relaxation and dual feasible functions. Before, on knapsack, bin packing and variable-sized bin packing instances with several item types and more items than fit, that search consumed the whole time_limit and boxstacks.solve came back with no placements.
  • Instance reduction in box and boxstacks (upstream 24decc4c): negative-profit item types are trimmed under knapsack and identical item types are merged; both happen inside optimize() and results are mapped back to the original item types.
  • Multi-bin solutions no longer read past unsized weight vectors. Upstream fontanf/packingsolver#576 (fixes #575): with instance reduction on, every bin packing / variable-sized bin packing solve using two or more bins rebuilt its solution through a path that indexed the still-empty per-group weight vectors of later bins, an access violation with MSVC. This is why 0.0.2 was not published from 24decc4c: its Windows test suite crashed on exactly that case.
  • test/test_upstream_cases.py replays the three upstream reproducer instances of #570 with the same 3 s limit, and the postal-carton instance of #575 without one.

Wheels: CPython 3.7 to 3.14 on Linux x86_64 / aarch64, Windows AMD64 / ARM64, macOS arm64 / x86_64, built with PACKINGSOLVER_USE_HIGHS=ON, as before.