Skip to content

v9.1.0

Compare
Choose a tag to compare
@svigerske svigerske released this 21 Jun 10:30
· 937 commits to master since this release

Features

  • added constraint handler that checks and enforces bounds on original variables which have been fixed or aggregated in the transformed problem
  • allow for implicit integer variables in xor constraints
  • implemented symmetry detection callbacks for pseudoboolean constraints
  • added option to consider enforcement of nonlinear constraints (including spatial branching) before integrality has been enforced

Fixed bugs

  • make sure that, in dual proof analysis, upgraded constraints can report their number of variables
  • check knapsack constraints as linear constraints to avoid violations based on implicit integrality
  • make sure that symmetry detection callbacks report success
  • make arithmetics in cuts.c more robust to avoid invalid scg cuts due to numerical rounding sensitivity
  • allow to copy pseudoboolean constraints even if no AND constraints are present in order to avoid a warning
  • set value for variable that is introduced to reformulate nonlinear objective function when reading .nl files with initial solution
  • fixed that multi-aggregations from PaPILO were accepted without ensuring that their bounds hold

Examples and applications

  • TSP: removed gzstream.h/hpp and parse gzipped files differently

Interface changes

New callbacks

  • SCIP_DECL_NLHDLRENFO takes additional parameter branchcandonly to indicate whether only branching candidates should be registered,
    without looking for cuts or boundchanges

New API functions

  • new function SCIPgetExprActivityNonlinear() to get activity of nonlinear constraint
  • new function SCIPincludeConshdlrFixedvar() to include new constraint handler that checks bounds on fixed original variables

New parameters

  • limits/primal to terminate the solve as soon as the primal bound is at least as good as this value, same as limits/objectivestop (deprecated)
  • limits/dual to terminate the solve as soon as the dual bound is at least as good as this value
  • presolving/milp/internalmaxrounds to control the maximal rounds for each call of the milp presolver (PaPILO)
  • constraints/fixedvar/* to control the new constraint handler that checks bounds on fixed original variables
  • constraints/nonlinear/branching/mixfractional to specify minimal average pseudo cost count for discrete variables
    at which to start considering spatial branching before branching on fractional integer variables
    (default infinity means that integrality is always enforced before nonlinear constraints)
  • constraints/nonlinear/branching/fracweight to specify weight of fractionality of integer variables in spatial branching

New data structures

  • enum SCIP_Status has been extended by SCIP_STATUS_PRIMALLIMIT and SCIP_STATUS_DUALLIMIT to indicate termination at limits/primal and limits/dual respectively

Build system

  • changed the default symmetry computation package from sassy+bliss to sassy+nauty
  • bliss source is no longer included in the source tree, but can be linked as external library (https://github.com/ds4dm/Bliss)
  • cmake now automatically downloads and installs the latest release version of SoPlex from GitHub if it is not found directly

Miscellaneous

  • updated nauty to version 2.8.8