Releases: scipopt/scip
Releases Β· scipopt/scip
v9.1.1
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
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