You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Removes the deprecated standalone solvers mps_solver and opb_solver. (Users should migrate to the unified printemps executable or use the new Python bindings).
New features and improvements
Python Bindings (New)
Introduces official Python bindings using pybind11 under python/, enabling users to import and run PRINTEMPS directly from Python. (by @msakai)
Bundles Printemps headers in the source distribution (sdist) for easier integration and offline installation. (by @msakai)
Algorithms
Improves the restart strategy for Tabu Search for diversification.
Implements a pullback mechanism to recover local penalty coefficients for escaping stagnation.
Relaxes the constraint types used in the acceptance decision of Chain moves to find better solutions.
Removes the automatic pruner for Tabu Search.
Implements a partial feasible solution enumerator to fix variables and generate efficient moves, and extract dependent binary variables.
Improves the computational efficiency of extracting dependent binary variables by Union-Find with parity support.
Introduces a new constraint type 'All Or Nothing' (defined as $\sum_{i=1}^n x_i = n y$ for binary variables $x_i$ and $y$, which forces the variables $x_i$ to be either all 1s or all 0s).
Implements dependent variable extraction for the 'Trinomial Exclusive NOR' and 'All Or Nothing' constraint types.
Updates internal distance calculations to use the L1 norm (instead of the L0 norm) to measure similarities between solutions.
Changes the default values of the following options:
neighborhood.is_enabled_precedence_move: false to true
neighborhood.is_enabled_variable_bound_move: false to true
neighborhood.is_enabled_trinomial_exclusive_nor_move: false to true
neighborhood.is_enabled_soft_selection_move: false to true
preprocess.is_enabled_extract_dependent_exclusive_nor: false to true
preprocess.is_enabled_extract_dependent_balanced_integers: false to true
Removes the following options:
tabu_search.is_enabled_automatic_break
Scripts
No changes.
Standalone Solvers & Input/Output
Adds a WCNF parser and the printemps-maxsat solver for the MaxSAT Evaluation 2026 anytime track, extending standalone solver support for WCNF input files. (by @msakai)
Adds the -i option for specifying an initial solution and the -f option for fixing variables in pb_competition_solver. (by @msakai)
Allows standalone solvers to accept input files with the .opb extension directly. (by @msakai)
Supports larger coefficient values using int64_t in the OPB parser. (by @msakai)
Updates the MPS parser to accept ROWS section lines with three or more tokens, improving compatibility with instances such as ivu59 from MIPLIB2017.
Build
Introduces a root-level Makefile to simplify C++ compilation and test execution (e.g., supporting make, make run-test, or make CONFIG=Debug).
Bug fixes
Fixes a segmentation fault (SEGV) that occurred when importing OPB files containing negated variables. (by @msakai)
Fixes a coefficient magnitude issue in pb_competition_solver (#245) (by @msakai).
Fixes a bug where incorrect optimization signs were applied based on the minimization flag in certain model configurations.
Resolves MSVC link errors by using Threads::Threads for testing. (by @msakai)
Guards bound-tightening casts against double overflow. (by @msakai)