Skip to content

v2.0.0

Latest
Compare
Choose a tag to compare
@alexhoen alexhoen released this 28 Aug 09:58
· 16 commits to main since this release

Features

  • enable SCIP interface to restrict limits automatically with respect to a variability margin defined by parameter scip.limitspace
  • read and write files of problems and solutions in arbitrary arithmetics if the solver library does not provide the functionality
  • add objective limit option to the SCIP interface
  • experimentally support exact-SCIP with VIPR as underlying certified solver
  • support SoPlex as underlying solver

Performance improvements

  • restrict solver limit settings automatically in order to accelerate the process by default
  • adjust number of batches every round automatically in order to maintain expenditure by default

Interface changes

SolverRetcode:

  • add code COMPLETIONFAIL to signal a verification preparation error
  • add code CERTIFICATIONFAIL to signal a verification check error

SolverInterface:

  • templatize arithmetic type to allow instance precision to be independent from solver precision
  • add solution information to signature and return of readInstance() and writeInstance() to enable parsing and providing the reference solution
  • move out Retcode and rename to SolverRetcode in order to simplify handling return codes
  • make settings argument of doSetup() variable to restrict limit settings
  • add method getSolvingEffort() to adapt batch number

New parameters

  • expenditure = -1 : calculate the number of batches by ceiled division of the solving effort defined in the solver interface (-1: use original, 0: keep batches)
  • default value nbatches = 2 in order to try bisection initially

Fixed bugs

  • replace parameter type std::int64_t by long long to avert integral inconsistencies
  • write setting files for automatically handled limits instead of for detailed verbosity level in order to ensure reproducibility of limit triggered issues
  • use stable sum implementation for activity evaluations consistently
  • only cancel scip pointer when ending up in an internal stage in order to avoid freeing aborts
  • avoid partial setups in release mode if solver interface functions fail
  • resolve negated variables to original variables before building the matrix

Build system

  • backdate fmt from 8 to 7 to conform c++ standard 14
  • add compile option -ffp-contract=off or /fp:precise to enhance reproducibility across different systems
  • provide symlink to scip library in bugger build directory for a reliable unique link at runtime
  • introduce cmake parameter BUGGER_ARITHMETIC to select reduction arithmetic throughout templated bugger modifiers among float, double, longdouble, quad, and rational