Skip to content

Releases: scipopt/scip

v9.2.0

06 Nov 17:08
Compare
Choose a tag to compare

Features

  • parse pseudoboolean constraint from CIP format (and add linear-"and"-reformulation)
  • added check for absolute and relative gap limits at end of synchronization in concurrent solving mode, in order to terminate earlier;
    note that if the concurrent solve is stopped due to a gap limit, the "winner" solver will have an interrupted solution status and
    its primal and dual bounds may not be the best possible ones (use SCIPgetConcurrentPrimalbound() and SCIPgetConcurrentDualbound() instead)

Performance improvements

  • imposed stricter limits on the size of disconnected components which may be solved separately during presolve
  • use individual slack variables also for constraints indicated by a common binary variable to use tighter formulation by default
  • when computing symmetries using Nauty, iteration limits are now available to terminate Nauty early
  • reoptimization now also stores propagations from propagators if reoptimization/saveconsprop is enabled;
    the parameter will be renamed to reoptimization/saveprop in a next major release

Fixed bugs

  • Benders' decomposition subproblems that are always infeasible are correctly handled and the complete problem is declared infeasible
  • skip linear constraint propagation if the residual activity bound cancels the side precision
  • correct bound tracking to make the evaluation of primal-dual-integrals work
  • skip aggregations on fixed variables in milp presolver to avoid errors for earlier versions of PaPILO
  • use indices of negation counterparts and accept fixings when ordering and-resultants of pseudoboolean constraints
  • update locks on model variables before removing pseudoboolean constraints in presolve
  • reformulate soft pseudoboolean constraints with linear constraints if the indicator decomposition is disabled
  • add workaround for recent HiGHS versions resetting the model status when changing the presolve option after a solve
  • avoid hashmap key error in removal of doubletons and singletons in dual presolve of setppc constraints by updating constraints and corresponding hashmaps after each multi-aggregation

Interface changes

New API functions

  • added SCIPtpiIsAvailable() to check whether a working task processing interface is available (TPI != none)
  • added SCIPtpiGetLibraryName() and SCIPtpiGetLibraryDesc()
  • SCIPdelCons() can now also be called in SCIP_STAGE_TRANSFORMED
  • added SCIPstrcasecmp() and SCIPstrncasecmp() for case-insensitive string comparison
  • added SCIPbendersSubproblemsAreInfeasible() to return if at least one subproblem has been identified as being
    infeasible prior to performing any variable fixing

New parameters

  • presolving/milp/abortfacexhaustive to control the abort threshold for exhaustive presolving in PAPILO
  • presolving/milp/abortfacmedium to control the abort threshold for medium presolving in PAPILO
  • presolving/milp/abortfacfast to control the abort threshold for fast presolving in PAPILO
  • constraints/components/maxcompweight to determine the maximum weight for a disconnected component that is solved during presolve
  • constraints/components/contfactor counts the contributing factor of a single continuous variables with respect to the weight limit specified by constraints/components/maxcompweight
  • constraints/indicator/usesameslackvar to decide whether the same slack variable should be used for indicators constraints with common binary variable
  • propagating/symmetry/nautymaxncells and propagating/symmetry/nautymaxnnodes to set iteration limits in Nauty (only available if build with SYM=nauty or SYM=snauty)

Changed parameters

  • presolving/milp/threads is now only available if PaPILO is built with TBB
  • changed default of numerics/recomputefac to 1e+6 to aim at relative epsilon precision

Build system

Cmake

  • attempted to fix detection of CPLEX library on macOS and Windows systems

Testing

  • added parameter FILTER for tests/Makefile to run only tests with a specific pattern (ctest with -R FILTER)

Miscellaneous

  • adjusted Gurobi interface for Gurobi 12
  • reordered events: BESTSOLFOUND/NODE_FEASIBLE are now processed before the nodes are cut off and before NODE_DELETE events are processed
  • removed #define of getcwd (in case of Windows builds) in scip/def.h
  • the #define of strcasecmp and strncasecmp (in case of Windows builds) in scip/def.h will be removed with SCIP 10;
    use SCIPstr(n)casecmp() (scip/pub_misc.h) instead

v9.1.1

14 Sep 05:12
Compare
Choose a tag to compare

Fixed bugs

  • fix bug in separator aggregation that caused incorrect terminations when for an integral objective the objective limit was set to a fractional value
  • fix bug in memory management of doublelex matrices where indices were set beyond array bounds
  • store relevance flags in consdataTightenCoefs() of cons_linear.c to avoid dropping variables unintentionally due to numerical changes
  • fix possible segmentation fault when resetting local and global bounds of original variables after abnormal termination
  • compare coefficient scales to detect parallelism to avoid integral relaxations in detectRedundantConstraints() of cons_linear.c
  • remove coefficient information from linear constraint hashes in order to compare keys with tolerances
  • fixed NULL pointer dereference in SCIPtpiGetNumThreads() of TinyCThread interface if called before SCIPtpiInit(); now returns 0 in this case
  • calling SCIPsolveConcurrent() when SCIP was compiled without a TPI now results in a plugin-not-found error
  • fixed LPI status functions of lpi_cpx if the barrier is called
  • check cuts for redundancy after scaling in cutTightenCoefs() and cutTightenCoefsQuad() of cuts.c
  • maintain definition of artificial integral variables in xor constraints to avoid invalidation of conflict constraints
  • free childless nodes only after the deactivation of the old focus path in treeSwitchPath() of tree.c
  • only normalize rows for column norm evaluations in shift-and-propagate heuristic to avoid unscaled violations
  • expression handler for absolute value computes now also a cut when one of the bounds is infinite as long as the sign of the argument is known
  • check for more data to be freed before modifying nonlinear constraints in SCIPaddExprNonlinear()
  • allow for terms with zero coefficients when checking sum in SCIPexprCheckQuadratic()
  • do not abort writing of constraints to lp/pip files (and forget to free buffer memory) when encountering unsupported nonlinear constraint
  • fixed that strings with names and descriptions of the LPI's were not null-terminated
  • fixed decision on when to enforce nonlinear constraints on relaxation solutions if integer variables are present
  • fixed reading of very long lines (>78000 characters) in FlatZinc reader
  • fixed write of strings with at least 1024 characters when compiling with MSVS 2015 (14.0) or later (still an issue with earlier MSVS, which will not be fixed)
  • keep epsilon coefficients in applyFixings() of cons_linear.c until multiples are merged to avoid loss of relevant contributions
  • fixed that some variable type changes were not accounted correctly in presolve of linear constraints
  • fix constraint sorting in setpp-orbitope upgrade in symmetry code
  • fixed that SCIPnodeGetConsProps() also counted bound changes from propagators
  • use original and-constraints of an untransformed pseudoboolean constraint when copying original problems to avert segmentation faults
  • sort and-constraints of a pseudoboolean constraint with respect to the resultant problem indices to avoid shuffled copies
  • treat pseudoboolean constraints as nonlinear constraints in OPB reader to prevent duplication mistakes

Examples and applications

  • Binpacking example: implement Farkas pricing for packings because branching can actually lead to infeasible restricted master LPs

Testing

  • allow unknown parameters to let tests pass if only optional dependencies are missing

Build system

Cmake

  • fixed compilation and linking with HiGHS; to use HiGHS, cmake now requires to specify the directory containing the highs-config.cmake file via -DHIGHS_DIR
  • extended identification of Ipopt library on Windows to also look for ipopt.dll.lib, as this is used since Ipopt 3.13.0 (2019)

Known Issues

  • recent changes in HiGHS can lead to errors when using HiGHS as LP solver under SCIP (#102)

v9.1.0

21 Jun 10:30
Compare
Choose a tag to compare

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

v9.0.1

14 May 08:59
Compare
Choose a tag to compare
Merge branch 'onboarding-lara' into 'v90-bugfix'

Onboarding lara

See merge request integer/scip!3388

v9.0.0

27 Feb 11:08
Compare
Choose a tag to compare
Merge branch 'ensure-varlocks-from-symmetry-conss' into 'v90-bugfix'

check symmetry constraints

See merge request integer/scip!3314

v8.1.0

27 Feb 11:05
Compare
Choose a tag to compare
Merge branch 'symmetry-msvc-warnings' into 'v80-bugfix'

reduce MSVC warnings on symmetry code

See merge request integer/scip!3246

v8.0.4

12 Oct 14:15
Compare
Choose a tag to compare

This includes precompiled packages for different operating systems of the SCIP Optimization Suite that includes SCIP 8.0.4.
See here for more information.

v8.0.3

02 Jul 09:37
Compare
Choose a tag to compare

This includes precompiled packages for different operating systems of the SCIP Optimization Suite that includes SCIP 8.0.3.
See here for more information.