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)