Scippy

SCIP

Solving Constraint Integer Programs

CHANGELOG
Go to the documentation of this file.
1 /**@page RN90 Release notes for SCIP 9
2 
3 @section RN900 SCIP 9.0.0
4 *************************
5 
6 Features
7 --------
8 
9 - added simplification of abs(x)^n to x^n when n is even (simplify rule POW12)
10 - in expression simplification, added possibility to expand power of sum with exponents larger than 2 (simplify rule POW7)
11 - in expression simplification, added possibility to expand products with sums as factor when there are more than two factors (simplify rule SP12b)
12 - in expression simplification, added possibility to allow expanding power of products with fractional exponent (simplify rule POW5a)
13 - can now build with Lapack (used for solving nonlinear problems) explicitly; if IPOPT is used, then Lapack is accessed through it;
14  an interface to Lapack is available in lapack_calls.h
15 - added support for logical constraints in binary variables and basic logical operators (and, or, not, equal) to AMPL .nl reader
16 - indicator constraints now use the same slack variable for the linear constraints if binary variables are used multiple times
17  for indicator constraints
18 - new diving heuristic indicatordiving that focuses on indicator variables which control semicontinuous variables
19 - updated statistics on NLP relaxation; information on convexity of NLP has been added
20 - added new bandit method (EXP.3-IX) that is the new default of the ALNS heuristic
21 - added dialog to display recognized permutation symmetries ("display symmetry")
22 - The symmetry detection code has been completely restructured. Instead of completely encoding symmetry information in
23  prop_symmetry.c, there is a new callback for constraint handlers, which returns symmetry relevant information by
24  encoding a constraint as a node and edge colored graph. This way, also custom constraint handlers can provide
25  symmetry information.
26 - added special presolving step for logicor and set covering/packing for constraints with two variables and one independent variable
27 - increased the depth field of the tree structure from 16 to 30 bits and the max depth of the search tree from 65534 to 1073741822
28 - added new cut selector plugin called cutsel_ensemble. Performs a superset of hybrid cutsel. Implements new filtering methods and scoring options.
29 - added new branching rule based on Gomory mixed-integer cuts
30 - added new branching score to the reliability pseudo-cost branching rule
31 - added new cut selector plugin called cutsel_dynamic. Performs a superset of hybrid cutsel. Implements new filtering methods and scoring options.
32 - added monoidal strengthening to intersection cut generation of nlhdlr_quadratic
33 - extended heuristic dps to run after processing the node and to use strict limits for the reoptimization step
34 - extended obbt propagator to handle variables of the linear constraints corresponding to indicator constraints
35 - added new heuristic heur_scheduler that models the selection of LNS and diving heuristics as a multi-armed bandit problem
36 - added nonlinear handler for signomial expressions: adds cuts based on a difference of convex functions representation
37 - Delayed separators are now called if no other cuts have been found. Previously, such separators were only called near stalling or when the separation rounds limit was reached.
38 - added a new separator sepa_lagromory to generate Lagromory cuts in a relax-and-cut framework, i.e., GMI cuts generated
39  at different bases that are explored in the process of solving the Lagrangian dual problem at a node. This separator
40  is OFF by default.
41 - when parsing nonlinear constraints from CIP files, the * after the number in a term is now optional if followed by a variable,
42  i.e., instead of 3*<x>*<y>, now also 3<x>*<y> can be read, but 3<x><y> is not supported;
43  this allows to read some CIP files that were written with SCIP < 8
44 - when running bliss, we now limit the number of actually created generators and not the ones considered by bliss
45 
46 Performance improvements
47 ------------------------
48 
49 - Variable conflict-based addition of Schreier-Sims cuts for symmetry handling in prop_symmetry.c does no longer use
50  an expensive explicit conflict graph construction.
51 - Only run propagation of indicator constraints if relevant variables have changed.
52 - Propagation of indicator constraints propagates maximal activity of linear constraint to upper bound of slack variable.
53 - Added initialization of LP relaxation for SOC constraints.
54 - Avoided some numerical issues when separating SOC constraints.
55 - If differentation of convex expression fails in convex nlhdlr, then a perturbed point is tried.
56 - Use sassy/bliss as default symmetry computation package.
57 - No longer linearize indicator constraints in undercover heuristic by default.
58 - Deactivate pre-root heuristic zeroobj in undercover heuristic.
59 - Added new branching score tiebreaker for reliability pseudo-cost branching rule
60 - Try nearest bound if zero solution value is out of bounds in heuristic trivial.
61 
62 Examples and applications
63 -------------------------
64 
65 Interface changes
66 -----------------
67 
68 ### New and changed callbacks
69 
70 - Added solution linearization callback for nonlinear handlers.
71  The nonlinear handler may use this callback to add tight cuts that use the given solution as reference point to the cutpool.
72  The callback is called if option constraints/nonlinear/linearizeheursol is enabled.
73 - The callback for copying problem data SCIP_DECL_PROBCOPY() now has a parameter "original" indicating whether the original
74  or transformed problem should be copied. Similarly, SCIPprobCopy() in prob.h/c has such a parameter.
75 - Added CONSGETPERMSYMGRAPH and CONSGETSIGNEDPERMSYMGRAPH callback for constraint handlers, which provides symmetry information about constraints to SCIP.
76 
77 ### Deleted and changed API methods
78 
79 - SCIPtpiInitLock(), SCIPtpiDestroyLock(), SCIPtpiInitCondition(), SCIPtpiDestroyCondition() now take a double
80  pointer to SCIP_LOCK/SCIP_CONDITION, respectively.
81 - Renamed SCIPtpiSumbitJob() to SCIPtpiSubmitJob().
82 - SCIPcreateConsIndicatorLinCons(), SCIPcreateConsIndicatorGenericLinCons() do not allow binvar to be NULL anymore
83 - Replaced SCIPnlrowSetCurvature() by SCIPsetNlRowCurvature().
84 - SCIPsnprintf() now returns the required string length in case reallocation is necessary.
85 - SCIPcomputeCoverUndercover() receives three more arguments which nonlinearities to cover
86 - removed definition of SQRT
87 - SCIPincludeObjConshdlr(), SCIPincludeConshdlr(), SCIPconshdlrCreate() receive two more arguments for the
88  conshdlr callbacks CONSGETPERMSYMGRAPH and CONSGETSIGNEDPERMSYMGRAPH
89 - removed SYM_VARTYPE, SYM_OPTYPE, SYM_CONSTTYPE, SYM_RHSTYPE, SYM_MATRIXDATA
90 - new parameter issigned for SCIPcomputeOrbitsSym()
91 - new parameter symtype for SCIPcomputeComponentsSym()
92 - new parameter symtype and permvardomaincenter for SCIPlexicographicReductionAddPermutation()
93 - replaced parameters matrixdata and exprdata of SYMcomputeSymmetryGenerators() by graph
94 
95 ### New API functions
96 
97 - new functions for interfacing with Lapack: SCIPlapackIsAvailable(), SCIPlapackIsAvailable(), SCIPlapackComputeEigenvalues(), and SCIPlapackSolveLinearEquations
98  These functions should be used instead of SCIPisIpoptAvailableIpopt(), SCIPcallLapackDsyevIpopt(), and
99  SCIPsolveLinearEquationsIpopt() in the context of computing eigenvalues or solving linear equations.
100  If IPOPT is available, the calls will be passed on to Ipopt's interface to Lapack.
101 - SCIPmultiplyBySumExprSum(), SCIPpowerExprSum()
102 - SCIPsetParam()
103 - SCIPgetPrimalDualIntegral() returns the primal dual integral stored in the statistics
104 - new functions SCIPcreateConsIndicatorLinConsPure() and SCIPcreateConsIndicatorGenericLinConsPure() that
105  create indicator constraints from a linear constraint without a slack variable
106 - SCIPgetNLPNlRowsStat() to retrieve counts on linear, convex, and nonconvex rows in NLP
107 - SCIPnlhdlrSetSollinearize(), SCIPnlhdlrHasSollinearize()
108 - SCIPbendersGetNLPParam()
109 - new API functions SCIPlexicographicReductionGetStatistics(), SCIPlexicographicReductionPrintStatistics(),
110  SCIPlexicographicReductionPropagate(), SCIPlexicographicReductionAddPermutation(), SCIPlexicographicReductionReset(),
111  SCIPlexicographicReductionFree(), SCIPincludeLexicographicReduction(), for lexicographic reduction.
112 - new API functions SCIPorbitopalReductionGetStatistics(), SCIPorbitopalReductionPrintStatistics(),
113  SCIPorbitopalReductionPropagate(), SCIPorbitopalReductionAddOrbitope(), SCIPorbitopalReductionReset(),
114  SCIPorbitopalReductionFree(), SCIPincludeOrbitopalReduction(), SCIPorbitopalReductionGetDefaultColumnOrdering(),
115  for orbitopal fixing.
116 - new API functions SCIPorbitalReductionGetStatistics(), SCIPorbitalReductionPrintStatistics(),
117  SCIPorbitalReductionPropagate(), SCIPorbitalReductionAddComponent(), SCIPorbitalReductionReset(),
118  SCIPorbitalReductionFree(), SCIPincludeOrbitalReduction(), for orbital fixing.
119 - new API functions SCIPgetShadowTreeEventHandlerExecutionTime(), SCIPshadowTreeGetShadowNodeFromNodeNumber(),
120  SCIPshadowTreeGetShadowNode(), SCIPgetShadowTree(), SCIPactivateShadowTree(), SCIPincludeEventHdlrShadowTree(),
121  for managing a copy of the branch-and-bound tree for symmetry handling purposes.
122 - SCIPdotWriteOpening(), SCIPdotWriteNode(), SCIPdotWriteArc(), SCIPdotWriteClosing()
123 - SCIPincludeCutselEnsemble(), SCIPselectCutsEnsemble() to include cutsel_ensemble or use the selection algorithm
124 - SCIPincludeBranchruleGomory() includes new gomory cut based branching rule
125 - SCIPgetVarAvgGMIScore(), SCIPincVarGMISumScore(), SCIPgetVarLastGMIScore(), SCIPsetVarLastGMIScore() set historical values used by SCIP's default branching rule
126 - SCIPincludeNlhdlrSignomial() includes the signomial nonlinear handler
127 - SCIPgetExprMonomialData() returns a monomial representation of a product expression
128 - SCIPestimateRoot() computes estimators for roots with exponent in [0,1]
129 - SCIPincludeCutselDynamic(), SCIPselectCutsDynamic() to include cutsel_dynamic or use the selection algorithm
130 - SCIPincludeSepaLagromory() to include the new Lagromory separator
131 - SCIPconsCompCheck() to compare two constraints based on their check priority
132 - SCIPgetConsPermsymGraph() and SCIPgetConsSignedPermsymGraph() to access the (signed) permutation symmetry detection graph of a constraint
133 - SCIPsetConshdlrGetPermsymGraph() and SCIPsetConshdlrGetSignedPermsymGraph() to set the (signed) permutation symmetry detection graph of a constraint
134 - SCIPconshdlrSupportsPermsymDetection() and SCIPconshdlrSupportsSignedPermsymDetection() to access whether a conshdlr supports detection of (signed) permutation symmetries
135 - new API functions for creating and manipulating a symmetry detection graph: SCIPcreateSymgraph(), SCIPfreeSymgraph(), SCIPcopySymgraph(), SCIPextendPermsymDetectionGraphLinear(),
136  SCIPaddSymgraphVarAggregation(), SCIPaddSymgraphOpnode(), SCIPaddSymgraphValnode(), SCIPaddSymgraphConsnode(), SCIPgetSymgraphVarnodeidx(), SCIPgetSymgraphNegatedVarnodeidx(),
137  SCIPupdateSymgraphLhs(), SCIPupdateSymgraphRhs(), SCIPfixSymgraphVarnode(), SCIPaddSymgraphEdge(), SCIPcomputeSymgraphColors(), SCIPgetSymgraphSymtype(), SCIPgetSymgraphVars(),
138  SCIPgetSymgraphNVars(), SCIPgetSymgraphNConsnodes(), SCIPgetSymgraphNNodes(), SCIPgetSymgraphNEdges(), SCIPgetSymgraphEdgeFirst(), SCIPgetSymgraphEdgeSecond(),
139  SCIPgetSymgraphVarnodeColor(), SCIPgetSymgraphNodeType(), SCIPgetSymgraphNodeColor(), SCIPisSymgraphEdgeColored(), SCIPgetSymgraphEdgeColor(), SCIPgetSymgraphNVarcolors(),
140  SCIPhasGraphUniqueEdgetype(), SCIPallocateSymgraphConsnodeperm(), SCIPcreateSymgraphConsnodeperm(), SCIPgetSymgraphConsnodeperm(), SCIPfreeSymgraphConsnodeperm(),
141  SCIPgetSymActiveVariables(), SCIPfreeSymDataExpr(), SCIPgetSymExprdataNConstants(), SCIPgetSymExprdataConstants(), SCIPgetCoefSymData(),
142  SCIPcreateSymOpNodeType(), SCIPgetSymOpNodeType()
143 - SCIPexprhdlrSetGetSymdata(), SCIPexprhdlrHasGetSymData(), SCIPgetSymDataExpr(), SCIPcallExprGetSymData() to access symmetry data of expressions
144 - SYMcheckGraphsAreIdentical() to check whether two symmetry detection graphs are identical
145 - new functions SYMbuildSassyGraph(), SYMbuildSassyGraphCheck()
146 - new type SYM_GRAPH
147 - new definitions SCIP_DECL_CONSGETPERMSYMGRAPH, SCIP_DECL_EXPRGETSYMDATA
148 - new member SYM_NODETYPE_CONS in SYM_NODETYPE enum
149 - new members SYM_CONSOPTYPE_SUM, SYM_CONSOPTYPE_SLACK, SYM_CONSOPTYPE_COEF, SYM_CONSOPTYPE_RHS, SYM_CONSOPTYPE_LAST in SYM_CONSOPTYPE enum
150 - new defintion SCIP_DECL_EXPRGETSYMDATA
151 - new function SCIPdetectSingleOrDoubleLexMatrices()
152 
153 ### Command line interface
154 
155 - Added optional parameter -i when calling SCIP in AMPL-mode (-AMPL parameter).
156  If -i is specified, a SCIP shell is started where normally SCIPsolve() would be called.
157 
158 ### Interfaces to external software
159 
160 - added interface to nauty/traces for symmetry computation
161 - added interface to sassy, a preprocessor for symmetry computation
162 - The directory src/sassy contains the source code of sassy.
163 - Added interface to Lapack (used for solving nonlinear problems).
164 - The AMPL interface now supports parameters specified in AMPL command scripts via option scip_options.
165  The value of scip_options is expected to be a sequence of parameter names and values, separated by a space, e.g.,
166  `option scip_options 'limits/time 10 display/verblevel 1';`.
167  String values should not be quoted and spaces in string values are not supported.
168 - sassy can be used now as preprocessor for nauty/traces
169 - The solution status codes written to AMPL solution files now match those from https://mp.ampl.com/details.html#_CPPv4N2mp3sol6StatusE.
170 
171 ### Changed parameters
172 
173 - change default value of parameter separating/filtercutpoolrel to FALSE
174 - Shrunk range of parameter "propagating/symmetry/sstleaderrule" from [0,3] to [0,2], removed "MAXCONFLICTS"-option.
175 - Removed reading/gmsreader/freeints. A default upper bound of +inf is now assumed for integer variables in GAMS (which is the case since GAMS 23.1).
176 - Disabled "propagating/symmetry/symfixnonbinaryvars" since it is not used in the new symmetry code.
177 - Replaced "propagating/symmetry/onlybinarysymmetry" with "propagating/symmetry/enforcecomputesymmetry" and set to FALSE by default.
178 - Disabled "propagating/symmetry/performpresolving" since running orbital reduction during presolving is not effective.
179 - Repurposed "propagating/symmetry/usedynamicprop" since it now also applies to lexicographic reduction.
180 - Changed default value of parameter "propagating/symmetry/addsymresacks" from FALSE to TRUE.
181 
182 ### New parameters
183 
184 - separating/maxcutsgenfactor and separating/maxcutsrootgenfactor as factors (w.r.t. separating/maxcuts and
185  separating/maxcutsroot) for limits on the number of cuts generated (which used to be constants '2')
186 - expr/pow/expandmaxexponent to specify limit on exponent when to expand power of sum
187 - expr/pow/distribfracexponent to enable expanding power of products with fractional exponents
188 - expr/product/expandalways to enable expanding any product with sums as factor (that is, also when more than two factors)
189 - nlhdlr/convex/maxperturb to specify maximal perturbation of non-differential reference points
190 - benders/default/nlpiterlimit to adjust iteration limit for NLP solver for Benders' decomposition NLP subproblems
191 - limits/objectivestop to interrupt the solve as soon as a primal solution is found
192  that is at least as good as the given value
193 - heuristics/undercover/{coverand,coverind,covernl} to control which nonlinearities to consider (by default only "and" and nonlinear constraints)
194 - cutselection/ensemble/∗ all parameters for new ensemble cut selector
195 - cutselection/dynamic/∗ all parameters for new dynamic cut selector
196 - branching/relpscost/gmiavgeffweight specifies the weight in the relpscost branching score of the normalized efficacy of all generated GMI cuts (for a variable)
197  branching/relpscost/gmilasteffweight specifies the weight in the elpscost branching score of the normalized efficacy of the last generated GMI cut (for a variable)
198 - nlhdlr/quadratic/usemonoidal to enable monoidal strengthening when separating quadratics with intersection cuts
199 - nlhdlr/quadratic/trackmore to collect more statistics for monoidal strengthening when separating quadratics with intersection cuts
200 - nlhdlr/quadratic/useminrep to use the minimal representation to compute cut coefficients when separating quadratics with intersection cuts
201 - nlhdlr/quadratic/sparsifycuts to enable sparsification of intersection cuts for quadratics
202 - heuristics/dps/reoptlimits to set strict limits for the reoptimization step in dps
203 - heuristics/dps/timing to run dps after processing the node
204 - heuristics/scheduler/∗ all parameters for new scheduler heuristic
205 - nlhdlr/signomial/enabled, nlhdlr/signomial/maxnundervars, nlhdlr/signomial/mincutscale: parameters for the signomial nonlinear handler
206 - separating/lagromory/freq to denote the frequency for calling Lagromory separator
207 - separating/lagromory/away to denote the minimal integrality violation of a basis variable to try separation
208 - separating/lagromory/dynamiccuts to denote whether the generated cuts be removed from LP if they are no longer tight
209 - separating/lagromory/maxroundsroot to denote the maximal number of separation rounds in the root node
210 - separating/lagromory/maxrounds to denote the maximal number of separation rounds in a non-root node
211 - separating/lagromory/nmaxcutsperlproot to denote, in the root node, the maximal number of Lagromory cuts that can be
212  separated per explored basis of the Lagrangian dual
213 - separating/lagromory/nmaxcutsperlp to denote, in a non-root node, the maximal number of Lagromory cuts that can be
214  separated per explored basis of the Lagrangian dual
215 - separating/lagromory/perroundnmaxlpiters to denote the maximal number of separating LP iterations that are allowed per
216  separation round
217 - separating/lagromory/dualdegeneracyratethreshold to denote the minimum dual degeneracy rate for the separator execution
218 - separating/lagromory/varconsratiothreshold to denote the minimum variable-constraint ratio on the optimal face for the
219  separator execution
220 - many other advanced parameters for the Lagromory separator, which are also mentioned under separating/lagromory/∗
221 
222 ### Data structures
223 
224 - new data structure SYM_GRAPH to encode symmetry information from a constraint
225 - new data structure SYM_EXPRDATA to encode symmetry information from expressions
226 - replaced enum SYM_SYMTYPE by a complete new one; removed SYM_RHSSENSE, added SYM_NODETYPE and SYM_CONSOPTYPE
227 
228 Deleted files
229 -------------
230 
231 - deleted the now unused files: tpi_none.h, tpi_openmp.h, tpi_tnycthrd.h, type_tpi_none.h, type_tpi_openmp.h, type_tpi_tnycthrd.h
232 
233 Unit tests
234 ----------
235 - new unittests for nlhdlr_quadratic that test monoidal strengthening and the use of the minimal representation to compute cut coefficients
236 - unittests for nlhdlr_signomial
237 
238 Testing
239 -------
240 - changed `set lim obj` to `set lim objective` in ctest since `obj` is no longer unambiguous
241 
242 - flush changes at the end of SCIPlpiSetBase() in lpi_grb.c to apply the newly set basis correctly
243 
244 Build system
245 ------------
246 
247 ### Cmake
248 
249 - New flag -DLAPACK=on for linking with Lapack (must be available in the system)
250 - added flag option "SYM=sbliss" for using sassy/bliss as a graph automorphism package
251 - use SYM=sbliss by default, since sassy and bliss are now shipped with SCIP.
252 - added flag option "SYM=snauty" for using sassy/nauty as a graph automorphism package
253 
254 ### Makefile
255 
256 - added flag option "nauty" for SYM variable to specify which graph automorphism package should be used
257 - added flag option "sbliss" (sassy/bliss) for SYM variable to specify which graph automorphism package should be used
258 - added flag option "snauty" (sassy/nauty) for SYM variable to specify which graph automorphism package should be used
259 - use SYM=sbliss by default, since sassy and bliss are now shipped with SCIP
260 - New flag LAPACK for linking with Lapack (must be available in the system)
261 - A file scip/config.h is created in the build directory ($(OBJDIR)/include) now.
262  Defining NO_CONFIG_HEADER is no longer necessary and has no effect anymore.
263 
264 Fixed bugs
265 ----------
266 
267 - Number of runs in which separation is enabled will now be correct as per "separating/maxruns" parameter. Earlier,
268  separation was enabled for "maxruns + 1" number of runs, i.e., separation was enabled even when "maxruns = 0" was set.
269 - add safeguard for number of selected cuts
270 - use double double precision for delta in activity updates of cons_linear.c
271 - sort constraints in checkSolOrig() to keep the logic of constraint handlers intact
272 - fixed make install when SHARED=no and make uninstall
273 - check absolute coefficients relative to extremal average to avoid invalid unifications in normalizeCons()
274 - enforce and check symmetry-based constraints to take their locks (in dual reductions) into account
275 
276 Miscellaneous
277 -------------
278 
279 - The TPI has been changed to become mostly independent from the actual parallel interface during compile time.
280  For this, the locks and conditions are now pointers to abstract structs.
281 - fixed that scip/def.h, the header for C preprocessor definition (#define's), included headers for some SCIP type and function definitions
282  (scip/type_retcode.h, scip/type_message.h, scip/pub_message.h)
283 
284 Known bugs
285 ----------
286 
287 @page RN80 Release notes for SCIP 8.1
288 
289 @section RN805 SCIP 8.1.0
290 *************************
291 
292 Fixed bugs
293 ----------
294 
295 - fixed that scaling of rows in Gurobi interface (SCIPlpiScaleRow()) changed infinite sides to large finite ones (1e20) when scale factor is negative
296 - check whether objective limit is truly reached in SCIPlpiIsStable()
297 - if an objective limit is set and Mosek claims that it is exceeded, check that this is indeed the case in SCIPlpiIsStable()
298 - the .mps file reader was extended to additionally accept .mps files with the objective sense section on one line
299 - ensure that delayed cutpool separation does not happen if enough cuts have been found already
300 - fixed that a Gurobi or Mosek interface (LPI) could not be freed from a thread different than the one it was created in, which lead to problems when, e.g., using the concurrent optimizer
301 - in cons_varbound if both variables are fixed, instead of propagating the constraint check the feasibility of the constraint since propagating can lead to unnecessary numerical troubles
302 - fixed memory leak in branching rule "distribution"
303 - fixed that undercover did not enforce that sufficiently many variables in an and-constraints were fixed to have it linearized in the generated sub-scip
304 - fixed two bugs in cons_varbound: avoid adding variable bounds if vbdcoef is infinite and unlock/lock variables if lhs/rhs/vbdcoef are changed
305 - globalize constraint changes before bound changes during the effective root shift in treeSwitchPath() to correctly update variable locks by avoiding global bounds with outstanding bound change events when deleting constraints
306 - fixed error when attempting to copy SCIP with activated pricers
307 - remove integrality check for implicit integral variables in cons_integral.c, updated the definition for variable type implicit integer to be more explicit that these variables can take fractional values, and updated FAQ entry
308 - updated and, or, and pseudoboolean constraint handlers to better handle fractional implicit integer variables in enforcement
309 - avoid invalid strong Chvatal-Gomory cuts by ceiling with tolerance in the calculation of parameter k and flooring slack coefficients with standard epsilon tolerance as well as quad precision
310 - add missing row links to columns in SCIPflushRowExtensions() required to maintain correct row norms
311 - restrict separator intobj to solutions for which there can be no better feasible integral objective values to avoid cutting them off
312 - delay removal of clique lists from SCIPvarRemoveCliquesImplicsVbs() into cliqueCleanup() to avoid segmentation faults by incomplete cleanups after variable conversions
313 - reject sub-solutions with invalid objectives in SCIPtranslateSubSols() due to contradicting infinite contributions
314 - correct column index in getMinMaxActivityResiduals() to make presolver dualinfer work
315 - copy quiet flag from main scip's message handler to the one of solverscip in concurrent optimization
316 - avoid bound tightening cycles towards huge redundancy bounds in fullDualPresolve() to avert fatal numerical trouble in representing vertices of linear relaxations with unbounded domains
317 - fix problem where debug solution did not work if branching constraints are present
318 - update index of dominating variable on coefficient deletion in dualPresolving() of constraint handler logicor
319 - pass on flags from a redundant to the implying varbound constraint in preprocessConstraintPairs() to avoid suboptimal fixings by model relaxations
320 - apply reductions of dualinfer only if a dual solution exists (primal is bounded)
321 - before presolving is finished check solutions before retransforming them including tiny values to keep check flags consistent
322 - disable heuristics before and during presolving in benders decomposition to avoid messing up the objective structure in the solution store by dropping auxiliary variables in the required retransformations
323 - correct local flag of singleton conflict constraints in tightenSingleVar() against invalid bound globalization
324 - respect unboundedness in the computation of activity bounds in conflict.c to avoid invalid huge bounds due to small coefficients on unbounded variables
325 - ensure positive sides of a linear constraint when recognizing a set partition in rangedRowSimplify() to account for redundancy issues
326 - relax numerical conditions for variable aggregations to avert invalid variable fixings
327 - fixed harmless read of uninitialized data when creating parameters
328 - fix call of SCIPnlpiOraclePrintProblem in nlpi_worhp
329 
330 Performance improvements
331 ------------------------
332 
333 - Use sassy/bliss as default symmetry computation package.
334 
335 Interface changes
336 -----------------
337 
338 ### Interfaces to external software
339 
340 - added interface to nauty/traces for symmetry computation
341 - added interface to sassy, a preprocessor for symmetry computation
342 - The directory src/sassy contains the source code of sassy.
343 
344 Build system
345 ------------
346 
347 ### Cmake
348 
349 - added flag option "SYM=sbliss" for using sassy/bliss as a graph automorphism package
350 
351 ### Makefile
352 
353 - added flag option "nauty" for SYM variable to specify which graph automorphism package should be used
354 - added flag option "sbliss" for SYM variable to specify which graph automorphism package should be used
355 - use SYM=sbliss by default, since sassy and bliss are now shipped with SCIP
356 
357 Miscellaneous
358 -------------
359 
360 - the parameter change callback is no longer called at the moment a parameter is created
361 
362 @page RN80 Release notes for SCIP 8.0
363 
364 @section RN804 SCIP 8.0.4
365 *************************
366 
367 Features
368 --------
369 
370 - use quad precision in cutsSubstituteMIR() for substituting slack variables into CMIR cuts
371 - use quad precision for activity computations in cons_linear.c
372 
373 ### Deleted and changed API methods
374 
375 - SCIPshrinkDisjunctiveVarSet() no longer attempts to cutoff the current node if it finds the
376  given disjunction to be infeasible; it is now in the responsibility of the caller to act accordingly
377 
378 ### New API functions
379 
380 - added SCIPskipSpace
381 - added XML parser routines from src/xml/xml.h
382 
383 ### Interfaces to external software
384 
385 - updated XPRESS interface to work with XPRESS 41 as well
386 - new interface to LP solver HiGHS (lpi_highs.cpp)
387 
388 ### Changed parameters
389 
390 - changed integer parameter "propagating/symmetry/recomputrestart" from range {0, 1, 2} to being fixed at value 0
391 
392 Unit tests
393 ----------
394 
395 - added new checks for objective, bounds and sides inside the scaling tests in lpi/change.c
396 
397 Fixed bugs
398 ----------
399 
400 - relax condition of assert in lpSolve to hold only if lp/checkstability is true
401 - OPB reader: dynamically increase the size of the line buffer for reading in getMaxAndConsDim()
402 - Enabled the solution limit checks in SCIPsolveIsStopped in solve.c when in SCIP_STAGE_PRESOLVING
403 - fix quad precision comparison for the calculation of knapsackcover constraints.
404 - force copying of symmetry constraints for concurrent solve
405 - increase the precision of double multiplications in quad precision environments
406 - corrected handling of different variable types in symmetry
407 - orbitope detection: refine computation of overlap structure and fixed bug in finding orbitope generators
408 - ensure that winner is always determined in concurrent mode
409 - when a row with invalid index range is added to the global cutpool, update the indices instead of failing with an assert
410 - update of watched literals in cons_xor.c and ensure that fixed variables are counted in propacateCons()
411 - avoid some numerical issue in check for redundant variables in linear constraints (introduced with version 8.0.2)
412 - more rows are treated as being integral in cutsSubstituteMIR() for CMIR cuts
413 - fixed several relaxations of the rhs of cuts to 0 in cuts.c
414 - avoid aggregation into a single linear constraint if they should not be upgraded (needed for indicator constraints)
415 - apply effective root changes before fork is repropagated during treeSwitchPath() in tree.c
416 - avoid invalid objective value for solutions generated from an unbounded LP relaxation in case of a nonlinear objective function
417 - disable recomputing symmetries after a restart (constraint removal is not permitted)
418 - avoid cutting off optimal solutions for small feasibility tolerances in conflict analysis
419 - initialize variable in presol_dualsparsify.c
420 - fix in presolving of variable bound constraints to use absolute instead of relative difference
421 - free variable histories in reoptimization mode
422 - handle whitespaces in interactive shell history consistently
423 - check and enforce equalities on which the objective is projected in cons_linear.c
424 - ensure row feasibilities of solution shiftings in heur_oneopt.c and heur_twoopt.c
425 - remove rounded row check blocking tolerable primal solutions in cons_varbound.c
426 - fixed that presolve of logicor-constraints may have attempted to cutoff a root of the not yet existing branch-and-bound tree
427 - only consider positive slack variables as active in benders.c
428 - in the feasibility check of and/or constraints, allow for fractional values in operands
429 - fixed linear outer-approximation for some composite absolute-value expressions
430 
431 Miscellaneous
432 -------------
433 
434 - Extended documentation of the parameter limits/solutions to point out that the limit is first checked in presolving
435 - Added more information about using SCIPcache- and SCIPflushRowExtensions() to documentation and comments
436 - Extended the `how to add' sections of the documentation by adding information on how to include default plugins into SCIP
437 
438 @section RN803 SCIP 8.0.3
439 *************************
440 
441 Examples and applications
442 -------------------------
443 
444 - Externalize STP and PolySCIP applications
445 
446 Interface changes
447 -----------------
448 
449 ### Command line interface
450 
451 - When running the AMPL interface, the .nl filename extension does not need to be omitted for the input file anymore.
452 
453 Build system
454 ------------
455 
456 ### Cmake
457 
458 - Forbid CMAKE_BUILD_TYPE nonstandard values
459 - Move -I/path/to/src/amplmp/include to front of compiler flags for include directories
460 
461 ### Makefile
462 
463 Fixed bugs
464 ----------
465 
466 - fixed an incorrect handling of xor constraints
467 - the feasibility checker for integrality constraints now uses checkintegrality even for implied integers
468 - skip integrality check in cons_integral for relaxation-only implicit-integer variables
469 - fixed an issue caused by aggregated variables not added to a hashmap in the xor constraint handler
470 - changed function solveRowEchelonGF2 in cons_xor.c to avoid errors if rank is 0
471 - fixed that the implication presolver tried to aggregate or tighten bounds of multiaggregated variables
472 - fixed a sign check in detection of linear constraints that are parallel to the objective
473 - fixed bug in Clp and lpi_clp with missing basis information when calling the barrier with crossover; needs new Clp version
474 - do not assume aggregation is successful in cons_setppc.c
475 
476 Miscellaneous
477 -------------
478 
479 - Changed license to Apache 2.0, see https://www.apache.org/licenses/LICENSE-2.0.
480 - When an LP could not be solved accurately, scaling is now turned off as a last fall-back method.
481 - Methods for using the debug solution mechanism SCIPdebugAddSolVal, SCIPdebugGetSol, SCIPdebugGetSolVal,
482  SCIPdebugSolIsValidInSubtree, SCIPdebugIsMainscip, SCIPdebugSolEnable, SCIPdebugSolDisable, SCIPdebugSolIsEnabled,
483  SCIPwithDebugSol are now exported
484 
485 Known bugs
486 ----------
487 
488 @section RN802 SCIP 8.0.2
489 *************************
490 
491 Interface changes
492 -----------------
493 
494 ### Deleted and changed API methods
495 
496 - added input parameter SCIP_Bool initiallp to SCIPcutselsSelect
497 - changed function type int to SCIP_Longint for SCIPcutpoolGetMaxNCuts
498 - replaced SCIPsepastoreGetNCutsFound with SCIPsepastoreGetNCutsAdded following the naming convention for the new statistics
499 - replaced SCIPsepaIncNAppliedCuts with SCIPsepaIncNCutsApplied
500 
501 ### New API functions
502 
503 - added SCIPsepastoreGetNCutsAdded, SCIPsepastoreGetNCutsAddedViaPool, SCIPsepastoreGetNCutsAddedDirect
504 - added SCIPsepaIncNCutsAdded, SCIPsepaDecNCutsAdded, SCIPsepaIncNCutsApplied, SCIPsepaGetNRootCalls, SCIPsepaGetNCutsAdded, SCIPsepaGetNCutsAddedViaPool, SCIPsepaGetNCutsAddedDirect, SCIPsepaGetNCutsAppliedViaPool, SCIPsepaGetNCutsAppliedDirect
505 - added SCIPcutpoolGetNRootCalls, SCIPcutpoolGetNCutsAdded, SCIPcutpoolAddMaxNCuts, SCIPcutpoolSetTime, SCIPcutpoolAddNCalls, SCIPcutpoolAddNRootCalls, SCIPcutpoolAddNCutsFound, SCIPcutpoolAddNCutsAdded,
506 - added SCIPcutselGetNCalls, SCIPcutselGetNRootCalls, SCIPcutselGetNRootCuts, SCIPcutselGetNRootForcedCuts, SCIPcutselGetNRootCutsFiltered, SCIPcutselGetNLocalCuts, SCIPcutselGetNLocalForcedCuts, SCIPcutselGetNLocalCutsFiltered,
507 
508 ### Interfaces to external software
509 
510 - Added compatibility with Mosek 10.0.18.
511 
512 ### New parameters
513 
514 - new parameters to turn on more statistics: misc/showdivingstats (diving heuristics), heuristics/alns/shownbstats (ALNS), estimation/showstats (tree size estimation)
515 
516 ### Data structures
517 
518 - added nrootcalls and ncutsadded to SCIP_Cutpool
519 - added fromcutpool flag to SCIP_Row and fixed 33 bit allocation
520 - added ncalls, nrootcalls, nrootcutsselected, nrootcutsforced, nrootcutsfiltered, nlocalcutsselected, nlocalcutsforced, nlocalcutsfiltered to SCIP_Cutsel
521 - added ncutsadded, ncutsaddedviapool, ncutsaddeddirect, ncutsappliedviapool, ncutsapplieddirect, nrootcalls to SCIP_Sepa
522 - added ncutsadded, ncutsaddedviapool, ncutsaddeddirect to SCIP_Sepastore
523 - fixed statistics of relaxators w.r.t. number of times conss/cuts were added
524 
525 Build system
526 ------------
527 
528 ### Cmake
529 
530 - new option `-DAUTOBUILD` that configures scip with dependencies on availability.
531  Packages like Ipopt, PaPILO, Readline, Zimpl, ZLIB, GMP, Worhp are automatically found and linked, otherwise ignored.
532  The individual flags for these packages are ignored. This makes a quick build easier. It is by default set to off.
533 
534 Fixed bugs
535 ----------
536 
537 - read objective offset from ZIMPL files
538 - Make sure that objective limit is disabled if not all variables are in the LP. If we would run into
539  an objective limit in this case, the results of the LP solver are unclear.
540 - fixed bug in reopt.c, which occured for bounds outside of current valid bounds
541 - fixed problem with recomputing symmetries after a restart
542 - fixed bug in SCIPcalcMIR() with wrong order of arguments for removeZerosQuad()
543 - fixed segmentation fault in update of cut statistic
544 - fixed bug in presolving of and constraints by merging variables with multiple occurrences before cliquePresolve()
545 - fixed bug in dual presolving of linear constraints by setting implicit integers to integers in multi-aggregation
546 - fixed update of presolve statistics on added constraints and changed coefficients in constraint handler for nonlinear constraints
547 - fixed bug with reading CIP files with large constraints split over several lines
548 - fixed bug with infinite bounds in the computation of conflict cuts
549 - fixed check for unbounded solution constructed by SCIPlpGetUnboundedSol(): The constructed solution is very likely infeasible
550  since scaling increases small numerical feasibility violations. Therefore, the solution is now always accepted. However, the
551  feasibility of the ray is now checked. This fix now might lead to several rounds of separation in order to resolve unbounded solutions,
552  whereas previously SCIP started to branch immediately.
553 - changed to absolute tolerances in all redundancy checks for linear constraints
554 
555 Miscellaneous
556 -------------
557 
558 - Added extended cutselector statistics splitting between root node specific and general statistics
559 - Added extended and refined cutpool statistics showing the number of cuts added from the cutpool to the sepastore
560 - Added extended and refined separator statistics to get a better view of the individual generators performance
561 - turned off output of statistics for the following information by default:
562  diving heuristics, ALNS neighborhood information and tree size estimation statistics;
563  they can be turned on using the following new parameters:
564  misc/showdivingstats (diving heuristics), heuristics/alns/shownbstats (ALNS), estimation/showstats (tree size estimation)
565 
566 @section RN801 SCIP 8.0.1
567 *************************
568 Features
569 --------
570 
571 - clique lifting in cons_setppc (parameter enablecliquelifting) is only disabled if it has been applied
572 - avoid warning if Mosek has reached/exceeded the objective limit
573 - improved curvature check for quadratic expressions when extended formulations are disabled
574 
575 Examples and applications
576 -------------------------
577 
578 - Fixed handling of enforcing in the TSP example.
579 
580 Interface changes
581 -----------------
582 
583 ### Interfaces to external software
584 
585 - Added compatibility with Mosek 10.0.13.
586 
587 Build system
588 ------------
589 
590 - BLISS is now built from the vendored version from https://github.com/ds4dm/Bliss
591 
592 ### Cmake
593 
594 - avoid warnings about unrecognized compiler warning silencing options when compilation with GCC fails
595 - adjust mosek find module to version 9.3
596 - added cmake compatibility for ipopt versions 3.14.x
597 
598 ### Makefile
599 
600 - avoid warnings about unrecognized compiler warning silencing options when compilation with GCC fails
601 - fixed that compilation with MS/Intel compilers on Windows and Cray compilers was broken when enabling PAPILO
602 
603 Fixed bugs
604 ----------
605 
606 - fixed uninitialized array in detection of suborbitopes
607 - Fixed problem with reading long lines in LP/FZN/OPB/Diff-files. The buffer is now reallocated,
608  which also should be much faster.
609 - fixed that recursive products in expressions were sometimes not flattened
610 - fixed that expressions in original variables could not be simplified
611 - fixed handling of objective limit with Mosek
612 - made SCIPlpiGetSolverName()/SCIPlpiGetSolverDesc() thread-safe for LP Solvers (Cplex,Gurobi,Glop,Mosek,SoPlex,Xpress)
613 - made SYMsymmetryGetName() thread-safe for Bliss
614 - fixed memory allocation issue in detection of SOC nlhdlr
615 - fixed that reaching the walltime limit in Ipopt was not handled properly
616 - Deactivated dual fixing of unlocked variables with zero objective in presol_milp that SCIP is unable to postsolve.
617 - set the column flag kImplInt for implicit integers in the papilo problem
618 - fixed bug in propagation of indicator constraints (one case always reported a change through propagation)
619 
620 @section RN800 SCIP 8.0.0
621 *************************
622 
623 Features
624 --------
625 
626 - Variables that were marked as relaxation-only and that were not used in any solution (SCIP_SOL)
627  are now deleted when during a restart.
628 - New symmetry handling method, symmetry handling inequalities based on the Schreier Sims table,
629  which is able to handle symmetries of arbitrary kinds of variables.
630 - Revise way in which external memory (e.g., of LP-solver) is estimated.
631 - The symmetry code can now heuristically search for orbitopes that do not completely handle
632  a symmetry component and add certain Schreier Sims cuts to such components.
633 - The LPIs for Gurobi and Mosek are thread-safe now.
634 - The complete code is now thread-safe by default.
635 - New separator to generate mixing cuts (works well for stochastic programming with probabilistic constraint).
636 - New parsing routines for cons_orbisack and cons_symresack.
637 - Variables can now be marked to forbid aggregation.
638 - Heuristic PADM can now reoptimize found solution with original objective function.
639 - Added code to support debugging of catching or releasing of variables to var.c (prints backtrace
640  when catching and releasing).
641 - SCIPintervalSin() and SCIPintervalCos() are now rounding-safe.
642 - Removed special handling of second-order cones in undercover heuristic for now.
643 - Removed use of Hessian sparsity pattern for nonquadratic nonlinear constraints in undercover heuristic.
644 - Added reader for AMPL .nl files.
645 - New separator sepa_rlt to compute cuts via the reformulation-linearization technique (RLT).
646 - New separator sepa_minor to compute cuts from 2x2 minors of a violated semidefiniteness constraint that is
647  implied by the extended formulation for bilinear products.
648 - New separator sepa_interminor to compute intersection cuts from 2x2 (not only principle) minors of a violated
649  rank-one constraint that is implied by the extended formulation for bilinear products.
650 - Symmetry handling has been extended to detect also symmetries between variables that also appear in nonlinear constraints.
651 - Improved OBBT propagator by only considering variables that are contained in at least one nonconvex expression that has an auxiliary variable.
652 - Default parameter settings for NLP solves are now defined independently of the NLP solver.
653 - Added table to print statistics on NLP solvers.
654 - Knapsack, linear, logicor, setppc, and varbound constraints now add themselves to the NLP relaxation, if enabled.
655  And, linking constraints and bounddisjunctions in one variable are added to the NLP relaxation now.
656 - Ipopt interface now supports warmstarts from a full primal/dual solution pair.
657 - Extended data structure SCIP_ROWPREP and routines to assemble a linear inequality before it is turned into a SCIP row and
658  made it available via the API.
659 - MIR procedure is now available for strengthening the Benders' optimality cut
660 - SCIPbranchcandCalcLPCands() now also returns fractional variables in unbounded solutions.
661 - New emphasis "benchmark" to avoid different solving paths that may come from checking remaining memory.
662 - New plugin type for cut selection: users can now include their own cut selection rules, default rule moved to cutsel_hybrid.
663 - New construction heuristic DPS which additionally needs a user-provided decomposition and splits the problem into several sub-SCIPs
664  according to this decomposition. The sub-SCIPs are solved and updated repeatedly until a feasible solution of the original problem is found.
665 
666 Expressions:
667 - Removed support for expression types min and max for now. Removed support for expression type sign.
668  Removed complex expression types sum, product, linear, quadratic, polynomial.
669  Removed support for parameterized expressions.
670 - Added support for expression types sin, cos, and entropy. Added an expression type that stores a SCIP variable.
671 - Added handling of sin and cos expressions in OSiL reader.
672 - Added handling of sin, cos, and tan expressions in ZIMPL reader.
673 - Added expression handler plugin type, removed user expression type.
674 - Replaced expressions, expression trees, and expression graphs by a new implementation of expressions.
675 - Added differentiation methods (Gradients and Hessian directions) to expressions.
676 - Added integrality information to expressions.
677 - Added comparison and hashing of expressions.
678 - Improved simplification of expressions and identification of common subexpressions, in particular terms that appear
679  equally in several quadratic functions are now identified.
680 - Expression simplification now expands powers also when the resulting exponents will be larger than 2.
681 - Added table to print statistics on expression handlers.
682 - Removed interval-arithmetic evaluation from expression interpreter (interfaces to automatic differentiation codes).
683 - Hessians for user-provided expression handlers are not available in the NLP solver interfaces for now.
684 - Sparse Hessians are now returned by expression interpreter. Removed dense Hessians.
685 
686 Constraint handlers for NLP:
687 - cons_nonlinear has been completely rewritten and now handles constraints of the form lhs <= expr <= rhs, where
688  expr is an expression using the new expression type. A linear part of a nonlinear constraint is no longer distinguished.
689 - Methods that work on a particular nonlinear structure are now implemented via nonlinear handlers (nlhdlr).
690  These handlers are plugins of cons_nonlinear and interact with cons_nonlinear by detecting structures in expressions and
691  providing propagation and separation mechanisms.
692 - Added nlhdlr "default" as a mandatory nlhdlr: this is a nlhdlr that gets active on expressions that no other nlhdlr handles.
693  It then uses the callbacks implemented in expression handlers to provide domain propagation and linear under/overestimates.
694 - Added nlhdlr for quadratic expressions: domain propagation that was previously part of cons_quadratic; separation via intersection cuts (currently disabled).
695 - Added nlhdlr for bilinear expressions: collects bilinear products and provides under/overestimation of a product over a 2D-projection of the LP.
696 - Added nlhdlr for convex and concave expressions: detection of convex/concave subexpressions and linear under/overestimation.
697 - Added nlhdlr for quotients: detects quotients, provides specialized linear under/overestimation and domain propagation for univariate quotients.
698 - Added nlhdlr for perspective reformulations: detects expressions in semi-continuous variables and tightens linear
699  under/overestimates of these expressions by applying a perspective transformation.
700 - Added nlhdlr for second-order cones: detects second-order cone constraints (as ||x|| <= t or a quadratic that can written like that) and
701  separates on a disaggregated reformulation (similar to cons_soc previously).
702 - Removed constraint handlers abspower, bivariate, quadratic, and soc.
703 - Removed simplification of duplicate abspower constraints for now.
704  Removed simplification of abspower constraints with loose variables.
705  Removed resolving of domain propagation (ConsResProp callback) and conflict analysis for abspower constraints.
706  Removed propagation of varbounds for variables of abspower constraints.
707  Removed reformulation of abs(x)^p * x into signpower expression for now.
708 - Removed reformulation of SOC constraints when adding to the NLP.
709  Removed possibility to add linearizations a la Glineur or BenTal&Nemirovski for SOC constraints.
710 - Removed possibility to disaggregate quadratic constraints.
711  Removed lifted tangent inequalities for bilinear terms in quadratic constraints.
712  Removed option to project LP solution onto feasible region of a quadratic constraint via interior point or gauge function.
713  Removed handling of unbounded LPs when enforcing quadratic constraints.
714 - Removed construction of cuts from interval gradients for nonlinear constraints.
715  Removed possibility to pretend that all nonlinear constraints are convex.
716  Removed possibility to create local or non-initial nonlinear constraints for now.
717 - Removed explicit reformulation of nonlinear constraints in presolve.
718  An extended formulation is now generated implicitly and used to construct the LP relaxation,
719  but the original formulation is used to check feasibility, propagate variable domains, etc.
720  Variables that are added for the extended formulation are now marked as relaxation-only.
721 - Improved locking of nonlinear variables in nonlinear constraints by taking monotonicity into account.
722 - Improved mechanisms to detect and handle structures in nonlinear constraints, which allows for several algorithms
723  to work simultaneously on equal or overlapping expressions.
724 - Improved linearization of (sums of) products of binary variables, e.g., clique information is now taken into account.
725  Removed option to linearize products between a binary and a non-binary variable.
726 - Nonlinear constraints with the same function (but possibly different left- or right-hand-side) are now merged.
727 - When a variable appears in only one concave less-or-equal constraint, it will be fixed to one of its bounds in more cases now.
728 - New branching rule for variables in nonlinear constraints (implemented in cons_nonlinear) that scores candidates
729  based on constraint violation, variable type, and pseudo-costs simultaneously.
730 - Added tables to print statistics of nonlinear constraint handler and nonlinear handlers.
731 
732 Performance improvements
733 ------------------------
734 
735 - Use the objective cutoff row as base row for separation in sepa_aggregation.c.
736 - Separate lifted cover cuts based on newer lifting function of Letchford and Souli (2019) in sepa_aggregation.c.
737 - In-tree restarts due to tree size estimation have been made compatible with orbital fixing.
738 - Improved upgrade of orbisacks to packing/partitioning orbitopes.
739 - Improved running time of symresack cover separation.
740 - Improved propagation algorithm for orbisack and symresack.
741 - Improved handling for expressions of type signpower in CppAD interface by making use of CppADs conditional expressions.
742 - Faster reevaluation of Hessian for quadratic expressions in CppAD interface.
743 - Enabled optimization of taped expressions in the CppAD interface.
744 - Sparse Hessian evaluation for expressions with sparse Hessian in the CppAD interface.
745 - Disabled branching on variables that are added for the extended formulation of a nonlinear constraint.
746 - Prefer branching on variables in nonconvex terms of nonlinear constraints also if a cut could be generated but would yield a small reduction in the convexification gap only.
747 - When violations of nonlinear constraints are tiny, the feasibility tolerance for the LP relaxation may now be reduced temporarily to allow for cuts to have an effect.
748 - Improved under/overestimation of multidimensional vertex-polyhedral (e.g., multilinear or concave) functions by use of scaling and keeping the cut-generating LP around.
749 - Products in nonlinear constraints are no longer disaggregated for the extended formulation.
750 - No longer relax bounds of integral variables when computing bounds on activity in nonlinear constraints.
751 - Revised and improved Ipopt interface.
752 - Revised and improved subNLP primal heuristic, in particular choice of iteration limit and starting condition and reuse of subSCIP.
753 - Merge strongcg into the gomory separator to avoid computing the same base equality twice. The files
754  sepa_strongcg.{h|c} have been removed.
755 - The RENS neighborhood in ALNS now fixes fractional variables if necessary for reaching its target fixing rate.
756 - Use cpsolver emphasis in sepa_rapidlearning.
757 - If decomposition/maxgraphedge = 0, the computation of the block graph is completely turned off.
758 - Fixed a performance bug in cons_integral.c where rounding information was passed incorrectly to the generic diving algorithm.
759 
760 Examples and applications
761 -------------------------
762 
763 - Add c++ Sudoku example
764 - Removed circle.c and renamed string.c to spring.c in CallableLibrary example.
765 - SCIP-Jack (Steiner tree application):
766  Most files have been modified and many new ones have been added (code base more than doubled).
767  Two new problem classes are supported: maximum-weight connected subgraph problem with budget constraints, partial-terminal node-weighted Steiner tree problem.
768  Major performance improvements accross all problem classes that are supported.
769 
770 Interface changes
771 -----------------
772 
773 ### New and changed callbacks
774 
775 - extend SEPAEXEC{LP,SOL} callbacks by parameter "depth", which should be used within separation instead of SCIPgetCurrentDepth()
776 - extend SCIPseparateSolCutpool() by parameter "pretendroot", which is passed to SCIPcutpoolSeparate() instead of SCIPtreeGetCurrentDepth(scip->tree) == 0
777 - removed SCIP_DECL_EXPRGRAPHVARADDED, SCIP_DECL_EXPRGRAPHVARREMOVE, SCIP_DECL_EXPRGRAPHVARCHGIDX
778 - removed SCIP_DECL_USEREXPRESTIMATE, SCIP_DECL_USEREXPREVAL, SCIP_DECL_USEREXPRINTEVAL, SCIP_DECL_USEREXPRCURV, SCIP_DECL_USEREXPRPROP, SCIP_DECL_USEREXPRCOPYDATA, SCIP_DECL_USEREXPRFREEDATA, SCIP_DECL_USEREXPRPRINT
779 - added SCIP_DECL_EXPR_OWNERFREE, SCIP_DECL_EXPR_OWNERPRINT, SCIP_DECL_EXPR_OWNEREVALACTIVITY, SCIP_DECL_EXPR_OWNERCREATE
780 - added SCIP_DECL_EXPR_INTEVALVAR, SCIP_DECL_EXPR_MAPEXPR
781 - added SCIP_DECL_EXPRCOPYHDLR, SCIP_DECL_EXPRFREEHDLR, SCIP_DECL_EXPRCOPYDATA, SCIP_DECL_EXPRFREEDATA, SCIP_DECL_EXPRPRINT, SCIP_DECL_EXPRPARSE, SCIP_DECL_EXPRCURVATURE, SCIP_DECL_EXPRMONOTONICITY, SCIP_DECL_EXPRINTEGRALITY, SCIP_DECL_EXPRHASH, SCIP_DECL_EXPRCOMPARE, SCIP_DECL_EXPREVAL, SCIP_DECL_EXPRBWDIFF, SCIP_DECL_EXPRFWDIFF, SCIP_DECL_EXPRBWFWDIFF, SCIP_DECL_EXPRINTEVAL, SCIP_DECL_EXPRESTIMATE, SCIP_DECL_EXPRINITESTIMATES, SCIP_DECL_EXPRSIMPLIFY, SCIP_DECL_EXPRREVERSEPROP
782 - removed SCIP_DECL_QUADCONSUPGD
783 - added SCIP_DECL_VERTEXPOLYFUN
784 - added argument nvarexprs to SCIP_DECL_NONLINCONSUPGD to inform upgrade method about number of variables in constraint
785 - removed SCIP_DECL_EXPRGRAPHNODEREFORM
786 - added SCIP_DECL_NLHDLRCOPYHDLR, SCIP_DECL_NLHDLRFREEHDLRDATA, SCIP_DECL_NLHDLRFREEEXPRDATA, SCIP_DECL_NLHDLRINIT, SCIP_DECL_NLHDLREXIT, SCIP_DECL_NLHDLRDETECT, SCIP_DECL_NLHDLREVALAUX, SCIP_DECL_NLHDLRINTEVAL, SCIP_DECL_NLHDLRREVERSEPROP, SCIP_DECL_NLHDLRINITSEPA, SCIP_DECL_NLHDLREXITSEPA, SCIP_DECL_NLHDLRENFO, SCIP_DECL_NLHDLRESTIMATE
787 - replaced BMS_BLKMEM* blkmem argument of SCIP_DECL_NLPICOPY by SCIP* scip, removed targetnlpi argument
788 - added SCIP* scip and SCIP_NLPIDATA** nlpidata arguments to SCIP_DECL_NLPIFREE
789 - added SCIP* scip to SCIP_DECL_NLPIGETSOLVERPOINTER, SCIP_DECL_NLPICREATEPROBLEM, SCIP_DECL_NLPIFREEPROBLEM, SCIP_DECL_NLPIGETPROBLEMPOINTER, SCIP_DECL_NLPIADDVARS, SCIP_DECL_NLPIADDCONSTRAINTS, SCIP_DECL_NLPISETOBJECTIVE, SCIP_DECL_NLPICHGVARBOUNDS, SCIP_DECL_NLPICHGCONSSIDES, SCIP_DECL_NLPIDELVARSET, SCIP_DECL_NLPIDELCONSSET, SCIP_DECL_NLPICHGLINEARCOEFS, SCIP_DECL_NLPICHGOBJCONSTANT, SCIP_DECL_NLPISETINITIALGUESS, SCIP_DECL_NLPISOLVE, SCIP_DECL_NLPIGETSOLSTAT, SCIP_DECL_NLPIGETTERMSTAT, SCIP_DECL_NLPIGETSOLUTION, SCIP_DECL_NLPIGETSTATISTICS
790 - replaced SCIP_DECL_NLPICHGEXPRTREE by SCIP_DECL_NLPICHGEXPR
791 - removed nquadelems, quadelems, exprvaridxs arguments from SCIP_DECL_NLPIADDCONSTRAINTS, changed exprtrees argument to exprs
792 - removed nquadelems, quadelems, exprvaridxs arguments from SCIP_DECL_NLPISETOBJECTIVE, changed exprtree argument to expr
793 - removed SCIP_DECL_NLPICHGQUADCOEFS, SCIP_DECL_NLPICHGNONLINCOEF, SCIP_DECL_NLPISETMESSAGEHDLR
794 - added SCIP_NLPIPROBLEM* problem to SCIP_DECL_NLPIGETSOLVERPOINTER
795 
796 ### Deleted and changed API methods
797 
798 - When calling SCIPdelVar() in the SCIP_STAGE_PROBLEM stage, it is now documented as the user's responsibility to ensure
799  the variable is not present in any constraints. Otherwise, SCIPsolve() now returns SCIP_INVALIDDATA.
800 - removed SCIPselectCuts(), replaced by SCIPselectCutsHybrid() of the hybrid cut selector plugin
801 - If SCIPvarMarkRelaxationOnly() is called for a variable, then this now need to happen before the
802  variable is added to the transformed problem (SCIPaddVar()).
803  SCIPvarMarkRelaxationOnly() will automatically call SCIPvarMarkDeletable().
804 - SCIPcomputeOrbitsFilterSym() and SCIPcomputeComponentsSym(): Type of argument componentblocked
805  changed from SCIP_Shortbool* to unsigned*.
806 - removed SCIPsetParam()
807 - SCIPcreateConsOrbitope() and SCIPcreateConsBasicOrbitope() have two new arguments "usedynamicprop"
808  and "mayinteract" to encode whether a dynamic reordering of the orbitope rows shall be used in
809  full orbitope propagation and whether the orbitope might interact with other symmetry handling
810  methods, respectively.
811 - internal function SCIPgetPropertiesPerm() has been replaced by SCIPisInvolutionPerm()
812 - internal function SCIPgenerateOrbitopeVarsMatrix() has new arguments "storelexorder", "lexorder",
813  "nvarsorder", "maxnvarsorder" to compute and store the lexicographic order defined by an orbitope
814 - renamed SCIPcomputeArraysIntersection() and SCIPcomputeArraysSetminus() to
815  SCIPcomputeArraysIntersectionInt() and SCIPcomputeArraysSetminusInt(), respectively, and changed
816  their return type from SCIP_RETCODE (which _always_ was SCIP_OKAY) to void
817 - removed SCIPincludeDialogDefault(), use SCIPincludeDialogDefaultBasic() instead and check whether you also need SCIPincludeDialogDefaultSet() and SCIPincludeDialogDefaultFix()
818 - removed exprint argument from SCIPaddNlRowGradientBenderscutOpt()
819 - added copyexprhdlrs argument to SCIPcopyPlugins() (19th position)
820 - added copycutselectors argument to SCIPcopyPlugins() (10th position)
821 - removed refpoint argument from SCIPaddSquareSecant()
822 - added argument exprdata to SYMcomputeSymmetryGenerators()
823 - removed SCIPconsNonlinearGetRhs(), SCIPconsNonlinearGetLhs(), SCIPconsNonlinearAddLinearCoef()
824 - removed arguments timelimit, minimprove, itercontingent, and iterused from SCIPapplyHeurSubNlp()
825 - removed SCIPresolveSolHeurSubNlp(), SCIPgetSubScipHeurSubNlp(), SCIPgetVarMappingScip2SubScipHeurSubNlp(), SCIPgetVarMappingSubScip2ScipHeurSubNlp()
826 - SCIPlockVarCons() and SCIPunlockVarCons() are now allowed in stage TRANSFORMED as well
827 - Added functions SCIPsetSepaIsParentsepa(), SCIPsetSepaParentsepa() [in scip_sepa.h], SCIPsepaSetIsParentsepa(), SCIPsepaSetParentsepa() [in sepa.h],
828  SCIPsepaIsParentsepa(), SCIPsepaGetParentsepa() [in pub_sepa.h]
829 - Added function SCIPpruneTree() to immediately delete nodes that were marked to be deleted with SCIPcutoffNode
830 
831 NLP:
832 - SCIPhasNLPContinuousNonlinearity() now returns SCIP_RETCODE and has additional argument result
833 - removed SCIPnlrowGetNQuadVars(), SCIPnlrowGetQuadVars(), SCIPnlrowSearchQuadVar(), SCIPnlrowGetNQuadElems(), SCIPnlrowGetQuadElems(), SCIPnlrowGetQuadData()
834 - renamed SCIPnlrowGetExprtree() to SCIPnlrowGetExpr() and changed return type to SCIP_EXPR*
835 - removed arguments nquadvars, quadvars, nquadelems, quadelems from SCIPcreateNlRow(); argument expr(ession) is now of type SCIP_EXPR*
836 - removed SCIPaddQuadVarToNlRow(), SCIPaddQuadVarsToNlRow(), SCIPaddQuadElementToNlRow(), SCIPaddQuadElementsToNlRow(), SCIPchgNlRowQuadElement(), SCIPsetNlRowExprtreeParam(), SCIPsetNlRowExprtreeParams()
837 - renamed SCIPsetNlRowExprtree() to SCIPsetNlRowExpr() and changed type of expr(tree) argument to SCIP_EXPR*
838 - SCIPenableNLP() is no longer allowed in stages INITSOLVE and SOLVING
839 - removed SCIPaddLinearConsToNlpHeurSubNlp()
840 - SCIPhasNLPSolution() now returns true also if a infeasible solution to the NLP exists; SCIPcreateNLPSol() can now also be used when only an infeasible solution to the NLP exists
841 - renamed SCIPsolveNLP() to SCIPsolveNLPParam() and added parameter SCIP_NLPPARAM param
842 - removed SCIPsolveDiveNLP(), use SCIPsolveNLPParam() instead
843 
844 NLPI:
845 - removed SCIPnlpiCopy(), SCIPnlpiFree(), SCIPnlpiChgQuadCoefs(), SCIPnlpiChgNonlinCoef(), SCIPnlpiSetMessageHdlr()
846 - removed SCIPnlpiCreate() from public API, use SCIPincludeNlpi() instead
847 - removed SCIPnlpiGetSolverPointer() from public API, use SCIPgetNlpiSolverPointer() instead
848 - removed SCIPnlpiCreateProblem() from public API, use SCIPcreateNlpiProblem() instead
849 - removed SCIPnlpiFreeProblem() from public API, use SCIPfreeNlpiProblem() instead
850 - removed SCIPnlpiGetProblemPointer() from public API, use SCIPgetNlpiProblemPointer() instead
851 - removed SCIPnlpiAddVars() from public API, use SCIPaddNlpiVars() instead
852 - removed SCIPnlpiAddConstraints() from public API, use SCIPaddNlpiConstraints() instead
853 - removed SCIPnlpiSetObjective() from public API, use SCIPsetNlpiObjective() instead
854 - removed SCIPnlpiChgVarBounds() from public API, use SCIPchgNlpiVarBounds() instead
855 - removed SCIPnlpiChgConsSides() from public API, use SCIPchgNlpiConsSides() instead
856 - removed SCIPnlpiDelVarSet() from public API, use SCIPdelNlpiVarSet() instead
857 - removed SCIPnlpiDelConsSet() from public API, use SCIPdelNlpiConsSet() instead
858 - removed SCIPnlpiChgLinearCoefs() from public API, use SCIPchgNlpiLinearCoefs() instead
859 - removed SCIPnlpiChgExprtree() from public API, use SCIPchgNlpiExpr() instead
860 - removed SCIPnlpiChgObjConstant() from public API, use SCIPchgNlpiObjConstant() instead
861 - removed SCIPnlpiSetInitialGuess() from public API, use SCIPsetNlpiInitialGuess() instead
862 - removed SCIPnlpiSolve() from public API, use SCIPsolveNlpiParam() instead
863 - removed SCIPnlpiGetSolstat() from public API, use SCIPgetNlpiSolstat() instead
864 - removed SCIPnlpiGetTermstat() from public API, use SCIPgetNlpiTermstat() instead
865 - removed SCIPnlpiGetSolution() from public API, use SCIPgetNlpiSolution() instead
866 - removed SCIPnlpiGetStatistics() from public API, use SCIPgetNlpiStatistics() instead
867 - removed SCIPnlpiGetWarmstartSize()
868 - removed SCIPnlpiGetWarmstartMemo()
869 - removed SCIPnlpiSetWarmstartMemo()
870 - removed SCIPnlpiGetIntPar()
871 - removed SCIPnlpiSetIntPar()
872 - removed SCIPnlpiGetRealPar()
873 - removed SCIPnlpiSetRealPar()
874 - removed SCIPnlpiGetStringPar(),
875 - removed SCIPnlpiSetStringPar()
876 - removed SCIPnlpiSetPriority() from public API, use SCIPsetNlpiPriority() instead
877 - removed argument nlpi from SCIPincludeNlpi() and added name, description, priority,
878  nlpicopy, nlpifree, nlpigetsolverpointer, nlpicreateproblem, nlpifreeproblem, nlpigetproblempointer, nlpiaddvars, nlpiaddconstraints, nlpisetobjective, nlpichgvarbounds, nlpichgconssides, nlpidelvarset, nlpidelconsset, nlpichglinearcoefs, nlpichgexpr, nlpichgobjconstant, nlpisetinitialguess, nlpisolve, nlpigetsolstat, nlpigettermstat, nlpigetsolution, nlpigetstatistics, nlpidata
879 - removed SCIPcreateNlpSolverAll(), use SCIPincludeNlpSolverAll() instead
880 - removed SCIPcreateNlpSolverFilterSQP(), use SCIPincludeNlpSolverFilterSQP() instead
881 - removed SCIPcreateNlpSolverIpopt(), use SCIPincludeNlpSolverIpopt() instead
882 - removed SCIPcreateNlpSolverWorhp(), use SCIPincludeNlpSolverWorhp() instead
883 - replaced argument BMS_BLKMEM* blkmem of SCIPnlpiOracleCreate() by SCIP* scip
884 - added argument SCIP* scip to SCIPnlpiOracleFree(), SCIPnlpiOracleSetProblemName(), SCIPnlpiOracleAddVars(), SCIPnlpiOracleAddConstraints(), SCIPnlpiOracleSetObjective(), SCIPnlpiOracleChgVarBounds(), SCIPnlpiOracleChgConsSides(), SCIPnlpiOracleDelVarSet(), SCIPnlpiOracleDelConsSet(), SCIPnlpiOracleChgLinearCoefs(), SCIPnlpiOracleChgObjConstant(), SCIPnlpiOracleGetEvalCapability(), SCIPnlpiOracleEvalObjectiveValue(), SCIPnlpiOracleEvalConstraintValue(), SCIPnlpiOracleEvalConstraintValues(), SCIPnlpiOracleEvalObjectiveGradient(), SCIPnlpiOracleEvalConstraintGradient(), SCIPnlpiOracleGetJacobianSparsity(), SCIPnlpiOracleEvalJacobian(), SCIPnlpiOracleGetHessianLagSparsity(), SCIPnlpiOracleEvalHessianLag(), SCIPnlpiOraclePrintProblem(), SCIPnlpiOraclePrintProblemGams()
885 - removed arguments nquadelems, quadelems, exprvaridxs, exprtrees from SCIPnlpiOracleAddConstraints(), added argument SCIP_EXPR** exprs
886 - removed arguments nquadelems, quadelems, exprvaridxs, exprtree from SCIPnlpiOracleSetObjective(), added argument SCIP_EXPR* expr
887 - replaced arguments isnewx of SCIPnlpiOracleEvalHessianLag() by two arguments isnewx_obj and isnewx_cons
888 - removed SCIPnlpiOracleChgExprtree(), use SCIPnlpiOracleChgExpr() instead
889 - removed SCIPnlpiOracleSetInfinity(), SCIPnlpiOracleGetInfinity(), SCIPnlpiOracleChgQuadCoefs(), SCIPnlpiOracleChgExprParam(), SCIPnlpiOracleGetMaxDegree()
890 - removed SCIPnlpiOracleGetVarDegree() and SCIPnlpiOracleGetVarDegrees(), use SCIPnlpiOracleIsVarNonlinear() and SCIPnlpiOracleGetVarCounts(), respectively, instead
891 - removed SCIPnlpiOracleGetConstraintDegree(), use SCIPnlpiOracleIsConstraintNonlinear() instead
892 - removed argument messagehdlr from SCIPnlpiOraclePrintProblem() and SCIPnlpiOraclePrintProblemGams()
893 - removed SCIPcreateNlpiProb(), use SCIPcreateNlpiProblemFromNlRows() instead
894 - renamed SCIPupdateNlpiProb() to SCIPupdateNlpiProblem() and moved into scip_nlpi.{h,c}
895 - renamed SCIPaddNlpiProbRows() to SCIPaddNlpiProblemRows() and moved into scip_nlpi.{h,c}
896 - removed SCIPsetModifiedDefaultSettingsIpopt()
897 - removed SCIPgetIpoptApplicationPointerIpopt(), use SCIPgetNlpiSolverPointer() instead
898 - removed SCIPnlpStatisticsCreate(), SCIPnlpStatisticsFree(), SCIPnlpStatisticsGetNIterations(), SCIPnlpStatisticsGetTotalTime(), SCIPnlpStatisticsSetNIterations(), SCIPnlpStatisticsSetTotalTime(), the struct is public now
899 - renamed LapackDsyev() to SCIPcallLapackDsyevIpopt()
900 - renamed SCIPsolveLinearProb() to SCIPsolveLinearEquationsIpopt()
901 
902 Expression interpreter:
903 - removed functions that operated with SCIPInterval
904 - changed first argument of SCIPexprintCreate() to SCIP*
905 - added SCIP* as first argument to SCIPexprintFree()
906 - added SCIP* as first argument to SCIPexprintCompile(), changed third argument to SCIP_EXPR*, added fourth argument SCIP_EXPRINTDATA**
907 - added arguments SCIP*, SCIP_EXPRINT*, and SCIP_EXPR* as first arguments to SCIPexprintFreeData()
908 - renamed SCIPexprintGetExprtreeCapability() to SCIPexprintGetExprCapability();
909  added SCIP* as first argument, changed third argument to SCIP_EXPR*, added fourth argument SCIP_EXPRINTDATA*
910 - removed SCIPexprintNewParametrization()
911 - SCIPexprintEval(): added SCIP* as first argument, changed third argument to SCIP_EXPR*, added fourth argument SCIP_EXPRINTDATA*
912 - removed SCIPexprintEvalInt()
913 - SCIPexprintGrad(): added SCIP* as first argument, changed third argument to SCIP_EXPR*, added fourth argument SCIP_EXPRINTDATA*
914 - removed SCIPexprintGradInt()
915 - removed SCIPexprintHessianSparsityDense() and SCIPexprintHessianDense, use SCIPexprintHessianSparsity() and SCIPexprintHessian() instead
916 
917 Expressions:
918 - removed SCIPexpropGetName(), use SCIPexprhdlrGetName() instead
919 - removed SCIPexpropGetNChildren()
920 - removed SCIPexprGetOperator(), use SCIPexprGetHdlr() instead
921 - removed SCIPexprGetOpIndex(), SCIPexprGetOpReal(), SCIPexprGetOpData(), use SCIPexprGetData() instead
922 - removed SCIPexprGetRealPowerExponent(), SCIPexprGetIntPowerExponent(), SCIPexprGetSignPowerExponent(), use SCIPgetExponentExprPow() instead
923 - removed SCIPexprGetLinearCoefs(), SCIPexprGetLinearConstant(), use SCIPgetCoefsExprSum() and SCIPgetConstantExprSum() instead
924 - removed SCIPexprGetQuadElements(), SCIPexprGetQuadConstant(), SCIPexprGetQuadLinearCoefs(), SCIPexprGetNQuadElements(), use SCIPexprGetQuadraticData(), SCIPexprGetQuadraticQuadTerm(), SCIPexprGetQuadraticBilinTerm() instead
925 - removed SCIPexprGetMonomials(), SCIPexprGetNMonomials, SCIPexprGetPolynomialConstant(), SCIPexprGetMonomialCoef(), SCIPexprGetMonomialNFactors(), SCIPexprGetMonomialChildIndices(), SCIPexprGetMonomialExponents()
926 - removed SCIPexprGetUserData(), SCIPexprHasUserEstimator(), SCIPexprGetUserEvalCapability()
927 - removed SCIPexprCreate(), use SCIPcreateExpr() instead
928 - removed SCIPexprCopyDeep(), use SCIPduplicateExpr() instead
929 - removed SCIPexprFreeDeep(), use SCIPreleaseExpr() instead
930 - removed SCIPexprFreeShallow()
931 - removed SCIPexprAdd(), SCIPexprMulConstant()
932 - removed SCIPexprCreateLinear(), use SCIPcreateExprSum() instead
933 - replaced SCIPexprAddToLinear() by SCIPappendExprSumExpr()
934 - replaced SCIPexprCreateQuadratic() by SCIPcreateExprQuadratic()
935 - removed SCIPexprSortQuadElems()
936 - removed SCIPexprCreatePolynomial(), SCIPexprAddMonomials(), SCIPexprChgPolynomialConstant(), SCIPexprMultiplyPolynomialByConstant(), SCIPexprMultiplyPolynomialByMonomial(), SCIPexprMultiplyPolynomialByPolynomial(), SCIPexprPolynomialPower()
937 - removed SCIPexprMergeMonomials(), SCIPexprFreeMonomial(), SCIPexprSortMonomialFactors(), SCIPexprFindMonomialFactor(), SCIPexprAreMonomialsEqual(), SCIPexprAddMonomialFactors(), SCIPexprChgMonomialCoef(), SCIPexprMultiplyMonomialByMonomial(), SCIPexprMonomialPower(), SCIPexprMergeMonomialFactors(), SCIPexprSortMonomials()
938 - replaced SCIPexprCreateMonomial() by SCIPcreateExprMonomial()
939 - removed SCIPexprCreateUser(), use SCIPincludeExprhdlr() instead
940 - removed SCIPexprHasParam(), SCIPexprGetMaxDegree(), SCIPexprGetVarsUsage()
941 - replaced SCIPexprAreEqual() by SCIPcompareExpr()
942 - replaced SCIPexprSimplify() by SCIPsimplifyExpr()
943 - replaced SCIPexprEvalShallow() by SCIPcallExprEval()
944 - replaced SCIPexprEval() by SCIPevalExpr()
945 - replaced SCIPexprEvalIntShallow() by SCIPcallExprInteval()
946 - replaced SCIPexprEvalInt() by SCIPevalExprActivity()
947 - removed SCIPexprEvalUser(), SCIPexprEvalIntUser(), SCIPexprEstimateUser()
948 - replaced SCIPexprCheckCurvature() by SCIPcomputeExprCurvature()
949 - removed SCIPexprSubstituteVars(), use SCIPcopyExpr() instead
950 - removed SCIPexprReindexVars(), SCIPexprReindexParams()
951 - replaced SCIPexprPrint() by SCIPprintExpr()
952 - replaced SCIPexprParse() by SCIPparseExpr()
953 
954 Expression tree:
955 - removed SCIPexprtreeGetVars(), SCIPexprtreeSetVars(), SCIPexprtreeAddVars(), SCIPexprtreePrintWithNames(), SCIPexprtreeFindVar()
956 - removed SCIPexprtreeGetRoot(), SCIPexprtreeGetNVars(), SCIPexprtreeGetNParams(), SCIPexprtreeGetParamVals(), SCIPexprtreeSetParamVal(), SCIPexprtreeHasParam()
957 - removed SCIPexprtreeGetInterpreterData(), SCIPexprtreeSetInterpreterData(), SCIPexprtreeFreeInterpreterData()
958 - removed SCIPexprtreeGetMaxDegree()
959 - removed SCIPexprtreeEval(), use SCIPevalExpr() instead
960 - removed SCIPexprtreeEvalInt(), use SCIPevalExprActivity() instead
961 - removed SCIPexprtreePrint(), use SCIPprintExpr() instead
962 - removed SCIPexprtreeCreate()
963 - removed SCIPexprtreeCopy(), use SCIPduplicateExpr() instead
964 - removed SCIPexprtreeFree(), use SCIPreleaseExpr() instead
965 - removed SCIPexprtreeSetParams(), SCIPexprtreeGetVarsUsage()
966 - removed SCIPexprtreeSimplify(), use SCIPsimplifyExpr() instead
967 - removed SCIPexprtreeAddExpr()
968 - removed SCIPexprtreeCheckCurvature(), use SCIPcomputeExprCurvature() instead
969 - removed SCIPexprtreeSubstituteVars(), use SCIPcopyExpr() instead
970 - removed SCIPquadelemSort(), SCIPquadelemSortedFind(), SCIPquadelemSqueeze()
971 
972 Expression graph:
973 - removed SCIPexprgraphCaptureNode(), use SCIPcaptureExpr() instead
974 - removed SCIPexprgraphIsNodeEnabled()
975 - removed SCIPexprgraphGetNodeNChildren(), use SCIPexprGetNChildren() instead
976 - removed SCIPexprgraphGetNodeChildren(), use SCIPexprGetChildren() instead
977 - removed SCIPexprgraphGetNodeNParents(), SCIPexprgraphGetNodeParents(), SCIPexprgraphGetNodeDepth(), SCIPexprgraphGetNodePosition()
978 - removed SCIPexprgraphGetNodeOperator(), use SCIPexprGetHdlr() instead
979 - removed SCIPexprgraphGetNodeOperatorIndex(), SCIPexprgraphGetNodeOperatorReal(), use SCIPexprGetData() instead
980 - removed SCIPexprgraphGetNodeVar(), use SCIPgetVarExprVar() instead
981 - removed SCIPexprgraphGetNodeRealPowerExponent(), SCIPexprgraphGetNodeIntPowerExponent(), SCIPexprgraphGetNodeSignPowerExponent(), use SCIPgetExponentExprPow() instead
982 - removed SCIPexprgraphGetNodeLinearCoefs(), SCIPexprgraphGetNodeLinearConstant(), use SCIPgetCoefsExprSum(), SCIPgetConstantExprSum() instead
983 - removed SCIPexprgraphGetNodeQuadraticConstant(), SCIPexprgraphGetNodeQuadraticLinearCoefs(), SCIPexprgraphGetNodeQuadraticQuadElements(), SCIPexprgraphGetNodeQuadraticNQuadElements(), use SCIPexprGetQuadraticData(), SCIPexprGetQuadraticQuadTerm(), SCIPexprGetQuadraticBilinTerm() instead
984 - removed SCIPexprgraphGetNodePolynomialMonomials(), SCIPexprgraphGetNodePolynomialNMonomials(), SCIPexprgraphGetNodePolynomialConstant(), SCIPexprgraphGetNodePolynomialMonomialCurvature()
985 - removed SCIPexprgraphGetNodeUserData(), SCIPexprgraphHasNodeUserEstimator()
986 - removed SCIPexprgraphGetNodeBounds(), use SCIPexprGetActivity() instead
987 - removed SCIPexprgraphGetNodeVal(), use SCIPexprGetEvalValue() instead
988 - removed SCIPexprgraphGetNodeCurvature(), use SCIPexprGetCurvature() instead
989 - removed SCIPexprgraphCreateNode()
990 - removed SCIPexprgraphCreateNodeLinear(), use SCIPcreateExprSum() instead
991 - removed SCIPexprgraphCreateNodeQuadratic(), use SCIPcreateExprQuadratic() instead
992 - removed SCIPexprgraphCreateNodePolynomial(), SCIPexprgraphNodePolynomialAddMonomials()
993 - removed SCIPexprgraphCreateNodeUser(), removed SCIPexprgraphNodeSplitOffLinear(), SCIPexprgraphMoveNodeParents()
994 - removed SCIPexprgraphReleaseNode(), use SCIPreleaseExpr() instead
995 - removed SCIPexprgraphFreeNode(), use SCIPreleaseExpr() instead
996 - removed SCIPexprgraphEnableNode(), SCIPexprgraphDisableNode()
997 - removed SCIPexprgraphHasNodeSibling(), SCIPexprgraphAreAllNodeChildrenVars(), SCIPexprgraphHasNodeNonlinearAncestor()
998 - removed SCIPexprgraphPrintNode(), SCIPprintExpr() instead
999 - removed SCIPexprgraphTightenNodeBounds()
1000 - removed SCIPexprgraphUpdateNodeBoundsCurvature(), use SCIPevalExprActivity() and SCIPcomputeExprCurvature() instead
1001 - removed SCIPexprgraphGetDepth(), SCIPexprgraphGetNNodes(), SCIPexprgraphGetNodes(), SCIPexprgraphGetNVars(), SCIPexprgraphGetVars()
1002 - removed SCIPexprgraphGetVarNodes(), SCIPexprgraphSetVarNodeValue(), SCIPexprgraphSetVarsBounds(), SCIPexprgraphSetVarBounds(), SCIPexprgraphSetVarNodeBounds(), SCIPexprgraphSetVarNodeLb(), SCIPexprgraphSetVarNodeUb(), SCIPexprgraphGetVarsBounds()
1003 - removed SCIPexprgraphCreate(), SCIPexprgraphFree()
1004 - removed SCIPexprgraphAddNode(), SCIPexprgraphAddVars(), SCIPexprgraphAddConst(), SCIPexprgraphAddExprtreeSum()
1005 - removed SCIPexprgraphReplaceVarByLinearSum(), SCIPexprgraphFindVarNode(), SCIPexprgraphFindConstNode()
1006 - replaced SCIPexprgraphPrintDot() by SCIPprintExprDotInit[2](), SCIPprintExprDot(), SCIPprintExprDotFinal()
1007 - removed SCIPexprgraphEval(), use SCIPevalExpr() instead
1008 - removed SCIPexprgraphPropagateVarBounds(), SCIPexprgraphPropagateNodeBounds()
1009 - removed SCIPexprgraphCheckCurvature(), use SCIPcomputeExprCurvature() instead
1010 - removed SCIPexprgraphSimplify(), use SCIPsimplifyExpr() instead
1011 - removed SCIPexprgraphGetTree(), SCIPexprgraphGetSeparableTrees(), SCIPexprgraphGetSubtreeVarsUsage(), SCIPexprgraphGetSumTreesNSummands(), SCIPexprgraphGetSumTrees()
1012 
1013 Constraint handlers for NLP:
1014 - removed SCIPincludeConshdlrAbspower()
1015 - deprecated SCIPcreateConsAbspower() and SCIPcreateConsBasicAbspower(), use SCIPcreateConsBasicSignpowerNonlinear() instead
1016 - deprecated SCIPgetNlRowAbspower(), use SCIPgetNlRowNonlinear() instead
1017 - removed SCIPgetNonlinearVarAbspower(), SCIPgetLinearVarAbspower(), SCIPgetExponentAbspower(), SCIPgetOffsetAbspower(), SCIPgetCoefLinearAbspower(), SCIPgetLhsAbspower(), SCIPgetRhsAbspower()
1018 - removed SCIPgetViolationAbspower(), use SCIPgetAbsViolationNonlinear() instead
1019 - removed SCIPisConvexAbspower(), use SCIPhasExprCurvature() instead
1020 - removed SCIPincludeConshdlrBivariate(), SCIPcreateConsBivariate(), SCIPcreateConsBasicBivariate()
1021 - removed SCIPgetLinearVarBivariate(), SCIPgetLinearCoefBivariate(), SCIPgetExprtreeBivariate(), SCIPgetLhsBivariate(), SCIPgetRhsBivariate()
1022 - removed SCIPincludeConshdlrQuadratic(), use SCIPincludeNlhdlrQuadratic() instead
1023 - removed SCIPincludeQuadconsUpgrade()
1024 - removed SCIPcreateConsQuadratic2(), SCIPcreateConsBasicQuadratic2()
1025 - deprecated SCIPcreateConsBasicQuadratic(), use SCIPcreateConsBasicQuadraticNonlinear() instead
1026 - deprecated SCIPcreateConsBasicQuadratic(), use SCIPcreateConsQuadraticNonlinear() instead
1027 - deprecated SCIPaddConstantQuadratic(), use SCIPgetLhsNonlinear() and SCIPgetRhsNonlinear() instead
1028 - deprecated SCIPaddLinearVarQuadratic(), use SCIPaddLinearVarNonlinear() instead
1029 - deprecated SCIPaddQuadVarQuadratic(), use SCIPaddLinearVarNonlinear() and SCIPaddExprNonlinear() instead
1030 - deprecated SCIPaddQuadVarLinearCoefQuadratic(), use SCIPaddLinearVarNonlinear() instead
1031 - deprecated SCIPaddSquareCoefQuadratic(), use SCIPaddExprNonlinear() instead
1032 - deprecated SCIPaddBilinTermQuadratic(), use SCIPaddExprNonlinear() instead
1033 - deprecated SCIPchgLhsQuadratic(), use SCIPgetLhsNonlinear() instead
1034 - deprecated SCIPchgRhsQuadratic(), use SCIPgetRhsNonlinear() instead
1035 - deprecated SCIPgetNlRowQuadratic(), use SCIPgetNlRowNonlinear() instead
1036 - removed SCIPgetNLinearVarsQuadratic(), SCIPgetLinearVarsQuadratic(), SCIPgetCoefsLinearVarsQuadratic(), SCIPgetNQuadVarTermsQuadratic(), SCIPgetQuadVarTermsQuadratic(), SCIPsortQuadVarTermsQuadratic(), SCIPfindQuadVarTermQuadratic(), SCIPgetNBilinTermsQuadratic(), SCIPgetBilinTermsQuadratic(), SCIPgetLhsQuadratic(), SCIPgetRhsQuadratic()
1037 - removed SCIPgetLinvarMayDecreaseQuadratic(), SCIPgetLinvarMayIncreaseQuadratic()
1038 - removed SCIPcheckCurvatureQuadratic() and SCIPisConvexConsQuadratic(), use SCIPcomputeExprQuadraticCurvature() instead
1039 - removed SCIPisConvexQuadratic(), SCIPisConcaveQuadratic()
1040 - removed SCIPgetViolationQuadratic() and SCIPgetFeasibilityQuadratic(), use SCIPgetAbsViolationNonlinear() instead
1041 - removed SCIPisLinearLocalQuadratic(), SCIPaddToNlpiProblemQuadratic()
1042 - removed SCIPchgLinearCoefQuadratic(), SCIPchgSquareCoefQuadratic(), SCIPchgBilinCoefQuadratic()
1043 - renamed SCIPgetNAllBilinearTermsQuadratic() to SCIPgetNBilinTermsNonlinear() and changed argument from SCIP* to SCIP_CONSHDLR*
1044 - renamed SCIPgetAllBilinearTermsQuadratic() to SCIPgetBilinTermsNonlinear() and replaced arguments by SCIP_CONSHDLR* and changed return type to SCIP_CONSNONLINEAR_BILINTERM*
1045 - removed SCIPaddBilinearIneqQuadratic(), use SCIPinsertBilinearTermImplicitNonlinear() instead
1046 - renamed SCIPcreateConsQuadratic() to SCIPcreateConsQuadraticNonlinear() and removed argument stickingatnode
1047 - removed SCIPincludeConshdlrSOC()
1048 - replaced SCIPcreateConsBasicSOC() by SCIPcreateConsBasicSOCNonlinear()
1049 - deprecated SCIPcreateConsSOC(), use SCIPcreateConsBasicSOCNonlinear() instead
1050 - deprecated SCIPgetNlRowSOC(), use SCIPgetNlRowNonlinear() instead
1051 - removed SCIPgetNLhsVarsSOC(), SCIPgetLhsVarsSOC(), SCIPgetLhsCoefsSOC(), SCIPgetLhsOffsetsSOC(), SCIPgetLhsConstantSOC(), SCIPgetRhsVarSOC(), SCIPgetRhsCoefSOC(), SCIPgetRhsOffsetSOC(), use SCIPisSOCNonlinear() instead
1052 - removed SCIPaddToNlpiProblemSOC()
1053 - renamed SCIPincludeNonlinconsUpgrade() to SCIPincludeConsUpgradeNonlinear() and removed nodereform argument
1054 - removed arguments nlinvars, linvars, lincoefs, nexprtrees, exprtrees, nonlincoefs, stickingatnode from SCIPcreateConsNonlinear() and added SCIP_EXPR* argument
1055 - removed arguments nlinvars, linvars, lincoefs, nexprtrees, exprtrees, nonlincoefs from SCIPcreateConsBasicNonlinear() and added SCIP_EXPR* argument
1056 - removed SCIPcreateConsNonlinear2(), SCIPcreateConsBasicNonlinear2()
1057 - removed SCIPsetExprtreesNonlinear(), use SCIPchgExprNonlinear() instead
1058 - removed SCIPaddExprtreesNonlinear()
1059 - removed SCIPgetNLinearVarsNonlinear(), SCIPgetLinearVarsNonlinear(), SCIPgetLinearCoefsNonlinear()
1060 - removed SCIPgetNExprtreesNonlinear(), SCIPgetExprtreesNonlinear(), SCIPgetExprtreeCoefsNonlinear(), SCIPgetExprgraphNodeNonlinear(), use SCIPgetExprNonlinear() instead
1061 - removed argument scip from SCIPgetLhsNonlinear() and SCIPgetRhsNonlinear()
1062 - removed SCIPcheckCurvatureNonlinear(), SCIPgetCurvatureNonlinear(), and SCIPgetExprtreeCurvaturesNonlinear(), use SCIPhasExprCurvature() instead
1063 - renamed SCIPgetViolationNonlinear() to SCIPgetAbsViolationNonlinear()
1064 - added arguments var and coef to SCIPgetLinvarMayDecreaseNonlinear() and SCIPgetLinvarMayIncreaseNonlinear() and changed return type to void
1065 - removed SCIPgetExprgraphNonlinear()
1066 - removed SCIPcomputeHyperplaneThreePoints(), use SCIPcomputeFacetVertexPolyhedralNonlinear() instead
1067 
1068 ### New API functions
1069 
1070 - added SCIPallocClearMemory() and SCIPallocClearBlockMemory() to allocate a chunk of (block) memory
1071  that is initialized to zeros
1072 - New internal functions for changing the default values of parameters:
1073  SCIPparamsetSetDefaultLongint(), SCIPparamsetSetDefaultReal(), SCIPparamsetSetDefaultChar(),
1074  SCIPparamsetSetDefaultString() and
1075  SCIPparamSetDefaultLongint(), SCIPparamSetDefaultReal(), SCIPparamSetDefaultChar(),
1076  SCIPparamSetDefaultString()
1077 - new internal function SCIPisPackingPartitioningOrbitope() to check whether an orbitope is of
1078  packing or partitioning type
1079 - new internal function SCIPcomputeOrbitVar() to compute the symmetry orbit of a variable
1080 - added SCIPcalcFibHash(SCIP_Real) to hash a floating-point value to an unsigned integer
1081 - added SCIPcomputeArraysIntersectionPtr() to compute intersection of two sorted arrays of pointers
1082 - new function SCIPinterruptLP() (intended to be called from a different thread) that interrupts ongoing lp solve
1083 - added SCIPcreateConsIndicatorGeneric() and SCIPcreateConsIndicatorGenericLinCons()
1084  which copy the interface of SCIPcreateConsIndicator() and SCIPcreateConsIndicatorLinCons() and
1085  add an activeone argument to specify whether the indicator constraint should be activated on 0 or 1.
1086  SCIPcreateConsIndicator() also adds a lessthanineq flag to choose whether the linear constraint is a less-than or greater-than inequality.
1087 - added SCIPmarkDoNotAggrVar() to mark that a variable should not be aggregated
1088 - added SCIPdoNotAggrVar() to query whether a variable should not be aggregated
1089 - added SCIPdecompGetNBorderVars() and SCIPdecompGetNBorderConss() to get number of border variables/constraints
1090 - added SCIPdecompGetVarsSize() and SCIPdecompGetConssSize() to get variable/constraint size for each block of a decomposition
1091 - added SCIPincludeDialogDefaultBasic()
1092 - added SCIPintervalAreDisjointEps(), SCIPintervalIntersectEps()
1093 - added SCIPintervalEntropy()
1094 - added SCIPintervalPropagateWeightedSum()
1095 - added SCIPcalcRootNewton()
1096 - added SCIPvarGetImplicVarBounds()
1097 - added SCIPcreateRowprep(), SCIPfreeRowprep(), SCIPcopyRowprep(),
1098  SCIProwprepGetNVars(), SCIProwprepGetVars(), SCIProwprepGetCoefs(), SCIProwprepGetSide(), SCIProwprepGetSidetype(), SCIProwprepIsLocal(), SCIProwprepGetName(), SCIProwprepGetNModifiedVars(), SCIProwprepGetModifiedVars(),
1099  SCIProwprepReset(), SCIProwprepAddSide(), SCIProwprepAddConstant(), SCIProwprepSetSidetype(), SCIProwprepSetLocal(), SCIProwprepRecordModifications(),
1100  SCIPprintRowprep(), SCIPprintRowprepSol(), SCIPensureRowprepSize(), SCIPaddRowprepTerm(), SCIPaddRowprepTerms(), SCIPgetRowprepViolation(), SCIPisRowprepViolationReliable(),
1101  SCIPmergeRowprepTerms(), SCIPcleanupRowprep(), SCIPcleanupRowprep2(), SCIPscaleupRowprep(), SCIPscaleRowprep(),
1102  SCIPgetRowprepRowConshdlr(), SCIPgetRowprepRowCons(), SCIPgetRowprepRowSepa()
1103 - added SCIPsetClockEnabled()
1104 - added SCIPisSolveInterrupted() to check whether SCIPinterruptSolve() has been called
1105 - added SCIPgetNPresolRounds()
1106 - added SCIPgetNUnfixedLPCols()
1107 - moved SCIPhistoryGetInferenceSum() and SCIPhistoryGetAvgConflictlength() from internal to public API
1108 
1109 Expression handler:
1110 - added SCIPincludeExprhdlr(), SCIPgetExprhdlrs(), SCIPgetNExprhdlrs(), SCIPfindExprhdlr()
1111 - added SCIPgetExprhdlrVar(), SCIPgetExprhdlrValue(), SCIPgetExprhdlrSum(), SCIPgetExprhdlrProduct(), SCIPgetExprhdlrPower()
1112 - added SCIPexprhdlrSetCopyFreeHdlr(), SCIPexprhdlrSetCopyFreeData(), SCIPexprhdlrSetPrint(), SCIPexprhdlrSetParse(), SCIPexprhdlrSetCurvature(), SCIPexprhdlrSetMonotonicity(), SCIPexprhdlrSetIntegrality(), SCIPexprhdlrSetHash(), SCIPexprhdlrSetCompare(), SCIPexprhdlrSetDiff(), SCIPexprhdlrSetIntEval(), SCIPexprhdlrSetSimplify(), SCIPexprhdlrSetReverseProp(), SCIPexprhdlrSetEstimate()
1113 - added SCIPexprhdlrGetName(), SCIPexprhdlrGetDescription(), SCIPexprhdlrGetPrecedence(), SCIPexprhdlrGetData(), SCIPexprhdlrHasPrint(), SCIPexprhdlrHasBwdiff(), SCIPexprhdlrHasFwdiff(), SCIPexprhdlrHasIntEval(), SCIPexprhdlrHasEstimate(), SCIPexprhdlrHasInitEstimates(), SCIPexprhdlrHasSimplify(), SCIPexprhdlrHasCurvature(), SCIPexprhdlrHasMonotonicity(), SCIPexprhdlrHasReverseProp()
1114 - added SCIPexprhdlrComp()
1115 - added SCIPexprhdlrGetNIntevalCalls(), SCIPexprhdlrGetIntevalTime(), SCIPexprhdlrGetNReversepropCalls(), SCIPexprhdlrGetReversepropTime(), SCIPexprhdlrGetNCutoffs(), SCIPexprhdlrGetNDomainReductions(), SCIPexprhdlrIncrementNDomainReductions(), SCIPexprhdlrGetNEstimateCalls(), SCIPexprhdlrGetEstimateTime(), SCIPexprhdlrGetNBranchings(), SCIPexprhdlrIncrementNBranchings(), SCIPexprhdlrGetNSimplifyCalls(), SCIPexprhdlrGetSimplifyTime(), SCIPexprhdlrGetNSimplifications()
1116 - added SCIPprintExpressionHandlerStatistics()
1117 - added SCIPincludeExprhdlrEntropy(), SCIPcreateExprEntropy(), SCIPisExprEntropy()
1118 - added SCIPincludeExprhdlrErf(), SCIPcreateExprErf(), SCIPisExprErf()
1119 - added SCIPcreateExprAbs(), SCIPincludeExprhdlrAbs(), SCIPisExprAbs()
1120 - added SCIPcreateExprExp(), SCIPincludeExprhdlrExp(), SCIPisExprExp()
1121 - added SCIPcreateExprLog(), SCIPincludeExprhdlrLog(), SCIPisExprLog()
1122 - added SCIPcreateExprPow(), SCIPcreateExprSignpower(), SCIPincludeExprhdlrPow(), SCIPincludeExprhdlrSignpower(), SCIPisExprSignpower(), SCIPgetExponentExprPow(), SCIPisExprPower()
1123 - added SCIPincludeExprhdlrProduct(), SCIPcreateExprProduct(), SCIPgetCoefExprProduct(), SCIPisExprProduct()
1124 - added SCIPincludeExprhdlrSum(), SCIPcreateExprSum(), SCIPsetConstantExprSum(), SCIPappendExprSumExpr(), SCIPmultiplyByConstantExprSum(), SCIPgetCoefsExprSum(), SCIPgetConstantExprSum(), SCIPisExprSum()
1125 - added SCIPincludeExprhdlrSin(), SCIPcreateExprSin(), SCIPincludeExprhdlrCos(), SCIPcreateExprCos(), SCIPisExprSin(), SCIPisExprCos()
1126 - added SCIPincludeExprhdlrValue(), SCIPcreateExprValue(), SCIPgetValueExprValue(), SCIPisExprValue()
1127 - added SCIPincludeExprhdlrVar(), SCIPcreateExprVar(), SCIPgetVarExprVar(), SCIPisExprVar()
1128 - added SCIPincludeExprhdlrVaridx(), SCIPcreateExprVaridx(), SCIPisExprVaridx(), SCIPgetIndexExprVaridx(), SCIPsetIndexExprVaridx()
1129 
1130 Expression:
1131 - added SCIPcaptureExpr(), SCIPreleaseExpr(), SCIPexprGetNUses()
1132 - added SCIPexprGetHdlr(), SCIPexprGetData(), SCIPexprSetData(), SCIPexprGetOwnerData()
1133 - added SCIPevalExpr(), SCIPgetExprNewSoltag(), SCIPexprGetEvalValue(), SCIPexprGetEvalTag()
1134 - added SCIPevalExprGradient(), SCIPevalExprHessianDir(), SCIPexprGetDerivative(), SCIPexprGetDot(), SCIPexprGetBardot(), SCIPexprGetDiffTag()
1135 - added SCIPevalExprActivity(), SCIPexprGetActivity(), SCIPexprGetActivityTag(), SCIPexprSetActivity()
1136 - added SCIPcomputeExprCurvature(), SCIPexprGetCurvature(), SCIPexprSetCurvature()
1137 - added SCIPcomputeExprIntegrality(), SCIPexprIsIntegral(), SCIPexprSetIntegrality()
1138 - added SCIPcheckExprQuadratic(), SCIPfreeExprQuadratic(), SCIPevalExprQuadratic(), SCIPprintExprQuadratic(), SCIPcomputeExprQuadraticCurvature()
1139 - added SCIPexprGetQuadraticData(), SCIPexprGetQuadraticQuadTerm(), SCIPexprGetQuadraticBilinTerm(), SCIPexprAreQuadraticExprsVariables()
1140 - added SCIPcreateExpr(), SCIPcreateExpr2(), SCIPcreateExprQuadratic(), SCIPcreateExprMonomial()
1141 - added SCIPappendExprChild(), SCIPreplaceExprChild(), SCIPremoveExprChildren()
1142 - added SCIPduplicateExpr(), SCIPduplicateExprShallow(), SCIPcopyExpr()
1143 - added SCIPparseExpr()
1144 - added SCIPprintExpr(), SCIPdismantleExpr()
1145 - added SCIPprintExprDotInit(), SCIPprintExprDotInit2(), SCIPprintExprDot(), SCIPprintExprDotFinal(), SCIPshowExpr()
1146 - added SCIPcompareExpr(), SCIPhashExpr()
1147 - added SCIPsimplifyExpr(), SCIPreplaceCommonSubexpressions()
1148 - added SCIPgetExprNVars(), SCIPgetExprVarExprs()
1149 - added SCIPcallExprPrint(), SCIPcallExprCurvature(), SCIPcallExprMonotonicity(), SCIPcallExprEval(), SCIPcallExprEvalFwdiff(), SCIPcallExprInteval(), SCIPcallExprEstimate(), SCIPcallExprInitestimates(), SCIPcallExprSimplify(), SCIPcallExprReverseprop()
1150 - added SCIPexprcurvPowerInv(), SCIPexprcurvMonomialInv()
1151 
1152 Expression iterator:
1153 - added SCIPcreateExpriter(), SCIPfreeExpriter()
1154 - added SCIPexpriterIsInit(), SCIPexpriterInit()
1155 - added SCIPexpriterRestartDFS(), SCIPexpriterSetStagesDFS(), SCIPexpriterGetCurrent(), SCIPexpriterGetStageDFS(), SCIPexpriterGetChildIdxDFS(), SCIPexpriterGetChildExprDFS(), SCIPexpriterGetParentDFS()
1156 - added SCIPexpriterGetCurrentUserData(), SCIPexpriterGetChildUserDataDFS(), SCIPexpriterGetExprUserData(), SCIPexpriterSetCurrentUserData(), SCIPexpriterSetExprUserData(), SCIPexpriterSetChildUserData()
1157 - added SCIPexpriterGetNext(), SCIPexpriterSkipDFS(), SCIPexpriterIsEnd()
1158 - added SCIPexprintHessianSparsity(), SCIPexprintHessian()
1159 
1160 Constraint handlers for NLP:
1161 - added SCIPgetCurBoundsTagNonlinear(), SCIPgetLastBoundRelaxTagNonlinear(), SCIPincrementCurBoundsTagNonlinear()
1162 - added SCIPgetVarExprHashmapNonlinear()
1163 - added SCIPprocessRowprepNonlinear()
1164 - added SCIPassumeConvexNonlinear()
1165 - added SCIPcollectBilinTermsNonlinear(), SCIPgetBilinTermIdxNonlinear(), SCIPgetBilinTermNonlinear(), SCIPevalBilinAuxExprNonlinear(), SCIPinsertBilinearTermExistingNonlinear(), SCIPinsertBilinearTermImplicitNonlinear()
1166 - added SCIPcomputeFacetVertexPolyhedralNonlinear()
1167 - added SCIPgetExprNonlinear()
1168 - added SCIPcheckQuadraticNonlinear(), SCIPchgLhsNonlinear(), SCIPchgRhsNonlinear(), SCIPchgExprNonlinear(), SCIPaddExprNonlinear()
1169 - added SCIPgetRelViolationNonlinear()
1170 - added SCIPgetExprNLocksPosNonlinear(), SCIPgetExprNLocksNegNonlinear(), SCIPgetExprAuxVarNonlinear(), SCIPgetExprNEnfosNonlinear(), SCIPgetExprEnfoDataNonlinear(), SCIPsetExprEnfoAuxValueNonlinear()
1171 - added SCIPgetExprNPropUsesActivityNonlinear(), SCIPgetExprNSepaUsesActivityNonlinear(), SCIPgetExprNAuxvarUsesNonlinear(), SCIPregisterExprUsageNonlinear()
1172 - added SCIPgetExprAbsOrigViolationNonlinear(), SCIPgetExprAbsAuxViolationNonlinear(), SCIPgetExprRelAuxViolationNonlinear()
1173 - added SCIPgetExprBoundsNonlinear(), SCIPtightenExprIntervalNonlinear(), SCIPmarkExprPropagateNonlinear()
1174 - added SCIPaddExprViolScoreNonlinear(), SCIPaddExprsViolScoreNonlinear(), SCIPgetExprViolScoreNonlinear()
1175 - added SCIPgetExprPartialDiffNonlinear(), SCIPgetExprPartialDiffGradientDirNonlinear()
1176 - added SCIPevalExprQuadraticAuxNonlinear()
1177 - added SCIPincludeNlhdlrNonlinear(), SCIPfindNlhdlrNonlinear(), SCIPgetNNlhdlrsNonlinear(), SCIPgetNlhdlrsNonlinear(), SCIPgetNlhdlrExprDataNonlinear()
1178 - added SCIPcreateConsQuadraticNonlinear() and SCIPcreateConsBasicQuadraticNonlinear() to create a nonlinear constraint that is quadratic
1179 - added SCIPcreateConsBasicSignpowerNonlinear() to create a nonlinear constraint that looks like the former abspower or signpower constraints
1180 
1181 Nonlinear Handler:
1182 - added SCIPincludeNlhdlrBilinear(), SCIPgetExprsBilinear(), SCIPgetExprsdataBilinear(), SCIPgetNExprsBilinear(), SCIPaddIneqBilinear()
1183 - added SCIPincludeNlhdlrConvex(), SCIPincludeNlhdlrConcave(), SCIPhasExprCurvature()
1184 - added SCIPincludeNlhdlrDefault()
1185 - added SCIPincludeNlhdlrPerspective()
1186 - added SCIPincludeNlhdlrQuadratic()
1187 - added SCIPincludeNlhdlrQuotient()
1188 - added SCIPincludeNlhdlrSoc(), SCIPisSOCNonlinear(), SCIPfreeSOCArraysNonlinear()
1189 - added SCIPnlhdlrSetCopyHdlr(), SCIPnlhdlrSetFreeHdlrData(), SCIPnlhdlrSetFreeExprData(), SCIPnlhdlrSetInitExit(), SCIPnlhdlrSetProp(), SCIPnlhdlrSetSepa()
1190 - added SCIPnlhdlrGetName(), SCIPnlhdlrGetDesc(), SCIPnlhdlrGetDetectPriority(), SCIPnlhdlrGetEnfoPriority(), SCIPnlhdlrIsEnabled(), SCIPnlhdlrGetData()
1191 - added SCIPnlhdlrHasIntEval(), SCIPnlhdlrHasReverseProp(), SCIPnlhdlrHasInitSepa(), SCIPnlhdlrHasExitSepa(), SCIPnlhdlrHasEnfo(), SCIPnlhdlrHasEstimate()
1192 - added SCIPnlhdlrComp()
1193 
1194 NLPI:
1195 - added SCIPgetNlpiSolverPointer(), SCIPcreateNlpiProblem(), SCIPfreeNlpiProblem(), SCIPgetNlpiProblemPointer(), SCIPaddNlpiVars(), SCIPaddNlpiConstraints(), SCIPsetNlpiObjective(), SCIPchgNlpiVarBounds(), SCIPchgNlpiConsSides(), SCIPdelNlpiVarSet(), SCIPdelNlpiConsSet(), SCIPchgNlpiLinearCoefs(), SCIPchgNlpiExpr(), SCIPchgNlpiObjConstant(), SCIPsetNlpiInitialGuess(), SCIPsolveNlpiParam(), SCIPgetNlpiSolstat(), SCIPgetNlpiTermstat(), SCIPgetNlpiSolution(), SCIPgetNlpiStatistics()
1196 - added SCIPincludeNlpSolverAll()
1197 - added SCIPincludeNlpSolverFilterSQP(), SCIPgetSolverNameFilterSQP(), SCIPgetSolverDescFilterSQP(), SCIPisFilterSQPAvailableFilterSQP()
1198 - added SCIPincludeNlpSolverIpopt()
1199 - added SCIPincludeNlpSolverWorhp()
1200 - added SCIPnlpiOracleChgExpr()
1201 - added SCIPcreateNlpiProblemFromNlRows()
1202 - added SCIPnlpiOracleGetObjectiveConstant()
1203 - added SCIPnlpiOracleIsVarNonlinear(), SCIPnlpiOracleGetVarCounts(), SCIPnlpiOracleIsConstraintNonlinear()
1204 - added SCIPnlpiGetNProblems(), SCIPnlpiGetProblemTime(), SCIPnlpiGetNSolves(), SCIPnlpiGetSolveTime(), SCIPnlpiGetEvalTime(), SCIPnlpiGetNIterations(), SCIPnlpiGetNTermStat(), SCIPnlpiGetNSolStat(), SCIPnlpiMergeStatistics()
1205 - added SCIPmergeNLPIStatistics(), SCIPprintNLPIStatistics()
1206 - added SCIPnlpiOracleResetEvalTime(), SCIPnlpiOracleGetEvalTime()
1207 - added SCIPaddNlpiProblemNlRows()
1208 
1209 Cut Selector:
1210 - added SCIPincludeCutsel(), SCIPincludeCutselBasic(), SCIPsetCutselCopy(), SCIPsetCutselFree(), SCIPsetCutselInit(), SCIPsetCutselExit(), SCIPsetCutselInitsol(), SCIPsetCutselExitsol(), SCIPfindCutsel(), SCIPgetCutsels(), SCIPgetNCutsels(), SCIPsetCutselPriority()
1211 - added SCIPcutselGetName(), SCIPcutselGetData(), SCIPcutselGetDesc(), SCIPcutselGetPriority(), SCIPcutselSetData(), SCIPcutselIsInitialized(), SCIPcutselGetSetupTime(), SCIPcutselGetTime()
1212 
1213 ### Command line interface
1214 ### Interfaces to external software
1215 
1216 - removed GAMS interface (originally in interfaces/gams) and reading capability of gms reader;
1217  the removed interface was a poorly maintained copy of the GAMS/SCIP interface that is available at
1218  https://github.com/coin-or/GAMSlinks
1219 - integrated AMPL interface into main SCIP executable, that is, added possibility to use SCIP executable as solver in AMPL
1220  (AMPL calls solver with name of .nl file and -AMPL as arguments; SCIP will then attempt to solve the problem and write an AMPL solution file)
1221 - the ZIMPL interface has been updated to support ZIMPL 3.4.1;
1222  the minimal required ZIMPL version is now 3.4.1
1223 
1224 ### Changed parameters
1225 
1226 - Extended range of parameter "misc/usesymmetry" from [0,3] to [0,7], changed default from 3 to 5
1227 - deleted parameter "constraints/orbitope/usedynamicprop"
1228 - changed type of parameter "propagating/symmetry/recomputerestart" from SCIP_Bool to int with range [0,2]
1229 - deleted parameter "propagating/symmetry/disableofrestart"
1230 - parameter "heuristics/padm/original" is now an advanced parameter
1231 - removed constraints/nonlinear/linfeasshift, constraints/nonlinear/reformulate, constraints/nonlinear/maxexpansionexponent, constraints/nonlinear/sepanlpmincont
1232 - removed constraints/nonlinear/upgrade/abspower
1233 - removed constraints/nonlinear/upgrade/and, use constraints/nonlinear/reformbinprodsand instead
1234 - removed constraints/nonlinear/upgrade/bivariate
1235 - removed constraints/nonlinear/upgrade/quadratic, use nlhdlr/quadratic/enabled instead
1236 - changed default of constraints/nonlinear/maxproprounds from 1 to 10
1237 - replaced constraints/nonlinear/enfocutsremovable by constraints/nonlinear/rownotremovable
1238 - replaced constraints/nonlinear/cutmaxrange by separating/maxcoefratiofacrowprep
1239 - removed constraints/quadratic/sepafreq, constraints/quadratic/propfreq, constraints/quadratic/proptiming, constraints/quadratic/eagerfreq, constraints/quadratic/maxprerounds, constraints/quadratic/delaysepa, constraints/quadratic/delayprop, constraints/quadratic/presoltiming
1240 - removed constraints/quadratic/replacebinaryprod, use constraints/nonlinear/reformbinprodsfac instead
1241 - removed constraints/quadratic/empathy4and, use constraints/nonlinear/reformbinprodsand instead
1242 - removed constraints/quadratic/binreforminitial, constraints/quadratic/binreformbinaryonly, constraints/quadratic/binreformmaxcoef
1243 - removed constraints/quadratic/cutmaxrange, constraints/quadratic/mincurvcollectbilinterms, constraints/quadratic/linearizeheursol, constraints/quadratic/checkcurvature, constraints/quadratic/checkfactorable, constraints/quadratic/checkquadvarlocks, constraints/quadratic/linfeasshift
1244 - removed constraints/quadratic/maxdisaggrsize, constraints/quadratic/disaggrmergemethod, constraints/quadratic/maxproprounds, constraints/quadratic/maxproproundspresolve, constraints/quadratic/enfolplimit, constraints/quadratic/sepanlpmincont, constraints/quadratic/enfocutsremovable
1245 - removed constraints/quadratic/gaugecuts, constraints/quadratic/interiorcomputation, constraints/quadratic/projectedcuts, constraints/quadratic/branchscoring, constraints/quadratic/usebilinineqbranch, constraints/quadratic/bilinineqmaxseparounds,
1246 - removed constraints/quadratic/minscorebilinterms, use nlhdlr/bilinear/enabled instead
1247 - removed constraints/quadratic/upgrade/linear, constraints/quadratic/upgrade/abspower, constraints/quadratic/upgrade/bivariate, constraints/quadratic/upgrade/bounddisjunction
1248 - removed constraints/quadratic/upgrade/soc, use nlhdlr/soc/enabled instead
1249 - renamed constraints/quadratic/upgrade/setppc to constraints/nonlinear/upgrade/setppc
1250 - removed constraints/abspower/sepafreq, constraints/abspower/propfreq, constraints/abspower/proptiming, constraints/abspower/eagerfreq, constraints/abspower/maxprerounds, constraints/abspower/delaysepa, constraints/abspower/delayprop, constraints/abspower/presoltiming
1251 - removed constraints/abspower/cutmaxrange, constraints/abspower/projectrefpoint, constraints/abspower/preferzerobranch, constraints/abspower/branchminconverror, constraints/abspower/addvarboundcons, constraints/abspower/linfeasshift, constraints/abspower/dualpresolve, constraints/abspower/sepainboundsonly, constraints/abspower/sepanlpmincont, constraints/abspower/enfocutsremovable
1252 - removed constraints/bivariate/sepafreq, constraints/bivariate/propfreq, constraints/bivariate/proptiming, constraints/bivariate/eagerfreq, constraints/bivariate/maxprerounds, constraints/bivariate/delaysepa, constraints/bivariate/delayprop, constraints/bivariate/presoltiming
1253 - removed constraints/bivariate/cutmaxrange, constraints/bivariate/linfeasshift, constraints/bivariate/maxproprounds, constraints/bivariate/ninitlprefpoints, constraints/bivariate/enfocutsremovable
1254 - removed constraints/soc/sepafreq, constraints/soc/propfreq, constraints/soc/proptiming, constraints/soc/eagerfreq, constraints/soc/maxprerounds, constraints/soc/delaysepa, constraints/soc/delayprop, constraints/soc/presoltiming
1255 - removed constraints/soc/projectpoint, constraints/soc/nauxvars, constraints/soc/glineur, constraints/soc/sparsify, constraints/soc/sparsifymaxloss, constraints/soc/sparsifynzgrowth, constraints/soc/linfeasshift, constraints/soc/nlpform, constraints/soc/sepanlpmincont, constraints/soc/enfocutsremovable, constraints/soc/disaggregate
1256 - removed constraints/soc/generalsocupgrade, use nlhdlr/soc/compeigenvalues instead
1257 - changed default of presolving/qpkktref/maxrounds from -1 to 0
1258 - changed default of propagating/obbt/onlynonconvexvars from FALSE to TRUE
1259 - changed default of heuristics/subnlp/resolvetolfactor from 0.001 to 1.0
1260 - removed heuristics/subnlp/nlpoptfile, use nlpi/ipopt/optfile instead
1261 - removed separating/convexproj/nlptimelimit
1262 - removed separating/gauge/nlptimelimit
1263 - removed heuristics/subnlp/nlptimelimit and heuristics/subnlp/nlpiterlimit
1264 - removed heuristics/subnlp/resolvetolfactor and heuristics/subnlp/resolvefromscratch
1265 - changed default of heuristics/subnlp/itermin to 20
1266 - renamed heuristics/subnlp/iteroffset to heuristics/subnlp/nodesoffset
1267 - renamed heuristics/subnlp/iterquotient to heuristics/subnlp/nodesfactor
1268 - removed heuristics/subnlp/runalways, use heuristics/subnlp/nodesoffset=INT_MAX and heuristics/subnlp/successrateexp = 0.0 instead
1269 - removed heuristics/subnlp/minimprove, heuristics/multistart/nlpminimpr
1270 - Removed parameters for strongcg separator: separating/strongcg/..., i.e.,
1271  maxrounds, maxroundsroot, maxsepacutsroot, maxsepacuts, dynamiccuts. One can control the
1272  strongcg behavior throught the parameters of sepa_gomory.
1273 - renamed separating/{minortho,minorthoroot,objparalfac,intsupportfac} to cutselection/hybrid/{minortho,minorthoroot,objparalweight,intsupportweight}
1274 
1275 ### New parameters
1276 
1277 - It is now possible to add orbitope constraints to handle symmetries even if not all variables
1278  in a component of the symmetry group are binary. This feature can be enabled using the
1279  parameter "propagating/symmetry/onlybinorbitope".
1280 
1281 - new parameter "propagating/symmetry/sstleaderrule" to select a rule for selecting the
1282  leader in SST cuts
1283 - new parameter "propagating/symmetry/ssttiebreakrule" to select a tiebreak rule for selecting the
1284  leader in SST cuts
1285 - new parameter "propagating/symmetry/sstleadervartype" to select the possible variable types
1286  for a leader in SST cuts
1287 - new parameter "propagating/symmetry/addconflictcuts" to control whether SST cuts are added if
1288  a binary leader variable is in conflict with a variable in its orbit
1289 - new parameter "propagating/symmetry/sstaddcuts" to control whether SST cuts are added
1290 - new parameter "propagating/symmetry/sstmixedcomponents" to control whether SST cuts are added
1291  if a symmetry component contains variables of different types
1292 - new parameter "propagating/symmetry/detectsubgroups" to search for orbitopes defined by subgroups
1293 - new parameter "propagating/symmetry/addweaksbcs" to add Schreier Sims cuts for a single
1294  variable orbit in case an orbitope subgroup is detected
1295 - new parameter "propagating/symmetry/addstrongsbcs" to add symretope facets for a single
1296  variable orbit on which the symmetry group acts like a symmetric group
1297 - new parameter "propagating/symmetry/maxnconsssubgroup" to control up to which number of
1298  constraints subgroups are detected
1299 - new parameter "propagating/symmetry/preferlessrows" to control whether orbitopes with
1300  smallest number of rows shall be computed by the subgroup detection heuristic
1301 - new parameter "propagating/symmetry/usedynamicprop" to control if rows of full orbitope
1302  shall be ordered dynamically in propagation
1303 - new parameter "separating/filtercutpoolrel" to control whether cutpool uses
1304  a dynamic strategy to separate only cuts with high relative efficacy
1305 - if run from AMPL: display/statistics to enable printing detailed solve statistics after solve
1306 - if run from AMPL: display/logfile to specify name of file to write SCIP log to (additionally to writing to stdout)
1307 - constraints/nonlinear/propauxvars, constraints/nonlinear/varboundrelax, constraints/nonlinear/varboundrelaxamount, constraints/nonlinear/conssiderelaxamount
1308 - constraints/nonlinear/vpmaxperturb, constraints/nonlinear/vpadjfacetthresh, constraints/nonlinear/vpdualsimplex
1309 - constraints/nonlinear/bilinmaxnauxexprs, constraints/nonlinear/forbidmultaggrnlvar, constraints/nonlinear/checkvarlocks, constraints/nonlinear/violscale
1310 - constraints/nonlinear/reformbinprods, constraints/nonlinear/reformbinprodsand, constraints/nonlinear/reformbinprodsfac
1311 - constraints/nonlinear/tightenlpfeastol, constraints/nonlinear/propinenforce, constraints/nonlinear/weakcutthreshold, constraints/nonlinear/strongcutmaxcoef, constraints/nonlinear/strongcutefficacy, constraints/nonlinear/forcestrongcut, constraints/nonlinear/enfoauxviolfactor, constraints/nonlinear/weakcutminviolfactor
1312 - constraints/nonlinear/branching/aux, constraints/nonlinear/branching/external, constraints/nonlinear/branching/highviolfactor, constraints/nonlinear/branching/highscorefactor, constraints/nonlinear/branching/violweight, constraints/nonlinear/branching/dualweight, constraints/nonlinear/branching/pscostweight, constraints/nonlinear/branching/domainweight, constraints/nonlinear/branching/vartypeweight, constraints/nonlinear/branching/scoreagg, constraints/nonlinear/branching/violsplit, constraints/nonlinear/branching/pscostreliable
1313 - constraints/nonlinear/linearizeheursol
1314 - nlhdlr/default/enabled
1315 - nlhdlr/convex/enabled, nlhdlr/convex/detectsum, nlhdlr/convex/extendedform, nlhdlr/convex/cvxquadratic, nlhdlr/convex/cvxsignomial, nlhdlr/convex/cvxprodcomp, nlhdlr/convex/handletrivial
1316 - nlhdlr/concave/enabled, nlhdlr/concave/detectsum, nlhdlr/concave/cvxquadratic, nlhdlr/concave/cvxsignomial, nlhdlr/concave/cvxprodcomp, nlhdlr/concave/handletrivial
1317 - nlhdlr/bilinear/enabled, nlhdlr/bilinear/useinteval, nlhdlr/bilinear/usereverseprop, nlhdlr/bilinear/maxseparoundsroot, nlhdlr/bilinear/maxseparounds, nlhdlr/bilinear/maxsepadepth
1318 - nlhdlr/perspective/enabled, nlhdlr/perspective/maxproprounds, nlhdlr/perspective/mindomreduction, nlhdlr/perspective/minviolprobing, nlhdlr/perspective/probingonlyinsepa, nlhdlr/perspective/probingfreq, nlhdlr/perspective/convexonly, nlhdlr/perspective/tightenbounds, nlhdlr/perspective/adjrefpoint
1319 - nlhdlr/quadratic/enabled, nlhdlr/quadratic/useintersectioncuts, nlhdlr/quadratic/usestrengthening, nlhdlr/quadratic/useboundsasrays, nlhdlr/quadratic/ncutslimit, nlhdlr/quadratic/ncutslimitroot, nlhdlr/quadratic/maxrank, nlhdlr/quadratic/mincutviolation, nlhdlr/quadratic/minviolation, nlhdlr/quadratic/atwhichnodes, nlhdlr/quadratic/nstrengthlimit, nlhdlr/quadratic/ignorebadrayrestriction, nlhdlr/quadratic/ignorehighre
1320 - nlhdlr/quotient/enabled
1321 - nlhdlr/soc/enabled, nlhdlr/soc/mincutefficacy, nlhdlr/soc/compeigenvalues
1322 - propagating/obbt/createlincons
1323 - propagating/symmetry/onlybinarysymmetry
1324 - separating/minor/priority, separating/minor/freq, separating/minor/maxbounddist, separating/minor/delay, separating/minor/expbackoff, separating/minor/maxminorsconst, separating/minor/maxminorsfac, separating/minor/mincutviol, separating/minor/maxrounds, separating/minor/maxroundsroot, separating/minor/ignorepackingconss
1325 - separating/rlt/priority, separating/rlt/freq, separating/rlt/maxbounddist, separating/rlt/delay, separating/rlt/expbackoff, separating/rlt/maxncuts, separating/rlt/maxunknownterms, separating/rlt/maxusedvars, separating/rlt/maxrounds, separating/rlt/maxroundsroot, separating/rlt/onlyeqrows, separating/rlt/onlycontrows, separating/rlt/onlyoriginal, separating/rlt/useinsubscip, separating/rlt/useprojection, separating/rlt/detecthidden, separating/rlt/hiddenrlt, separating/rlt/addtopool, separating/rlt/goodscore, separating/rlt/badscore, separating/rlt/objparalweight, separating/rlt/efficacyweight, separating/rlt/dircutoffdistweight, separating/rlt/goodmaxparall, separating/rlt/maxparall
1326 - separating/interminor/usestrengthening, separating/interminor/usebounds, separating/interminor/mincutviol, separating/interminor/maxrounds, separating/interminor/maxroundsroot
1327 - table/cons_nonlinear/active, table/nlhdlr/active, table/exprhdlr/active, table/nlpi/active, table/nlhdlr_bilinear/active, table/nlhdlr_quadratic/active
1328 - expr/log/minzerodistance, expr/pow/minzerodistance
1329 - benders/default/maxslackvarcoef to specify maximal coefficient for slack variables; if exceeded, slack variables are fixed to zero
1330 - nlpi/ipopt/optfile to specify name of Ipopt options file to use for every solve with Ipopt
1331 - nlpi/ipopt/print_level, nlpi/ipopt/hsllib, nlpi/ipopt/pardisolib, nlpi/ipopt/linear_solver, nlpi/ipopt/linear_system_scaling, nlpi/ipopt/nlp_scaling_method, nlpi/ipopt/mu_strategy, nlpi/ipopt/hessian_approximation
1332 - nlpi/ipopt/warm_start_push
1333 - timing/nlpieval
1334 - heuristics/subnlp/iterinit, heuristics/subnlp/ninitsolves, heuristics/subnlp/successrateexp
1335 - heuristics/subnlp/expectinfeas, heuristics/subnlp/opttol, heuristics/subnlp/feastolfactor
1336 - heuristics/subnlp/presolveemphasis, heuristics/subnlp/setcutoff
1337 - new parameters "branching/inference/conflictprio" and "branching/inference/cutoffprio" that allow
1338  using the different score criteria in inference branching hierarchically
1339 - new parameters "heuristics/alns/nodesquotmin", "heuristics/alns/maxcallssamesol" and "heuristics/alns/initduringroot"
1340  to control neighborhoods in ALNS
1341 - new parameter "benders/default/benderscut/optimality/mir" to control whether mixed-integer rounding procedure is applied to Benders optimality cuts
1342 - new parameter "misc/avoidmemout" to try to avoid running into memory limit
1343 - cutselection/hybrid/dircutoffdistweight, cutselection/hybrid/efficacyweight, cutselection/hybrid/intsupportweight, cutselection/hybrid/objparalweight, cutselection/hybrid/priority
1344 - new parameter "decomposition/disablemeasures" to disable expensive measures in SCIPcomputeDecompStats()
1345 - new parameter "presolving/milp/probfilename" filename to write the problem to a file before MILP presolving starts
1346 
1347 ### Data structures
1348 
1349 - removed quadratic terms from NLROWs
1350 - removed SCIP_NLPPAR_INFINITY from SCIP_NLPPARAM enum
1351 - added types SYM_OPTYPE, SYM_CONSTTYPE, SYM_RHSTYPE, SYM_EXPRDATA
1352 - removed class SCIPInterval
1353 - removed enum SCIP_EXPROP
1354 - removed union SCIP_EXPROPDATA, added SCIP_EXPRDATA
1355 - removed struct SCIP_EXPRTREE, use SCIP_EXPR instead
1356 - removed structs SCIP_QUADELEM, SCIP_EXPRDATA_QUADRATIC, SCIP_EXPRDATA_MONOMIAL, SCIP_EXPRDATA_POLYNOMIAL, SCIP_EXPRDATA_USER
1357 - removed structs SCIP_EXPRGRAPHNODE, SCIP_EXPRGRAPH
1358 - removed type SCIP_EXPRBOUNDSTATUS
1359 - removed struct SCIP_USEREXPRDATA
1360 - added enum SCIP_MONOTONE
1361 - added structs SCIP_EXPRHDLR, SCIP_EXPRHDLRDATA
1362 - added union SCIP_EXPRITER_USERDATA
1363 - added enum SCIP_EXPRITER_TYPE
1364 - added structs SCIP_EXPRITERDATA, SCIP_EXPRITER
1365 - added type SCIP_EXPRPRINT_WHAT, struct SCIP_EXPRPRINTDATA
1366 - removed enum SCIP_BIVAR_CONVEXITY
1367 - removed structs SCIP_QUADVAREVENTDATA, SCIP_QUADVARTERM, SCIP_BILINTERM
1368 - added structs SCIP_CONSNONLINEAR_AUXEXPR, SCIP_CONSNONLINEAR_BILINTERM
1369 - added type SCIP_NLHDLR_METHOD
1370 - added structs SCIP_NLHDLR, SCIP_NLHDLRDATA, SCIP_NLHDLREXPRDATA
1371 - enum SCIP_NLPPARAM has been changed to a struct that holds values of parameters for an NLP solve
1372 - removed SCIP_NLPPAR_OPTFILE/optfile from SCIP_NLPPARAM
1373 - added SCIP_NLPTERMSTAT_INTERRUPT to SCIP_NLPTERMSTAT enum; returned from NLP solver if SCIPinterruptSolve() has been called
1374 - renamed SCIP_NLPTERMSTAT_TILIM to SCIP_NLPTERMSTAT_TIMELIMIT
1375 - renamed SCIP_NLPTERMSTAT_ITLIM to SCIP_NLPTERMSTAT_ITERLIMIT
1376 - renamed SCIP_NLPTERMSTAT_LOBJLIM to SCIP_NLPTERMSTAT_LOBJLIMIT
1377 - renamed SCIP_NLPTERMSTAT_NUMERR to SCIP_NLPTERMSTAT_NUMERICERROR
1378 - renamed SCIP_NLPTERMSTAT_EVALERR to SCIP_NLPTERMSTAT_EVALERROR
1379 - renamed SCIP_NLPTERMSTAT_MEMERR to SCIP_NLPTERMSTAT_OUTOFMEMORY
1380 - renamed SCIP_NLPTERMSTAT_LICERR to SCIP_NLPTERMSTAT_LICENSEERROR
1381 - added evaltime to SCIP_NLPSTATISTICS
1382 - added structs SCIP_CUTSEL, SCIP_CUTSELDATA
1383 
1384 Deleted files
1385 -------------
1386 
1387 - interfaces/gams/∗
1388 - interfaces/ampl/∗
1389 - src/nlpi/∗
1390 - src/scip/cons_bivariate.{c,h}
1391 - src/scip/pub_misc_nonlinear.h
1392 - src/scip/misc_nonlinear.c
1393 - src/scip/scip_nonlinear.{c,h}
1394 - src/scip/sepa_strongcg.{h|c}
1395 
1396 Unit tests
1397 ----------
1398 
1399 - added cons/linear/nonlinupgd.c
1400 - added cons/nonlinear/addcons.c
1401 - added cons/nonlinear/bilinhash.c
1402 - added cons/nonlinear/check.c
1403 - added cons/nonlinear/copy.c
1404 - added cons/nonlinear/create_nlrow.c
1405 - added cons/nonlinear/curvature.c
1406 - added cons/nonlinear/glbconss.c
1407 - added cons/nonlinear/hessian.c
1408 - added cons/nonlinear/locks.c
1409 - added cons/nonlinear/nlhdlr.c
1410 - added cons/nonlinear/nlhdlr_bilinear.c
1411 - added cons/nonlinear/nlhdlr_concave.c
1412 - added cons/nonlinear/nlhdlr_convex.c
1413 - added cons/nonlinear/nlhdlr_perspective.c
1414 - added cons/nonlinear/nlhdlr_quadratic.c
1415 - added cons/nonlinear/nlhdlr_quotient.c
1416 - added cons/nonlinear/nlhdlr_soc.c
1417 - added cons/nonlinear/parse.c
1418 - added cons/nonlinear/presolve.c
1419 - added cons/nonlinear/propagate.c
1420 - added cons/nonlinear/readers.c
1421 - added cons/nonlinear/reformbinprods.c
1422 - added cons/nonlinear/repair.c
1423 - added cons/nonlinear/transform.c
1424 - added cons/nonlinear/vertexpolyhedral.c
1425 - removed cons/nonlinear/getCoeffsAndConstantFromLinearExpr.c
1426 - removed cons/soc/upgrade.c
1427 - added expr/abs/estimation.c
1428 - added expr/commonsubexprs.c
1429 - added expr/compare.c
1430 - added expr/copy.c
1431 - added expr/cos/cos.c
1432 - added expr/cos/estimation.c
1433 - added expr/curvature.c
1434 - added expr/derivative.c
1435 - added expr/entropy/entropy.c
1436 - added expr/entropy/estimation.c
1437 - added expr/eval.c
1438 - added expr/exp/estimation.c
1439 - added expr/free.c
1440 - added expr/getvarexprs.c
1441 - added expr/hash.c
1442 - added expr/hessian.c
1443 - added expr/integrality.c
1444 - added expr/iterator.c
1445 - added expr/log/estimation.c
1446 - added expr/monotonicity.c
1447 - added expr/parse.c
1448 - added expr/pow/estimation.c
1449 - added expr/pow/pow.c
1450 - added expr/product/estimation.c
1451 - added expr/quad.c
1452 - added expr/simplify.c
1453 - added expr/sin/estimation.c
1454 - added expr/sin/sin.c
1455 - added expr/sum/estimation.c
1456 - added nlpi/exprinterpret.c
1457 - speedup test nlpi:solveQP in nlpi/nlpi.c
1458 - added test projection:transitivity in prob/obbt.c
1459 - added reader/nl.c
1460 - added test intervalarith:sincos in scip/intervalarith.c
1461 - added sepa/minor.c
1462 - added sepa/rlt/cuts.c
1463 - added sepa/rlt/product_detection.c
1464 - added sepa/rlt/separation.c
1465 - added tests test_compute_symmetry:expr{1,2,3,4} in symmetry/compute.c
1466 
1467 Testing
1468 -------
1469 
1470 Build system
1471 ------------
1472 
1473 - the separate NLPI library has been integrated into the main SCIP library;
1474  uses of NLPILIBFILE or NLPILIBSRC in Makefiles that use make/make.project
1475  should be removed
1476 
1477 ### Cmake
1478 
1479 - replace flag PARASCIP by THREADSAFE
1480 - option AMPL is now ON by default
1481 - add -D_XOPEN_SOURCE=600 cflag for compilation on systems other than windows
1482 - add compile options directly instead of modifying CMAKE_C_FLAGS and CMAKE_CXX_FLAGS
1483 
1484 ### Makefile
1485 
1486 - prefix PKG_CONFIG_PATH with Ipopt's pkgconfig dir instead of postfixing
1487 - replace flag PARASCIP by THREADSAFE
1488 - flag AMPL is now true by default
1489 - libscip has been renamed to libscipbase and libscipsolver has been renamed to libscip
1490  in order to have the same library names for makefiles and cmake. For downward
1491  compatibility libscipsolver still exists (as a link).
1492 
1493 Fixed bugs
1494 ----------
1495 
1496 - fixed handling of multi-aggregation in cons_symresack and cons_orbisack
1497 - SCIPgetLowerbound() now consistently returns infinity when status is infeasible
1498 - improved the likelihood that a solution that satisfies the nonlinear constraints in the transformed (presolved) problem is also feasible for the original problem
1499 - worked around a problem with derivatives of pow at 0 with non-integer exponents in CppAD
1500 - fixed that setting of feasiblity and optimiality tolerance for NLP relaxation was overwritten with defaults when solving NLP
1501 - fixed variance computation in t-value computation in hypothesis testing of reliability branching
1502 - fixed potential overflow in cuts.c:evaluateLiftingFunctionKnapsack()
1503 - do not transfer dual reductions to main SCIP in sepa_rapidlearning if strong dual reductions are forbidden
1504 - fixed a bug in cons_setppc.c:removeDoubleAndSingletonsAndPerformDualpresolve() which led to wrong variable aggregations
1505 - added missing redundancy check to coefficient tightening routine in cons_varbound that led to wrong variable locks
1506 - added a check of numerics to avoid wrong reductions in cons_linear.c:simplifyInequalities()
1507 - fixed a bug in cons_logicor.c regarding fixed variables that were not removed
1508 - presol_milp.c handles variable fixings, suggested by PaPILO, more carefully to cover all cases that can appear
1509 - fixed several reproducability bugs that led to different solving paths across multiple runs with one SCIP environment
1510 - fixed check of limits/absgap, which was incorrectly applied to the scaled objective of the transformed problem
1511 
1512 Miscellaneous
1513 -------------
1514 
1515 - in LP, use absolute instead of relative tolerances to check whether solutions from LP solver are primal feasible
1516 - when a restart occurs, SCIP now asserts (during EXITSOLVE) that all relaxation-only variables are unlocked and
1517  only captured by the transformed problem.
1518 - Avoid redundant calls to LP solver when LP is already flushed and solved
1519 - In SCIPdebugMsg(), SCIPsetDebugMsg(), SCIPstatDebugMsg() strip directory from filename.
1520 - Recompute activity of rows when checking LP solutions instead of trusting the value given by the LP solver
1521 - The define NPARASCIP has been replaced by SCIP_THREADSAFE
1522 - Parameters are not reset to their default values before activating an emphasis setting; this now allows to combine
1523  different emphasis settings.
1524 - If a lazy bound is set to a value that is tighter than the current global bound, then the global bound is now tightened accordingly.
1525 
1526 Known bugs
1527 ----------
1528 
1529 @page RN70 Release notes for SCIP 7.0
1530 
1531 @section RN703 SCIP 7.0.3
1532 *************************
1533 
1534 Interface changes
1535 -----------------
1536 
1537 ### New API functions
1538 
1539 - added function SCIPwithDebugSol() to determine whether SCIP was compiled with WITH_DEBUG_SOLUTION
1540 
1541 - New function SCIPcreateConsBounddisjunctionRedundant() and SCIPcreateConsBasicBounddisjunctionRedundant() that allow
1542  the input to contain redundant literals.
1543 
1544 ### Changed API functions
1545 
1546 - added __attribute__((format(printf,,,))) to variadic SCIP message printing functions;
1547  this enables warnings about mismatches between format string and variadic function arguments if using GCC.
1548 
1549 ### Interfaces to external software
1550 
1551 - removed MATLAB interface from interfaces/matlab
1552 
1553 Build system
1554 ------------
1555 
1556 - Compilation will now also work in a raw tarball of the scip git repository
1557 
1558 ### Cmake
1559 
1560 - Make find_package more verbose and require packages to be found. Now enabled packages that are not found result in an error.
1561 
1562 Fixed bugs
1563 ----------
1564 
1565 - Fixed numerical bug by creating and checking the empty solution when problem vanishes in presolving.
1566 - Fixed several bugs in reoptimization.
1567 - Fixed bug in cons_bounddisjunction in which a constraint leads to a cutoff.
1568 - Fixed bug in reoptimization by avoiding redundant literals for bound disjunctions.
1569 - Replace wrong usage of CMAKE_BINARY_DIR by PROJECT_BINARY_DIR in CMake system
1570 - Fixed lpi_glop to use absl flag instead of GFlags
1571 - Fixed invalid initialization of limits/softtime parameter in cons_components
1572 - Fixed MIN macro not defined in some cases.
1573 - Safeguard some API methods for querying solving statistics against segmentation faults after SCIPpresolve()
1574 - Fixed unfreed solution in concurrent solving
1575 - Make sure that logicor constraints are enforced/separated if genlogicor is true in cons_indicator.
1576  Thus, do not change constraints/logicor/sepafreq anymore, but output warning.
1577 - Fixed assert that assumed infeasibility cannot occur in presol_boundshift.
1578 - Fixed sign bug during creation of conflict constraints with almost zero left-hand side.
1579 - Disabled call of conflict handler for conflict sets that contain relaxation-only variables.
1580 - Fixed bug in cons_symresack by initializing all constraint data in constrans
1581 - Avoid allowing the upgrade of linear constraints corresponding to indicators in propagation of nodes.
1582 - Fixed bug in computing lex. min/max faces in dynamic orbitope propagation.
1583 - Limit vbounds propagator to one sweep through all bounds per call in order to avoid an infinite loop.
1584 - Fixed mismatches between formatter strings and arguments in calls to SCIP message printing functions.
1585 
1586 Miscellaneous
1587 -------------
1588 
1589 - To avoid performance variablity during reoptimization, the active constraints are now stored in the same order as in the
1590  original problem.
1591 - Added workaround for bug in MSVS 2019 when compiling CppAD source.
1592 - The original order of variables is now only restored after presolve if `randomization/permutevars` is set to FALSE.
1593 
1594 @section RN702 SCIP 7.0.2
1595 *************************
1596 
1597 Features
1598 --------
1599 
1600 - Extended check for valid variable and constraint names in PIP writer.
1601 - Indicator constraints now write the name of the linear constraint in CIP format. This avoids a complicated
1602  name matching during parsing. The old format is still supported.
1603 - The objective scale and offset are now taken into account when reading/writing problems in lp/mps/fzn/pip format.
1604  This often changes the behavior when writing transformed problems.
1605 
1606 Performance improvements
1607 ------------------------
1608 
1609 Examples and applications
1610 -------------------------
1611 
1612 - Add c++ Sudoku example
1613 
1614 Interface changes
1615 -----------------
1616 
1617 ### New and changed callbacks
1618 
1619 ### Deleted and changed API methods
1620 
1621 - deprecated SCIPsetParam(); use SCIPsetIntParam(), SCIPsetRealParam(), etc, instead
1622 
1623 ### New API functions
1624 
1625 - new function SCIPcolGetVarProbindex() for accessing the probindex of a variable corresponding to a column
1626 - added new sorting functions SCIPsortPtrRealRealBoolBool()
1627 
1628 ### Command line interface
1629 
1630 ### Interfaces to external software
1631 
1632 ### Changed parameters
1633 
1634 ### New parameters
1635 
1636 ### Data structures
1637 
1638 Deleted files
1639 -------------
1640 
1641 Unit tests
1642 ----------
1643 
1644 Testing
1645 -------
1646 
1647 Build system
1648 ------------
1649 
1650 ### Cmake
1651 
1652 ### Makefile
1653 
1654 Fixed bugs
1655 ----------
1656 
1657 - Fixed a sign bug occuring for some cases in the computation of the directed cutoff distance
1658 - Fixed overflow in inference information of cumulative constraint handler
1659 - Fixed problem with propfreq == 0 in cons_linear.c
1660 - Fixed aggregation heuristic in sepa_aggregation.c to not use local rows when that is requested nor modifiable rows
1661 - Fixed problem with incompatibility of symmetry handling in Benders decomposition
1662 - Fixed parsing of small number in CIP format of nonlinear constraint
1663 - Fixed problem in upgrading full orbitopes to partitioning orbitopes
1664 - Fixed treatment of negated variables in parsing orbitope constraints
1665 - Fixed potential indexing error in prop_vbounds.c
1666 - Fixed bug in writing fzn format
1667 - Revert to old parameter value when parameter change is rejected in PARAMCHGD callback
1668 - Fixed order of linker flags when building AMPL interface with cmake system.
1669 - Fixed bug with ofsymcomptiming == 0: now symmetry is actually computed
1670 - Improved separation for SOC constraint with multiaggregated variable on right-hand-side.
1671 - Fixed bug in presol_boundshift: do not shift non-active variables
1672 - Fixed bug in domain propagation for SOC constraints with negative coefficient for variable on right-hand-side.
1673 - Fixed bug with multi-aggregated integer variables in cons_xor.
1674 - Fixed bug with changed number of variables in storing relaxation solution in probing/diving.
1675 - Fixed issues with scip statistics
1676 - Fixed issue with multi-aggregated variables
1677 - Fixed issue in with buffer memory in cons_cumulative
1678 
1679 Miscellaneous
1680 -------------
1681 
1682 Known bugs
1683 ----------
1684 
1685 @section RN701 SCIP 7.0.1
1686 *************************
1687 
1688 Build system
1689 ------------
1690 
1691 ### Cmake
1692 
1693 - Fixed cmake module for Ipopt to support Ipopt 3.13
1694 - Added cmake variable BLISS_LIBRARY_DIR to pass a bliss library
1695 - Added warning to require minimal GCC version 4.8
1696 - Renamed FindCriterion cmake findmodule to FindCRITERION
1697 
1698 ### Makefile
1699 
1700 - Updated make/make.project for macOS
1701 - Add SANITZERFLAGS (only OPT=dbg) to LDFLAGS also if SHARED=true (and rename SANITZERFLAGS to SANITIZERFLAGS)
1702 - Fixed GCC version check in make/make.linux.gnu.dbg
1703 
1704 Fixed bugs
1705 ----------
1706 
1707 - Fixed handling of constant term in quadratic objective of pip-reader
1708 - Fixed incorrect value string for parameter estimation/completiontype
1709 - Fixed initialization of first LP which led to wrong output about LPs not resolved correctly
1710 - Fixed bug in SCIPcutpoolClear() function not clearing internal datastructures properly
1711 - Fixed inability to set a value in a solution if it was within epsilon to the current value
1712 - Fixed problems for linking optimized code with debug library of SCIP (and vice versa) by moving debug-only members
1713  to end of SCIP structs
1714 
1715 Miscellaneous
1716 -------------
1717 
1718 - Variables that are marked as relaxation-only are no longer checked against debug solutions if
1719  they are captured by the transformed problem only.
1720 
1721 @section RN700 SCIP 7.0.0
1722 *************************
1723 
1724 Features
1725 --------
1726 
1727 - Using the parameter "propagating/symmetry/recomputerestart" one can now decide to recompute symmetries after a
1728  restart or not. Previously one could just turn off symmetry computation after a restart. If orbital fixing
1729  has found a reduction before the restart occured, symmetries have to be updated to ensure correctness.
1730  To this end, the user can decide via "propagating/symmetry/disableofrestart" whether orbital fixing is disabled or
1731  whether symmetries are recomputed.
1732 
1733 - extended relaxators statistics in solve statistics about information on number of cutoffs, improved bounds, etc.
1734 
1735 - extends SMPS file reader for the stochastic information, the sto files, to read a lower bound for the discrete
1736  scenarios. The lower bound is used when creating the auxiliary variables for Benders' decomposition.
1737 
1738 - extended Benders framework to solve NLPs and generate optimality and feasibility cuts from their solution
1739  when the subproblem is convex nonlinear.
1740 
1741 - extended Benders framework to create copies of Benders decompositions that can be used in a multithreading environment
1742 
1743 - additional functionality has been added to enable the transfer of Benders' decomposition cuts between different SCIP
1744  instances, e.g., when used in UG
1745 
1746 - LP rows (SCIP_ROW) can now store pointer to a constraint from which the row originates
1747 
1748 - Trust region, a new LNS heuristic, has been added to SCIP as both a standalone primal heuristic heur_trustregion.c
1749  and as a neighborhood inside of Adaptive Large Neighborhood Search (heur_alns.c). This heuristic is designed to improve the
1750  heuristic performance of the Benders' decomposition algorithm. It builds upon the successful trust region approaches
1751  applied to Benders' decomposition.
1752 
1753 - Modularity of symmetry handling has been increased. It is now possible to use orbitopes (i.e., polyhedral symmetry
1754  handling techniques) and orbital fixing on the same instance.
1755 
1756 - cut strengthening enabled within the Benders' decomposition framework. This uses a mix of the Improved Magnanti-Wong
1757  method and Kelly's method. The cut strengthening is enabled by setting the paramemter
1758  "benders/<bendersname>/cutstrengthenenabled" to TRUE. The parameters "cutstrengthenmult", "noimprovelimit" and
1759  "corepointperturb" control the behavior of the cut strengthening method. Additionally, the parameter
1760  "cutstrengthenintpoint" allows the user to specify the solution that is used to initialize the core point. The options
1761  are the first LP solution, the first integer feasible solution, a relative interior point, a solution vector of all
1762  ones and a solution vector of all zeros. Also, the core point can be reinitialized after each update to the incumbent
1763  solution.
1764 
1765 - added option to adjust weights of different scores in relpscost (hybrid) branching rule based on degeneracy information
1766  and skip strong branching for very high degeneracy rates
1767 
1768 - added new SCIP_DECOMP* object to store user decompositions. The user can specify one or several decompositions by assigning variable
1769  and/or constraint labels either through the API or by reading a file in DEC format (which is one of the formats that GCG writes).
1770  This format specifies constraint labels, variable labels are inferred from that. The decomposition is transformed after presolving.
1771 - statistics regarding the number of blocks, the largest and smallest blocks, the border, and the constraint graph are printed for the original decomposition,
1772  and for each decomposition after presolving.
1773 - the decomposition can be used as initial decomposition for the Benders functionality of SCIP.
1774 - new subsection "How to provide a problem decomposition" in the SCIP documentation
1775 
1776 - GINS heuristic can make use of a user-provided decomposition labels in two ways:
1777  1. by selecting a block of variables that maximizes the potential, and randomly selecting a start variable for the neighborhood and/or
1778  2. by selecting an interval of consecutive blocks as neighborhood, until fixing rate is reached. In this case, no variable is randomly selected.
1779 
1780 - extend potential parameter of GINS to allow computation based on local LP solution, as well
1781 
1782 - new primal heuristic Adaptive Diving, which registers all publicly available dive sets from other diving heuristics.
1783  At each call, it selects one of the available dive sets based on the user's score type choice (heuristics/adaptivediving/scoretype).
1784  During the solution process, the heuristics learns online which divesets reach the best score, and executes them more frequently.
1785  The statistic output for Diving heuristics has been extended to incorporate the statistics of each dive set within Adaptive diving.
1786 
1787 - Added new penalty alternating direction method (PADM) primal heuristic that splits the problem into several sub-SCIPs
1788  according to a user-provided decomposition. The sub-SCIPs are solved on an alternating basis until a feasible solution of
1789  the original problem is found.
1790 
1791 - Symmetry handling constraints (cons_orbisack, cons_orbitope, cons_symresack) now have an additional parameter to encode
1792  whether they are model constraints, i.e., define the problem, or whether they are only present to handle symmetries.
1793 
1794 - The symmetry code has been completely restructured. The presolvers presol_symbreak and presol_symmetry as well as the propagator
1795  prop_orbitalfixing have been merged into the single propagator prop_symmetry to avoid storing the same information
1796  multiple times. This propagator is now responsible for adding symmetry handling constraints as well as activating orbital
1797  fixing. Moreover, the new file symmetry.c contains general functions for symmetry computations like orbit computations.
1798 
1799 - Variables can now be marked as "relaxation-only". This flag should be used to introduce new variables that are required
1800  to define a relaxation, but that are not part of any checked constraints. Essentially, these variables should only be used
1801  in the current SCIP solve and disregarded after a restart or in SCIP copies. Hence, these variables are not copied by SCIPcopy and
1802  SCIPgetVarCopy, they are currently not used in conflict constraints, and cuts involving them are not upgraded to linear constraints.
1803  Relaxation-only variables cannot appear in the objective function.
1804 
1805 - The OSiL reader now supports nonlinear expressions of type "signpower".
1806 
1807 - Expressions of form abs(x)^p * x in a nonlinear constraint are now sometimes recognized and handled by abspower constraints.
1808 
1809 - If polyhedral symmetry handling methods are used (cons_orbisack, cons_orbitope, cons_symresack), it is now possible to
1810  recompute symmetries if a restart occured.
1811 
1812 - upgrade some more quadratic constraints to second-order cone constraints, that is,
1813  handle linear binary variables as if squared in simple upgrade and
1814  do not require bounds for variables that have a zero entry in the computed eigenvectors in the non-simple upgrade
1815 
1816 - new variable event when changing the variable type
1817 
1818 - It is no longer necessary to provide a SCIP pointer for the subproblem in SCIPaddBendersSubproblem if custom solving
1819  methods are defined. A NULL pointer can be supplied to SCIPaddBendersSubproblem. In this case, no internal Benders'
1820  cut generation methods can be used.
1821 
1822 - Using the parameter "constraints/symresack/checkmonotonicity" one can now decide to upgrade to packing/partitioning
1823  symresacks even if the underlying permutation is not monotone.
1824 
1825 - New branching rule `vanillafullstrong`, mostly for scientific purpose, with the following features:
1826  1) no cutoff or domain reduction: only branching;
1827  2) idempotent (optional): leave SCIP, as much as possible, in the same state before / after the strong branching calls
1828  - basically, do not update any statistic;
1829  3) donotbranch (optional): do no perform branching. So that the brancher can be called as an oracle only
1830  (on which variable would you branch ? But do not branch please);
1831  4) scoreall (optional): keep scoring variables, even if infeasibility is detected;
1832  5) collectscores (optional): store the candidate scores from the last call, which can then be retrieved by calling SCIPgetVanillafullstrongData();
1833  6) integralcands (optional): consider integral candidates for branching,
1834  i.e., get candidates from SCIPgetPseudoBranchCands() instead of SCIPgetLPBranchCands().
1835 
1836 - If a reference value (misc/referencevalue) is given, the primal-reference and reference-dual integrals are calculated automatically and printed within the SCIP statistics.
1837 
1838 - Locally valid cuts / rows are now considered for dual proof analysis when `conflict/uselocalrows` is set to TRUE.
1839 
1840 - Linking variables in the linking constraint handler (cons_linking.{ch}) can now be integer or continuous. The coefficients of the binary variables are therefore now stored as SCIP_Real.
1841 
1842 - To save memory, it is now possible to remove all variables from the internal symmetry data structures that are
1843  not affected by any symmetry.
1844 
1845 - Allow to filter first variables from orbits and transfer pseudo cost information to variables in orbit
1846 
1847 - Add integration of external MILP presolve library as a SCIP presolver plugin that runs on MILP problems
1848 
1849 - Parallelisation can be used when applying Benders' decomposition. There are two different forms of parallelisation
1850  available. The first is applying Benders' decomposition within a parallel branch-and-bound. This is achieved through
1851  the integration with the UG framework. The second is the use of shared memory parallelisation for solving the Benders'
1852  decomposition subproblems. A priority queue has been added to help with load balancing.
1853 
1854 - The Benders' decomposition framework can handle MINLPs. If a convex relaxation of the MINLP exists, then this is
1855  solved to generate optimality and feasibility cuts. The extensions to the framework are:
1856  - New generic solving methods to solve convex NLP subproblems.
1857  - Modification to benderscut_opt and benderscut_feas to enable the generation of cuts from convex NLPs.
1858  - Addition of benderscut_feasalt to generate feasibility cuts from an alternative subproblem that minimises the
1859  violation of infeasible problems.
1860  - Better handling of subproblem solution results
1861 
1862 - Adds a feasibility phase to the Benders' decomposition subproblem solving methods. The feasibility phase adds slack
1863  variables to each of the constraints to ensure feasibility of the subproblem. A large coefficient is given to these
1864  slack variables in the objective function to penalise constraint violations. The coefficients are progressively
1865  increased until all slack variables take the value 0.0.
1866 
1867 - Improved convexity check for Benders' decomposition subproblems. The constraints of the subproblem are now checked for
1868  convexity in the initialisation of the Benders' decomposition algorithm. This enables the solving of convex NLPs as
1869  Benders' decomposition subproblems.
1870 
1871 - Benders' decomposition can be applied using decomposition supplied in the DEC format. To apply Benders' decomposition
1872  the parameters decomposition/benderslabels and decomposition/applybenders must be set to TRUE.
1873 
1874 - new event handler event_estim.c/h that approximates search tree completion and estimates tree size
1875  to trigger restarts; many approximations of search tree completion and estimation, including WBE, SSG, and tree profile method
1876 - new display column that reports approx. search tree completion during the search, and an overview in the statistics table
1877 - added resources (script, tutorial, test data) to adapt tree size estimation to user instances.
1878 
1879 - Orbital Fixing uses a list of variables that have been fixed globally since the computation of symmetries to filter
1880  symmetries. Previously, some plugins were disabled, which is not necessary anymore.
1881 
1882 - A new presolver "dualsparsify" was added. It tries to combine columns (i.e. variables) to cancel nonzero coefficients in the constraint matrix.
1883 
1884 - The presolver "tworowbnd" was implemented with better performance.
1885 
1886 - To be able to calculate better bounds for the dual variables, the presolver "dualinfer" was extended by the ability to perform convex combinations of continuous columns.
1887 
1888 - allow disabling of pricers during solving process
1889 
1890 - added emphasis setting for numerically challenging instances
1891 
1892 Performance improvements
1893 ------------------------
1894 
1895 - Extended cut presolving by removing variables that been fixed at their bounds
1896 
1897 - Improved branching point selection when branching on externals branching candidates. Instead of using exactly the
1898  LP solution, a point closer to the middle of the variables domain is chosen.
1899 
1900 - Matrix presolvers that do not work on incomplete matrices now skip matrix creation if unsupported constraint types are detected.
1901 
1902 - consLockBenders callback implemented to add down locks on the Benders' decomposition auxiliary variables and
1903  up and down locks per subproblem for all master problem variables. This allows the use of presolving and propagation
1904  with Benders' decomposition.
1905 
1906 - improved performance of orbital fixing in several ways:
1907  store permutations in transposed form to improve cache efficency;
1908  reverse order to speed up filtering of permutations;
1909  handle variables globally fixed to 1 in list;
1910  use event handler to catch global fixings;
1911  speed up orbit computations;
1912  change handling of restarts;
1913  use only permutations that can contribute to a variable's orbit;
1914 
1915 - allow rapid learning at local nodes
1916 
1917 - allow to recompute cut without using fractional values for sepa_cgmip
1918 
1919 - restrict the number of the clique table nonzeros relative to the number of problem nonzeros, which could be a performance bottleneck.
1920 
1921 - variable fixings of LP face heuristic are now computed earlier; subproblem creation is skipped if not enough variables are fixed.
1922 
1923 - Improved domcol presolver to not require a complete representation of all constraints in the matrix
1924 
1925 - performance improvement of adaptive large neighborhood search heuristic on merely continuous problems. The heuristic
1926  stops if presolving in the sub-SCIP fixes less than 50 % of the current target fixing rate over all variables
1927  (including continuous).
1928 
1929 - reduce memory usage in symmetry detection by a staggered allocation with decreasing overhead for larger instances
1930 
1931 - improved full orbitope propagation using a static implementation or a dynamic reordering of orbitope rows by a global rank function
1932 
1933 - improved detection of packing/partitioning orbitopes
1934 
1935 - enable an in-tree restart if after a reasonable initialization, the estimated size of the remaining tree is large.
1936 
1937 
1938 Examples and applications
1939 -------------------------
1940 
1941 - added methods to set and get hmin and hmax for optcumulative constraints
1942 
1943 Interface changes
1944 -----------------
1945 
1946 ### New and changed callbacks
1947 
1948 - new optional callback `SCIP_DECL_DIVESETAVAILABLE` to check preconditions for this dive set, e.g., if an incumbent solution is available,
1949  which is passed as new argument to SCIPcreateDiveset(). SCIPcreateDiveset() has another new parameter "ispublic".
1950 
1951 - new callback `SCIP_DECL_CONSHDLRCOPY` and `SCIP_DECL_CONSCOPY` in cons_orbisack and cons_symresack
1952 
1953 - new `idempotent` argument to SCIPgetVarStrongbranchInt() and SCIPgetVarStrongbranchFrac(),
1954  so that statistics are not updated during the call. Likewise, new `updatecol` and `updatestat` arguments to SCIPcolGetStrongbranch().
1955 
1956 - callback `SCIP_DECL_CONSHDLRENFOLP` can now also return SCIP_SOLVELP as *result, which indicates to the SCIP core that the LP relaxation
1957  should be solved again because the primal feasibility tolerance of the LP has been tightened (using SCIPsetLPFeastol())
1958 
1959 - extension of SCIP_PQUEUE by a new callback SCIP_DECL_PQUEUEELEMCHGPOS to catch swaps as well as functionality to delete arbitrary elements from the priority queue.
1960 
1961 ### Deleted and changed API methods
1962 
1963 - LPI:
1964  + now for all lp interfaces consistent requirements on SCIP_LPPAR:
1965  LPITLIM and BARRIERCONVTOL positive or zero; FEASTOL, DUALFEASTOL, LPTILIM strictly positive
1966  + now projecting SCIP_LPPAR values on feasible values for each lp interface
1967  + add interface to Glop
1968  + fixed mapping between scaling parameter values in Gurobi LPI lpi_grb
1969 - Symmetry:
1970  + removed method SCIPseparateCoversOrbisack() in cons_orbisack.h since the orbitope constraint
1971  handler has its own implementation of this routine with advanced features now
1972  + renamed SCIPgetGeneratorsSymmetry() to SCIPgetSymmetry() and removed two arguments
1973  + extended method SCIPgetSymmetry(): It is possible to access both the original and
1974  transposed permutations matrix as well as the (independent symmetry) components of a permutation group now.
1975  + arguments of functions SCIPcreateConsOrbisack(), SCIPcreateConsBasicOrbisack(), SCIPcreateConsOrbitope(),
1976  SCIPcreateConsBasicOrbitope(), SCIPcreateConsSymresack(), SCIPcreateConsBasicSymresack(), and SCIPcreateSymbreakCons() extended
1977  by "ismodelcons" to encode whether the constraints are model constraints or not
1978  + the function SCIPgetSymmetry() no longer accepts the parameter recompute, but has parameter permvarmap as new input
1979  + removed SCIPgetPermvarsObjSymmetry(), SCIPsetSymmetryComponentblocked(), SCIPgetSymmetryComponentblocked(),
1980  SCIPgetSyminfoGloballyFixedVars(), SCIPcomputeGroupOrbitsSymbreak, SCIPincludePresolSymmetry(),SCIPincludePresolSymbreak(),
1981  and SCIPincludePropOrbitalfixing()
1982  + add function SCIPcomputeOrbitsComponentsSym() to compute orbits without filtering permutations and indices of orbits for each variable
1983 - SCIPallowObjProp() and SCIPallowDualReds() are deprecated and replaced by SCIPallowWeakDualReds() and SCIPallowStrongDualReds(), respectively
1984 - Benders' decomposition
1985  + changed SCIPstoreBenderscutCut() in scip_benders.c to SCIPstoreBendersCut(). Where this function used to take a
1986  SCIP_BENDERSCUT pointer, it now accepts a SCIP_BENDERS pointer.
1987  + the functions SCIPsolveBendersSubproblem() no longer accepts the parameter type. The type is not a necessary
1988  argument for the subproblem solving method.
1989  + arguments of functions SCIPbendersSolveSubproblemLP(), SCIPbendersSolveSubproblemCIP(), and SCIPbendersOnlyCheckConvexRelax() changed
1990  - removed SCIPbenderscutGetNAddedCuts() and SCIPbenderscutGetAddedCutData()
1991 
1992 
1993 ### New API functions
1994 
1995 - new argument "onlyifcomplete" in SCIPmatrixCreate() to skip matrix creation right after detecting unsupported constraint types
1996  and new arguments to count statistics when doing a clean-up of inactive variables in the constraints before building the matrix
1997 
1998 - new argument "threadsafe" in SCIPcopy(), SCIPcopyConsCompression(), SCIPcopyOrig(), SCIPcopyOrigConsCompression and
1999  SCIPcopyBenders(). This argument must only be set to TRUE if the source and target SCIP instances are to be solved in
2000  parallel. Setting this argument to TRUE has a performance cost.
2001 
2002 - new argument "append" in SCIPsetModifiedDefaultSettingsIpopt()
2003 - functions SCIPclearRelaxSolVals(), SCIPsetRelaxSolVal(), SCIPsetRelaxSolVals(), SCIPsetRelaxSolValsSol(), and SCIPmarkRelaxSolValid()
2004  receive an additional argument "relax" to store the relaxation handler as creator of the relaxation solution.
2005 
2006 - LP:
2007  - SCIProwGetOriginCons() now returns a SCIP_CONS* instead of a SCIP_CONSHDLR*, use SCIProwGetOriginConshdlr() for the previous behavior
2008  - SCIPcreateRowCons() and SCIPcreateEmptyRowCons() now expect a SCIP_CONS* instead of a SCIP_CONSHDLR*,
2009  use SCIPcreateRowConshdlr() and SCIPcreateEmptyRowConshdlr(), respectively, for the previous behavior
2010  - deprecated SCIPlpfeastol() and SCIPchgLpfeastol(), use SCIPgetLPFeastol() and SCIPsetLPFeastol()
2011 
2012 - new parameter "divecontext" for every method that queries statistics for a diveset. The context can be used to distinguish between the dive set
2013  as single (standalone) heuristic or within Adaptive Diving.
2014 - new parameters "divecontext" and "iterlim" to SCIPperformGenericDivingAlgorithm() to control in which context (single,adaptive) statistics are updated.
2015 
2016 - SCIPcopyVars, SCIPcopy, SCIPcopyConsCompression, and SCIPgetVarCopy do not copy variables that are marked as relaxation-only,
2017  thus it cannot be assumed anymore that each active variable from the master SCIP also has a counterpart in the copy.
2018  SCIPcopy, SCIPcopyConsCompression, and SCIPcopyConss can now return *valid=TRUE if some non-checked and non-enforced constraints were not copied, e.g.,
2019  because they involved relaxation-only variables. Thus, a copy is already regarded as valid if all checked or enforced constraints were copied successfully.
2020 
2021 - linking constraint handler:
2022  - changed type of vals argument from int* to SCIP_Real* in SCIPcreateConsLinking() and SCIPcreateConsBasicLinking()
2023  - SCIPgetIntvarLinking() has been renamed to SCIPgetLinkvarLinking().
2024  - changed return value of SCIPgetValsLinking() from int* to SCIP_Real*.
2025  - new method SCIPgetBinvarsDataLinking().
2026 
2027 - SCIPbendersCheckSubproblemOptimality() now returns a boolean indicating whether the subproblem is optimal or not.
2028  Previously this result was returned through a parameter. The change was required to facilitate the integration with
2029  the UG framework.
2030 
2031 - deleted SCIPcombineTwoInt(), SCIPcombineThreeInt(), SCIPcombineFourInt(); use the appropriate SCIPhashTwo(), ..., SCIPhashSeven() method instead
2032 
2033 - SCIPsetupBendersSubproblem takes a parameter of the enforcement type.
2034 
2035 - SCIPcreateNlpiProb takes a hashmap to store the map between the nlrows and the index in the nlrow array.
2036 
2037 ### New API functions
2038 
2039 - SCIPallowWeakDualReds() and SCIPallowStrongDualReds() replace the deprecated SCIPallowObjProp() and SCIPallowDualReds(), respectively
2040 - methods have been added to facilitate the transfer of Benders' decomposition cuts between solvers in UG. These include
2041  SCIPapplyBendersStoredCuts(), SCIPbendersGetNStoredCuts(), SCIPbendersGetStoredCutData() and
2042  SCIPbendersGetStoredCutOrigData().
2043 - added SCIPisConvexAbspower()
2044 - new functions SCIPsolGetType(), SCIPsolGetRelax(), SCIPsolSetRelax(), SCIPsolSetLPRelaxation(), SCIPsolSetStrongbranch(),
2045  SCIPsolSetPseudo to set or query the new type attribute of a primal solution. The type attribute gives information
2046  about the origin of the solution, ie, whether it was created by a relaxation handler,
2047  by the LP relaxation, by strong branching, by the current pseudo solution, or by a primal heuristic.
2048  The meaning of the argument 'heur' in all creation methods for primal solutions such as SCIPcreateSol() stays unchanged.
2049 - added SCIProwGetOriginConshdlr(), SCIPcreateRowConshdlr(), SCIPcreateEmptyRowConshdlr()
2050 - new API functions SCIPsetCommonSubscipParams(), SCIPtranslateSubSol(), and SCIPtranslateSubSols() shared by several Large Neighborhood Search heuristics.
2051 - new API function SCIPgetLPDualDegeneracy() to get two measures for the dual degeneracy of the current LP
2052 - new API functions SCIPdivesetIsAvailable() to check preconditions of a dive set and SCIPdivesetIsPublic() to check if the dive set can be used
2053  by other primal heuristics.
2054 - new API functions SCIPcomputeOrbitsSym(), SCIPcomputeOrbitsFilterSym(), SCIPgetPropertiesPerm(), SCIPdetermineBinvarAffectedSym(),
2055  SCIPdetermineNVarsAffectedSym(), SCIPcomputeComponentsSym(), and SCIPextendSubOrbitope(), SCIPgenerateOrbitopeVarsMatrix() for symmetry computations
2056 - new API functions SCIPvarIsRelaxationOnly() and SCIPvarMarkRelaxationOnly() to query and set, resp., whether a variable is marked as relaxation-only
2057 - new API functions SCIPconshdlrGetNUpdateConss() and SCIPconshdlrGetUpdateConss(), for expert users only
2058 - new API function SCIPgetNConflictDualproofsApplied()
2059 - new API functions SCIPeventGetOldtype() and SCIPeventGetNewtype() for the new event when changing the variable type
2060 - new API function SCIPisConvexConsQuadratic() to check whether a quadratic constraint is convex when a given set of variables would be fixed
2061 - new API functions SCIPgetLPFeastol(), SCIPsetLPFeastol(), and SCIPresetLPFeastol() to get, set, and reset (to the default), respectively, the primal
2062  feasibility tolerance for the LP relaxation
2063 - new API functions SCIPcleanupConss{Linear,Varbound,Setppc,Logicor,Knapsack}() to clean up inactive variables from those types of linear constraints
2064 - new API function SCIPsetBendersSubproblemComp() used to add a custom comparison method for ordering the Benders'
2065  decomposition subproblem solves. The comparison method is used to help with load balancing.
2066 - new API function SCIPgetRowObjParallelism to get the objective parallelism of a row
2067 - new API function SCIPcolGetAge to get the age of a column
2068 - added SCIPhashThree(), SCIPhashFive(), SCIPhashSix(), and SCIPhashSeven() that complement SCIPhashTwo(), SCIPhashFour() to combine 32bit integers to
2069  a 32bit hash value
2070 - new API function SCIPgenerateAndApplyBendersOptCut is used to generate a Benders' optimality cut using the dual
2071  solutions. This function can be supplied vectors for the primal and dual solution for generating an optimality cut.
2072  This avoids the need for a SCIP instance to solve the Benders' decomposition subproblem and generating cuts.
2073 - new API function SCIPconsAddCoef used for adding a coefficient to a linear-type constraint.
2074 - new API functions SCIPconsNonlinearGetRhs, SCIPconsNonlinearGetLhs and SCIPconsNonlinearAddLinearCoef for getting the
2075  RHS and LHS from a nonlinear-type constraint and adding a linear coefficient to the constraint.
2076 - new API function SCIPbendersSolSlackVarsActive for checking whether any slack variables from the feasibility phase are
2077  active in the subproblem solution.
2078 - new API functions SCIPbendersSetSubproblemType and SCIPbendersGetSubproblemType sets and gets the subproblem type.
2079  This is either:
2080  - Convex constraints with continuous variables
2081  - Convex constraints with discrete variables
2082  - Non-convex constraints with continuous variables
2083  - Non-convex constraints with discrete variables
2084 - new API functions SCIPbendersSetSubproblemIsNonlinear() and SCIPbendersSubproblemIsNonlinear() for setting and
2085  identifying whether the Benders' decomposition subproblems contain nonlinear constraints. Similarly, the functions
2086  SCIPbendersSetMasterIsNonlinear() and SCIPbendersMasterIsNonlinear() sets and identifies whether the Benders'
2087  decomposition master problem contains nonlinear constraints.
2088 - new API function SCIPapplyBendersDecomposition for applying Benders' decomposition given a decomposition in the DEC
2089  format
2090 - new API function SCIPwasNodeLastBranchParent to query if a node has been the parent of the most recent branching in the tree
2091 - new API functions SCIPtreemodelInit(), SCIPtreemodelFree(), SCIPtreemodelIsEnabled(), SCIPtreemodelSelectCandidate() related to the new
2092  treemodel way of comparing branching candidates. These functions are only currently used for reliability pscost branching, but they can be used
2093  in other parts of the code.
2094 - New function SCIPcalcChildEstimateIncrease() to compute the increase in the child estimation
2095 - new API functions SCIPisOrbitalfixingEnabled() and SCIPgetSymmetryNGenerators() to check whether orbital fixing is
2096  enabled and to get the number of generators of the current symmetry group, respectively
2097 - new API function SCIPdelNlRow() to remove a row from the NLP
2098 
2099 ### Event system
2100 
2101 - new event type SCIP_EVENTTYPE_NODEDELETE to react on nodes that are about to be deleted from the tree
2102 
2103 ### Changed parameters
2104 
2105 - renamed parameter "propagating/orbitalfixing/enableafterrestart" to ".../symmetry/recomputerestart"
2106 - Parameter "misc/allowdualreds" is now called "misc/allowstrongdualreds"
2107 - Parameter "misc/allowobjprop" is now called "misc/allowweakdualreds"
2108 - changed default values of propagation (new value: 1, old value: 5) and separation frequency (new value: -1, old value: 5) in cons_orbitope.c
2109 - all primal heuristics that use sub-SCIPs are disabled within the heuristics fast emphasis setting
2110 - deleted parameter heuristics/localbranching/useuct, use heuristics/useuctsubscip instead
2111 - changed default value of "presolving/symbreak/detectorbitopes" (new value: TRUE, old value: FALSE)
2112 - extended range of "misc/usesymmetry" (new range: [0,3], old range: [0,2])
2113 - deleted parameter "constraints/orbisack/checkalwaysfeas"
2114 - deleted parameter "constraints/orbitope/checkalwaysfeas"
2115 - deleted parameter "constraints/symresack/checkalwaysfeas"
2116 - deleted parameter "presolving/symmetry/maxgenerators"
2117 - deleted parameter "presolving/symmetry/checksymmetries"
2118 - deleted parameter "presolving/symmetry/displaynorbitvars"
2119 - deleted parameter "presolving/symbreak/conssaddlp"
2120 - deleted parameter "presolving/symbreak/addsymresacks"
2121 - deleted parameter "presolving/symbreak/computeorbits"
2122 - deleted parameter "presolving/symbreak/detectorbitopes"
2123 - deleted parameter "presolving/symbreak/addconsstiming"
2124 - deleted parameter "propagating/orbitalfixing/symcomptiming"
2125 - deleted parameter "propagating/orbitalfixing/performpresolving"
2126 - deleted parameter "propagating/orbitalfixing/recomputerestart"
2127 - changed default value of "heuristics/coefdiving/freq" (old: 10, new: -1)
2128 - changed default value of "heuristics/conflictdiving/freq" (old: -1, new: 10)
2129 - changed default value of "heuristics/conflictdiving/lockweight" (old: 1.0, new: 0.75)
2130 - replaced parameter "numerics/lpfeastol" by "numerics/lpfeastolfactor" to specify which factor should be applied to the SCIP feasibility
2131  tolerance to initialize the primal feasibility tolerance of the LP solver
2132 - enabling aggressive presolving now activates all available presolving plugins,
2133  and decreases the presolving/restartfac parameter correctly with respect to default.
2134 - changed default value of heuristics/rins/nodesquot to 0.3 (was 0.1), to compensate
2135  the removal of a hard coded factor of 3.0 in the code without affecting the default behavior
2136  of the RINS heuristic.
2137 - changed default value of "constraints/quadratic/empathy4and" (old: 0, new: 2)
2138 - changed default value of "propagating/redcost/useimplics" (old: TRUE, new: FALSE)
2139 
2140 ### New parameters
2141 
2142 - the possibility to define the Benders' decomposition auxiliary variables as implicit integer is provided. This
2143  behavior is controlled with an additional parameter in the Benders' decomposition framework.
2144 - added parameter benders/<bendersname>/cutcheck to enable the generation of Benders' decomposition cuts during solution
2145  checking.
2146 - constraints/orbitope/usedynamicprop: the possibility to propagate orbitope constraints by reordering the rows based on the
2147  branching strategy is provided (only possible for non-model constraints)
2148 
2149 - new parameters heuristics/shiftandpropagate/minfixingratelp and heuristics/locks/minfixingratelp to stop the
2150  heuristics after propagating integer fixings if no sufficient fixing of the all variables (including continuous)
2151  could be achieved. These parameters help to avoid solving LP's that are comparable in hardness to the main root LP.
2152 
2153 - Added parameters branching/midpull and branching/midpullreldomtrig to control by how much to move
2154  the branching point for an external branching candidate closer to the middle of the candidates domain. The
2155  default of 0.75 and 0.5, respectively, uses a point that is 75*alpha% closer to the middle of the domain, where
2156  alpha is the relative width of the candidates domain (width of local domain divided by width of global domain),
2157  if the latter is below 0.5, and alpha=1.0 otherwise. That is, with the default settings, a branching point is
2158  chosen closer to the middle of the candidates domain if the variables local domain is still similar to its
2159  global domain, but is chosen closer to the LP solution if the local domain is much smaller than the global
2160  domain.
2161 
2162 - Added parameter lp/minmarkowitz to set the Markowitz stability threshold (range 0.0001 to 0.9999).
2163  High values sacrifice performance for stability.
2164 
2165 - Added parameters benders/<bendersname>/lnsmaxcalls and benders/<bendersname>/lnsmaxcallsroot to the Benders'
2166  decomposition core. These parameters limit the number of Benders' decomposition subproblem checks, for the full
2167  branch-and-bound tree and root node respective, when solving the auxiliary problem of LNS hueristics. These
2168  parameters only have effect if the lnscheck parameter is set to TRUE.
2169 
2170 - Added parameter cons/linear/maxmultaggrquot to limit the maximum coefficient dynamism of an equation on which
2171  multiaggregation is performed. This replaces a compiler define of the same name.
2172  Default value is 1000, smaller values make multiaggregations numerically more stable.
2173 - new global parameter heuristics/useuctsubscip that affects all LNS heuristics using common sub-SCIP parameters
2174 
2175 - new parameter branching/relpscost/degeneracyaware to switch degeneracy-aware hybrid branching
2176 
2177 - new parameter separation/rapidlearning/checkexec to check whether rapid learning is allowed to run locally
2178 - new parameters separation/rapidlearning/check{degeneracy,dualbound,leaves,nsols,obj} to enable checking the respective feature for local rapid learning
2179 - new parameter separation/rapidlearning/maxcalls to limit the number of rapid learning executions
2180 - new parameter separation/rapidlearning/nwaitingnodes to set the number of waiting nodes before the dual bound is checked
2181 - new parameter separation/rapidlearning/mindegeneracy to set the minimal threshold of degenerate basic-variables
2182 - new parameters separation/rapidlearning/minvarconsratio to set the minimal ratio of unfixed variables in relation to basis size
2183 
2184 - new parameters to control the Benders' decomposition two-phase method.
2185  - constraints/benderslp/depthfreq: after the maxdepth is reached, then the two-phase method will only be called at
2186  nodes at a depth divisible by depthfreq.
2187  - constraints/benderslp/stalllimit: after the maxdepth is reached, if there has been no improvement in the dual bound
2188  for stalllimit number of nodes, then the two-phase method is executed for the next fractional LP solution that is
2189  encountered.
2190  - constraints/benderslp/iterlimit: after the root node, only iterlimit fractional LP solutions are used at each node
2191  to generate Benders' decomposition cuts.
2192 
2193 - new parameters for symmetry handling
2194  - new parameter "propagating/symmetry/maxgenerators"
2195  - new parameter "propagating/symmetry/checksymmetries"
2196  - new parameter "propagating/symmetry/displaynorbitvars"
2197  - new parameter "propagating/symmetry/conssaddlp"
2198  - new parameter "propagating/symmetry/addsymresacks"
2199  - new parameter "propagating/symmetry/detectorbitopes"
2200  - new parameter "propagating/symmetry/addconsstiming"
2201  - new parameter "propagating/symmetry/ofsymcomptiming"
2202  - new parameter "propagating/symmetry/performpresolving"
2203  - new parameter "propagating/symmetry/recomputerestart"
2204  - new parameter "constraints/symresack/checkmonotonicity"
2205  - new parameter "propagating/symmetry/compresssymmetries"
2206  - new parameter "propagating/symmetry/compressthreshold"
2207  - new parameter "propagating/symmetry/disableofrestart"
2208  - new parameter "propagating/symmetry/symfixnonbinaryvars"
2209 
2210 - new parameter for enabling shared memory parallelisation for solving Benders' decomposition subproblems. The parameter
2211  benders/<bendersname>/numthreads sets the number of threads used for parallel subproblem solving.
2212 
2213 - new parameters to control enhancements for solving MINLPs by Benders' decomposition
2214  - benders/<bendersname>/execfeasphase: enables the feasibility phase for solving the Benders' decomposition
2215  subproblems
2216  - benders/<bendersname>/slackvarcoef: the initial coefficient of the slack variable for the feasibility phase
2217  - benders/<bendersname>/checkconsconvexity: should the constraints be checked for convexity. This can be set to FALSE
2218  if you are certain that the NLP subproblem is convex.
2219 
2220 - new parameter presolving/clqtablefac (default value 2.0) as limit on number of entries in clique table relative to number of problem nonzeros
2221 
2222 - new parameter conflict/uselocalrows (default: TRUE) to incorporate locally valid cuts / rows for dual proof analysis
2223 
2224 - new return code SCIP_NOTIMPLEMENTED for functions, e.g., in the LPI that have not been implemented (yet)
2225 
2226 - new parameter separating/cgmip/genprimalsols that allows to generate initial primal solutions from Gomory cuts
2227 
2228 - new parameter branching/relpscost/filtercandssym to allow filtering from orbits
2229 
2230 - new parameter branching/relpscost/transsympscost to transfer pseudo cost information to orbit
2231 
2232 - new parameters for tree size estimation and restarts:
2233  - estimation/restarts/restartpolicy (default value n)
2234  - estimation/method (default value c)
2235  - estimation/restarts/restartlimit (default value 1)
2236  - estimation/restarts/minnodes (default value 1000)
2237  - estimation/restarts/countonlyleaves (default value FALSE)
2238  - estimation/restarts/restartfactor (default value 2)
2239  - estimation/coefmonoprog (default value 0.3667)
2240  - estimation/coefmonossg (default value 0.6333)
2241  - estimation/restarts/hitcounterlim (default value 50)
2242  - estimation/reportfreq (default value -1)
2243  - estimation/regforestfilename (default value "-")
2244  - estimation/completiontype (default value a)
2245  - estimation/treeprofile/enabled (default value FALSE)
2246  - estimation/treeprofile/minnodesperdepth (default value 20)
2247  - estimation/useleafts (default value TRUE)
2248  - estimation/ssg/nmaxsubtrees (default value -1)
2249  - estimation/ssg/nminnodeslastsplit (default value 0)
2250 
2251 - new parameter constraints/linear/extractcliques to turn clique extraction off
2252 
2253 - new emphasis setting emphasis/numerics to increase numerical stability of (mostly) presolving operations such as (multi-)aggregations at the cost of performance.
2254 
2255 - new parameters for treemodel:
2256  - new parameter branching/treemodel/enable to enable the treemodel in reliability pscost branching and possible
2257  future parts of the code where it could be used.
2258  - new parameter branching/treemodel/highrule to specify which branching rule to use when treemodel thinks the node
2259  is high in the tree.
2260  - new parameter branching/treemodel/lowrule to specify which branching rule to use when treemodel thinks the node
2261  is low in the tree.
2262  - new parameter branching/treemodel/height to specify at which (estimated) height a node is high or low in the tree.
2263  - new parameter branching/treemodel/filterhigh to specify whether to filter dominated candidates in nodes which are
2264  high in the tree.
2265  - new parameter branching/treemodel/filterlow to specify whether to filter dominated candidates in nodes which are
2266  low in the tree.
2267  - new parameter branching/treemodel/maxfpiter to specify the maximum number of fixed-point iterations to use when
2268  computing the ratio of a variable using the fixed-point method.
2269  - new parameter branching/treemodel/maxsvtsheight to specify the maximum height to compute the SVTS score exactly
2270  before approximating it using the ratio.
2271  - new parameter branching/treemodel/fallbackinf defines the fallback strategy to use when the tree size estimates
2272  obtained by SVTS are infinite.
2273  - new parameter branching/treemodel/fallbacknoprim defines the fallback strategy to use when no primal bound is known
2274  and thus SVTS would not be able to compute a tree size (it would be infinite).
2275  - new parameter branching/treemodel/smallpscost defines the value under which pscosts are considered too small to be
2276  the deciding factor for branching, in which case it may be better not to use the treemodel.
2277 
2278 - new parameters for symmetry handling constraint handlers to enforce that also non-model constraint are copied:
2279  - new parameter "constraints/orbisack/forceconscopy"
2280  - new parameter "constraints/orbitope/forceconscopy"
2281  - new parameter "constraints/symresack/forceconscopy"
2282 
2283 
2284 ### Data structures
2285 
2286 - small changes in constants of hash functions
2287 - added fast 2-universal hash functions for two to seven 32bit elements with 32bit output
2288 - extended SCIPpqueueCreate() by additional callback argument SCIP_DECL_PQUEUEELEMCHGPOS to catch position changes
2289 - new methods SCIPpqueueDelPos() to delete elements at a specific position in the priority queue and SCIPpqueueFind() to
2290  find a specific position. It is recommended to track position changes using the new callback SCIP_DECL_PQUEUEELEMCHGPOS.
2291  In contrast, using SCIPpqueueFind() can be slow because it needs to compare the element it searches for
2292  with each slot in the queue.
2293 
2294 ### Build system
2295 
2296 - The default value for DFLAGS in the non-cmake buildsystem has changed from -MM to -MMD. This will break the
2297  generation of depend.* files if that was done by a compiler call that relied on -MM. The new preferred way
2298  to handle compilation dependencies is to additionally use $(DFLAGS) when compiling the object files (.o) and
2299  to include the generated .d files in the Makefile, see also "Build system / Makefile" below.
2300 
2301 Unit tests
2302 ----------
2303  - new unit test for treemodel.
2304 
2305 Testing
2306 -------
2307 
2308  - fixed an issue that may have lead to wrong status reports in the evaluation scripts
2309 
2310 Build system
2311 ------------
2312 
2313 ### Cmake
2314 
2315 - avoid problem with doubly defined object together with CPLEX
2316 
2317 ### Makefile
2318 
2319 - Removed static object compilation dependency files (depend.*). If using a GCC compatible compiler, then dependency
2320  files are now dynamically created and updated during build. The new dependency files (*.d) reside next to each object
2321  file (.o) in the corresponding obj subdirectory.
2322 - added support for building against Ipopt >= 3.13
2323 - unify compiler switches for Intel compiler and avoid problem with doubly defined object together with CPLEX
2324 
2325 Fixed bugs
2326 ----------
2327 
2328 - fix and improve memory handling in symmetry computation
2329 - fix shown number of applied conflicts in solving statistics
2330 - fix wrongly skipping strong branching call and using old information if LP was solved with 0 iterations
2331 - fix minor bug in cut score calculation
2332 - fixed several bugs related to rounding locks of variables not being updated correctly
2333 - small fix in cons_varbound.c to skip changing bounds of multi-aggregated variables in separation callback
2334 - fixed issue in SCIPtightenVar* and SCIPinferVar* that occurs for small bound changes
2335 - fixed rejecting minimal boundchange that changed sign of variable, even though SCIPisLb/UbBetter approved it
2336 - fixed issue in generateCutNonConvex() which is triggered when adding quadratic constraints during the solving process
2337 - fixed bug in freeing the reoptimization data if no problem exists
2338 - fixed bug in SCIPreoptReleaseData() when freeing all stored constraints
2339 - fixed bug when freeing the transformed problem via interactive shell if reoptimization is enabled
2340 - fixed two issues related to (near-)redundant logicor constraints in presolving
2341 - fixed counting of aggregations in XOR constraint handler
2342 - fixed handling of unbounded solutions
2343 - fixed update of LP size information when an LP error occured during probing
2344 - handle special case of variable bound constraints during aggregating variables
2345 - tighten sides of linear constraints before trying to upgrade them to more specialized constraints (knapsack, logic-or etc.) when calling SCIPupgradeConsLinear()
2346 - fixed an issue in repair heuristic in the case of loose (noncolumn) variables
2347 - allow user to correctly set heuristics/alns/(un)fixtol
2348 - fixed an issue in heur_completesol which is triggered during bound widening of unbounded continuous variables
2349 - fixed bug in cons_indicator if addopposite is true
2350 - fixed bug in sepa_disjunctive: treat case that conflictgraph is empty
2351 - added safety check in conversion to rational number to avoid overflow
2352 - fixed bug in interval evaluation with power-operator in certain situations
2353 - fixed behavior of SCIPmatrixCreate() regarding memory management and column generation
2354 - SCIPmatrixCreate() returns complete=FALSE when locks do not add up
2355 - fixed bug in sepa_oddcylce when variables are fixed
2356 - fixed numerical issues related to tighter constraint sides in varbound constraint handler
2357 - fixed update of watchedvars in logicor constraint handler in case of a restart during the tree
2358 - fixed treatment of multi-aggregated variables in logicor constraint handler
2359 - handle special case of redundant implications
2360 - fixed numerical issue related to almost-0-values in pseudosolution conflict analysis
2361 - fixed numerical issue related to very large greatest common dividers in linear constraint handler
2362 - avoid using implications on multiaggregated variables when propagating implications
2363 - fixed creation of (Lagrangian) variable bounds in the OBBT propagator
2364 - fixed sorting of primal solutions
2365 - fixed cleaning of clean buffer in conflict analysis
2366 - avoid probing on variables with huge bounds in shift and propagate heuristic
2367 - fix issue in printing solutions for variables that have been added by the dual sparsify presolver
2368 - fix issue related to fixing redundant logic-or constraints after presolving
2369 - fixed bug when parsing logic-or and and-constraints
2370 - fixed wrong assert in updateLazyBounds()
2371 - fixed bug in pricestore, which resulted in too many problem variables being added
2372 - fixed bug in cons_knapsack where weight of clique was not reset after an infeasibility was detected
2373 - fixed bug in presol_inttobinary which did not take into account that the aggregation could be rejected due to numerics
2374 - fixed bug in debug solution mechanism in connection to variables created by presol_inttobinary
2375 - fixed wrong indexing while undoing the implications from a redundant variable in SCIPshrinkDisjunctiveVarSet
2376 - redundancy checks in SCIPnodeAddBoundinfer now take a possible change to an active variable into account
2377 - fixed adding already added quadratic rows to NLP relaxation during solve
2378 - fixed issue related to variable locks in the varbound constraint handler
2379 - fixed bug in the quadratic constraint handler when changing infinite constraint sides
2380 - fixed sorting of variables in linear constraint handler
2381 - added additional checks to ensure numerical stability of dual proofs
2382 - fixed a case when activities of a linear constraint got unreliable but where still used for reductions
2383 - ensure that lhs <= rhs for linear constraints (without tolerances)
2384 - make handling of read errors in SCIPfread() consistent between version with and without ZLIB
2385 - correctly drop variable events in cons_indicator in restart
2386 - fixed bug in cons_orbitope with upgrading of orbitope constraints
2387 - additional checks in some presolvers for time limit being exceeded
2388 - fixed bug in presolving of cons_varbound with multi-aggregated variables
2389 - improve numerics in conflict analysis by using double-double arithmetic
2390 - fixed bound acceptance condition to avoid inconsistencies
2391 - fixed numerics in pseudoobj propagator by using double-double arithmetic
2392 
2393 Miscellaneous
2394 -------------
2395 
2396 - modified display column for memory usage ("mem"), which reports the memory usage most of the time, but shows the creator name
2397  (heuristic, relaxation handler, LP relaxation, strong branching, pseudo solution) of every new incumbent solution. Together with this change,
2398  heuristic display characters have been unified to represent the type of the heuristic
2399  (diving, Large neighborhood search, propagation, etc.), see also type_heur.h.
2400 - added assert that ensures that the locks of a variable have been decreased to 0 when it is freed
2401 - added more output for completing a partial solution
2402 - checks in debug mode that clean buffer memory is really clean when being freed are now disabled by default
2403 - don't compute symmetries if reoptimization is enabled
2404 - prefer integral values when fixing an almost-fixed continuous variable in the trivial presolver
2405 - changed the name of the variable that is added by the OSiL reader to represent the quadratic or nonlinear parts of the objective function
2406 - SCIP_EXPORT is now defined as __attribute__((__visibility__("default"))) if GCC and no SCIP config header is used
2407 
2408 @page RN60 Release notes for SCIP 6.0
2409 
2410 @section RN602 SCIP 6.0.2
2411 *************************
2412 
2413 Features
2414 --------
2415 
2416 - The abspower constraint handler now passes more accurate convexity
2417  information to the NLP relaxation.
2418 
2419 Examples and applications
2420 -------------------------
2421 
2422 - added parsing functionality for optcumulative constraints in CIP format
2423 
2424 Interface changes
2425 -----------------
2426 
2427 ### Interfaces to external software
2428 
2429 - Updated the Mosek LP solver interface to support Mosek 9.0.
2430 
2431 Build system
2432 ------------
2433 
2434 ### Cmake
2435 
2436 - new target to 'doc' to build documentation
2437 - ctests now fail if parameter file not found
2438 - add flag STATIC_GMP and improve GMP find module
2439 - remove non-API methods from library (API methods use new macro SCIP_EXPORT)
2440 - increase minimal required CMake version to 3.3
2441 - correct paths and dependency information when installing SCIP
2442 
2443 Fixed bugs
2444 ----------
2445 - fixed SCIP-Jack presolving bug that could lead to wrong results for Steiner arborescence problems
2446 - fixed wrong unboundedness result in case not all constraints were already in the LP and enforcement was
2447  skipped because an optimal solution was found
2448 - fixed wrong enforcement of constraints in the disjunction constraint handler
2449 - fixed wrong behavior of concurrent solve ignoring initial solutions
2450 - fixed bug in concurrent solve when problem was already solved in presolving
2451 - aggregate non-artificial integer variable for XOR constraints with two binary variables and delete constraint
2452 - copy the objective offset when copying the original problem
2453 - fixed bug in SCIPlpiGetBInvARow in lpi_cpx using wrong size of resulting vector
2454 - fixed quadratic runtime behavior in sepa_aggregation
2455 - fixed statistics of separators
2456 - improve numerical stability in varbound constraint handler by using double-double arithmetic
2457 - fixed bug in propagation of dual proofs
2458 - fixed bugs that arise for multiaggregated indicator variables by disallowing multiaggregation for them
2459 - improve numerical stability in SCIPcomputeBilinEnvelope* by using double-double arithmetic
2460 - fixed bug related to releasing pending bound changes in tree.c
2461 - set STD FENV_ACCESS pragma to on in code that changes floating-point rounding mode
2462 - disable GCC optimizations in main interval arithmetic code to prevent wrong optimizations
2463 - fixed wrong assert in cons_xor concerning the variable type
2464 - fixed different behavior of SCIPisLbBetter and SCIPisUbBetter between having NDEBUG defined or not
2465 - correctly handle bound disjunctions in symmetry detection
2466 - fixed issue in reliability branching related to the LP error flag not being reset
2467 - fixed treatment of near-infinite bounds in shiftandpropagate's problem transformation
2468 - fixed handling of infinite values in SCIPcomputeHyperplaneThreePoints()
2469 - fixed comparisons of infinite values in heur_intshifting.c and heur_shifting.c
2470 - fixed bug related to updating unprocessed cuts in the cutpool
2471 - fixed bug related to enabling quadratic constraints during `CONSINITLP`
2472 - add missing SCIP_EXPORT for functions used by GCG
2473 - fixed memory leak and wrong initialization for trival cases in cons_symresack.c
2474 - fixed bug with upgrading to packing/partitioning orbitopes
2475 - fixed bug with the status while upgrading in presol_symbreak.c
2476 - fixed wrong stage while clearing the conflict store
2477 - fixed behavior of SCIPfixVar() by setting infeasible pointer to TRUE if fixval lies outside variable domain
2478 - allow tightenVar() in SCIP_STAGE_PROBLEM stage
2479 - fixed bug in cumulative constraint handler when separating the LP solution
2480 - fixed issues with integer overflow in cumulative constraint handler
2481 - fixed bug where the convexity of Benders' decomposition subproblems was checked even when users defined subproblem
2482  solving methods. Now, as per the documentation, the user must explicitly state whether the subproblem is convex
2483 - fixed wrong indexing in heur_dualval
2484 - fixed issue with basis status in SoPlex LPi
2485 
2486 Miscellaneous
2487 -------------
2488 
2489 - statistics now output primal/dual bounds if objective limit is reached
2490 - memory check in debug mode is now disabled by default
2491 - message is now provided to the user to inform that automatic Benders' auxiliary variable lower bound computations are
2492  not activated when user defined subproblem solving methods are present
2493 - corrected documentation of the primalgap in SCIP; describe when it will be infinite
2494 
2495 @section RN601 SCIP 6.0.1
2496 *************************
2497 
2498 Features
2499 --------
2500 
2501 - when using a debug solution every (multi-)aggregation will be checked w.r.t. this solution
2502 
2503 Performance improvements
2504 ------------------------
2505 
2506 - try greedy solution first before solving knapsack exactly using dynamic programming in SCIPsolveKnapsackExactly,
2507  compute greedy solution by weighted median selection.
2508 - don't consider implied redcost by default in the reduced cost propagator
2509 
2510 Interface changes
2511 -----------------
2512 
2513 ### Deleted and changed API methods and macros
2514 
2515 - The preprocessor macro NO_CONFIG_HEADER now needs to be defined when
2516  including SCIP header files from a SCIP build or installation that
2517  has been build via the Makefile-only build system.
2518 
2519 - The following preprocessor macros have been renamed:
2520  WITH_ZLIB to SCIP_WITH_ZLIB, WITH_GMP to SCIP_WITH_GMP, WITH_READLINE
2521  to SCIP_WITH_READLINE, NO_SIGACTION to SCIP_NO_SIGACTION, NO_STRTOK_R
2522  to SCIP_NO_STRTOK_R, ROUNDING_FE to SCIP_ROUNDING_FE, ROUNDING_FP to
2523  SCIP_ROUNDING_FP, ROUNDING_MS to SCIP_ROUNDING_MS. Note, however, that
2524  the names of macros NO_RAND_R and NO_STRERROR_R have not been changed
2525  so far.
2526 
2527 ### New API functions
2528 
2529 - SCIPhashmapInsertInt(), SCIPhashmapSetImageInt(), and SCIPhashmapGetImageInt() to use integer values as images in hashmaps
2530 
2531 ### Command line interface
2532 
2533 - warn about coefficients in MPS files with absolute value larger than SCIP's value for infinity
2534 
2535 ### Changed parameters
2536 
2537 - default clock type for timing is now wallclock
2538 
2539 Unit tests
2540 ----------
2541 
2542 - added unit tests for exact knapsack solving and (weighted) median selection algorithms
2543 
2544 Build system
2545 ------------
2546 
2547 ### Cmake
2548 
2549 - add missing GMP dependency when compiling with SYM=bliss
2550 - add DL library when linking to CPLEX to avoid linker errors
2551 - new config.h header defining the current build configuration, e.g. SCIP_WITH_GMP
2552 
2553 Fixed bugs
2554 ----------
2555 
2556 - fixed handling of weights in cons_sos1 and cons_sos2 (NULL pointer to weights)
2557 - fixed handling of unbounded LPs in SCIP and in several LPIs; added heuristic method to guess solution
2558 - the STO reader is capable of handling scenarios defined using lower case "rhs"
2559 - fixed OPB reader for instances without explicit plus signs
2560 - correct dual solution values for bound constraints
2561 - fixed recognition of variable with only one lock in cons_bivariate, cons_quadratic, and cons_nonlinear
2562 - fixed update of constraint violations in solution repair in cons_bivariate, cons_quadratic, and cons_nonlinear
2563 - print error message and terminate if matrix entries of a column are not consecutive in mps format
2564 - fixed incorrect handling of fixed variables when transfer of cuts from LNS heuristic for Benders' decomposition
2565 - fix returning local infeasible status by Ipopt interface if Ipopt finds problem locally infeasible
2566 - skip attempt to apply fixings in linear constraint handler during solving stage as LP rows cannot change anymore
2567 - fixed bug when reading >= indicator constraints in MPS format
2568 - fix issue with nodes without domain changes if we ran into solution limit in prop_orbitalfixing
2569 - fixed unresolved reference to CppAD's microsoft_timer() function on builds with MS/Intel compilers on Windows
2570 - ignore implications added through SCIPaddVarImplication() that are redundant to global bounds also in the
2571  special case of an implication between two binary variables; also, use implications instead of cliques in the case
2572  of a binary implied variable with nonbinary active representative
2573 - fixed bug with aggregated variables that are aggregated in propagation of cons_sos1
2574 - fixed some special cases in SCIPselect/SCIPselectWeighted methods
2575 - relaxed too strict assertion in Zirounding heuristic
2576 - fixed the upgrade routine to XOR constraints: aggregate integer variable if its coefficient has the wrong sign
2577 - fixed handling of nonartificial parity variables when deleting redundant XOR constraints
2578 - earlier deletion of trivial XOR constraints (at most 1 operator left)
2579 - fixed wrong hashmap accesses and added sanity check for the correct hashmap type
2580 - avoid copying of unbounded solutions from sub-SCIPs as those cannot be checked completely
2581 - corrected the output of the first LP value in case of branch-and-price
2582 - fixed possible integer overflow, which led to wrong conclusion of infeasibility, in energetic reasoning of cons_cumulative.c
2583 
2584 Miscellaneous
2585 -------------
2586 - do not scale linear constraints to integral coefficients
2587 
2588 @section RN600 SCIP 6.0.0
2589 *************************
2590 
2591 Features
2592 --------
2593 
2594 - new diving heuristic farkasdiving that dives into the direction of the pseudosolution and tries to construct Farkas-proofs
2595 - new diving heuristic conflictdiving that considers locks from conflict constraints
2596 - restructuring of timing of symmetry computation that allows to add symmetry handling components within presolving
2597 - `lp/checkstability` is properly implemented for SoPlex LPI (spx2)
2598 - new branching rule lookahead that evaluates potential child and grandchild nodes to determine a branching decision
2599 - limits on the number of presolving rounds a presolver (maxrounds) or propagator/constraint handler (maxprerounds)
2600  participates in are now compared to the number of calls of the particular presolving method, not the number of
2601  presolving rounds in general, anymore
2602 - new miscellaneous methods for constraints that have a one-row linear representation in pub_misc_linear.h
2603 - a Benders' decomposition framework has been added. This framework provides the functionality for a user to solve a
2604  decomposed problem using Benders' decomposition. The framework includes classical optimality and feasibility cuts,
2605  integer optimality cuts and no-good cuts.
2606 - add statistic that presents the number of resolves for instable LPs
2607 - new readers for stochastic programming problems in SMPS format (reader_sto.h, reader_smps.h)
2608 
2609 Performance improvements
2610 ------------------------
2611 
2612 - cuts generated from certain quadratic constraints with convex feasible region are now global
2613 - performance improvements for Adaptive Large Neighborhood Search heur_alns.c
2614  + all neighborhoods now start conservatively from maximum fixing rate
2615  + new default parameter settings for bandit selection parameters
2616  + no adjustment of minimum improvement by default
2617 - improved bound tightening for some quadratic equations
2618 - constraint handler checking order for original solutions has been modified to check those with negative check priority
2619  that don't need constraints after all other constraint handlers and constraints have been checked
2620 - deactivate gauge cuts
2621 
2622 Examples and applications
2623 -------------------------
2624 
2625 - new example `brachistochrone` in CallableLibrary examples collection; this example implements a discretized model to
2626  obtain the trajectory associated with the shortest time to go from point A to B for a particle under gravity only
2627 - new example `circlepacking` in CallableLibrary examples collection; this example models two problems about packing
2628  circles of given radii into a rectangle
2629 - new price-and-branch application for the ringpacking problem
2630 - new stochastic capacitated facility location example demonstrating the use of the Benders' decomposition framework
2631 
2632 Interface changes
2633 -----------------
2634 
2635 ### New and changed callbacks
2636 
2637 - added parameter locktype to `SCIP_DECL_CONSLOCK` callback to indicate the type of variable locks
2638 
2639 ### Deleted and changed API methods
2640 
2641 - Symmetry:
2642  + removed function SCIPgetTimingSymmetry() in presol_symmetry.h since this presolver does not compute symmetries independent
2643  of other components anymore
2644  + additional argument `recompute` to SCIPgetGeneratorsSymmetry() to allow recomputation of symmetries
2645 
2646 - Random generators:
2647  + the seed of SCIPinitializeRandomSeed() is now an unsigned int
2648  + the seed of SCIPsetInitializeRandomSeed() is now an unsigned int and it returns an unsigned int
2649  + new parameter for SCIPcreateRandom() to specify whether the global random seed shift should be used in the creation of
2650  the random number generator
2651 
2652 - Miscellaneous:
2653  + additional arguments `preferrecent`, `decayfactor` and `avglim` to SCIPcreateBanditEpsgreedy() to choose between
2654  weights that are simple averages or higher weights for more recent observations (the previous default).
2655  The last two parameters are used for a finer control of the exponential decay.
2656  + functions SCIPintervalSolveUnivariateQuadExpression(), SCIPintervalSolveUnivariateQuadExpressionPositive(), and
2657  SCIPintervalSolveUnivariateQuadExpressionPositiveAllScalar() now take an additional argument to specify already
2658  existing bounds on x, providing an entire interval ([-infinity,infinity]) gives previous behavior
2659 
2660 ### New API functions
2661 
2662 - SCIPintervalSolveUnivariateQuadExpressionNegative()
2663 - SCIPvarGetNLocksDownType() and SCIPvarGetNLocksUpType()
2664 - SCIPaddConsLocksType()
2665 - SCIPconsIsLockedTypePos(), SCIPconsIsLockedTypeNeg(), SCIPconsIsLockedType(), SCIPconsGetNLocksTypePos() and SCIPconsGetNLocksTypeNeg()
2666 - SCIPstrncpy(), a safe version of strncpy()
2667 
2668 ### Changed parameters
2669 
2670 - Removed parameters:
2671  - `heuristics/alns/stallnodefactor` as the stall nodes are now controlled directly by the target node limit within the heuristic
2672  - `presolving/symmetry/computepresolved` since this presolver does not compute symmetries independent of other components anymore
2673  - `separating/maxincrounds`
2674 
2675 ### New parameters
2676 
2677 - `lp/checkfarkas` that enables the check of infeasibility proofs from the LP
2678 - `heuristics/alns/unfixtol` to specify tolerance to exceed the target fixing rate before unfixing variables, (default: 0.1)
2679 - `propagating/orbitalfixing/symcomptiming` to change the timining of symmetry computation for orbital fixing
2680 - `lp/alwaysgetduals` ensure that the dual solutions are always computed from the recent LP solve
2681 - `display/relevantstats` indicates whether the small relevant statistics are displayed at the end of solving
2682 - `propagating/orbitalfixing/performpresolving` that enables orbital fixing in presolving
2683 - `presolving/symbreak/addconsstiming` to change the timining of symmetry computation for symmetry handling inequalities
2684 - `propagating/orbitalfixing/enabledafterrestarts` to control whether orbital fixing is enabled after restarts
2685 - `benders/∗` new submenu for Benders' decomposition related settings. This includes the settings related to the
2686  included Benders' decompositions and the general Benders' decomposition settings.
2687 - `benders/<decompname>/benderscuts/∗` submenu within each included Benders' decomposition to control the Benders'
2688  decomposition cuts. The cuts are added to each decomposition separately, so the setting are unique to each
2689  decomposition.
2690 
2691 ### Data structures
2692 
2693 - new enum `SCIP_LOCKTYPE` to distinguish between variable locks implied by model (check) constraints (`SCIP_LOCKYPE_MODEL`)
2694  and variable locks implied by conflict constraints (`SCIP_LOCKYPE_CONFLICT`)
2695 - expression interpreter objects are now stored in the block memory
2696 
2697 Deleted files
2698 -------------
2699 
2700 - removed presolving plugin presol_implfree
2701 - separated scip.c into several smaller implementation files scip_*.c for better code overview; scip.c was removed,
2702  but the central user header scip.h remains, which contains includes of the separated headers
2703 
2704 Fixed bugs
2705 ----------
2706 
2707 - fixed bug in gcd reductions of cons_linear regarding an outdated flag for variable types
2708 - fixed bug in heur_dualval regarding fixing routine for integer variables
2709 - suppress debug solution warnings during problem creation stage
2710 - fixed check for activated debugging solution in components constraint handler
2711 - fixed potential bug concerning solution linking to LP in SCIPperformGenericDivingAlgorithm()
2712 - fixed reward computation in ALNS on continuous, especially nonlinear, problems
2713 - fixed bug in freeing reoptimization data if problem was solved during presolving
2714 - fixed check of timing in heur_completesol
2715 - fixed wrong propagation in optcumulative constraint handler
2716 - fixed non-deterministic behavior in OBBT propagator
2717 - don't disable LP presolving when using Xpress as LP solver
2718 - fixed possible `NULL` pointer usage in cons_pseudoboolean
2719 - ensured that SCIPgetDualbound() returns global dual bound instead of the dual bound of the remaining search tree
2720 - fixed rare division-by-zero when solving bivariate quadratic interval equation
2721 - use total memory for triggering memory saving mode
2722 - fix parsing of version number in the CMake module for Ipopt
2723 - fixed handling of implicit integer variables when attempting to solve sub-MIP in nlpdiving heuristic
2724 - added workaround for bug when solving certain bivariate quadratic interval equations with unbounded second variable
2725 - fixed bug with releasing slack variable and linear constraint in cons_indicator
2726 - fixed problem when writing MPS file with indicator constraints with corresponding empty linear constraints
2727 - fixed bug in heur_vbound triggered when new variables were added while constructing the LP
2728 - fixed bug with unlinked columns in SCIProwGetLPSolCutoffDistance()
2729 
2730 Miscellaneous
2731 -------------
2732 
2733 - updated CppAD to version 20180000.0
2734 - remove LEGACY mode, compiler needs to be C++11-compliant
2735 
2736 @page RN50 Release notes for SCIP 5.0
2737 
2738 @section RN501 SCIP 5.0.1
2739 *************************
2740 
2741 Features
2742 --------
2743 
2744 - SCIP executable handles the `SIGTERM` signal. If the process receives a `SIGTERM`, SCIP terminates the solution process with a
2745  new `SCIP_STATUS` code `SCIP_STATUS_TERMINATE` and displays all relevant statistics before exiting.
2746 - add number of conflict constraints found by diving heuristics to statistics
2747 - allow output of lower bounds for visualization
2748 - added symmetry detection for linking constraints
2749 
2750 Performance improvements
2751 ------------------------
2752 
2753 - disable disaggregation of quadratic constraints by changing the default for `constraints/quadratic/maxdisaggrsize` to 1
2754  (disaggregation can still be very helpful on some instances, but also seems hurtful on others)
2755 
2756 - Cuts:
2757  - increased threshold when to scale up cuts that are generated by nonlinear constraint handlers
2758  - test additional scaling factors in CMIR cut generation heuristic
2759  - cleaned up implementation of the cut selection procedure and added new cut quality measure
2760  - use random tie-breaking in cut selection
2761 
2762 Interface changes
2763 -----------------
2764 
2765 ### New API functions
2766 
2767 - new methods SCIPtryTerminate() and SCIPterminated() in scip/interrupt.h for handling of SIGTERM signals.
2768 - new method SCIPselectCuts() to run SCIP's cut selection procedure on a given array of cuts
2769 
2770 ### Changed parameters
2771 
2772 - rename parameter `constraints/orbisack/orbisack/coverseparation` to `constraints/orbisack/coverseparation`
2773 
2774 ### New parameters
2775 
2776 - `visual/displb` that enables output of lower bounds for visualization
2777 - `presolving/symmetry/displaynorbitvars` (whether we display the number of affected variables in the statistics)
2778 - `separating/efficacyfac` to change the weight of the efficacy in cut score calculation
2779 - `separating/dircutoffdistfac` to change the weight of the directed cutoff distance in cut score calculation
2780 
2781 ### Data structures
2782 
2783 - new `SCIP_STATUS` code `SCIP_STATUS_TERMINATE` in scip/interrupt.h for handling of SIGTERM signals.
2784 
2785 Unit tests
2786 ----------
2787 
2788 - expanded unit tests of the lpis
2789 - added check to unit tests that problem is not solved after every change
2790 
2791 Fixed bugs
2792 ----------
2793 
2794 - fixed LP status to unsolved when marking LP to be resolved if objective limit has changed
2795 - copy parameter settings to sub-SCIPs in SCIPcopyLargeNeighborhoodSearch() also when copying only LP rows
2796 - fixed a check for fixed variables in Binpacking example
2797 - generate deprecation warnings when using SCIPaddCut
2798 - fix bug in sepa_gomory if cut is a bound change
2799 - fixed handling of infinite bounds in cons_sos1
2800 
2801 - Constraints:
2802  - fixed bug while scaling linear constraints
2803  - don't delete conflict constraints that were transformed into model constraints during a restart
2804  - fixed treatment of variable aggregations in knapsack constraint handler that led to wrong propagations
2805 
2806 - LP Interface:
2807  - fixed LPI status after changing objective in lpi_cpx, lpi_grb, lpi_xprs, lpi_msk
2808  - fixed and unified asserts in LPIs
2809  - retrieve interior solution instead of (possibly non-existing) basic solution from mosek after using barrier without crossover in lpi_msk
2810  - fixed bug with `NULL` pointer handling in LPIs
2811 
2812 - Heuristics:
2813  - fixed wrong cast in LP iteration limit computation in proximity search heuristic
2814  - fixed check for time limit in heur_nlpdiving
2815  - improved numerics and fixed stop criterion in zirounding heuristic
2816 
2817 @section RN500 SCIP 5.0.0
2818 *************************
2819 
2820 Features
2821 --------
2822 
2823 - new numerical solution violations get printed when checksol is called
2824 - added analysis of the clique table which identifies possible aggregations via the search for
2825  strongly connected components and may detect infeasible assignments on the way
2826 - added macros to do computations with a higher precision by using double-double arithmetic
2827 - extended conflict analysis by analyzing dual solutions of boundexceeding LPs
2828 - revised internal debugging mechanism to check against a user given debug solution (debug.h)
2829 
2830 - Heuristic:
2831  - add new heuristic MPEC that solves a MPEC reformulation of a mixed-binary nonlinear problem by regularized NLP reformulations
2832  - new primal heuristic ALNS that orchestrates eight different LNS heuristics adaptively
2833  using algorithms for the multi-armed bandit problem
2834  - three bandit selection algorithms to face sequential decision problems under uncertainty
2835 
2836 - Presolving and symmetry:
2837  - added presol_symmetry.c for computing and storing symmetry information of a MIP
2838  - added presol_symbreak.c to detect special symmetry structures and to add symmetry handling constraints
2839  - SCIP can now automatically detect and compute symmetries in MIPs (if a graph automorphism code is linked in)
2840  - added cons_symresack.c to handle permutation symmetries in a binary programs via inequalities and propagation
2841  - added cons_orbisack.c to handle special permutation symmetries in a binary programs via inequalities and propagation
2842  - cons_orbitope.c can now handle full orbitopes as well
2843 
2844 - Propagator:
2845  - added new propagator orbital fixing
2846  - utilizing linear inequalities to compute stronger linearizations for bilinear terms; the inequalities are computed in
2847  the OBBT propagator
2848 
2849 - Cuts:
2850  - added API for aggregating rows for generating cuts which uses double-double arithmetic internally
2851  - added filtering of parallel cuts in the cut pool
2852 
2853 - Plugins:
2854  + added new plugin type `table` for adding user-defined statistics tables
2855  + new presolving plugin presol_sparsify that tries to cancel nonzero coefficients in linear constraints by adding
2856  multiples of linear equalities
2857 
2858 Performance improvements
2859 ------------------------
2860 
2861 - use disjoint set to reduce peak memory usage and time to compute of clique table connectedness information
2862 - add and use RESTRICT macro for some pointers
2863 - improved the implementation of SCIPvarGetActiveRepresentatives
2864 - speed-up reverse propagation
2865 - removed bestrelaxsol and directly access relaxation solution instead to decrease overhead when using relaxation handlers
2866 - for fast presolving emphasis, disable use of implications in logicor presolving
2867 - use limit on the total number of nonzeros added to the clique table during the greedyCliqueAlgorithm of cons_knapsack.c
2868 - revised disaggregation of quadratic constraints: the number of created constraints can now be controlled and the
2869  disaggregated constraints are scaled in order to increase numerical accuracy
2870 - disabled reformulation of products of a binary variable with a linear term that does not solely involve binary variables
2871 - speed up creation of LP in the computation of relative interior points
2872 - improved dual ray analysis
2873 - drop events of disabled linear constraints to reduce event processing effort
2874 
2875 - Separation:
2876  - new implementation of zerohalf separator
2877  - enabled cutting plane separation in the tree
2878  - improved cut selection and management
2879  - improved cut post-processing: apply coefficient tightening, enforce maximal dynamism
2880 
2881 - Heuristics:
2882  - improved selection of rows in CMIR aggregation heuristic
2883  - generate lifted flowcover cuts in CMIR cut generation heuristic
2884  - faster implementation of CMIR cut generation heuristic
2885  - use LP solution polishing during probing and diving mode to activate it during many primal heuristics; remains disabled
2886  during strong branching and OBBT
2887  - improved versions of the clique and variable bound pre-root heuristics that are often able to fix many more variables
2888 
2889 Interface changes
2890 -----------------
2891 
2892 ### New and changed callbacks
2893 
2894 - New types:
2895  - added new abstract selection algorithm `SCIP_BANDIT` together with callbacks
2896  - added new types for symmetry handling
2897 
2898 - NLP interface:
2899  - dropped NLP termination status `SCIP_NLPTERMSTAT_UOBJLIM`
2900 
2901 - NLP callbacks:
2902  - added parameter `objval` to `SCIP_DECL_NLPIGETSOLUTION` for returning the optimal objective value (can be set to `NULL`)
2903 
2904 - Separation callbacks:
2905  - added parameter `allowlocal` to `SCIP_DECL_SEPAEXECLP` and `SCIP_DECL_SEPAEXECSOL` to switch generation of locally valid cuts
2906  - added parameter `dstatssize` to `SCIP_DECL_NLPIDELVARSET` and `SCIP_DECL_NLPIDELCONSSET`
2907 
2908 ### Deleted and changed API methods
2909 
2910 - Branching rules:
2911  - removed parameter `allowaddcons` from SCIPselectVarPseudoStrongBranching(), SCIPselectVarStrongBranching(), and
2912  SCIPincludeBranchruleRelpscost()
2913 
2914 - Constraint Handlers:
2915  - generalized SCIPcreateConsOrbitope() and SCIPcreateConsBasicOrbitope() method to three orbitope types (full, partitioning, packing)
2916 
2917 - Cutting plane separation methods:
2918  - changed function signature of SCIPcalcMIR()
2919  - changed function signature of SCIPcalcStrongCG()
2920  - new method SCIPaddRow() to replace deprecated SCIPaddCut()
2921  - removed parameter `scaling` from SCIPgetRowprepViolation()
2922  - added parameter `allowlocal` to SCIPseparateSol()
2923 
2924 - LP interface:
2925  - replaced LP parameters `SCIP_LPPARAM_LOBJLIM` and `SCIP_LPPARAM_UOBJLIM` by `SCIP_LPPARAM_OBJLIM`
2926 
2927 - NLP interface:
2928  - SCIPnlpStatisticsCreate() and SCIPnlpStatisticsFree() now require a pointer to blockmemory as parameter
2929  - added parameter `objval` to SCIPnlpiGetSolution() of NLPIs for returning the optimal objective value (can be set to `NULL`)
2930  - added parameter `varnameslength` to SCIPexprParse()
2931  - added parameter `dstatssize` to SCIPnlpiDelVarSet() and SCIPnlpiDelConsSet()
2932  - added modifier const to `exprtree` parameter of SCIPnlpiChgExprtree()
2933 
2934 - Primal heuristics:
2935  - SCIPheurPassIndicator() has a new parameter which allows to pass the objective of the solution
2936 
2937 - Relaxator methods:
2938  - added parameter `includeslp` to SCIPmarkRelaxSolValid(), SCIPsetRelaxSolVals() and SCIPsetRelaxSolValsSol();
2939  - removed parameter `includeslp` from SCIPrelaxCreate() and SCIPincludeRelax()
2940  - removed functions SCIPrelaxIncludesLp() and SCIPrelaxSetIncludesLp()
2941  - replaced method SCIPgetRelaxFeastolFactor() by SCIPrelaxfeastol() and added SCIPchgRelaxfeastol()
2942 
2943 - Misc:
2944  - changed return type of SCIPcliqueGetId() from `int` to `unsigned int`
2945  - SCIPsolveParallel() is deprecated; use SCIPsolveConcurrent() instead
2946  - removed SCIPvarGetCliqueComponentIdx(); the connectedness information of the clique table is now stored as a
2947  `SCIP_DISJOINTSET` member of the clique table and cannot be publicly accessed
2948  - added parameter `copytables` to SCIPcopyPlugins()
2949  - SCIPsolveParallel() has been deprecated, use the new method SCIPsolveConcurrent() instead
2950  - allowed SCIPgetNConss() in stage `SCIP_STAGE_INITSOLVE`
2951 
2952 ### New API functions
2953 
2954 - SCIPaddRow() to replace deprecated SCIPaddCut()
2955 - methods to display linear constraint classification types; use SCIPclassifyConstraintTypesLinear()
2956  after reading a problem to classify linear constraint types
2957 - public methods SCIPvariableGraphBreadthFirst() and SCIPvariableGraph{Create,Free}() to
2958  perform breadth-first search on the variable constraint graph used by the GINS and ALNS heuristics
2959 - SCIPsetProbingLPState() to install given LP state and/or norms at the current probing node
2960 - SCIPbranchcandGetLPMaxPrio() and SCIPbranchcandGetExternMaxPrio() to query the maximal branching priority of given
2961  branching candidates; also added SCIPbranchcandGetNPrioLPCands() to access the number of LP candidates with this priority.
2962 - SCIPupdateSolIntegralityViolation(), SCIPupdateSolBoundViolation(), SCIPupdateSolLPRowViolation(),
2963  SCIPupdateSolConsViolation() and SCIPupdateSolLPConsViolation() for updating numerical solution violations, as well as
2964  SCIPactivateSolViolationUpdates() and SCIPdeactivateSolViolationUpdates() for activating/deactivating violation updates globally
2965 - SCIPsetSubscipDepth() to set the depth of SCIP as a copied subproblem during problem stage
2966 - SCIPdivesetGetNSols() to query the number of found solutions from a diveset.
2967 - SCIPnextafter() that wraps different nextafter methods to return the next representable value after a given value
2968 - SCIPlinConsStats{Create,Free,GetTypeCount,GetSum}() and SCIPprintLinConsStats() to work with linear constraint classification through the C API
2969 - SCIPgetRowNumIntCols() that returns the number of integer columns in a row
2970 - SCIPsetSlackVarUb() to control upper bound of slack variable in cons_indicator
2971 
2972 - Data structures:
2973  - methods SCIPrandomCreate() and SCIPrandomFree() are no longer public and should be replaced by SCIPcreateRandom() and
2974  SCIPfreeRandom(), respectively (the new methods respect the global parameter `randomization/randomseedshift` automatically)
2975  - methods SCIPdigraphCreate() and SCIPdigraphCopy() are no longer public and should be replaced by SCIPcreateDigraph() and
2976  SCIPcopyDigraph(), respectively, which receive a SCIP argument and are more robust towards future interface changes
2977 
2978 - Bilinear:
2979  - SCIPgetAllBilinearTermsQuadratic() to access data of all existing bilinear terms in quadratic constraints
2980  - SCIPaddBilinearIneqQuadratic() to propose an inequality with two variables that appear in a bilinear term
2981  - SCIPcomputeBilinEnvelope{1,2}() to compute a linearization of a bilinear term when considering at most two linear inequalities
2982 
2983 - Clique:
2984  - SCIPcliqueGetIndex() which returns the unique identifier for the given clique
2985  - SCIPgetNCliquesCreated() which returns the number of cliques created so far
2986 
2987 - Cutting plane separation methods:
2988  - SCIPisCutNew() that returns whether a cut is already present in the global cut pool
2989  - SCIPgetSepaMinEfficacy() to access separating/minefficacy(root)
2990 
2991 - Interfaces:
2992  - interface methods to create and use bandit algorithms implemented as SCIP core plugins
2993  - interface methods for aggregating rows and computating MIP cuts, see cuts.h
2994  - interface method SCIPsetRandomSeed() to (re)set a random number generator seed
2995 
2996 ### Command line interface
2997 
2998 - new interactive shell functionality to display linear constraint classification types;
2999  use `display linclass` after reading a problem to classify linear constraint types
3000 - new command line parameter `-r` to pass a nonnegative integer as random seed.
3001 
3002 ### Interfaces to external software
3003 
3004 - added interface to the NLP solver WORHP
3005 - added interface to the NLP solver FilterSQP
3006 - added interface to graph automorphism algorithms in `src/symmetry/` (initially only to BLISS)
3007 - unify handling of objective limit in LPIs by replacing LPI parameters `SCIP_LPPAR_LOBJLIM` and `SCIP_LPPAR_UOBJLIM` by
3008  `SCIP_LPPAR_OBJLIM`
3009 - dropped support for MOSEK < 7.0.0.0
3010 
3011 ### Changed parameters
3012 
3013 - changed and removed several parameters for zerohalf separator
3014 - replaced `constraints/quadratic/disaggregate` by `constraints/quadratic/maxdisaggrsize` to bound
3015  the total number of created constraints when disaggregating a quadratic constraint
3016 - new value 3 for parameter `lp/solutionpolishing` to enable LP polishing only during probing and diving mode
3017 - parameter `conflict/useboundlp` has new values `d` (only dual solution analysis) and `b` (both, conflict and dual solution analysis)
3018 
3019 - Heuristics:
3020  - fixed typo `heuristics/completesol/maxunkownrate` has changed to `heuristics/completesol/maxunknownrate`
3021  - replaced parameter `heuristics/{clique,vbounds}/minfixingrate` by `heuristics/{clique,vbounds}/minintfixingrate` and
3022  `heuristics/{clique,vbounds}/minmipfixingrate`, which check the fixing rate before LP solving and after sub-MIP presolve
3023 
3024 - Separating:
3025  - parameter `separating/maxstallrounds` only applies to nodes in the tree (not the root node, anymore); use the new
3026  parameter `separating/maxstallroundsroot` for the root node
3027  - moved parameters for flowcover and cmir separators to `separating/aggregation`
3028 
3029 - Removed parameters:
3030  - `constraints/{abspower,bivariate,nonlinear,quadratic,soc}/scaling`
3031  - `constraints/{abspower,bivariate,quadratic,nonlinear}/mincutefficacysepa`
3032  - `constraints/{abspower,bivariate,quadratic,nonlinear}/mincutefficacyenfofac`
3033  - `constraints/soc/minefficacy`
3034  - `conflict/usemir`
3035  - `conflict/prefermir`
3036  - `heuristics/clique/{multiplier,initseed}`
3037  - `separating/feastolfac`
3038  - `separating/orthofac`
3039  - `separating/cgmip/allowlocal` (use parameter passed to separation callback instead)
3040  - `separating/{gomory,strongcg}/maxweightrange`
3041 
3042 ### New parameters
3043 
3044 - `conflict/prefinfproof` (prefer infeasibility proof to boundexceeding proof)
3045 - `conflict/sepaaltproofs`
3046 - `constraints/indicator/maxsepanonviolated` to stop separation after separation of non violated cuts
3047 - `constraints/orbisack/coverseparation` (whether orbisack cover inequalities should be separated)
3048 - `constraints/orbisack/orbiSeparation` (whether facet defining inequalities for orbisack should be separated)
3049 - `constraints/orbisack/coeffbound` (maximal value of coefficients in orbisack facet inequalities)
3050 - `constraints/orbisack/checkpporbisack` (check whether orbisacks can be strengthened by packing/partitioning constraints)
3051 - `constraints/orbisack/checkalwaysfeas` (whether conscheck returns always `SCIP_FEASIBLE`)
3052 - `constraints/orbitope/checkpporbitope` (check packing/partitioning orbitopes)
3053 - `constraints/orbitope/sepafullorbitope` (separate full orbitopes)
3054 - `constraints/orbitope/checkalwaysfeas` (whether conscheck returns always `SCIP_FEASIBLE`)
3055 - `constraints/quadratic/{usebilinineqbranch,minscorebilinterms,bilinineqmaxseparounds}`
3056 - `constraints/quadratic/disaggrmergemethod` to change the strategy of how to merge independent blocks of quadratic constraints
3057 - `constraints/quadratic/mincurvcollectbilinterms` to change the minimal curvature of constraints
3058  to be considered when returning bilinear terms to other plugins
3059 - `constraints/quadratic/binreformbinaryonly` to disable reformulation of products of binary and non-binary variables
3060 - `constraints/symresack/ppsymresack` (check whether symresacks can be strengthend by packing/partitining constraints)
3061 - `constraints/symresack/checkalwaysfeas` (whether conscheck returns always `SCIP_FEASIBLE`)
3062 - `expbackoff` to all separators which increases the frequency exponentially over the depth in the tree
3063 - `heuristics/completesol/{beforepresol,maxlpiter,maxcontvars}`
3064 - `heuristics/{clique,vbounds}/maxbacktracks` to limit the number of backtracks in the fix-and-propagate phase
3065 - `heuristics/{clique,vbounds}/uselockfixings` to enable fixing of additional variables based on variable locks
3066 - `heuristics/vbounds/{feasvariant,tightenvariant}` to specify the fixing variants used by the vbounds heuristic
3067 - `lp/refactorinterval` to change the refactorization interval of the LP solver
3068 - `misc/debugsol` to specify a debug solution that should be checked during the solve
3069 - `misc/usesymmetry` to determine whether symmetry handling should be used
3070 - `presolving/symbreak/conssaddlp` (whether symmetry handling inequalities should be added to the LP)
3071 - `presolving/symbreak/addsymresacks` (whether symresacks should be used to handle symmetries)
3072 - `presolving/symbreak/computeorbits` (whether symmetry orbits should be computed)
3073 - `presolving/symbreak/detectorbitopes` (whether it should be checked if some symmetries can be handled by orbitopes)
3074 - `presolving/symmetry/computepresolved` (Whether symmetries are computed after presolving)
3075 - `presolving/symmetry/maxgenerators` (maximal number of generators generated by symmetry detection)
3076 - `presolving/symmetry/checksymmetries` (whether validity of computed symmetries should be verified)
3077 - `propagating/obbt/{itlimitfactorbilin,minnonconvexity,createbilinineqs}`
3078 - `propagating/vbounds/minnewcliques` to specify the minimum number of new cliques to trigger another clique table analysis
3079 - `propagating/vbounds/{maxcliquesmedium,maxcliquesexhaustive}` to limit the number of cliques relative to the
3080  number of binary variable for performing clique table analysis
3081 - `separating/maxincrounds`
3082 - `separating/maxlocalbounddist`, `separating/maxcoefratio` and `separating/intsupportfac`
3083 - if PaPILO >= 2.1: `presolving/milp/maxbadgesizepar` to limit the maximal badge size if PaPILO is called in parallel mode
3084 - if PaPILO >= 2.1: `presolving/milp/maxbadgesizeseq` to limit the maximal badge size if PaPILO is called in sequential mode
3085 
3086 ### Data structures
3087 
3088 - new type `SCIP_Shortbool` (equal to uint8_t) for storing Boolean values in a more compact manner
3089 - new disjoint set data structure `SCIP_DISJOINTSET` to incrementally update connectedness information for a graph on nodes {0,...,n-1}
3090 - new red black tree data structure defined in `src/scip/rbtree.{c,h}`
3091 - new object `SCIP_LINCONSSTATS`, see type_cons.h, to work with linear constraint classification through the C API
3092 - added new type `SCIP_TABLE` together with callbacks to output SCIP statistics
3093 
3094 Unit tests
3095 ----------
3096 
3097 - added several tests for the LP interface
3098 - added tests that cover nonempty linear constraint classification types
3099 - added tests for the double double arithmetic, the new red black tree data structure, the nlpi, obbt, interval arithmetics,
3100  symmetry computation, objective function changes in probing, computing envelopes of bilinear function, relaxation enforcement
3101 
3102 Build system
3103 ------------
3104 
3105 - added interface to the NLP solver WORHP; set `WORHP=true` in order to link to WORHP
3106 - added interface to the NLP solver FilterSQP; set `FILTERSQP=true` in order to link to FilterSQP
3107 
3108 ### Cmake
3109 
3110 - added support for sanitizers in debug mode and options SANITIZE_ADDRESS, SANITIZE_MEMORY, SANITIZE_UNDEFINED, SANITIZE_THREAD
3111 - added option SYM to specify which graph automorphism package (bliss, none) should be used, if available
3112 - disable non-standard compliant floating point optimizations in combination with intel compilers
3113 - improve Visual Studio compilation
3114 - only accept IPOPT version 3.12.0 or higher
3115 - preserve correct rpath in library (e.g. path to libipopt) when installing
3116 
3117 ### Makefile
3118 
3119 - new flag `DEBUGSOL={true,false}` to enable checks against a user given debug solution
3120 - added flag SYM to specify which graph automorphism package (bliss, none) should be used
3121 - default value for ZIMPL in the Makefile is now `false`
3122 
3123 Fixed bugs
3124 ----------
3125 
3126 - fix wrong statistic display of diving leaf solutions
3127 - fixed order of SCIPcalcCliquePartition() in corner case where no cliques are available
3128 - fix treatment of infinite lower bound in proximity objective cutoff
3129 - fixed minor issue in expression graph simplification
3130 
3131 - Separator:
3132  - fix linear knapsack relaxation during separation if a binary variable does not have a solution value in [0,1].
3133  - fixed potential ressource leaks in SCIPsolveLinearProb(), expr.c, sepa_eccuts, cons_cumulative.c, cons_nonlinear.c
3134  - fixed bug in cons_orbitope.c, where wrong terminating index in separation of SCIs was used
3135  - fixed wrong mapping of permuted basis indices in gomory separator
3136  - fixed integer objective separator for objective scales < 1
3137 
3138 - Presolver:
3139  - fixed numerical issues in boundshift presolver when aggregating integer variables
3140  - fixed aggregation of variables in boundshift presolver that contain large variable bounds
3141 
3142 - Heuristic:
3143  - fixed bug in feasibility pump heuristic when switching on the `usefp20` parameter
3144  - fixed handling of LOOSE variables in locks heuristic
3145  - fixed creation of conflicts in clique heuristic for incomplete LPs
3146 
3147 - Constraints:
3148  - fixed bug in mps reader. Reader now prints `OBJSENSE` section and tries to generate unique names of constraints
3149  - fixed upgrade to a varbound constraint if abspower constraint contains a multi-aggregated variable
3150  - fixed several bugs related to hashing of constraints/rows in cutpool.c and cons_linear.c
3151  - fixed registration of almost fixed nonlinear variables in abspower constraints
3152 
3153 - Propagator:
3154  - fixed releasing of variables in the genvbounds propagator in case the problem could be solved during presolving of a restart
3155  - fixed numerical issues in bound widening of variable bound constraint handler and vbound propagator during conflict analysis
3156 
3157 @page RN40 Release notes for SCIP 4.0
3158 
3159 @section RN401 SCIP 4.0.1
3160 *************************
3161 
3162 Features
3163 --------
3164 
3165 - added parsing functionality to cardinality constraint handler for CIP format
3166 - allow to relax objective limit in reoptimization in presolved stage
3167 - suppress excessive printing about numerical troubles in LP on default verblevel (high)
3168 
3169 Performance improvements
3170 ------------------------
3171 
3172 - only accept passed improving solutions in heur_indicator
3173 - add and use RESTRICT macro for some pointers
3174 - sorting of parents and children for some expression types is now independent of memory layout
3175 
3176 - Constraints:
3177  - widened a bottleneck in simplifying long signomial sums in a nonlinear constraint
3178  - unified and extended code that improves numerics of cuts generated by nonlinear constraint handlers
3179 
3180 - Separation:
3181  - stop separation in cons_indicator after maxsepanonviolated many non violated separated cuts
3182  - improve choice of variable to enter support in separation of cons_indicator
3183 
3184 Interface changes
3185 -----------------
3186 
3187 ### New API functions
3188 
3189 - SCIPvalidateSolve() to compare solving result with an external primal and dual reference value
3190 - SCIPisObjChangedProbing() to check whether the objective function has changed during probing mode
3191 - SCIPgetDualSolVal() to get the dual solution value of a constraint
3192 - SCIPisLPPrimalReliable() and SCIPisLPDualReliable() to check whether the current primal / dual LP solution
3193  were successfully checked for feasibility
3194 
3195 ### Command line interface
3196 
3197 - New option in the interactive shell to validate the solution against an external primal and dual reference value
3198 - added command line option `-o` and command `validatesolve` in interactive shell
3199  to validate the solution against an external primal and dual reference value.
3200 
3201 ### Interfaces to external software
3202 
3203 - Updated and new interfaces to Mosek 8.1, GAMS and Gurobi
3204 - new LP interface to Glop (Google OR tools); CMake only
3205 
3206 ### Changed parameters
3207 
3208 - renamed parameter `heuristics/completesol/maxunkownrate` to `heuristics/completesol/maxunknownrate`
3209 
3210 Testing
3211 -------
3212 
3213 - add options to make test target (see Makefile section)
3214 
3215 Build system
3216 ------------
3217 
3218 ### Cmake
3219 
3220 - New CMake build system alongside the usual Makefile setup
3221 
3222 ### Makefile
3223 
3224 - added make options for specifying EXECUTABLE and OUTPUTDIR variables for the make test target
3225 
3226 Fixed bugs
3227 ----------
3228 
3229 - fixed unintended behavior of interrupt signal handler inside SCIP copies
3230 - fixed uninitialized values in SCIP's digraph data structure after calling SCIPdigraphResize()
3231 - fixed issue related to SCIPcreateFiniteSolCopy() not being able to remove all infinite fixings
3232 - fixed issue in SCIPcopyLimits() w.r.t. soft time limit
3233 - fixed bug in dynamic resizing of hashtables and hashmaps
3234 - added workaround for bug in primal simplex of cplex 12.7.1.0 occuring when attempting to solve LPs without rows without presolving
3235 - fixed bug in binpacking example that might have led to doing the same branching several times
3236 - fixed memory issue in binpacking example
3237 - in GAMS writer, forbid also various parenthesis characters in gams symbol names
3238 - added missing definition of `SCIP_UNUSED` in memory.h if def.h is not included
3239 - treat reopt bugs: Avoid numerical problems with changing objective; fix check for changed objective
3240 - fixed reading issue in mps reader: integer variables fixed to 0 or 1 are treated as binaries now,
3241  allowing to use them as indicator variables
3242 - afternode heuristics are now called even if the node limit was reached and the solving process will be stopped
3243  after the current node
3244 - fixed bug when activating probing mode with a non-empty separation storage
3245 
3246 - LP interfaces:
3247  - fixed guard against using old Gurobi versions in lpi_grb.c: Gurobi 7.5 was not permitted
3248  - fixed wrong handling of unboundedness status in lpi_grb.c
3249  - fixed wrong handling of row basis status in lpi_grb.c
3250 
3251 - Propagator:
3252  - fixed bug in shift and propagate--variable information with a negation transformation is correctly reset after backtracking
3253  - fixed bug in genvbounds propagator when applying a restart after the root node
3254 
3255 - Constraints:
3256  - fixed bug in varbound coefficient tightening: if a varbound constraint only contained one variable afterwards,
3257  it may have been deleted without applying the induced bound, if the change was too small, this is now forced
3258  - fixed potential wrong locks update after a varbound constraint became redundant in coefficient tightening
3259  - fixed potentially wrong cleanup of fixed variables in nonlinear constraint handler
3260  - fixed memory leak in OSiL reader when using SOS constraints
3261 
3262 - Solution:
3263  - improved handling of infinite values in a primal solution in quadratic and nonlinear constraints
3264  - fixed bug in computing violation and cut for certain nonlinear constraints when LP solution is slightly out of bounds
3265  - fixed debug solution check that appeared in probing mode when the objective function has changed
3266  - relaxed a too strong assert concerning solutions close to the objective limit
3267 
3268 @section RN400 SCIP 4.0.0
3269 *************************
3270 
3271 Features
3272 --------
3273 
3274 - Introduced support for partial or infeasible user solutions, which SCIP tries to complete/repair heuristically
3275 - implemented linear time methods for (weighted) median selection for joint arrays of various types
3276 - added adaptive solving behavior of SCIP based on solving phases and heuristic transitions, if enabled via `solvingphases/enabled`
3277 - can now solve relaxations within probing
3278 - in case of multiple relaxators the best solution is saved instead of the last one
3279 - added write callback for reader_bnd
3280 - added possibility to use a reference value for advanced analysis of the tree search. If a finite reference value
3281  (an objective value in original objective space) is passed via misc/referencevalue, SCIP keeps track of the
3282  number of nodes exceeding the reference value and the number of early backtracks -- path switches in the tree when
3283  a child node with lower bound smaller than the reference value was available.
3284 - added reading capabilities for partial solutions with extension *.mst
3285 - new global shift off all random seeds (randomization/randomseedshift) and unification of all existing random seeds
3286 - use new macros SCIPdebugMsg(), SCIPsetDebugMsg(), SCIPstatDebugMsg() at all places where it makes sense
3287 - new random number generator in pub_misc.h
3288 - add check whether variables have been released when freeing SCIP
3289 - a print callback can now be specified for user expressions
3290 
3291 - LP Solutions:
3292  - will now enforce relaxation solution instead of lp or pseudosolution if lowerbound is better and the whole lp is included in the relaxation
3293  - new feature solution polishing to improve integrality of LP solutions
3294 
3295 - Constraints:
3296  - new constraint handler for cardinality constraints
3297  - added interval-evaluation of sine and cosine
3298  - allow to create constraints of constraint handlers that don't need constraints
3299  - New constraint handlers cardinality and components
3300 
3301 - Conflicts:
3302  - implement a storage for conflicts to have more control over active conflicts
3303  - Improved conflict analysis through central conflict pool and dual ray analysis for primal infeasible LPs; can now analyze dual
3304  unbounded rays of primal infeasible LPs
3305 
3306 - Presolving:
3307  - New presolvers that disaggregate SOC constraints and reformulate QP's by adding KKT conditions
3308  - new presolving step for variables contained in a single quadratic constraint with proper square coefficients
3309  - add new presolving step to disaggregate second order cone constraints
3310  - new presolving method presol_qpkktref to add the KKT conditions of a QP
3311  - implemented and extended stuffing presolving in linear constraint handler
3312  - new components constraint handler which replaces the components presolver; it searches for independent subproblems
3313  and solves small ones as sub-SCIPs during presolve, larger ones are solved alternatingly during the main solving process
3314  - new presolving timing FINAL: presolving methods with this timing are only called once after all other presolvers with timings
3315  FAST, MEDIUM and EXHAUSTIVE are finished; during this timing only reductions are allowed that are self-contained, e.g.,
3316  fixing all variables and deleting all constraints of an independent component; note that reductions found in this timing
3317  do not trigger a new presolving round
3318 
3319 - Separation and Cuts:
3320  - can now separate perspective cuts for indicator constraints
3321  - add sepa_convexproj, a separator which projects onto convex relaxation and build gradient cuts at the projection
3322  - add sepa_gauge, a separator which computes an interior point of a convex relaxation and performs a binary search in the segment joining
3323  the interior point and the point to separate until it finds a point in the boundary of the feasible region where to build a gradient cut
3324  - changed handling of coupling constraints in cons_indicator; the cuts will not be added to the pool, but are separated by default
3325  - concurrent solving mode that allows to run multiple SCIP instances, that share solutions and global variable bounds, in parallel
3326  - Revised pseudo random number generation and introduced central random seed for all plugins
3327 
3328 - Heuristics:
3329  - new Graph induced neighborhood search (GINS) primal heuristic that uses neighborhoods
3330  based on distances in the variable constraint connectivity graph.
3331  In addition, the heuristic supports a rolling horizon-like procedure to solve auxiliary problems
3332  for neighborhoods with increasing distance from the starting neighborhood.
3333  - new primal heuristic LP face that tries to find an integer solution inside the optimal LP face.
3334  - new heuristic that tries to complete partial solutions
3335  - the subnlp heuristic now gives ownership of a found solution to the heuristic that constructed the starting point, if any;
3336  as a consequence, MIP heuristics may now be shown more frequently for having found a solution when solving MINLPs, even
3337  though the solutions required an additional NLP solve
3338  - new multistart heuristic for NLPs
3339 
3340 - Propagator:
3341  - add prop_nlobbt, a nonlinear optimization-based bound propagator solving two convex NLP relaxations for each variable
3342  - nodes can now be postponed; currently, this can only be triggered by BEFORELP propagation callbacks
3343 
3344 - Statistic:
3345  + Extended statistic output displayable via the interactive shell
3346  + new statistic computed: `Root LP Estimate` that shows the root LP best-estimate with every pseudo-cost update
3347  + added leaf statistics about LP objective limit|feasible|infeasible leaves to the statistics output and
3348  to the callable library: SCIPgetNObjlimLeaves(), SCIPgetNFeasibleLeaves(), SCIPgetNInfeasibleLeaves()
3349  + next to the number of found solution, also the number of new best solutions is now printed for each heuristic
3350  (and relaxation solutions) in the statistics in the `Primal Heuristic` section.
3351 
3352 Performance improvements
3353 ------------------------
3354 
3355 - Extended the presolving timings by an additional timing FINAL for self-contained reductions
3356 - Randomized tie-breaking in different parts of the code to reduce performance variability
3357 - use connectedness information of the clique table to speed up the clique partitioning algorithm
3358 - knapsack approximation algorithms use linear-time weighted median selection instead of sorting
3359 - improved greedy solution in SCIPsolveKnapsackApproximatelyLT() for the flow cover separation
3360 - reduce performance variability by using random numbers as tie-breaker for external branching candidates
3361 
3362 - Heuristics:
3363  - adjusted most Large Neighborhood Search heuristics such that they collect their variable fixings first in an array,
3364  and only create and populate a sub-SCIP if enough variables will be fixed.
3365  - reduce performance variability by using a small perturbation in the undercover heuristic
3366  - 1-opt heuristic can now be repeatedly executed as long as new incumbents are found
3367 
3368 - Constraints:
3369  - Improved and extended stuffing inside of linear constraint handler
3370  - Changed handling of coupling constraints in cons_indicator
3371  - SCIP supports constraint compression for problem copies; constraint compression denotes the immediate
3372  removal of fixed variables from constraint data at creation time to reduce memory requirements.
3373 
3374 - Propagation:
3375  - rewrote the propagate-and-cut-and-price loop so that successful propagations with DURINGLPLOOP timing, bound changes found by separation,
3376  and new primal solutions now trigger a new round of node solving, starting with propagation; improved tuning of propagation and heuristic timings
3377  - tuned propagation methods of several constraint handlers
3378  - make more use of SCIPmarkConsPropagate() to mark constraints for propagation and improved the internal handling of marked constraints
3379  - improve propagation of absolute-value expression in the case that the sign of the argument is fixed
3380 
3381 Interface changes
3382 -----------------
3383 
3384 ### New and changed callbacks
3385 
3386 - Concurrent SCIP:
3387  - extended interface to support concurrent solving mode
3388 
3389 - Constraint Handlers:
3390  - new optional callback `CONSENFORELAX` to enforce a relaxation solution, see \ref CONS
3391  - `CONSINITLP` callback now has a new parameter `infeasible`, which is a pointer to store whether infeasibility
3392  was detected while building the initial LP relaxation
3393 
3394 ### Deleted and changed API methods
3395 
3396 - setting a parameter to a non-valid value now produces an error message instead of a warning
3397 - bound reader uses angle bracket around variable names
3398 - the parameters of SCIPlpiChgObj(), SCIPlpiSetBase(), SCIPlpiSetState(), SCIPlpiSetNorms() have been declared as const
3399 - SCIPapplyHeurSubNlp() can now return the solution found by the sub-NLP heuristic
3400 
3401 - Random:
3402  - methods SCIPrandomGetInt() substitutes SCIPgetRandomInt() (marked to be deprecated)
3403  - methods SCIPrandomGetReal() substitutes SCIPgetRandomReal() (marked to be deprecated)
3404  - methods SCIPrandomPermuteArray() substitutes SCIPpermuteRandomArray() (marked to be deprecated)
3405  - methods SCIPrandomPermuteIntArray() substitutes SCIPpermuteRandomIntArray() (marked to be deprecated)
3406  - method SCIPrandomGetSubset() substitutes SCIPgetRandomSubset() (marked to be deprecated)
3407 
3408 - Conflict Analysis:
3409  - added parameters `conftype` and `iscutoffinvolved` to SCIPinitConflictAnalysis()
3410  that indicate the type of the conflict and whether the current cutoff bound is used or not
3411 
3412 - Constraint Handlers:
3413  - added parameter `infeasible` to SCIPinitlpCons()
3414 
3415 - Copying:
3416  - added parameters `fixedvars`, `fixedvals`, `nfixedvars` to SCIPcopyVars()
3417  - added parameters `fixedvars`, `fixedvals`, `nfixedvars` to SCIPcopyOrigVars()
3418  - renamed parameter `success` to `valid` in SCIPgetConsCopy()
3419 
3420 - Hashmap and Hashtable:
3421  - removed function SCIPcalcHashtableSize() since not required anymore for `SCIP_HASHTABLE` and `SCIP_HASHMAP`
3422  - based on the initial size `SCIP_HASHTABLE` and `SCIP_HASHMAP` choose an appropriate size internally to allow insertion of that
3423  many elements without resizing
3424  - `SCIP_MULTIHASH` behaves like the old `SCIP_HASHTABLE` and SCIPcalcMultihashSize() should be used as replacement for
3425  SCIPcalcHashtableSize()
3426 
3427 - Nonlinear Relaxation:
3428  - added parameter `curvature` to SCIPcreateNlRow()
3429 
3430 - Parameters:
3431  - the following new methods return a bool indicating whether the given value is valid for the parameter instead of printing a warning
3432  message and returning an error code if the value is invalid
3433  - renamed method SCIPcheckBoolParam() to SCIPisBoolParamValid()
3434  - renamed method SCIPcheckLongintParam() to SCIPisLongintParamValid()
3435  - renamed method SCIPcheckCharParam() to SCIPisCharParamValid()
3436  - renamed method SCIPcheckStringParam() to SCIPisStringParamValid()
3437  - renamed method SCIPcheckRealParam() to SCIPisRealParamValid()
3438  - in param.c/h: the new methods return a bool whether the given value is valid for the parameter instead of printing a warning message
3439  and returning an error code if the value is invalid
3440  - rename SCIPparamCheckBool() to SCIPparamIsValidBool()
3441  - rename SCIPparamCheckString() to SCIPparamIsValidString()
3442  - rename SCIPparamCheckChar() to SCIPparamIsValidChar()
3443  - rename SCIPparamCheckLongint() to SCIPparamIsValidLongint()
3444 
3445 - Primal Heuristics:
3446  - added parameter `initialseed` to SCIPcreateDiveset()
3447  - introduced new type `SCIP_HEURTIMING` for primal heuristic timing masks
3448  - changed type of parameter `timingmask` from unsigned int to `SCIP_HEURTIMING` in SCIPincludeHeur(), SCIPincludeHeurBasic()
3449 
3450 - Relaxators:
3451  - new parameter `includeslp` for SCIPincludeRelax() and SCIPincludeRelaxBasic()
3452  to indicate whether relaxation includes all linear rows and can be enforced
3453 
3454 - Reoptimization:
3455  - rename method SCIPgetReopSolsRun() to SCIPgetReoptSolsRun()
3456 
3457 - Solutions:
3458  - added parameter `completely` to SCIPtrySol(), SCIPtrySolFree(), SCIPcheckSol() to check all constraints when
3459  printing violations
3460 
3461 - Variables:
3462  - removed SCIPvarGetLbAtIndex() and added SCIPgetVarLbAtIndex()
3463  - removed SCIPvarGetUbAtIndex() and added SCIPgetVarUbAtIndex()
3464  - removed SCIPVarGetBdAtIndex() and added SCIPgetVarBdAtIndex()
3465  - removed SCIPvarWasFixedAtIndex() and added SCIPgetVarWasFixedAtIndex()
3466  - Removed method SCIPvarGetNBinImpls()
3467 
3468 ### New API functions
3469 
3470 - added functions for concurrent solving mode (see concurrent.h, concsolver.h)
3471 - SCIPcreateNlpiProb(), SCIPupdateNlpiProb() and SCIPaddNlpiProbRows() to create and update a nonlinear relaxation
3472 - SCIPgetNObjlimLeaves(), SCIPgetNFeasibleLeaves(), SCIPgetNInfeasibleLeaves() for statistics output
3473  about LP objective leaves
3474 - SCIPcheckCopyLimits() which can be used to check that enough time and memory is left to run a sub-SCIP after
3475  subtracting time and memory used by the main-SCIP and SCIPcopyLimits() which copies these limits accordingly and disables
3476  all other limits (need to be set by the plugin, if needed)
3477 - SCIPcopyLargeNeighborhoodSearch() in heuristics.h that supports compressed copying and two kinds of problem copy: the MIP-relaxation or
3478  a 1-1 problem copy (by copying the constraints and not the LP relaxation)
3479 - SCIPsolveProbingRelax() to solve a relaxation within probing
3480 - SCIPgetLastStrongbranchingLPSolstat() to query the LP statuses after strong branching on a variable
3481 - SCIPinitializeRandomSeed()
3482 - SCIPswapReals() to swap two real values
3483 - SCIPgetNNZs() to get the number of active non-zeros in the transformed/presolved problem
3484 
3485 - Debug Messages:
3486  - SCIPprintDebugMessage(), SCIPsetPrintDebugMessage(), SCIPstatPrintDebugMessage() that output debug messages and also print the
3487  subscip depth; the first two output via the message handler; also added macros SCIPdebugMsg(), SCIPsetDebugMsg(), SCIPstatDebugMsg()
3488  - SCIPdebugMsgPrint()/SCIPsetDebugMsgPrint() that output a message without `[debug]` prefix via the message handler (compare SCIPdebugPrintf())
3489 
3490 - Solution:
3491  - SCIPisDualSolAvailable() to query the dual solution availability
3492  - SCIPlpiSetIntegralityInformation() to improve SoPlex' solution polishing
3493 
3494 - Constraints:
3495  - library methods SCIPcopyConsCompression(), SCIPcopyOrigConsCompression() that accept an array of variables that are immediately
3496  fixed in the copy. Alternatively, local instead of global bounds can be used for compression.
3497  - library methods SCIPenableConsCompression(), SCIPisConsCompressionEnabled(), SCIPcopyConsCompression(), SCIPcopyOrigConsCompression()
3498  - SCIPgetIntVarXor() to access integer variable of XOR constraints
3499  - SCIPcreateConsCardinality() to create a cardinality constraint
3500  - SCIPcreateConsBasicCardinality() to create a basic cardinality constraint
3501  - SCIPchgCardvalCardinality() to changes cardinality value of cardinality constraint (i.e., right hand side of cardinality constraint)
3502  - SCIPaddVarCardinality() to add a variable to a cardinality constraint
3503  - SCIPappendVarCardinality() to append a variable to a cardinality constraint
3504  - SCIPgetNVarsCardinality() to get the number of variables in a cardinality constraint
3505  - SCIPgetVarsCardinality() to get the array of variables in a cardinality constraint
3506  - SCIPgetCardvalCardinality() to get the cardinality value of a cardinality constraint (i.e., right hand side of cardinality constraint)
3507  - SCIPgetWeightsCardinality() to get the array of weights of a cardinality constraint
3508  - SCIPgetLinvarMay{Decrease,Increase}Quadratic() to get index of a variable in linear term of quadratic constraint that may be decreased
3509  without making any other constraint infeasible
3510 
3511 - Parameters:
3512  - add SCIPparamIsValidInt() and SCIPparamIsValidReal() to param.c/h
3513  - add missing functions SCIPisIntParamValid() and SCIPisRealParamValid() to scip.c/h
3514 
3515 ### Command line interface
3516 
3517 - new command line parameter `-v` to print detailed build options
3518 
3519 ### Interfaces to external software
3520 
3521 - Interfaces for Python and Java are, among others, now available via http://www.github.com/scip-interfaces
3522 - Revised documentation of the SCIP C-API to group methods more comprehensively by topics
3523 - dropped support for Ipopt < 3.11
3524 - Additional I/O-functionalities for debugging and logging in SCIP and in the AMPL interface
3525 - updated CppAD to 20160000
3526 - for users of the ampl interface, the display/logfile option has been added to set the name of a
3527  file to write the SCIP log to (additionally to stdout)
3528 
3529 - LP Interfaces:
3530  - SCIP uses the lpi_spx2 interface by default
3531  - Improved Gurobi interface that can handle ranged rows (requires Gurobi >= 7.0.2)
3532  - the CPLEX LPI now also compiles with CPLEX 12.7.0.0
3533 
3534 ### Changed parameters
3535 
3536 - setting a value for a fixed parameter will no longer return with an error, if the new value equals the one to which the parameter is fixed
3537 - changed value of parameter `separating/clique/cliquedensity` to 0.0 such that the separator always constructs a dense clique table
3538  which proved to be faster on the benchmarks MMM and stableset.
3539 - parameters `misc/permutationseed`, `misc/permuteconss` and `misc/permutevars` changed to `randomization/permutationseed`,
3540  `randomization/permuteconss` and `randomization/permutevars`
3541 - parameters `conflict/useinflp` and `conflict/useboundlp` are now of type char (before bool)
3542 - all parameters of the components presolver (starting with `presolving/components/`) are now parameters of the components
3543  constraint handler (starting with `constraints/components/`)
3544 
3545 ### New parameters
3546 
3547 - class randomization
3548 - `branching/sumadjustweight` to adjust branching scores by adding a sum epsilon in order to keep score differences
3549  near zero, which are otherwise completely disregarded (they are adjusted to at least sum epsilon)
3550 - `concurrent/∗ ` and `parallel/∗ ` for configuring the concurrent solving mode
3551 - `constraints/cardinality/branchbalanced` to decide whether to use a balanced branching scheme in the enforcing of cardinality
3552  constraints
3553 - `constraints/cardinality/balanceddepth` to set the maximal depth until balanced branching is turned off
3554 - `constraints/cardinality/balancedcutoff` to determine that balanced branching is only used if the branching cut off value
3555  w.r.t. the current LP solution is greater than a given value
3556 - `constraints/indicator/sepaperspective` to turn on separation of perspective cuts for indicator constraints
3557 - `constraints/indicator/sepapersplocal` to decide whether local cuts can be used for perspective cuts for indicator constraints
3558 - `constraints/quadratic/projectedcuts` to enable convex quadratics to generate gradients cuts at the
3559  projection of the point onto the region described by the constraint, which is supporting
3560 - `lp/solutionpolishing` to enable LP polishing only at the root LP or always
3561 - `misc/referencevalue` to pass a reference value for further analysis of the tree search, see also in `features`
3562 - `presolving/qpkktref/addkktbinary` to allow the presence of binary variables for the KKT update
3563 - `presolving/qpkktref/updatequadbounded` to add the KKT conditions to QPs only if all variables are bounded
3564 - `presolving/qpkktref/updatequadindef` to add the KKT conditions to QPs only if the quadratic matrix is indefinite
3565 - `randomization/lpseed` to set the initial seed of the LP solver
3566 - `solvingphases/enabled` to activate adaptive behavior during the solution process; several further parameters
3567  in the solvingphases-section to control how to switch the parameters and whether a restart should be performed between the phases.
3568 
3569 ### Data structures
3570 
3571 - new `SCIP_REGRESSION` data structure in pub_misc.h to incrementally compute a best-fit line through pairs of observations
3572 - add maximum branch-and-bound tree depth constant `SCIP_MAXTREEDEPTH` (replaces SCIPgetDepthLimit() and SCIPtreeGetDepthLimit())
3573 - new files heuristics.c/heuristics.h to collect methods that are frequently used by heuristics
3574 - merged dive.c/pub_dive.h with heuristics.c/heuristics.h, removed dive.c/pub_dive.h
3575 - separated header pub_misc.h from repeated methods for sorting and (weighted) median selection;
3576  those are also available in separate headers pub_misc_sort.h
3577  and pub_misc_select.h, but included into pub_misc.h
3578 
3579 Unit tests
3580 ----------
3581 
3582 - New unit testing system built on the Criterion framework
3583 
3584 Build system
3585 ------------
3586 
3587 ### Makefile
3588 
3589 - All makefiles in `examples/` and `applications/` have been updated.
3590 - `make.project` defines a variable `SCIP_VERSION` containing the SCIP version number
3591 - revise sub-makefiles for MSVC on MinGW
3592 - make shared libraries aware of their dependencies
3593 - sub-makefile for CrayXC systems added
3594 
3595 - Places:
3596  - All objective files are now placed in `obj/static` or `obj/shared`, depending on `SHARED=false` or `SHARED=true`, respectively.
3597  - All internal and external libraries are placed in `lib/static` and `lib/shared`, the include files are in `lib/include`.
3598  - The binaries now contain an rpath to the SCIP directory, such that shared libraries are found.
3599 
3600 - Linking:
3601  - link binary to shared libs when compiling with `SHARED=true`
3602  - External projects (including make.project) can use the makefile variable LINKCXXSCIPALL or LINKCCSCIPALL to link all SCIP libraries.
3603  - Building with `SHARED=true` automatically generates the combined library libscipsolver.so for easier linking
3604 
3605 - Targets:
3606  - Running `make help` lists all makefile options.
3607  - `make install` copies now all header files
3608  - new target `dll` to build Windows dlls with MSVC
3609  - rename `dll` target to `windowslib`
3610 
3611 Fixed bugs
3612 ----------
3613 
3614 - fixed bug in event system: bound change events of the new focus node must be processed, even if the bound
3615  is the same as at the last focus node
3616 - avoid numerically unstable (multi-)aggregations
3617 - fixed bug in XML reader concerning comments
3618 - the AMPL interface now writes a solve status (solve_result_num) into the .sol file
3619 - in the cmpres.awk (allcmpres.sh) output, the counts in the time column are now with respect to the
3620  whole set of processed instances (as with fail and solv), while before it was with respect to the
3621  set of instances where no solver failed (eval set); thus, now proc = fail + time + solv.
3622 - writing of solutions or parameters to a file now works also with the message handler set to quiet
3623 - ignore lower and upper bound tightenigs beyond +/-infinity during solving
3624 - time limit of SCIP-infinity is converted to LPI-infinity when setting it
3625 - fix LP activity of a row that has been modified
3626 
3627 - Propagation:
3628  - fixed possible segmentation fault in genvbounds propagator
3629  - fixed bug with sorting of propagators in presolving: the order can be changed by calling probing; thus, there is a copy of the
3630  propagators, which is sorted by presolving priority
3631  - added missing capturing and releasing mechanism in genvbounds propagator
3632  - fix wrong propagation of product expressions
3633 
3634 - Constraints:
3635  - fixed wrong representation of SOC constraints in NLP
3636  - fixed a few issues within redundant constraint detection of (specialized) linear constraint handlers
3637  - fixed issue in reader_opb concerning writing of fixed variables contained in no constraints
3638 
3639 - Memory:
3640  - fixed memory bug in `SCIP_DIGRAPH`
3641  - improved counting of memory consumption by using more block memory and counting all allocated memory
3642  - fix memory leaks in TSP example
3643  - return `SCIP_ERROR` when a memory exception is caught in SoPlex (was `SCIP_LPERROR`)
3644  - fixed memory leak in OSiL reader
3645 
3646 - Objective:
3647  - fixed bug while changing the objective value of an original value after transforming the problem
3648  - fixed bug with solutions from previous runs not satisfying an objective limit
3649  - SCIPisObjIntegral() now works correctly in `SCIP_STAGE_PROBLEM`
3650 
3651 - Heuristics:
3652  - fixed two bugs in heur_indicator: use improvesols parameter now and update pointer to indicator constraint handler
3653  - fix wrong NLP representation of logic-or constraints in the dual value heuristic
3654  - correct handling of implicit integer variables with fractional solution value in simplerounding heuristic
3655  - fixed bug in heur_octane with uninitialized ray direction
3656 
3657 @page RN32 Release notes for SCIP 3.2
3658 
3659 @section RN321 SCIP 3.2.1
3660 *************************
3661 
3662 Features
3663 --------
3664 
3665 - new `force` parameter in (root)redcost propagator to run the propagator also with active pricers
3666 
3667 Performance improvements
3668 ------------------------
3669 
3670 - do not transfer solutions to original space, if SCIP is being freed
3671 - modified implication graph analysis of SOS1 constraint handler; a new component allows to deduce zero fixings of variables
3672 - made SOS1 constraint handler specific diving selection rule faster for the case that the SOS1 constraints do not overlap
3673 - improved disjunctive cuts by the `monoidal cut strengthening` procedure of Balas and Jeroslow
3674 
3675 Examples and applications
3676 -------------------------
3677 
3678 - several improvements of SCIP-Jack (STP application): extended presolving for STP variants, STP-specific branching
3679  rule, dual heuristic to generate initial LP relaxation
3680  SCIP-Jack is now competitive with problem specific state-of-the-art solvers on several well-known STP variants,
3681  e.g., the (rooted) prize-collecting Steiner tree problem.
3682 - MultiObjective application renamed to PolySCIP; several improvements: better command line argument processing,
3683  overhaul of much of the source code, installation via CMake
3684 
3685 Interface changes
3686 -----------------
3687 
3688 - made debug solution functionality thread safe (see debug.h for further information)
3689 
3690 ### Deleted and changed API methods
3691 
3692 - add SCIPcomputeHyperplaneThreePoints() to compute a hyperplane containing three given 3-dimensional points
3693 - SCIPsolveLinearProb() now uses a 1-dimensional matrix representation
3694 
3695 ### Command line interface
3696 
3697 - added interactive shell command `display finitesolution` to print solution with infinite fixings removed,
3698  added reference to that method to `display solution` output if there are infinite fixings
3699 - new interactive shell command `write history` to write the command line history (only when compiled with Readline)
3700 
3701 ### Interfaces to external software
3702 
3703 - significantly improved Python interface to support user callbacks as well as linear and quadratic expressions
3704 
3705 ### New parameters
3706 
3707 - `constraints/sos1/branchingrule` to decide whether to use neighborhood, bipartite, or SOS1 branching (this parameter
3708  replaces the old parameters `constraints/sos1/neighbranch`, `constraints/sos1/bipbranch`, and `constraints/sos1/sos1branch`)
3709 - `constraints/sos1/depthimplanalysis` to limit the number of recursive calls of implication graph analysis
3710 - `constraints/sos1/perfimplanalysis` to perform an implication graph analysis to deduce variable fixings and
3711  additional SOS1 constraints (this parameter replaces the old parameter `constraints/sos1/updateconflpresol`)
3712 - `misc/transsolorig` for transfering transformed solutions to the original space (default: true)
3713 - `propagating/rootredcost/onlybinary` to propagate root reduced costs of binary variables only
3714 
3715 ### Data structures
3716 
3717 - renamed MIP matrix structure to `SCIP_MATRIX`
3718 - changed the numeric values for `PRESOLTIMING` flags
3719 
3720 Build system
3721 ------------
3722 
3723 ### Makefile
3724 
3725 - new target `dll` to build Windows dlls with MSVC
3726 - add new compiling flag OPENSOURCE to allow/forbid the usage of third party software
3727 
3728 Fixed bugs
3729 ----------
3730 
3731 - fixed wrong objective sense when copying the original problem
3732 - fixed a bug in merge step of cliques during clean up phase; method did not correctly handle infeasibility in the case of multiple
3733  variable-negation pairs
3734 - fixed a previously untreated case in the linear cons simplification where coefficients only differ by slightly more than an epsilon
3735 - fixed bug in parsing emphasis parameters which formerly led to completely wrong results
3736 - fixed bug in the computation of the Wilcoxon test
3737 - do not use the relative and absolute gap limit if no primal solution has been found so far
3738 - fixed bug in conflict.c with wrong reset of bounds used
3739 - fixed bug with transferring solutions to new runs (need to recompute objective before checking)
3740 - fixed issue with infinite values when checking cuts for redundancy
3741 - fixed library problems on Windows operating systems
3742 
3743 - Variables:
3744  - fixed wrong check when computing cuts for factorable quadratic functions bound tightening of a single variable
3745  - fixed wrong handling of loose variables in OBBT
3746  - fixed freeing of hash for binary variables
3747  - fixed bug during the computation of branching points for continuous variables which are almost fixed to +/- SCIPinfinity()
3748  - treated the case of integer variables as intermediate variables in the process of obtaining the active variable for a
3749  given binary variable
3750 
3751 - LP:
3752  - fixed a bug in dive.c that occurred when lpsolvefreq was set to 1; after a cutoff, the solution values of the
3753  linked LP solution might have become invalid
3754  - do not analyse an infeasible LP for conflicts during diving mode when LHS/RHS of rows were changed
3755  - use LPi infinity when reverting bound changes in conflict analysis
3756 
3757 - Heuristics:
3758  - fixed bug in heur_simplerounding in connection with relaxators
3759  - fixed bug in feaspump heuristic where last solution candidates were not updated correctly
3760  - fixed bug with infinite shift values in heur_shifting
3761  - fixed bug in shiftandpropagate heuristic: the heuristic did not correctly handle intermediate, global bound changes of the selected variable
3762  after its tentative fixing led to a cutoff.
3763 
3764 - Propagator:
3765  - (root) reduced cost propagators are not run anymore when doing branch-and-price,
3766  since they may install upper bounds on variables which might interfere with the
3767  pricing (they may be enabled again by their force parameters)
3768  - fixed too hard assertion in pseudoobj propagator
3769  - fixed a bug in shiftandpropagate where column positions after sorting are now correctly linked to their variables after sorting
3770  - fixed potential memory leak in genvbound propagator
3771 
3772 - Presolving:
3773  - fixed inconsistency in knapsack constraint handler data during presolving
3774  - fixed some problem with reoptimization when the problems are infeasible or have been solved in presolving
3775  - fixed endless loop in knapsack constraint handler when continuous variables change their types to binary during presolving
3776  - squares of binary variables might not have been replaced by the binary variable itself in presolve,
3777  if the variable was originally general integer and only became binary during presolve (due to bound tightening)
3778  - fixed bug in dive.c avoiding a check of constraints in the presence of indicator constraints
3779 
3780 - Constraints:
3781  - fixed numerical problems in computation of cuts for bivariate functions in quadratic constraint handler
3782  - fixed bug in quadratic constraint handler when computing lifted-tangent inequalities
3783  - fixed bug in nonlinear constraint handler when replacing a violated nonlinear constraint leads to an infinite
3784  - fixed bug in SOS1 constraint handler with inconsistent data structure after restart
3785  - fixed wrong handling of negated variables in bound tightening procedure of SOS1 constraint handler
3786  - fixed bug in simple fixing heuristic of SOS1 constraint handler
3787  - fixed two bugs in pseudoboolean constraint handler with wrong sorting of and constraints
3788  - fixed issue: constraints being parallel to objective function (after restart) sometimes led to wrongly stating infeasible
3789  - fixed bug during coefficient tightening in varbound constraint handler
3790  - handle cutoffs in cons_indicator detected by infeasible inequalities
3791  - fixed late change of type of slack variables in cons_indicator, if the bounds are not integral
3792  - fixed initsol and exitsol of cons_indicator, if problem has already been solved
3793  - fixed bug in cons_indicator with changing type of slackvariable
3794 
3795 @section RN320 SCIP 3.2.0
3796 *************************
3797 
3798 Features
3799 --------
3800 
3801 - added reoptimization feature for optimization problems with changed objective function or tighter feasible region
3802 - the original problem can now be permuted directly after reading (if `misc/permutationseed` has value >= 0)
3803 - added methods to compute strongly connected components with Tarjan's Algorithm
3804 - added method to propagate implications of SOS1 variables
3805 - convex quadratic contraints can now generate gradient cuts which are supporting to the feasible region
3806 - SoPlex interface can now (re)store dual steepest edge weights
3807 - extended expression parsing to support power, realpower and signpower operators; started support for user-defined operators
3808  in expression trees/graphs
3809 - possibility to set a soft time limit which becomes active only after the first primal solution was found
3810 - added matrix module for getting access to the internal mixed inter linear problem matrix
3811 - better handling of large values returned by the LP solver
3812 - added more checks to SCIP{alloc,realloc,duplicate}BufferArray() to handle overflows properly
3813 - new plugin for reoptimizing a sequence of optimization problem that differ in the objective function, e.g., sequences arising from
3814  column generation
3815 - new plugin `compr` for rearranging the search tree, currently this only works on the reoptimization tree
3816 - moved assertions in comparison methods from scip.c to set.c
3817 
3818 - Constraints:
3819  - we can now upgrade quadratic constraints with one bilinear term to SOC constraints
3820  - we can also upgrade general quadratic constraints with a single negative eigenvalue to SOC constraints
3821 
3822 - Branching:
3823  - tighter reliability notions introduced for reliability branching, based on pseudo-cost relative errors
3824  and comparing candidates with the best pseudo-candidate using a 2-sample student-T test. These methods
3825  are used in disjunction with the existing reliability notion that uses a fixed number as reliability
3826  threshold for every variable before turning off strong-branching. This means, the classical method
3827  must be turned off by setting parameters minreliable and maxreliable to 0. The behavior is
3828  controlled through several parameters.
3829  - new distribution branching rule to base decisions on row activity (normal) distribution over domain space
3830  - can now output information for BAK: Branch-and-bound Analysis Kit
3831  - new score in hybrid reliability pseudocost branching that prefers nonlinear variables when solving MINLPs
3832  - new branching rule multaggr which allows to branch on general disjunctions defined by fractional multi-aggregated variables
3833  - new branching rules for SOS1 constraints for branching on a neighborhood or a complete bipartite subgraph of
3834  the conflict graph. In addition to variable domain fixings, it is sometimes also possible to add complementarity
3835  constraints to the branching nodes. This results in a nonstatic conflict graph, which may change dynamically
3836  with every branching node.
3837  - new branching rule nodereopt to reconstruct the tree after changing the objective function
3838 
3839 - Reader:
3840  - the MPS reader can now read semi-integer variables, they are handled by creating bound disjunction constraints
3841  - the MPS reader can now handle objective constants given as (the negation of) the RHS of the objective row
3842 
3843 - Separation:
3844  - obbt propagator applies now additional separation and propagation in order to learn stronger and more bound tightenings
3845  - extended probing mode to allow separation and objective coefficient changes
3846  - improved separation procedure of SOS1 constraint handler, including bound (clique) cuts and implied bound cuts
3847  - new disjunctive cut separator for SOS1 constraints
3848  - new edge-concave cut separator for quadratic constraints
3849 
3850 - Presolver:
3851  - Improved coordination of presolvers. There are three timings for presolvers now, FAST, MEDIUM and EXHAUSTIVE.
3852  Each presolving callback can specify one or more of these timings in which it will be called later.
3853  Within a presolving method, the current timing can be checked and the algorithms to be performed selected based on
3854  the timing. In one presolving round, first all presolving methods with timing FAST are called, sorted by priority.
3855  If they found enough reductions, a new round is started, otherwise, all presolving methods with timing MEDIUM are
3856  called. Again, with enough reductions, a new presolving round is started, too few reductions lead to running
3857  the EXHAUSTIVE presolvers. Similar to the delay concept used before, we are not neccessarily running all EXHAUSTIVE
3858  presolvers but stop as soon as one of them found enough reductions, starting a new presolving round immediately.
3859  - new presolving components for SOS1 constraints, including bound tightening and clique extension
3860  - new presolver tworowbnd for improving variable bounds and detecting redundant constraints added
3861  - new presolver dualagg for aggregating single up-/downlocked variables by a binary variable added
3862  - new presolver implfree for aggregating implied free variables added
3863  - new presolver redvub which can detect redundant variable upper bound constraints added
3864  - new presolver stuffing for fixing of singleton continuous variables added
3865 
3866 - Heuristic:
3867  - improved clique and variable bound heuristics
3868  - new heuristic distribution diving that bases its score function on the changes regarding solution density
3869  - variable histories can be transferred between sub-SCIPs solved by LNS heuristics and the component presolver
3870  and the main SCIP to reuse this information.
3871  - new heuristic heur_indicator that tries to make partial solutions with indicator constraints feasible. It also
3872  tries to improve them (or external solutions) by a one-opt local search.
3873  - new heuristic (heur_bound) which fixes all integer variables to their lower/upper bounds and solves the remaining LP
3874  - modified diving heuristics to handle SOS1 constraints
3875  - new primal heuristic for reoptimization 'ofins': objective function induced neighborhood heuristic
3876  - new heuristic for reoptimization which constructs solutions based in the changes between the objective function and the optimal
3877  solution before changing the objective function
3878 
3879 - Statistic:
3880  - extended variable branching statistics in the interactive shell by sample variance of unit gains
3881  - extended statistic output of interactive shell by more information on diving heuristic behavior
3882 
3883 Performance improvements
3884 ------------------------
3885 
3886 - improved treatment of nonlinearities in hybrid reliability pseudo cost branching
3887 - using sparsity information of the SoPlex LP
3888 
3889 - Constraints:
3890  - improved vartype upgradability from continuous to implicit variables in cons_linear.c, depending on their objective coefficients
3891  - improved propagation of SOS1 constraint handler using the information from a conflict
3892 
3893 - Heuristics:
3894  - zi rounding heuristic uses buffer data structures, thereby decreasing total memory usage of SCIP
3895  - adjusted (hard) diving heuristics to solve fewer LPs. LP's are resolved only if a parameter-defined
3896  percentage of the variable bounds changed through domain propagation or at a predefined frequency.
3897  - some of the diving heuristics additionally consider indicator variables and SOS1 variables as candidate variables and try to
3898  make these constraint types feasible before passing a rounded solution to SCIPtrySol()
3899 
3900 - Presolving:
3901  - new presolving/propagation algorithm using the gcd for ranged rows and equations in cons_linear
3902  - added presolving levels (FAST, MEDIUM and EXHAUSTIVE) to allow better balancing of presolvers
3903 
3904 - Separation:
3905  - improved separation procedure of SOS1 constraint handler
3906  - improved separation procedure for convex quadratic constraints
3907 
3908 Examples and applications
3909 -------------------------
3910 
3911 - two new applications for multi-objective optimization (PolySCIP) and the Steiner Tree Problem in Graphs
3912 - new application for solving Steiner tree problems: SCIP-Jack can handle both the classical Steiner tree problem in graphs
3913  and 10 of its variants
3914 
3915 Interface changes
3916 -----------------
3917 
3918 ### New and changed callbacks
3919 
3920 - new callback function `SCIP_DECL_CONSGETDIVEBDCHGS` to provide
3921  constraint handler method to suggest dive bound changes during the generic diving algorithm, see type_cons.h for details
3922 - new callback `SCIP_DECL_DIVESETGETSCORE` to implement scoring function to guide diving
3923 
3924 ### Deleted and changed API methods
3925 
3926 - avoid potential comparisons of different infinity values by adjusting the LP solution value
3927 - SCIPintervalSign(), SCIPintervalAbs(), SCIPintervalMax(), SCIPintervalMin(), SCIPexprgraphGetNodePolynomialMonomialCurvature(),
3928  and SCIPexprgraphTightenNodeBounds() need an infinity value to decide whether an interval is empty or not
3929 - SCIPgetFeasibilityQuadratic() and SCIPgetActivityQuadratic() returns now a `SCIP_RETCODE` and needs an additional `SCIP_Real*` to
3930  store the result
3931 - methods which support statistical tests in pub_misc.h, SCIPstudentTGetCriticalValue(), SCIPcomputeTwoSampleTTestValue() etc.
3932 - SCIPsolveLinearProb() solves a linear problem of the form Ax=b for a regular square matrix A
3933 - Added parameter `freesubscip` to SCIPapplyProximity()
3934 
3935 - Data structures:
3936  - Renamed method SCIPdigraphGetSuccessorsDatas() to SCIPdigraphGetSuccessorsData()
3937  - Renamed method SCIPdigraphGetNodeDatas() to SCIPdigraphGetNodeData()
3938  - Renamed method SCIPdigraphSetNodeDatas() to SCIPdigraphSetNodeData()
3939 
3940 - Constraint Handlers:
3941  - Renamed method SCIPconshdlrGetPropTimingmask() to SCIPconshdlrGetPropTiming()
3942  - new method SCIPconshdlrSetPropTiming()
3943  - Removed method SCIPconshdlrIsPresolvingDelayed()
3944  - Removed method SCIPconshdlrWasPresolvingDelayed()
3945  - SCIPmakeSOS1sFeasible() based on solution values, fixes variables to zero to turn all SOS1 constraints feasible
3946  - removed `delay(presol)` parameter from SCIPinclude{Conshdlr,Presol,Prop}() and added `(presol)timing` parameter
3947  - new parameter `presoltiming` for method SCIPpresolCons()
3948  - SCIPvarIsSOS1() returns whether some variable is involved in an SOS1 constraint
3949  - SCIPgetConflictgraphSOS1() gets conflict graph of SOS1 constraints
3950  - Added parameter `presoltiming` to SCIPpropCumulativeCondition()
3951  - Removed parameter `delaypos` from SCIPsetConshdlrPresol()
3952  - Added parameter `presoltiming` to SCIPsetConshdlrPresol()
3953  - Removed parameter `delaypos` from SCIPincludeConshdlr()
3954  - Added parameter `presoltiming` to SCIPincludeConshdlr()
3955  - Added parameter `consgetdivebdchgs` to SCIPincludeConshdlr() to provide a divebdchg-callback for the constraint handler
3956  to include
3957 
3958 - Branching Rules:
3959  - Added parameter `forcestrongbranch` to SCIPselectVarStrongBranching()
3960  - Added parameter `executebranching` SCIPexecRelpscostBranching()
3961  - Added parameters `ndomredsdown` and `ndomredsup` to SCIPgetVarStrongbranchWithPropagation()
3962 
3963 - LP and Cutting Planes:
3964  - Added parameters `inds` and `ninds` to SCIPgetLPBInvRow(), SCIPgetLPBInvCol(), SCIPgetLPBInvARow(), SCIPgetLPBInvACol(), and
3965  SCIPcalcStrongCG()
3966  - Added parameters `maxweight`, `weightinds`, `nweightinds`, and `rowlensum` to SCIPcalcMIR()
3967 
3968 - Variables:
3969  - SCIPvarGetNodeSOS1() returns node of SOS1 variable in the conflict graph
3970  - SCIPnodeGetVarSOS1() returns SOS1 variable associated to some given node in the conflict graph
3971  - Removed method SCIPvarGetNBinImpls()
3972 
3973 - Presolving:
3974  - Removed parameter `delaypos` from SCIPincludePresolBasic()
3975  - Added parameter `presoltiming` to SCIPincludePresolBasic()
3976  - Removed parameter `delaypos` from SCIPincludePresol()
3977  - Added parameter `presoltiming` to SCIPincludePresol()
3978  - Removed parameters `presoldelay` and `presoltiming` from SCIPincludePresol()
3979  - Removed parameters `presoldelay` and `presoltiming` from SCIPsetPropPresol()
3980 
3981 - Misc:
3982  - Added parameter `isequation` to SCIPaddClique()
3983  - Removed parameter `writeimplications` from SCIPwriteCliqueGraph()
3984  - Removed method SCIPallocBufferSize()
3985  - Removed method SCIPduplicateBufferSize()
3986  - Removed method SCIPreallocBufferSize()
3987  - Removed method SCIPfreeBufferSize()
3988  - Removed method callback SCIPdialogExecConflictgraph()
3989 
3990 ### New API functions
3991 
3992 - started support for user-defined operators in expression trees/graphs (see SCIPexprCreateUser()),
3993  interface will likely change again in future SCIP versions
3994 - new methods for mixed inter linear matrix access (see pub_matrix.h) added
3995 - SCIPcomputeArraysIntersection() to compute the set intersection of two ordered arrays
3996 - SCIPcomputeArraysSetminus() to compute the set difference of two ordered arrays
3997 - SCIPcutGetLPActivityQuot() in pub_cutpool.h to get the potion of LP's where this cut was sharp in an optimal basis.
3998 - SCIPpresolGetTiming(), SCIPpresolSetTiming(), SCIP{conshdlr,prop}GetPresolTiming(), and SCIP{conshdlr,prop}SetPresolTiming()
3999 - SCIPdigraphSetNSuccessors() sets the number of successors of some digraph node to a given value
4000 
4001 - Diving:
4002  - SCIPcreateDiveset() to add a diveset to a heuristic. Heuristics may have multiple divesets under different names
4003  - SCIPperformGenericDivingAlgorithm() that performs diving with periodic LP resolve according to the diveset argument.
4004 
4005 - Constraints:
4006  - new setter function SCIPsetConshdlrGetDiveBdChgs() in scip.h to set dive bound change callback for this constraint handler
4007  - SCIPaddDiveBoundChange() to add a diving bound change to the diving bound change storage of SCIP together with the information if this is a
4008  bound change for the preferred direction or not, to be used by constraint handlers inside the getDiveBdChgs-callback
4009  - SCIPchgCoefLinear() and SCIPdelCoefLinear() to modify linear constraint during problem creation
4010 
4011 - Memory:
4012  - BMSallocClearBlockMemoryArray()/SCIPallocClearBlockMemoryArray() and
4013  BMSallocClearBufferMemoryArray(), SCIPallocClearBufferArray() to allocate arrays that are initialized to 0
4014  - SCIPbuffermem() to get buffer memory;
4015 
4016 - Sort:
4017  - added new sorting functions SCIPsortRealRealRealBoolBoolPtr(), SCIPsortDownRealRealRealBoolBoolPtr()
4018  - added new sorting functions SCIPsortIntIntIntReal(), SCIPsortDownIntIntIntReal(), SCIPsortRealIntInt(), SCIPsortDownRealIntInt()
4019 
4020 - Param:
4021  - SCIPwriteParam() to write a single parameter to a file
4022  - SCIPcheckParam{Bool,Char,...}() to check whether a parameter value is within the feasible domain
4023 
4024 - Quadratic:
4025  - SCIPchgLhsQuadratic(), SCIPchgRhsQuadratic(), SCIPchgLinearCoefQuadratic(), SCIPchgSquareCoefQuadratic(),
4026  and SCIPchgBilinCoefQuadratic() to modify quadratic constraints during problem creation
4027  - SCIPgetFeasibilityQuadratic() and SCIPgetActivityQuadratic() to get the feasibility and activity of a quadratic constraint in a given solution
4028  - SCIPaddSquareLinearization(), SCIPaddSquareSecant(), SCIPaddBilinLinearization() and SCIPaddBilinMcCormick()
4029  in cons_quadratic.h to compute linear under- and overestimation for bilinear and quadratic terms
4030 
4031 ### Command line interface
4032 
4033 - extended variable branching statistics and statistic output in the interactive shell (see Statistic section)
4034 - submenu for setting `vbc` settings renamed to `visual`
4035 - at the end of a command line run the best solution can now be output in the orignal space
4036 
4037 ### Interfaces to external software
4038 
4039 - in the AMPL interface, variable and constraint attributes (flags) can now be set via suffixes, where 0 (unset) stands
4040  for the default, 1 for TRUE and other values for FALSE; see SCIPcreateVar() and SCIPcreateCons() for their meaning;
4041  for variables, `initial` and `removable` are recognized;
4042  for constraints, `initial`, `separate`, `enforce`, `check`, `propagate`, `dynamic` and `removable` are recognized
4043 - the AMPL interface now passes an initial guess, if specified, as a solution (that will be checked for feasibility) to SCIP
4044 
4045 ### Changed parameters
4046 
4047 - rowrepswitch set to 2.0, so row representation is activated if LP has at least 2 times more rows than columns
4048 - one can now set emphasis parameters at the beginning of a settings file; it should start with `emphasis:` and
4049  the contain the emphasis string, e.g., `emphasis: feasibility` or `emphasis: heuristics off`.
4050 
4051 - Renamed parameters:
4052  - `vbc/filename` to `visual/vbcfilename`
4053  - `vbc/realtime` to `visual/realtime`
4054  - `vbc/dispsols` to `visual/dispsols`
4055 
4056 ### New parameters
4057 
4058 - added parameter to switch pseudo cost update in diving heuristics (enabled by default)
4059 - `branching/relpscost/confidencelevel` to set the confidence level to be used by statistical tests
4060 - `branching/relpscost/higherrortol` to define the highest reliability threshold for relative error based reliability
4061 - `branching/relpscost/lowerrortol` to define a lower reliability threshold for relative error based reliability
4062 - `branching/relpscost/nlscoreweight` for weight of nonlinear score when branching on MINLPs
4063 - `branching/relpscost/usedynamicconfidence` to use a dynamic confidence level based on the amount of
4064  strong-branching simplex-iterations compared to the overall simplex iterations (default is FALSE)
4065 - `branching/relpscost/usehyptestforreliability` to enable strong branching decisions based on a 2-sample student-T test of all prior
4066  pseudo-cost observations between the best pseudo-candidate and the candidate for which to decide whether strong-branching should be applied
4067 - `branching/relpscost/userelerrorreliability` to enable relative error based reliability
4068 - `branching/relpscost/skipbadinitcands` for skipping strong-branching candidates whose estimated gain
4069  is significantly worse than the one of the locally best (sb or pseudo) candidate
4070 - `constraints/linear/multaggrremove` to perform multi-aggregations in linear constraint handler only if the constraint can be removed afterwards
4071 - `constraints/linear/rangedrowpropagation` to disabled newly implemented propagtion algorithm for ranged rows and equations
4072 - `constraints/quadratic/advanced/interiorcomputation` to select the way of computing and interior point for gauge cuts
4073 - `constraints/quadratic/gaugecuts` to enable convex quadratics to generate gradients cuts which are supporting
4074 - `constraints/soc/generalsocupgrade` to allow general quadratics to be upgraded to soc
4075 - `constraints/SOS1/addcomps` to add local complementarity constraints to the branching nodes (can be used in combination
4076  with neighborhood or bipartite branching)
4077 - `constraints/SOS1/addbdsfeas` to define a minimal feasibility value for local bound (clique) inequalities in order to be
4078  added to the branching node
4079 - `constraints/SOS1/addcompsdepth` to define the maximal depth for adding complementarity constraints
4080 - `constraints/SOS1/addcompsfeas` to define a minimal feasibility value for local complementarity constraints in order to be
4081  added to the branching node
4082 - `constraints/SOS1/autocutsfromsos1` to automatically switch to separating bound cuts from SOS1 constraints if the SOS1
4083  constraints do not overlap
4084 - `constraints/SOS1/autosos1branch` to switch to SOS1 branching if the SOS1 constraints do not overlap
4085 - `constraints/SOS1/conflictprop` to define whether to use conflict graph propagation
4086 - `constraints/SOS1/bipbranch` to branch on a complete bipartite subgraph of the conflict graph
4087 - `constraints/SOS1/boundcutsdepth` to define the node depth of separating bound (clique) cuts
4088 - `constraints/SOS1/boundcutsfreq` to define the frequency for separating bound (clique) cuts
4089 - `constraints/SOS1/boundcutsfromgraph` to define whether to separate bound (clique) inequalities from the conflict graph
4090 - `constraints/SOS1/boundcutsfromsos1` to define whether to separate bound (clique) inequalities from SOS1 constraints
4091 - `constraints/SOS1/fixnonzero`: If neighborhood branching is used, then fix the branching variable (if positive in sign)
4092  to the value of the feasibility tolerance
4093 - `constraints/SOS1/implcutsdepth` to define the node depth of separating implied bound cuts
4094 - `constraints/SOS1/implcutsfreq` to define the frequency for separating implied bound cuts
4095 - `constraints/SOS1/implprop` to define whether to use implication graph propagation
4096 - `constraints/SOS1/maxaddcomps` to define the maximal number of complementarity constraints added per branching node
4097 - `constraints/SOS1/maxboundcuts` to define the maximal number of bound (clique) cuts separated per branching node
4098 - `constraints/SOS1/maxboundcutsroot` to define the maximal number of bound (clique) cuts separated per iteration in the root node
4099 - `constraints/SOS1/maximplcuts` to define the maximal number of implied bound cuts separated per branching node
4100 - `constraints/SOS1/maximplcutsroot` to define the maximal number of implied bound cuts separated per iteration in the root node
4101 - `constraints/SOS1/maxextensions` to define maximal number of extensions that will be computed for each SOS1 constraint in presolving
4102 - `constraints/SOS1/maxsosadjacency` to define that the adjacency matrix of the conflict graph is not created in presolving if
4103  the number of SOS1 variables is too large
4104 - `constraints/SOS1/maxtightenbds` to define the maximal number of bound tightening rounds per presolving round
4105 - `constraints/SOS1/neighbranch` to branch on a neighborhood of the conflict graph
4106 - `constraints/SOS1/nstrongiter` to define the maximal number LP iterations to perform for each strong branching round
4107 - `constraints/SOS1/nstrongrounds` to define the maximal number of strong branching rounds to perform for each node (only
4108  available for neighborhood and bipartite branching)
4109 - `constraints/SOS1/sos1branch` to branch on a single SOS1 constraint, i.e., a clique of the conflict graph
4110 - `constraints/SOS1/sosconsprop` to define whether to use SOS1 constraint propagation
4111 - `constraints/SOS1/strthenboundcuts` to define whether to strengthen bound (clique) cuts in case bound variables are available
4112 - `constraints/SOS1/updateconflpresol` to update the conflict graph during the presolving procedure
4113 - `display/allviols` to print all violated constraints of the best solution during checksol in the scip shell
4114 - `heuristics/indicator/improvesols` that turns on the improvement of external solutions by one-opt
4115 - `heuristics/∗diving/lpresolvedomchgquot` to determine the percentage of changed domains since previous LP to trigger
4116  an LP resolve [default: 0.15] (* stands for eight diving heuristics to support this feature)
4117 - `heuristics/∗diving/lpsolvefreq` to determine the frequency for resolving LP's during the execution of
4118  this heuristic [default: 1, use 0 for a dynamic setting based on the number of domain reductions]
4119  (* stands for eight diving heuristics to support this feature)
4120 - `heuristics/shiftandpropagate/binlocksfirst` to set if binaries without locks should be preferred in ordering
4121 - `heuristics/shiftandpropagate/maxcutoffquot` to select a maximum percentage of allowed cutoffs before stopping the heuristic (default is 0.0)
4122 - `heuristics/shiftandpropagate/selectbest` to trigger if shiftandpropagate should select the best candidate in every round
4123  (set to FALSE for static order) (default is FALSE)
4124 - `limits/autororestart` for triggering an automatic restart after this many nodes, or -1 for no auto restart [default is -1]
4125 - `limits/softtime` to set a soft time limit (active only after first primal solution was found)
4126 - `misc/allowobjprop` to allow objective function propagation
4127 - `misc/allowdualreds` to allow dual reductions
4128 - `misc/outputorigsol` to control whether at the end of a command line run the solution should be output in the orignal space
4129 - `numerics/checkfeastolfac` to scale feasibility tolerance when checking the feasibility of best found solution
4130  after the solving process finished (e.g., checksol in scip shell)
4131 - `separating/cutselrestart` for cut selection during restart copy process (`a`ge, activity `q`uotient) [default is `a`]
4132 - `separating/cutselsubscip` for cut selection for sub SCIPs (`a`ge, activity `q`uotient) [default is `a`]
4133 - `separating/disjunctive/maxconsdelay` to delay separation of disjunctive cuts if number of SOS1 constraints is larger than predefined value
4134 - `separating/disjunctive/maxdepth` to define the node depth of separating disjunctive cuts
4135 - `separating/disjunctive/maxinvcuts` to define the maximal number of disjunctive cuts investigated per iteration in a branching node
4136 - `separating/disjunctive/maxinvcutsroot` to define the maximal number of disjunctive cuts investigated per iteration in the root node
4137 - `separating/disjunctive/maxrank` to define the maximal permissible rank of a disjunctive cut that could not be scaled to integral coefficients
4138 - `separating/disjunctive/maxrankintegral` to define the maximal permissible rank of a disjunctive cut that could be scaled
4139  to integral coefficients
4140 - `separating/disjunctive/maxrounds` to define the maximal number of separation rounds of disjunctive cuts in a branching node
4141 - `separating/disjunctive/maxweightrange` to define the maximal valid range of simplex tableau row weights
4142 
4143 ### Data structures
4144 
4145 - new enum `SCIP_CONFIDENCE_LEVEL` for different levels of confidence for statistical tests.
4146 - new struct `SCIP_DIVESET` that bundles options for SCIP's diving heuristics; all hard diving heuristics (those
4147  without `obj` at the beginning) include diveset and implement only the scoring callback.
4148 - rename all file `*_vbc.?` to the more generic `*_visual.?`
4149 - moved buffer memory handling to blockmemory/memory.?;
4150  remove files type_buffer.h, struct_buffer.h buffer.h buffer.c;
4151  removed functions SCIP*buffer*() from scip.? and replaced them by macros;
4152  redesigned buffer interface to be similar to block memory; added checks for strange sizes
4153 
4154 Testing
4155 -------
4156 
4157 - added scripts and targets for testing with xpress (see Makefile section)
4158 
4159 Build system
4160 ------------
4161 
4162 ### Makefile
4163 
4164 - new parameter `DELHEADERS` for `uninstall`-target: scip headers are only removed when invoking `make uninstall DELHEADERS=true`
4165 - added scripts check_xpress.awk, check_xpress.sh, evalcheck_xpress.sh and check_cluster_xpress.sh and target
4166  `testclusterxpress` and `testxpress`
4167 
4168 Fixed bugs
4169 ----------
4170 
4171 - fixed bug in primal.c and tree.c by using SCIPinfinity() as a cutoffbound to delete child nodes
4172 - fixed bug in lp.c which leads to wrong primal and dual feasibility
4173 - fixed wrong handling of infinite activities and primal values in sepastore.c and lp.c
4174 - fixed bug that led to an erroneous warning about the clock type
4175 - fix behavior of `make install` which now sets symbolic links and short links to binaries and libraries
4176 - fix bug which lead to wrong global bound tightenings in prop_genvbounds.c
4177 - fix call to random generator for Windows operating systems in misc.c
4178 - fixed again a bug in backward propagation of linear expressions in expression graph
4179 - fixed bug in prop_symmetry.c, where an incorrect weak symmetry handling constraint got added.
4180 
4181 - NLP:
4182  - fixed bug in heur_nlpdiving.c: wrong counting of fix variables
4183  - fix wrong handling of `SCIP_NLPSOLSTAT_LOCALINFEASIBLE` solution status in nlp.c
4184  - fix characterization of logic or constraints in SCIP's NLP relaxation
4185 
4186 - Branching:
4187  - fixed wrong comparison when executing branching rule for external branching candidates
4188  - fix spatial branching on implicit integer variables
4189  - fix wrong comparisons of values larger/less than +/- SCIPinfinity() in branch.c, lp.c and sol.c
4190  - fixed problem with lpisrelax flag in probing mode when doing branch-and-price
4191 
4192 - Constraint Handlers:
4193  - try to handle fixings of multi-aggregated variable in cons_sos1 presolving and avoid error
4194  - fixed bug in pseudoboolean constraint handler about negated variables
4195  - fixed assert in cons_soc.c: now soc with 1 lhs variable are allowed
4196  - fixed wrong assert in cons_indicator (slack variables might be replaced by active variables that have nonzero objective)
4197  - fix late creation of auxiliary LP in cons_nonlinear.c, which lead to a segmentation fault with lpi_spx2.cpp
4198  - fixed bug in cons_abspower.c: do not generate cuts with infinity right-hand-side anymore
4199  - fixed setting of enforcement flag for constraints created by reformulation in nonlinear constraint handlers
4200  - fixed bug in cons_indicator with handling local bounds
4201 
4202 - Memory:
4203  - fix potential memory leak in SoPlex LP interfaces when setting invalid basis
4204  - fix potential memory leak in method SCIPgetConsCopy()
4205  - fix potential memory leak in method detectRedundantConstraints() of the knapsack constraint handler
4206 
4207 - Interval arithmetic:
4208  - fix handling of infinite intervals in SCIPintervalIsEmpty()
4209  - fixed bug in intervalarith.c: bivariate quadratic equations may have been solved wrongly if second variable is unbounded
4210 
4211 - Quadratic Constraints:
4212  - fix wrong sorting of bilinear terms in cons_quadratic
4213  - fix potentially tightening of LB/UB of a variable to +/- infinity in cons_quadratic
4214  - fixed bug in cons_quadratic.c which leads to an overflow when SCIP allocates memory for a dense matrix
4215  - fixed bug in cons_quadratic.c: do not generate linearization cuts for disabled constraints
4216  - fix missing clean phase of bilinear terms with zero coefficient in cons_quadratic.c
4217 
4218 @page RN31 Release notes for SCIP 3.1
4219 
4220 @section RN311 SCIP 3.1.1
4221 *************************
4222 
4223 Features
4224 --------
4225 
4226 - use clock average to reduce number of system calls via `timing/rareclockcheck` parameter
4227 - added copy mechanism for conjunction constraints
4228 - added revised lpi_xprs for using XPRESS as LP solver
4229 
4230 Performance improvements
4231 ------------------------
4232 
4233 - improved solving of LPs in OBBT propagator
4234 - improved activity-delta computation and thereby propagation for linear constraints
4235 - improved memory management of proximity heuristic
4236 - disabled statistic timing in all subscips via new parameter `timing/statistictiming`
4237 
4238 Interface changes
4239 -----------------
4240 
4241 ### New and changed callbacks
4242 
4243 - rename array arcdatas in digraph to arcdata
4244 - changes in clock type are now transferred to SoPlex
4245 - corrected wrong primal bound in statistics for unbounded problems
4246 - forbid to call SCIPfixVar() in `SCIP_STAGE_PRESOLVED` stage, which is not allowed since it calls SCIPchgVarLb/Ub()
4247 
4248 ### Deleted and changed API methods
4249 
4250 - rename SCIPdigraphGetNodeDatas() to SCIPdigraphGetNodeData();
4251 - rename SCIPdigraphSetNodeDatas() to SCIPdigraphSetNodeData()
4252 - SCIPapplyProximity() has an additional parameter freesubscip, which causes the method to free
4253  the created subscip automatically at the end.
4254 
4255 ### New API functions
4256 
4257 - SCIPhasPerformedPresolve() to check, e.g., whether LP duals are accessible
4258 - SCIPconvertRealTo[Long]Int() to convert reals that represent integers to [long] ints.
4259 - SCIPisDualfeasEQ() and related to perform checks w.r.t. to the dual feasibility tolerance
4260 - SCIPdeleteSubproblemProximity() to free proximity subproblem manually as external caller
4261 
4262 ### Command line interface
4263 
4264 - added dialog for writing the finite solution (calling SCIPcreateFiniteSolCopy() before writing)
4265 
4266 ### Interfaces to external software
4267 
4268 - AMPL interface now returns dual multipliers if problem is an LP and presolving was turned off
4269 
4270 ### Changed parameters
4271 
4272 - changed default value of parameter `heuristics/proximity/minimprove` to 0.02; previous value was 0.25
4273 - changed default value of parameter `heuristics/proximity/usefinallp` to FALSE
4274 
4275 ### New parameters
4276 
4277 - `timing/rareclockcheck` to call the system time less frequently, based on the current average time interval
4278  between two calls to SCIPsolveIsStopped(); the default value is FALSE
4279 - `timing/statistictiming` to enable/disable all timers for statistic output of SCIP; the default value is TRUE
4280 
4281 ### Data structures
4282 
4283 - renamed MIP matrix structure to `SCIP_MATRIX`
4284 - changed the numeric values for `PRESOLTIMING` flags
4285 
4286 Build system
4287 ------------
4288 
4289 ### Makefile
4290 
4291 - added Makefile support for cygwin 64 Bit
4292 - allow to turn off block and buffer memory by the makefile parameters NOBLKMEM, NOBUFMEM, NOBLKBUFMEM;
4293  also remove the now superfluous makefiles for noblkmem, nobufmem, noblkbufmem
4294 
4295 Fixed bugs
4296 ----------
4297 
4298 - fixed wrong conversion of reals representing negative integer values
4299 - in debug mode, SCIP checks that no NaN's are introduced in SCIPsolSetVal()
4300 - fixed bug 697 (and 699), calling SCIPsolve() after the problem was already solved and SCIPfreeSolve() was called now
4301  does nothing anymore
4302 - added support for character `#` in variable names in old non-linear CIP format (i.e., names without `<` and `>`)
4303 - fixed bug 702, removed too hard assert when casting too big values into `SCIP_Longint`
4304 - branching for continuous variables with unbounded intervals now takes `branching/clamp` into account
4305 - forbid aggregations with scalar smaller feastol or larger 1/feastol
4306 - fixed bug 683, not recognizing errors/segfaults especially in free stage of SCIP by improving the check scripts
4307 - fixed bug where quieting a message handler also disabled writing to files other than stdout
4308 - fixed bug 708, special case of implications led to a fixing
4309 - fixed bug, variable bounds detected wrong infeasibility
4310 - another bug fix when computing the original variable sum of a given variable in SCIPvarGetOrigvarSum()
4311 - fixed setting solution value of multi-aggregated var in xml-solution case
4312 - fixed bug changing the variable type of an negated variable
4313 - fixed numerical troubles in SCIPcreateFiniteSolCopy()
4314 - fixed bug in SCIPpermuteProb(): if called before transforming the problem, data structures were not initialized yet
4315 - fixed bug in aggregation procedure if two variables were of non-binary type but for one of the variables
4316  SCIPvarIsBinary() returned true
4317 - treat activities of pseudo solutions as invalid when containing positive and negative infinity contributions
4318 - fixed bug in GMI example: fractionality of slack variable is now computed correctly
4319 - fixed LP interface of CPLEX: functions getBInv* return the correct sign of the coefficients.
4320 - fixed bug in SCIPpermuteProb(), when called in transformed stage and non-active constraints exist
4321 
4322 - Dual:
4323  - use dual feasibility tolerance for comparisons regarding reduced costs
4324  - fixed bug in prop_dualfixing: don't fix variables to infinite values during solving
4325  - fixed sign of the dual multipliers returned by AMPL interfaces for maximization
4326 
4327 - Objective and Time Limit:
4328  - fixed wrong output of status when an objective limit was imposed but not reached yet
4329  - fixed the rare case that branching was performed even though strong branching found global bound changes leading to
4330  an infeasible/objlimit LP
4331  - fixed bug that objective limit was not reset correctly during SCIPfreeTransform() for maximization problems
4332  - fixed bug that hitting the time limit while solving a pure LP and then continuing the solving process lead to
4333  not solving the LP, but always creating a single child node until maximum depth is reached
4334 
4335 - Heuristic:
4336  - fixed bug leading to an incorrect dual bound when solving probing LPs within a DURINGPRICINGLOOP heuristic
4337  - fixed bug in proximity heuristic which attempted to enter diving mode even at nodes without a constructed LP
4338  - fixed wrong pseudo cost updates during diving heuristic execution after backtracking
4339  - fixed bug in heur_oneopt: avoid bound violations if shift value is negative due to infeasibilities
4340  - fixed bug that reaching a solution limit by beforenode heuristics lead to disregarding the current node if the
4341  optimization process was restarted later
4342  - fixed bug in trysol heuristic not saving the best solution in maximization problems
4343 
4344 - Presolve:
4345  - fixed bug in presolving of abspower constraints that lead to wrong variable locks
4346  - allow to call SCIPmarkConsPropagate() in INITPRESOLVE stage
4347  - fixed bug in components presolver with handling of dual fixable variables: unboundedness was not detected,
4348  better handle components with single variables by dual fixing propagator
4349  - issues in component solving by presol_components do not lead to stopping the overall process, anymore, the component
4350  is just disregarded
4351 
4352 - Memory:
4353  - fixed bug with freeing problem: need to reset objective limit
4354  - fixed memory leaks in case of erroneous parsing of constraints, e.g., non-linear constraints
4355  - fixed missing memory allocation for node data in digraphs
4356 
4357 - Constraints:
4358  - fixed bug in cons_quadratic which leads to wrong min/max activities
4359  - removed wrong break in cons_pseudoboolean
4360  - fixed bug in cons_varbound.c using the wrong constraint side for updating an upper bound
4361  - fixed bug in presolve of cons_nonlinear: wrong constraint upgrades may have been performed due to outdated bound
4362  information in expression graph
4363  - fixed bug in cons_setppc, wrongly aggregating variables if dual-presolving was disabled
4364  - fixed bug in cons_sos1: locks and events were not initialized if constraint was added to transformed problem
4365  - fixed bug in cons_setppc with dual presolving disabled
4366  - corrected copy of disjunction constraints
4367 
4368 - Reading:
4369  - allow to read numbers like `42856.` in lp-format
4370  - fixed bug(?) in reader_mps: variables are now written in columns section even of they occur in no constraint
4371  and have an objective coefficient of 0 (otherwise, CPLEX and Gurobi cannot read the file)
4372  - fixed bug with reading `>=1` indicator constraints in LP-files
4373  - fixed bug in reader_lp which created two indicator constraints with the same name to trigger an equality
4374  - fixed bug when reading indicator constraints for linear constraints (equations/ranged rows) from MPS files
4375 
4376 @section RN310 SCIP 3.1.0
4377 *************************
4378 
4379 Features
4380 --------
4381 
4382 - added breadth first search node selection
4383 - new node selection rule UCT which balances exploration and exploitation by considering node visits
4384 - added possibility to not set a cutoff bound in the LP solver (can be enabled by setting `lp/disablecutoff` to TRUE)
4385 - added missing debugging solution check for cliques
4386 - added a data pointer to each node of the `SCIP_DIGRAPH`
4387 - SCIPgetVarCopy() will now copy the original bounds when called for an original variable
4388 - added upgrade of continuous variables to implicit variables for linear equations even if the coefficient is
4389  not equal to 1
4390 - probing supports implicit binary variables
4391 - added scaling to computation of relative interior point in SCIPcomputeLPRelIntPoint()
4392 
4393 - Solution:
4394  - added two methods to iterate over a sparse solution (`SCIP_SPARSESOLUTION`), see pub_misc.h
4395  - it is now possible to add an offset for the original problem instance, all original solutions will be initialized with
4396  this value and updated, when the offset is changed
4397  - extended and corrected dual feasibility checks for LP solution (controlled by parameter `lp/checkdualfeas`)
4398 
4399 - Cuts and Separation:
4400  - the rank of cuts is now stored and taken into account to improve numerical stability
4401  - added possibility to separate a cutpool w.r.t. a given solution (instead of LP-solution)
4402 
4403 - Branching:
4404  - new branching rule `cloud branching` that considers several alternative LP optima
4405  - additional vbc output added: branching information is printed earlier and also for nodes which were cut off
4406  - added support for strong branching with domain propagation in full strong and reliability pseudo cost branching
4407  - added strong branching with domain propagation support: in SCIPstartStrongbranch(), support for propagation can
4408  be enabled (uses the probing mode, some overhead compared to standard strong branching), after that
4409  SCIPgetVarStrongbranchWithPropagation() can be used to perform strong branching on a variable with previous domain
4410  propagation; similar to probing, valid bounds for variables are collected
4411  - strong branching with propagation can be enabled in fullstrong and relpscost branching rule
4412  - added possibility to store pricing norms of the LP solver (in addition to basis information) to speed up LP solving
4413  after a backtrack, e.g. in probing or strong branching with domain propagation
4414  - a pricer can now return that no further pricing should be done but rather early branching, even if it added variables
4415 
4416 - LP interface:
4417  - SoPlex (>= 1.7.0.5) can compute condition number of current basis matrix via LP interface
4418  - LPI files (lpi*.[h|c]) all moved from src/scip to src/lpi
4419 
4420 - Constraints:
4421  - added propagation method to cons_xor relying on Gaussian elimination, which can also produce feasible solutions
4422  - added first implication detection in cons_linear
4423  - cons_indicator can now try to construct feasible solutions from a cover
4424  - added possibility to forbid upgrading of linear constraints
4425  - new initial constraints are now added to the LP before solving a probing LP
4426  - first implementation of parsing for nonlinear constraints in CIP format
4427  - added upgrade from varbound constraints to set-packing constraints
4428  - added upgrade from bounddisjunction constraints to set-packing/logicor constraints
4429  - cumulative constraint handler adds disjunctive constraints (cumulative with capacity 1) for all jobs which cannot
4430  be processed in parallel
4431  - added new clique extraction algorithm for linear constraints
4432  - the slack variables of indicator constraints can now be scaled
4433  - added redundancy check of sides of ranged row varbound constraint
4434  - added coefficient tightening for ranged row varbound constraint
4435  - XOR constraint handler can add two extended formulations (flow/asymmetric, parameter `addflowextended/addextendedform`)
4436  - added multi-aggregation for binary variables with at most two uplocks and two downlocks, which emerge from set-
4437  partitioning or set-packing constraints
4438  - added upgrade from quadratic constraints to set-packing constraints
4439  - generalized the linking constraint handler
4440 
4441 - Reader:
4442  - can now read and write CIP-files with (multi-)aggregated variables
4443  - all readers now take the global parameters `reading/dynamic{conss|cols|rows}` and `reading/initialconss` into account
4444  - added reader_pbm, which writes the constraint-variable incidence matrix in pbm format (possibly scaled to given size)
4445  - reader_osil can now read SOS1 and SOS2 constraints
4446  - reader_lp and reader_mps are now able to write and-constraints in form of their (weak/strict) relaxation
4447  - added reading capability to GAMS reader (if compiling with GAMS=true, requires a GAMS system)
4448  - added capability of writing SOS1/2 constraints to GAMS reader (introduces extra variables and equations)
4449 
4450 - Heuristic:
4451  - new primal heuristics dual value
4452  - new LNS heuristic called `proximity`, which solves a problem in which a local branching constraint replaces the
4453  objective function which in turn is treated as additional constraint
4454  - new LP-based rounding heuristic (heur_randround) whose randomized rounding is biased towards the LP solution value;
4455  the heuristic uses the probing mode of SCIP to generate conflict clauses on the fractional variables
4456 
4457 - Presolving:
4458  - added new dual presolving for setppc-constraints
4459  - changed dualfix presolver to propagator such that dual fixing can also be applied during repropagation of the root node
4460  - added full-dual presolving step in setppc constraint handler
4461  - dual solution can now be displayed for pure LPs when no presolving was performed
4462  - added clique presolving for xor constraints
4463  - added presolving using pairs of variable bound constraints that use the same variables
4464  - added more presolving to cons_indicator, checking whether indicator/slack variables are aggregated
4465  - added presolve.{c,h} which should be used for all preprocessing mechanisms executed from within SCIP, corresponding to
4466  solve.{c,h} and also for presprocessing methods which can be called from different plugins or from the core to avoid
4467  code doubling
4468  - return error if variable should be fixed to infinity after presolving (LP-solvers do not handle this consistently)
4469  - in verblevel `SCIP_VERBLEVEL_FULL`, the number of non-zeros will be output for the original and presolved model
4470  - new presolving step for tightening logicor constraints using implication and clique information
4471  - several new presolving steps for linear and knapsack constraints, using gcd information and many more
4472 
4473 - Statistic:
4474  - added average gap based on primal-dual integral to solution statistics; can be disabled via parameter
4475  `misc/calcintegral`
4476  - the statistics now include the value of the first LP solved at the root node (without cuts)
4477  - added new statistic which distinguishes between internal nodes and leaves which got processed
4478  - new section `Root Node` in statistics, listing objective value, iterations and solving time for the first LP solved
4479  at the root node as well as final dual bound of the root node and LP iterations for processing the root node
4480  (those where listed in the `Solutions` section before, named `Root Dual Bound` and `Root Iterations`)
4481 
4482 Performance improvements
4483 ------------------------
4484 
4485 - allow multiaggregation of binary variables
4486 - shorten conflicts and deriving global boundchanges from conflicts
4487 - apply lowerbound provided by pricers already during pricing loop, stop pricing if the lower bound computed by pricing
4488  already exceeds the cutoff bound
4489 - improved performance of SCIPcliquelistDel(), SCIPcliquetableAdd(), SCIPcliquetableCleanup()
4490 
4491 - LP Solution:
4492  - strong branching LP solutions are checked for integrality
4493  - improved LP reoptimization for branch-and-price applications
4494  - improved numerical stability checks for LP solution
4495  - faster feasibility check of LP solutions (controlled by parameters `lp/checkprimfeas` and `lp/checkdualfeas`)
4496 
4497 - Presolver:
4498  - improved methods SCIPlpiGetBInv{Row,Col,ACol} for row representation in SoPlex LP interface
4499  - improved performance of method SCIPsolRetransform() when called during presolving with many aggregations
4500  - minor presolving performance improvements in cons_logicor.c and cons_knapsack.c
4501  - dual fixing presolver was turned into a propagator
4502  - many presolving improvements in constraint handlers
4503  - improved dual-presolving for setppc constraints in special cases
4504 
4505 - Constraints:
4506  - major improvements in pseudo-boolean constraint handler
4507  - performance improvement in domain propagation by marking constraints for propagation
4508  - added more constraint upgrading possibilities
4509  - improved handling of initial constraints created during solving
4510  - disabled scaling in feasibility check of nonlinear constraint handlers
4511  - conflict consisting of exactly two binary variables will be handled as set-packing constraint instead of an logicor
4512  constraint and the corresponding clique information is globally added
4513  - fasten repropagation for set-packing and -partitioning constraints
4514  - improved merging of and-constraints
4515  - disabled multi-aggregation in linear constraint handler when coefficients differ too much
4516  - improved multi-aggregation in linear constraint handler when only one variable in the aggregation has infinity
4517  contribution
4518  - added upgradability for implicit binary variable cases for linear constraints
4519 
4520 Examples and applications
4521 -------------------------
4522 
4523 - new textbook Gomory mixed integer cuts example
4524 
4525 Interface changes
4526 -----------------
4527 
4528 - removed all message length parameters in message.c and for printing error messages (not needed anymore)
4529 
4530 ### New and changed callbacks
4531 
4532 - Domain Propagation:
4533  - added parameter `nmarkedconss` to SCIP_DECL_CONSPROP() callback which gives the number of constraints marked
4534  for propagation (these constraints are listed first in the conss array given as parameter).
4535 
4536 - Primal Heuristics:
4537  - Added parameter `nodeinfeasible` to SCIP_DECL_HEUREXEC() callback which states whether the current subproblem was
4538  already detected to be infeasible. In this case, the current LP solution might not respect local bounds and the
4539  heuristic must not assume that it does.
4540 
4541 - Variable Pricers:
4542  - Added parameter `stopearly` to callback method SCIP_DECL_PRICERREDCOST(). This boolean pointer should be used by the pricer
4543  to state whether early branching should be performed, even if new variables were added in the current pricing round.
4544 
4545 - Branching Rules:
4546  - new possible return value `SCIP_DIDNOTFIND` for SCIP_DECL_BRANCHEXECLP(), SCIP_DECL_BRANCHEXECPS(), and
4547  SCIP_DECL_BRANCHEXECEXT() callbacks to state that the branching rule searched, but did not find a branching.
4548 
4549 ### Deleted and changed API methods
4550 
4551 - SCIPcalcMIR() takes an additional parameter sidetypes to determine which side of the rows to use
4552  (relevant for ranged rows)
4553 - SCIPvarParseOriginal() and SCIPvarParseTransformed() now return the end of the parsed string
4554 - SCIPgetConsCopy() now always captures the created constraint
4555 
4556 - Branching:
4557  - Added parameter `nfracimplvars` to SCIPgetLPBranchCands()
4558  - SCIPgetLPBranchCands() can be used to retrieve the number of implicit integer variables with fractional LP solution
4559  value via an additional pointer; the corresponding implicit integer variables can be accessed together with their
4560  fractionalities and solution values in the same way as binary and integer variables before; the arrays are sorted such
4561  that binary and integer variables precede the implicit integer variables; the method SCIPbranchcandGetLPCands()
4562  has been modified in the same way
4563 
4564 - LP and Cutting Planes:
4565  - Added parameter `sidetypes` to SCIPcalcMIR() to specify the specify row side type to be used.
4566  - Added parameter `cutrank` to SCIPcalcMIR() and SCIPcalcStrongCG() which stores the rank of the returned cut;
4567  via SCIProwChgRank() the rank of a cut can be changed (default rank is 0)
4568  - Added parameter `infeasible` to SCIPaddCut() which is a pointer to store whether the cut is infeasible for the
4569  local bounds.
4570  - SCIPgetLPObjval() now returns the LP value of the current (suboptimal) basis if the iteration limit is hit during LP
4571  solving (instead of -infinity); this value is not necessarily a valid dual bound and must not be used as such, but can
4572  be used as an objective estimate, e.g., if strong branching is simulated using the probing mode
4573  - removed parameter `normtype` from function SCIPcomputeLPRelIntPoint()
4574 
4575 - Misc:
4576  - Added parameter `lazyconss` to SCIPwriteMIP() to swith writing removable rows as lazy constraints.
4577  - Added parameter `enablepropagation` to SCIPstartStrongbranch(), which can be used to enable strong branching
4578  with domain propagation.
4579  - SCIPstartStrongbranch() has a new parameter `propagate` to enable or disable propagation support for strong branching
4580  - New method SCIPgetVarStrongbranchWithPropagation() which performs strong branching with propagation on a variable.
4581  - Added parameter `endptr` to SCIPparseVar() which stores the final string position after parsing.
4582 
4583 ### New API functions
4584 
4585 - added SCIPdebugCheckConss() to the debugging mechanism and therefore created a `SCIP_SOL` (in original space) in debug.c
4586 - before copying solutions to the original solution candidate storage, infinite solution values can now be removed using SCIPcreateFiniteSolCopy()
4587 - SCIPsortLongPtrRealBool(), SCIPsortLongPtrRealRealBool(), SCIPsortLongPtrRealRealIntBool() and corresponding
4588  methods for sorting, insertion and deletion
4589 - SCIPstoreSolutionGap() in scip.c, to store the gap when the first and last solution is found
4590 - SCIPwriteCliqueGraph() which allows to write a graph with node weights for fractional variables
4591 
4592 - Separation:
4593  - SCIPconshdlrIncNCutsFound(), SCIPsepaIncNCutsFound() and SCIPsepaIncNCutsFoundAtNode() to increase the number of found cuts
4594  - SCIPseparateSolCutpool() to separate a cutpool w.r.t. a given solution
4595 
4596 - Constraint Handlers:
4597  - New method SCIPconshdlrGetStrongBranchPropTime() which returns the time used for domain propagation methods
4598  of the constraint handler during strong branching.
4599  - New method SCIPconsIsMarkedPropagate() which returns whether a constraint is marked for propagation.
4600  - New methods SCIPconsAddUpgradeLocks() and SCIPconsGetNUpgradeLocks() to increase or get the number of upgrade
4601  locks of a constraint.
4602  - New method SCIPgetNCheckConss() which returns the number of checked constraints.
4603 
4604 - Data structures:
4605  - New methods SCIPsparseSolGetFirstSol() and SCIPsparseSolGetNextSol() to get the first sparse solution
4606  or iterate over the sparse solutions, respectively.
4607  - New methods for the `SCIP_QUEUE` data structure in pub_misc.h to handle a (circular) queue, e.g., SCIPqueueCreate(),
4608  SCIPqueueFree(), SCIPqueueInsert(), SCIPqueueRemove(), SCIPqueueFirst(), SCIPqueueIsEmpty(), SCIPqueueNElems()
4609  - New method SCIPgmlWriteNodeWeight() to write a node section including weight to a .gml graph file.
4610  - New methods for hash tables: SCIPhashtableRemoveAll(), SCIPhashtableGetNElements(), SCIPhashtableGetLoad()
4611  - New methods in pub_misc.h to handle a resource activity, e.g., SCIPactivityCreate(), SCIPactivityFree(),
4612  SCIPactivityGetVar(), SCIPactivityGetDemand() ...
4613  - New methods for digraphs: SCIPdigraphResize() to resize the graph and SCIPdigraphSetNodeDatas() and
4614  SCIPdigraphGetNodeDatas() to set and get the data attached to the nodes.
4615 
4616 - Domain Propagation:
4617  - New method SCIPpropGetStrongBranchPropTime() which returns the time spent by a domain propagator during strong branching.
4618  - New methods SCIPmarkConsPropagate() and SCIPunmarkConsPropagate() to (un)mark a constraint for propagation.
4619 
4620 - LP and Cutting Planes:
4621  - New methods SCIPchgRowLhsDive() and SCIPchgRowRhsDive() to change left and right hand side of a row during diving.
4622  - Added parameter `cutoff` to SCIPsolveDiveLP(), SCIPsolveProbingLP(), and SCIPsolveProbingLPWithPricing()
4623  which is a pointer to store whether the diving/probing LP was infeasible or the objective limit was reached.
4624  - SCIPgetFirstLP{Dual/Lower}boundRoot() which return the value of the first LP solved at the root node
4625  - SCIPgetNRootFirstLPIterations() which returns the number of LP iterations for the first LP solved at the root node
4626  - SCIPlpiGetNorms(), SCIPlpiSetNorms() and SCIPlpiFreeNorms() for getting the LP pricing norms from the LP
4627  solver, loading them back into the solver and freeing the data
4628  - New method SCIPgetFirstLPTime() and SCIPgetNRootFirstLPIterations() to return time and iterations for the first LP solve
4629  and SCIPgetFirstLPDualboundRoot() and SCIPgetFirstLPLowerboundRoot() to return the first root LP dual and lower bound.
4630  - New method SCIPprintDualSol() which prints the dual solution for a pure LP (works only with preprocessing disabled).
4631  - New method SCIPisCutApplicable() which returns whether a cut is good enough to be applied.
4632 
4633 - Message Handler:
4634  - the main output routine of message.c (`bufferMessage` now handleMessage) has been rewritten: it now does not need
4635  a copy of the string to be output anymore, which makes the code much simpler (and also faster); it is passed a
4636  function pointer to the output function and uses it to directly output the (buffered) messages
4637  - New generic messagehandler output callback method SCIP_DECL_MESSAGEOUTPUTFUNC().
4638  - Removed parameter `msglength` from callback method SCIP_DECL_ERRORPRINTING().
4639  - New method SCIPmessageVPrintError() to print an error message.
4640  - Removed method SCIPmessagePrintWarningHeader().
4641 
4642 - Parameters:
4643  - New method SCIPparamGetCharAllowedValues() to get the allowed values for a char parameter.
4644  - New method SCIPgetParam() to get the parameter with a given name.
4645 
4646 - Variables:
4647  - SCIPapplyProbingVar() in prop_probing.h
4648  without deteriorating its objective value
4649  - SCIPshrinkDisjunctiveVarSet(), which takes an set of variables with corresponding bounds and boundtypes, and
4650  tries to derive global boundchanges and also to shorten this set of variables by using cliqe, implication and
4651  variable bound information
4652  - SCIPselectVarStrongBranching() to get the variable that fullstrongbranching would select
4653  - New method SCIPvarGetValuehistory() to get the value-based history of a variable.
4654 
4655 - Misc:
4656  - New method SCIPdoNotMultaggr() which returns whether multi-aggregation was disabled.
4657  - New method SCIPcreateFiniteSolCopy() to create a copy of a solution with infinite fixings removed.
4658  - New method SCIPadjustImplicitSolVals() which sets implicit integer variables to an integer value in the given
4659  solution without deteriorating its objective value.
4660  - New method SCIPcopyOrig() to copy the original problem. Analoguosly, use SCIPcopyOrigProb(), SCIPcopyOrigVars(),
4661  and SCIPcopyOrigConss() to copy original problem data, variables, or constraints, respectively.
4662  - New method SCIPwriteCliqueGraph() to write the clique graph in GML format into a given file
4663  - New method SCIPaddOrigObjoffset() to add an offset to the objective function.
4664  in original space and updates all orignal solutions correspondingly
4665  - New method SCIPcopyImplicationsCliques() to copy implications and cliques to a copied SCIP instance.
4666  - New method SCIPgetOpenNodesData() which returns all unprocessed nodes.
4667  - Added parameter `endline` to SCIPprintDisplayLine() to switch printing a newline symbol at the end of the line.
4668  - New method SCIPgetNLimSolsFound() returning the number of feasible primal solution respecting the objective limit.
4669 
4670 ### Command line interface
4671 
4672 - allow dialog option to write clique graph
4673 - dual solution values can now be obtained in the interactive shell after solving a pure
4674  LP without presolving
4675 
4676 ### Interfaces to external software
4677 
4678 - new SoPlex 2.0 interface, can be enabled with `LPS=spx2`
4679 - add support for SOS1 and SOS2 constraints to AMPL interface (see `interfaces/check/testset/SOS/sos?a.mod` for example)
4680 - added copy of GAMS interface from COIN-OR/GAMSlinks project; GAMS-reader in SCIP can now read model instances from .gms files
4681 - beta version of a python interface for the scipoptsuite is now available under interfaces/python
4682 - beta version of a Java native interface is now available under `interfaces/jni`
4683 
4684 ### Changed parameters
4685 
4686 - parameter `branching/scorefunction` has new value `q` for for `q`uotient branching score function
4687 - replaced parameter `lp/checkfeas` by two parameters `lp/checkprimfeas` and `lp/checkdualfeas` to decide on primal and dual
4688  feasibility checks individually
4689 - removed all local parameters `reading/(READER)/dynamic{conss|cols|rows}` and replaced them by global parameters
4690  `reading/dynamic{conss|cols|rows}`
4691 - changed default value of parameter `numerics/dualfeastol` to 1e-7 for safer dual bounds from LP solver
4692 - new possible values for parameter `heuristics/shiftandpropagate/sortkey` for sorting variables w.r.t. their norm,
4693  default changed from `u` to `v`, which means sorting downwards by violations
4694 
4695 - Constraints:
4696  - changed type of parameters `constraints/bivariate/scaling`, `constraints/quadratic/scaling`, `constraints/soc/scaling`
4697  from boolean to character
4698  - changed default for `constraints/{abspower,bivariate,nonlinear,quadratic,soc}/scaling` to off
4699  - changed default max coefficient for big-M constraint to be initial from 1e6 to 1e9
4700 
4701 - Separation:
4702  - changed default value of gomory cut separation parameter `separating/gomory/maxrank` from 0 to 3, to take also gomory
4703  cuts that could not be scaled to integral coefficients, with maximal rank 3 into account
4704  - remove parameter `separating/closecuts/relintnormtype`
4705 
4706 ### New parameters
4707 
4708 - `branching/checksol` and `branching/heursbsol` to specify whether the strong branching LP solution
4709  should be checked for feasibility and whether a simple rounding heuristic should be run on this solution
4710 - `branching/firstsbchild` and `branching/forceall` to specify the first child node to be
4711  investigated during strong branching (`u`p, `d`down, `a`uto) and whether always both children should be solved (only for
4712  strong branching with domain propagation, per default, the second child is not looked at when the first is infeasible)
4713 - `conflict/fullshortenconflict` to decide whether we want to stop shortening a conflict set, when no
4714  global bound changes can be found anymore
4715 - `conflict/maxvarsdetectimpliedbounds` to decide whether the a valid conflict of what maximal length
4716  will be used to derive global bound changes
4717 - `constraints/{linear,knapsack}/detectcutoffbound` and `constraints/{linear,knapsack}/detectlowerbound`
4718  to enable/disable detection of constraint parallel to the objective function that will add an cutoffbound or an
4719  lowerbound respectively and these constraints will be prevented from entering the LP
4720 - `constraints/and/upgraderesultant` to upgrade resultants of and constraints from binary to implicit binary variables, default is TRUE
4721 - `constraints/abspower/scaling` and `constraints/nonlinear/scaling`
4722 - `constraints/indicator/scaleslackvar` for scaling of the slack variable in indicator constraints
4723 - `constraints/indicator/trysolfromcover` for trying to construct a feasible solution from a cover
4724 - `constraints/linear/checkrelmaxabs` for checking linear constraints with a side of 0.0 relative to
4725 - `constraints/linear/detectpartialobjective` to enable/disable the detection of sub-equations of the objective function
4726 - `constraints/logicor/strengthen`, should pairwise constraint comparison try to strengthen constraints by removing superflous non-zeros?
4727 - `constraints/xor/addextendedform` to add an extended formulation in XOR-constraints
4728 - `constraints/xor/addflowextended` to add use the extended flow formulation in XOR-constraints
4729 - `heuristics/<heurname>/lplimfac` for LNS heuristics to limit the number of LPs solved in a subproblem
4730  the maximum absolute value in the activity instead of 1.0
4731 - `heuristics/shiftandpropagate/fixbinlocks` for fixing binary variables with no locks in one direction to the corresponding bound
4732 - `heuristics/shiftandpropagate/collectstats` which decides whether variable statistics are collected
4733 - `heuristics/shiftandpropagate/impliscontinuous` to decide whether implicit integer variables are treated as continuous variables
4734 - `heuristics/shiftandpropagate/preferbinaries` and `heuristics/shiftandpropagate/stopafterfeasible`,
4735  which decide whether binaries should be shifted first and the shifting should be stopped when no violations are left
4736 - `lp/disablecutoff` to toggle usage of LP cutoff bound (0: enabled, 1: disabled, 2: auto = disabled if pricers are used)
4737 - `misc/calcintegral` (default TRUE) to trigger calculation of primal-dual integral
4738 - `misc/finitesolutionstore` to switch whether infinite fixings should be removed from solutions before
4739  copying them to the original solution store
4740 - `misc/permuteconss` and `misc/permutevars` to control whether variables and/or constraints should be permuted, if permutationseed != -1
4741 - `presolving/components/feastolfactor` to increase the feasibility tolerance in all sub-SCIPs, when solving a component
4742 - `propagating/obbt/conditionlimit` to discard instable LP bases
4743 - `reading/(READER)/initialconss` that determines whether model constraints are initial
4744 - `reading/cipreader/writefixedvars` for disabling printing of fixed variables in CIP format
4745 - `reading/lpreader/aggrlinearization-ands` and `reading/mpsreader/aggrlinearization-ands` to enable/disable
4746  the printing of the weak or strict relaxation of and-constraints in LP and MPS format, respectively
4747 - `reading/lpreader/linearize-and-constraints` and `reading/mpsreader/linearize-and-constraints` to
4748  allow and-constraints to be linearized when printing in LP and MPS format, respectively
4749 - `separating/feastolfac` to allow dynamic decrease of relaxation feasibility tolerance depending on feasibility to applied cuts,
4750  i.e., allow relaxation solutions to have a primal infeasibility of at most this factor times the infeasibility of applied cuts
4751 - `separating/gomory/sidetypebasis` to decide whether the sides of ranged rows should be determined from the basis status
4752 - `separating/oddcycle/cutthreshold` to run odd cycle separation if not enough cuts have been found
4753 - `separating/zerohalf/delayedcuts` to use the delayed cutpool for the zerohalf separator
4754 - `write/allconss` to enable that all constraints are written
4755 - `write/genericnamesoffset` when writing a generic problem to define an offset on the variable numbering
4756 
4757 ### Data structures
4758 
4759 - New structure to store value-based branching and inference history (see pub_history.h).
4760 - new data structure for (circular) queues (`SCIP_QUEUE`)
4761 - hash tables will now increase dynamically
4762 - Moved LP solver interfaces to subdirectory `src/lpi`.
4763 
4764 Testing
4765 -------
4766 
4767 - added McNemar tests and Wilcoxon signed rank tests to cmpres.awk evaluation scripts
4768 - added passing MEM option of testgams(cluster) target as workspace option to GAMS jobs
4769 - extended test scripts by statistical tests
4770 
4771 Build system
4772 ------------
4773 
4774 ### Makefile
4775 
4776 - default flag for ZIMPL is now `auto`, which means that it is built if and only if GMP is available (GMP=true)
4777 - fixed make install for older Mac systems where install command does not have option -t
4778 - dropped support for Ipopt < 3.10
4779 
4780 Fixed bugs
4781 ----------
4782 
4783 - fixed bug when adding (global) clique, implications or variable bound information in solving stage that lead to
4784  global bound changes which contradict local bounds and therefore need to be stored as pending bound changes
4785 - unlinking a solution now copies solution values smaller than SCIPepsilon() avoiding some feasible solution in the
4786  transformed problem to be infeasible in the original problem
4787 - fixed bug when flushing the warning buffer when SCIP is closed
4788 - fixed bug when a bound change contradicts a local bound and is stored as pending, but the contradicting local
4789  bound becomes global afterwards (--> node where pending bound change is valid can be cut off)
4790 - fixed statistics bug: externally given solutions and new solutions found while transforming existing ones
4791  are now listed in line `other solutions` of primal heuristics statistics
4792 - fixed bug in random generators SCIPgetRandomInt() and SCIPgetRandomReal() for large intervals
4793 - make sure that bound changes of negated original variables are correct
4794 
4795 - Branching:
4796  - fixed bug w.r.t. changing the variable branching priority beyond the problem stage
4797  - allow again branching on continuous variables with huge bounds
4798 
4799 - Separation:
4800  - fixed bug in sepa_cgmip computeObjWeightSize() w.r.t. equal sized rows
4801  - fixed wrong bound calculation in sepa_rapidlearning
4802  - fixed bug in flowcover separator to exclude unconstrained rows in aggregation
4803 
4804 - LP and Interfaces:
4805  - fixed bug that lead to resolving the LP after diving instead of restoring the buffered solution
4806  - fixed rare bug with conflict analysis and LP/LPI having different states after diving
4807  - fixed several bugs in lpi_grb
4808  - fixed wrong strong branching results in lpi_grb.c and an invalid write
4809  - fixed bug in handling max-function in ampl interface; added support for min-function
4810 
4811 - Presolving:
4812  - fixed bug in prop_dualfix w.r.t. to fixing of variables to infinity after presolving
4813  - fixed wrong presolving finished status which sometimes occurred when the time limit was hit during presolve
4814  - fixed bug where a limit on presolving rounds was exceeded by 1
4815  - fixed minor bugs in presolving in cons_setppc.c and cons_logicor.c
4816  - fixed minor bug in cons_linear w.r.t. disabled presolving
4817 
4818 - Propagators:
4819  - fixed bug in genvbounds propagator occurring when objective offset or scale changes after a restart
4820  - fixed bug in genvbounds propagator by replacing non-active variables on right-hand side after presolving
4821 
4822 - Readers:
4823  - fixed memory bug in reader_mps
4824  - fixed several minor bugs with handling of memory when writing aggregated variables (reader_lp, reader_mps)
4825  - fixed bug in reader_lp when writing bilinear terms (product sign was missing)
4826  - fixed bug in reading indicator constraints in mps-format
4827  - nonlinear readers now create auxiliary objective variables and constraints always as initial and not removable
4828  in order to avoid unbounded LPs due to loose variables with infinite best bound
4829 
4830 - Constraints:
4831  - fixed several bugs where variables or constraints were not freed correctly
4832  - do not multi-aggregate variables if the constant would be a huge value in order to avoid numerical troubles
4833  - fixed bug with infinite multi-aggregation constants
4834  - fixed output of aggregated variables in indicator constraints in lp and mps-format
4835  - improved handling of initial constraints: constraints which are initial, but added during the search to an already
4836  treated node are kept and added to the LP at every node where they are active
4837  - fixed bug in cons_superindicator concerning names of upgraded constraints
4838  - fixed bug in cons_indicator with trying to create solution in problem stage
4839  - fixed bug in cons_orbitope with fixing upper right triangle in non-root nodes
4840 
4841 Miscellaneous
4842 -------------
4843 
4844 - new SCIP Optimization Suite homepages
4845 
4846 @page RN30 Release notes for SCIP 3.0
4847 
4848 @section RN302 SCIP 3.0.2
4849 *************************
4850 
4851 Features
4852 --------
4853 
4854 - reading erroneous CIP files can now output some indication of syntax errors
4855 - can now run splint on core files
4856 - cons_xor now uses the integral variable in propagation
4857 - allowed to switch on/off the solution debugging
4858 
4859 Performance improvements
4860 ------------------------
4861 
4862 - improved SCIPlpiAdd{Cols,Rows}() in SoPlex LPi
4863 
4864 Examples and applications
4865 -------------------------
4866 
4867 Interface changes
4868 -----------------
4869 
4870 ### New API functions
4871 
4872 - SCIPmarkColNotRemovableLocal() and SCIPmarkRowNotRemovableLocal() to forbid removal of an column/row
4873  from the LP in the current node
4874 - SCIPmessageVPrintError()
4875 
4876 ### Command line interface
4877 
4878 - can now output the solutions in the solution pool in the interactive shell
4879 
4880 ### Interfaces to external software
4881 
4882 - updated Mosek LP interface to compile with Mosek 7
4883 
4884 Fixed bugs
4885 ----------
4886 
4887 - fixed bugs in solution counting
4888 - fixed fieldtypes in sorting template
4889 - fixed bug concerning the userinterrupt flag, which was not reset
4890 - fixed solution collection when counting solutions
4891 - fixed bug with storing original solutions
4892 - fixed bug with infinite multi-aggregation constants
4893 - fixed bug that removing reverse implication did not reset closestvblpcount
4894 - fixed bug that duplicate solutions stopped copying of solutions to original solution candidate store
4895 - forbid branching on variables with huge bounds; such huge values cannot be enumerated with fixed precision
4896  floating point arithmetics
4897 - fixed bug that Ipopt's error message was not fully shown due to exiting before the message handler buffer was emptied
4898 - unlinking a solution now copies solution values smaller than SCIPepsilon() avoiding some feasible solution in the
4899  transformed problem to be infeasible in the original problem
4900 - allow to add columns (rows) with nonzero indices beyond current number of rows (columns) in SoPlex LPi
4901 - updated get.ASL script to cope with broken ftp access to netlib server
4902 
4903 - Memory:
4904  - fixed bugs with freeing C++ object data for problem and variables
4905  - fixed memory leak in lp.c (probably never occurred so far since array was not used)
4906  - fixed bug in sepa_zerohalf.c where the maxcuts(root) parameters led to an invalid memory allocation call
4907 
4908 - LP:
4909  - fixed assert in solve.c with branched status and LP reached the objective limit
4910  - fixed bug in heur_oneopt.c and heur_clique.c which was caused by side-effects when calling SCIPconstructLP(); when
4911  adding new variables in this method (e.g. adding new variables needed for a relaxation), this changes the variables
4912  array of SCIP
4913  - fixed problem that diving did not save status for infeasible LPs
4914  - fixed bug in SCIPlpComputeRelIntPoint() with wrong iteration limit and with wrong recompution
4915  - fixed bug that old LP size was not updated for deadend if no LP was solved
4916 
4917 - Expressions:
4918  - fixed issues with ungraceful termination when encountering unsupported expression operands in AMPL interface
4919  - fixed bug in backward propagation of linear expressions in expression graph
4920 
4921 - Propagation:
4922  - fixed potential performance issue with tree depth always assumed to be zero when propagating in probing mode
4923  - fixed bug in prop_vbound w.r.t. creation of variables during the search
4924  - fixed several bugs in propagation of cons_xor: need to take integral variables into account
4925  - fixed bug in cons_abspower.c handling infinity values in propagation
4926  - fixed bug in cons_and.c when a constraint was not correctly propagated which led to wrong dual-presolve reductions
4927  - fixed bug in cons_abspower: wrong infinity check when propagating bounds
4928 
4929 - Presolving:
4930  - fixed bug that the number aggregated variables were not counted in presol_inttobinary.c
4931  - fixed bug in presol_domcol: locks are now checked to see whether rounding was forbidden for a variable
4932 
4933 - Reader:
4934  - fixed bug in reader_gms.c w.r.t. writing nonlinear expressions with polynomials with constants
4935  - fixed bugs in parsing bounds from CIP-files, in reader_gms and AMPL interface
4936  - fixed bug when reading a mps formated file with a missing bound in the bound section
4937 
4938 - Constraints:
4939  - fixed bug in cons_bounddisjunction with satisfied literal of multi-aggregated variable
4940  - fixed bug in upgrade method of cons_soc
4941  - fixed issue with negated variables in cons_xor.c
4942  - fixed several asserts in cons_xor presolving
4943  - fixed bug in cons_xor.c calling method on null pointer row
4944  - fixed bug using a too hard comparison on the objective-infeasible-decision in constraint enforcement
4945  - fixed possible cycling in enforcement of nonlinear constraints due to too early removal of newly added cuts from LP
4946  - fixed bug wrongly removing constraints locally while counting
4947  - fixed bugs in cons_bivariate.c when the nonlinear function is not differentiable on the boundary of the domain
4948  - fixed bug in cons_indicator.c:SCIPmakeIndicatorFeasible() with handling fixed variables
4949  - fixed bug in cons_integral: check integrality of implicit integer variables when a solution is checked for feasibility
4950  - fixed bug in Undercover with `pseudo-`quadratic constraints
4951  - fixed bug with quadratic constraints not being upgraded
4952  - fixed bug in intervalarith.c: bivariate quad. equations may have been solved wrongly if second variable is unbounded
4953 
4954 - Separation:
4955  - fixed bug in sepa_zerohalf.c not copying the displays to the subscip, but still changing a display parameter there
4956  - fixed iteration limit determination in sepa_closecuts
4957  - fixed bug in sepa_closecuts: need to make sure that variable values of separation point satisfy bounds
4958  - fixed bugs in sepa_oddcylce: number of arcs have to be adjusted, handle implicit binary variables,
4959  fixed bug in heuristic separation method, fixed asserts
4960  - fixed wrong bound calculation in sepa_rapidlearning
4961 
4962 @section RN301 SCIP 3.0.1
4963 *************************
4964 
4965 Features
4966 --------
4967 
4968 - added delayed cutpool which only gets separated if the sepastore is empty after a separation round
4969 - sepa_cgmip can now take the objective row into account
4970 - added possibility to run clang compiler
4971 - statistics now include output on number of solutions that respect objective limit
4972 
4973 Performance improvements
4974 ------------------------
4975 
4976 - also copying active tight cuts from the delayed cut pool when calling SCIPcopyCuts()
4977 - sort genvbounds only when root node is finished; apply more often
4978 
4979 Examples and applications
4980 -------------------------
4981 
4982 Interface changes
4983 -----------------
4984 
4985 - when using an objective limit, heuristic characters are not displayed any longer for worse solutions
4986 
4987 ### Deleted and changed API methods
4988 
4989 - fixed spelling in the method name SCIPgmlWriteClosing()
4990 
4991 ### New API functions
4992 
4993 - SCIPgetNLimSolsFound() to get number of solutions that respect the objective limit
4994 
4995 Fixed bugs
4996 ----------
4997 
4998 - fixed issue with applying the effective root depth during the search
4999 - fixed bug concerning usage of dualbound and lowerbound
5000 - fixed bug trying to color probing nodes, which are not added to the vbc output anymore
5001 - fixed bug in sorting template
5002 - fixed bug leading to removing a ranged row parallel to the objective function, although one of the sides was still needed
5003 - fixed a bug correcting the binvarssorted flag in cons_linear.c
5004 - fixed bug in cons_varbound.c not resolving multi-aggregated variables
5005 - relaxed assert in SCIPvarCh{Lb,Ub}{Global,Local} that new bound must be tighter to feastol
5006 - fixed contra-intuitive behavior when using SCIP with objective limits and solution limit at the same time;
5007  SCIP now only stops when sufficiently many solutions better than the objective limit have been found
5008 - fixed bug when adding binary implications with non-vartype binary variables
5009 - fixed bug adding binary implications on binary variables with type != `SCIP_VARTYPE_BINARY`
5010 - fixed bug concerning different tolerances for reached objective limit in case of pricing with fastmip
5011 
5012 - LP:
5013  - fixed bug which disabled iteration limit in SCIPlpSolveAndEval()
5014  - ensure consistency of LP bounds during OBBT diving, i.e., that lower <= upper holds exactly
5015  - set lpsolstat to `SCIP_LPSOLSTAT_NOTSOLVED` in SCIPchg{Lp,Dual}feastol()
5016  - use tighter dual feasibility tolerance for LPs solved during optimization-based bound tightening
5017  - fixed bug with unflushed LP arising from global bound changes in strong branching
5018 
5019 - Constraints:
5020  - fixed issue with deleting varbound constraints in case the bound change was not applied
5021  - fixed bugs in parsing dis-/conjunctive constraints
5022  - fixed bug with handling of empty logicor and bounddisjunction constraints
5023  - fixed issue in cumulative constraint and separation
5024  - fixed bug when sorting knapsack constraints with the same weights
5025  - fixed bug resulting in trying to delete an upgraded linear constraint a second time in exitpre callback
5026  - fixed minor bug in conjunctive constraint handler printing wrong constraint
5027  - fixed bug in disjunctive constraint handler when enforcing a constraint
5028  - fixed behaviour change of indicator constraint handler when solving another instance after solving one using the
5029  interactive shell
5030  - fixed several issues in cumulative constraint handler
5031  - fixed bug in cumulative constraint handler w.r.t. getting active variables
5032  - fixed bug in cumulative constraint handler concerning conflict analysis
5033 
5034 - LPI and Interfaces:
5035  - fixed bug in CppAD in connection with abspower constraints
5036  - fixed bug in CppAD when using signpower functions with expression pointers that do not fit into an unsigned int
5037  - better handling of generalized (Lagrangian) variable bounds that are not in the LPI
5038  - fixed wrong basis rstat values in CPLEX LPI
5039  - fixed bug with LP not being flushed after bound changes on columns that are not in the LPI
5040  - methods SCIPlpiIs{PrimalFeasible,DualFeasible,DualUnbounded}() in SoPlex LPi now check that the LP is not perturbed,
5041  which may happen when stopping due to iteration or time limit
5042  - fixed inconsistencies between methods SCIPlpiIs{PrimalFeasible,DualFeasible,Optimal,...} in SoPlex LPi
5043 
5044 - Propagation:
5045  - fixed bug when adding linear constraints with non active variables in solving process, during propagation this
5046  resulted in changing the row, which is not possible for unmodifiable constraints/locked rows
5047  - fixed small issue in pseudo objective propagator w.r.t. propagating the lower bound globally
5048  - fixed bug in cons_orbitope: in rare cases one cannot repropagate
5049  - fixed bug of wrong result code in propagation in prop_genvbound.c
5050 
5051 - Presolve:
5052  - fixed bug in copying nonlinear constraints during presolve (resulted
5053  in wrongly declaring instances as infeasible when using component presolve)
5054  - fixed bug in copying nonlinear constraints during presolve (nonlinear part was not copied)
5055 
5056 - Heuristics:
5057  - fixed wrong solving status (OPTIMAL) in case an unbounded solution was provided or found by heuristic before presolve
5058  - fixed bug in heur_subnlp running with tightened tolerances: sumepsilon must be tightened like feastol and epsilon
5059  - fixed bug in nlp diving heuristic for fractional variables with values slightly outside of their domain
5060 
5061 - Numerics:
5062  - fixed several numeric issues
5063  - fixed numerical bug in conflict.c relaxing bounds while keeping an infeasibility proof
5064  - fixed feasibility decision bug when replacing inactive variables by their active counterparts, which might change the
5065  redundancy status of a bounddisjunction constraint due to numerics
5066  - fixed numerical bug adding a relaxed bound for conflict analysis in cons_varbound
5067  - fixed numerical bug in conflict analysis of genvbounds propagator
5068 
5069 @section RN300 SCIP 3.0.0
5070 *************************
5071 
5072 Features
5073 --------
5074 
5075 - SCIPcomputeLPRelIntPoint() with normtype=`s` now uses homogenized LP for computing rel.int. point too and allow to
5076  set relaxrows = FALSE
5077 - new column showing the pseudo objective value
5078 - digraph structure added to misc.c and pub_misc.h that can be used to handle directed graphs, compute undirected
5079  components in the graph and sort these components (almost) topologically
5080 - SCIP does now print an info message when the root LP could not be solved or is unbounded
5081 - added counter and clock for SCIPcopy() calls
5082 - correct initialization of steepest edge weights with SoPlex 1.6.0.4
5083 - parameters can now be fixed, which means that their value cannot be changed unless they are unfixed, first;
5084  the fixing status of a parameter is copied to sub-SCIPs, which allows to ensure that certain parameters
5085  are also not changed when, e.g., heuristics change emphasis settings or also specific parameters
5086 - automatic transfer of original solutions (e.g., provided by the user, from solution pool, after restart, from heuristic
5087  adding original solution during solve) to the transformed space (might fail due to, e.g., dual fixings)
5088 - added possibility to use GUBs for lifting knapsack cuts (disabled)
5089 - added pre- and post-conditions in doxygen documentation for all methods of scip.{c,h}
5090 - added zeroobj heuristic that solves a copy of the problem without an objective function and with quite strict limits
5091  on the number of nodes and LP iterations
5092 - complete reworking of the vbounds propagator: it now takes into account variable bounds, cliques and implications,
5093  stores bounds of variables which were changed and performs a forward propagation from these bounds, i.e., tries to
5094  derive new bounds for other variables; during propagation, bound changes are propagated in an (almost) topological order
5095 
5096 - Constraints:
5097  - full version of cumulative constraint handler
5098  - new constraint handler `superindicator` for indicator constraints with slack constraints of arbitrary type
5099  - implemented first clique lifting procedure in cons_setppc.c (by default is off)
5100  - the conjunction and disjunction constraint handlers are now able to parse their CIP output format
5101 
5102 - Memory:
5103  - better handling of memory limits, in particular for large problems
5104  - estimate memory consumption for sub-SCIP and do not copy them if close to memory limit
5105 
5106 - Presolve:
5107  - time for initpre and exitpre methods is now also measured in presolving time
5108  - added dual presolving for and-constraints difficult instances (no guarantees)
5109  - oneopt can now be called before presolving
5110  - added a presolving step in the disjunctive constraint handler, removing disjunction, where a sub-constraint was
5111  deleted, which means this sub-constraint is redundant, which again means it is always TRUE or will be enforced by
5112  another constraint
5113  - added new presolver convertinttobin, which converts bounded integer variables to their binary representation, e.g.
5114  for integer variable 0 <= x <= 10 the binary variables y0, y1, y2 and y3 are created, such that
5115  1 y0 + 2 y1 + 4 y2 + 8 y3 <= 10 and x = 1 y0 + 2 y1 + 4 y2 + 8 y3
5116  - added new presolver gateextraction, which tries to find and-gates/constraints which are linearized
5117  e.g. (x + y + z >= 1, x + y <= 1 and x + z <= 1 => x == AND(~y,~z)), in special cases it also detects set-partitioning
5118  constraints e.g. (x + y + z >= 1, x + y <= 1, x + z <= 1 and y + z <= 1 => x + y + z == 1));
5119  gate-extractor is also able to detect logicor constraints and set-packing/-partitioning constraints with the same
5120  variables, to upgrade these both constraints to a set-partitioning constraint
5121  - added new presolver components, that searches for independent components in the problem structure and solves
5122  these components as sub-SCIPs when they are small enough (per default <= 20 discrete variables, nodelimit of 10000)
5123  - added new presolver domcol that looks for dominated columns in a MIP and tries to fix them
5124 
5125 - Reader:
5126  - CNF reader now creates feasibility instances per default, usage of an objective has to be set by a parameter
5127  - added reader for MI(NL)Ps in OSiL (Optimization Services Instance Language) format
5128 
5129 - Statistic:
5130  - new statistics and new statistic output messages
5131  - number of presolving calls of plugins is counted and displayed in the statistics,
5132  can be accessed via SCIPpresolGetNCalls() and SCIP{prop/conshdlr}getNPresolCalls()
5133  - the statistics shows for a branching rule the number of calls for LP, extern and pseudo candidates
5134  - new switch `SCIP_STATISTIC` and new macros SCIPstatisticMessage(), SCIPstatisticPrintf() and SCIPstatistic() to output
5135  statistic and execute code lines which are only needed therefor. Works as `SCIP_DEBUG` and SCIPdebugXyz()
5136  - added statistics on the number of cuts/rows that have actually been applied to the lp for each constraint handler and separator;
5137  use SCIPcreate(Empty)RowCons() and SCIPcreate(Empty)RowSepa() to support the statistics.
5138 
5139 - NLP:
5140  - new propagators obbt and genvbounds for MINLP
5141  - new NLPI parameter `SCIP_NLPPAR_FASTFAIL` to enable convergence checks in NLP solver to stop early on seemingly
5142  - added nlpdiving heuristic that comprises several diving heuristics using an NLP relaxation
5143 
5144 Performance improvements
5145 ------------------------
5146 
5147 - improved scaling by choosing the smallest scaler
5148 - if first root lp is solved and the optimality is rejected by SCIP, there won't be an unnecessary solving of the lp
5149  from scratch again
5150 - several performance improvements for Pseudo-Boolean optimization, pseudo objective propagator
5151 - streamlined initlp functions in cons_indicator, cons_sos1, cons_sos2 (add rows only if needed)
5152 - improved time used for adding implications
5153 - speed up in SCIPboolarrayExtend() in misc.c replacing a for loop with BMSmoveMemoryArray() call
5154 - speed up in var.c changing some recursive calls into iterative calls and reducing the number of VARFIX event that are
5155  thrown for fixation, aggregation or multi-aggregations
5156 - revised reduced cost propagator
5157 - increased performance in SCIPcliqueAddVar(), adding a variable to a clique
5158 - tighten primal and dual feasibility tolerances independently if they are not reached in LP solving
5159 
5160 - Probing:
5161  - if probing reached the end of all variables it will restart the probing cycle correctly
5162  - improved probing by ordering the variables differently and applying the one-branch before the zero-branch
5163 
5164 - Constraints:
5165  - improved scaling of linear constraints, linear constraints with integral variables will now be scale with
5166  1e+06/MAX(maximal absolute coefficient, 1.0) instead of 1e+03/MAX(maximal absolute coefficient, 1.0);
5167  if all coefficients are in absolute value equal they will be scaled by that
5168  - added clique presolving for and-constraints, which checks if two operands or one operand and the resultant are in a
5169  clique and then fixes the resultant to 0 and in the former case we can delete the and-constraint too
5170  - speed up in linear constraint handler replacing aggregated variables
5171  - when all nonlinearities have been fixed and the number of nonfixed variables is 1 in cons_nonlinear/cons_quadratic/
5172  cons_bivariate, handle it by a bound change instead of adding a linear constraint
5173 
5174 - Separation:
5175  - automatically turn off separation in sepa_oddcycle if it was too unsuccessful within the last calls
5176  - use faster Dijkstra variants in sepa_oddcycle
5177  - improved tcliquegraphAddImplicsVars() in sepa_clique.c to faster add possible variables
5178  - changed emphasis settings: knapsack disaggregation is now allowed in fast presolving, CG-MIP separator disabled in
5179  aggressive separation
5180 
5181 - Reader:
5182  - improved lp-, mps-, opb-reading time
5183  - speed up mps reader asking parameters only once
5184 
5185 - Heuristics:
5186  - added parameters mincoveredrel and mincoveredabs to heur_undercover to only run if problem is sufficiently nonlinear
5187  - improved intdiving heuristic by activating backtracking to a different fixing value
5188  - heur_undercover treats indicator constraints as nonlinear and fixes the binary variable for linearization
5189 
5190 Examples and applications
5191 -------------------------
5192 
5193 - new examples for scheduling and usage of the callable library with nonlinear problems
5194 - the error messages are not handled via the message handler anymore; per default the error message a written to stderr
5195 
5196 Interface changes
5197 -----------------
5198 
5199 - introduced basic inclusion and creation methods to simplify usage of the SCIP library
5200 - allowed to start diving mode even if LP is not flushed, not solved, or not solved to optimality
5201 - changed the message handler system within SCIP heavily such that it is thread save
5202 - the resolve propagation methods for the constraint handler and propagator getting a new parameter called relaxedbd;
5203  explaining/resolving this relaxed bound is sufficient
5204 - default integer comparer SCIPsortCompInt() (see pub_misc.h)
5205 
5206 - LP interface:
5207  - SoPlex LPI supports setting of `SCIP_LPPAR_DUALFEASTOL` when using SoPlex version 1.6.0.5 and higher.
5208 
5209 - Problem:
5210  - Forbid problem modifications in `SCIP_STAGE_{INIT,EXIT}PRESOLVE` (see pre-conditions for corresponding methods in scip.h).
5211 
5212 - Miscellaneous:
5213  - New macro SCIPdebugPrintCons() to print constraint only if `SCIP_DEBUG` flag is set.
5214  - all objscip *.h file now use the default SCIP interface macros (this should avoid errors when changing the interface)
5215 
5216 ### New and changed callbacks
5217 
5218 - Constraint Handler:
5219  - Added a propagation timing parameter `proptiming` to SCIP_DECL_CONSPROP(), giving the current timing at which
5220  this method is called (also to the corresponding c++ wrapper classes).
5221  - New optional callback methods in constraint handlers: `SCIP_DECL_CONSGETVARS` and `SCIP_DECL_CONSGETNVARS`.
5222  These callbacks, if implemented, should return an array of all variables and the number of all variables used
5223  by the given constraint, respectively. (This method might, e.g., be called by a presolver)
5224 
5225 - NLP Solver Interface:
5226  - New NLPI callback SCIP_DECL_NLPISETMESSAGEHDLR() to set message handler in NLP solver interfaces.
5227 
5228 - Propagator:
5229  - Added a propagation timing parameter `proptiming` to SCIP_DECL_PROPEXEC(), giving the current timing at which this method is
5230  called (also to the corresponding c++ wrapper classes).
5231 
5232 - Plugin management:
5233  - added `basic` inclusion methods which have only fundamental data of the plug-ins as arguments; added setter functions
5234  for all non-fundamental callbacks of the plug-ins; the plug-in types with basic inclusion functions are:
5235  readers, constraint handlers, conflict handlers, presolvers, propagators, heuristics, separators, relaxation handlers,
5236  branching rules, node selectors and pricers; these methods should make the usage easier, sparing out optional callbacks and
5237  parameters: e.g., SCIPincludeConshdlrBasic();
5238  - To extend the basic functionalities, there are setter method to add
5239  optional callbacks. For example SCIPsetConshdlrParse(), SCIPsetPropCopy() or SCIPsetHeurInitsol().
5240 
5241 - Constraint Handlers:
5242  - Added basic creation methods for all constraints types, e.g., SCIPcreateConsBasicLinear(); these methods should make the usage easier,
5243  sparing out optional callbacks and parameters.
5244 
5245 ### Deleted and changed API methods
5246 
5247 - SCIPcomputeCoverUndercover() now has an additional parameter coverbd
5248 - tcliqueMaxClique has an additional parameter to store the number of used branch-and-bound nodes
5249 - the code in `src/dijkstra` and `src/xml` has been changed to (increasingly) conform to the SCIP coding style;
5250  all function (and variable) names have been changed (do not contain `_` anymore).
5251 - renamed SCIPstairmap*Core() to SCIPstairmap*Stair()
5252 
5253 - Conflict Analysis:
5254  - Added parameter `relaxedbds` to conflict handler callback method SCIP_DECL_CONFLICTEXEC(). This array contains
5255  bounds which are sufficient to create a valid conflict
5256 
5257 - Constraint Handler:
5258  - Added a parameter `restart` to the SCIP_DECL_CONSEXITSOL() callback method, indicating whether this call was
5259  triggered by a restart.
5260  - Added a parameter `relaxedbd` to SCIP_DECL_CONSRESPROP() callback method. If explaining a given bound change
5261  (index), it is sufficient to explain the reason for reaching the `relaxedbd` value, see above
5262  - Removed parameters `isunbounded`, `isinfeasible` and `result` from SCIP_DECL_CONSINITPRE() and SCIP_DECL_CONSEXITPRE()
5263  callback methods. It is not allowed to determine unboundedness or infeasibility in these callbacks, anymore.
5264  - added a `SCIP_CONS*` parameter to SCIPcreateConsDisjunction() which can represent the linear relaxation of the whole
5265  disjunction constraint as a conjunction constraint, or `NULL`
5266  - remove problematic function cons_indicator:SCIPsetSlackVarIndicator()
5267  - Renamed SCIPgetCountedSparseSolutions() to SCIPgetCountedSparseSols() in cons_countsols.{c,h}.
5268 
5269 - Counting:
5270  - Changed the counting system within SCIP heavily. New method for `SCIP_SPARSESOL` usage, SCIPsparseSolCreate(),
5271  SCIPsparseSolFree(), SCIPsparseSolGetVars(), SCIPsparseSolGetNVars(), SCIPsparseSolGetLbs(), SCIPsparseSolGetUbs()
5272  in (pub_)misc.{c,h}.
5273 
5274 - Cuts and Separation:
5275  - removed `targetscip` parameter from SCIPconvertCutsToConss(), now this function can only convert cuts on one instance,
5276  otherwise use SCIPcopyCuts()
5277  - added `ncutsadded` parameter to SCIPcopyCuts() to be able to store the number of copied/converted cuts
5278  - New functions SCIPcreateEmptyRowCons(), SCIPcreateEmptyRowSepa(), SCIPcreateRowCons(), and SCIPcreateRowSepa() that allow
5279  to set the originating constraint handler or separator of a row respectively; this is, for instance, needed for statistics
5280  on the number of applied cuts. If rows are created outside a constraint handler or separator use SCIPcreateRowUnspec() and
5281  SCIPcreateEmptyRowUnspec(). The use of SCIPcreateEmptyRow() and SCIPcreateRow() is deprecated.
5282  - New functions SCIProwGetOrigintype(), SCIProwGetOriginCons(), and SCIProwGetOriginSepa() to obtain the originator
5283  that created a row.
5284 
5285 - LP:
5286  - new parameter numerics/lpfeastol for primal feasibility tolerance used in LP solver
5287  - SCIPcomputeLPRelIntPoint() takes two new arguments giving a time and iteration limit
5288  - SCIPcolGetStrongbranchLPAge(), SCIPgetVarStrongbranchLPAge(), SCIPgetNLPs(), SCIPgetNPrimalLPs(), SCIPgetNDualLPs(),
5289  SCIPgetNBarrierLPs(), SCIPgetNResolveLPs(), SCIPgetNPrimalResolveLPs(), SCIPgetNDualResolveLPs(), SCIPgetNNodeLPs(),
5290  SCIPgetNNodeInitLPs(), SCIPgetNDivingLPs(), SCIPgetNStrongbranchs(), SCIPgetNRootStrongbranchs() now return a longint
5291  instead of an integer
5292 
5293 - Message Handler and Printing:
5294  - New callback method SCIP_DECL_MESSAGEHDLRFREE() which is called when the message handler is freed.
5295  - The old callback method SCIP_DECL_MESSAGEERROR() was replaced by the callback method SCIP_DECL_ERRORPRINTING().
5296  - the follwing methods additionally need the SCIP pointer as parameter to make the output thread save:
5297  SCIPprintVersion(), SCIPsetMessagehdlr(), SCIPgetMessagehdlr() and SCIPwarningMessage()
5298  - the error printing method can be replaced using the method SCIPmessageSetErrorPrinting(); the default error message
5299  printing can be recoverd via SCIPmessageSetErrorPrintingDefault() (see pub_message.h)
5300  - Changed the message handler system within SCIP heavily such that it is thread-safe. SCIPcreateMessagehdlr() in
5301  scip.{c,h} was replaced by SCIPmessagehdlrCreate() in pub_message.h/message.c with a changed parameter list;
5302  see pub_message.h and type_message.h.
5303  - removed method SCIPcreateMesshdlr(), please use SCIPmessagehdlrCreate() (see pub_message.c)
5304  - removed method SCIPfreeMesshdlr(), please use SCIPmessagehdlrRelease() (see pub_message.c)
5305  - Error messages (SCIPerrorMessage()) are not handled via the message handler anymore; per default the error
5306  message is written to stderr.
5307  - the following methods need an additional message handler: SCIPdispLongint(), SCIPdispInt(), SCIPdispTime(), all message
5308  handler methods (see pub_message.h), SCIPhashtablePrintStatistics(), SCIPhashmapPrintStatistics(), SCIPlpiCreate()
5309  - SCIPprintCons() does not print termination symbol `;\n` anymore; if wanted, use SCIPinfoMessage() to print `;\n` manually
5310  - remove SCIPcolPrint() and SCIProwPrint(), please use SCIPprintCol() SCIPprintRow() see scip.h
5311  - method SCIPprintError() does not need the file stream anymore. The error is written via the error message callback.
5312 
5313 - Nonlinear expressions, relaxation, and solver interface:
5314  - Method SCIPexprtreeRemoveFixedVars() is not public anymore.
5315  - Renamed SCIPmarkNonlinearitiesPresent() to SCIPenableNLP()
5316  - Renamed SCIPhasNonlinearitiesPresent() to SCIPisNLPEnabled().
5317  - removed SCIPmarkContinuousNonlinearitiesPresent(),
5318  renamed SCIPhasContinuousNonlinearitiesPresent() to SCIPhasNLPContinuousNonlinearity() and allow call only during
5319  initsolve and solve,
5320 
5321 - Parameters:
5322  - Replaced SCIPparamSet*() by SCIPchg*Param()
5323  + replaced SCIPparamSetBool() by SCIPchgBoolParam()
5324  + replaced SCIPparamSetInt() by SCIPchgIntParam()
5325  + replaced SCIPparamSetLongint() by SCIPchgLongintParam()
5326  + replaced SCIPparamSetReal() by SCIPchgRealParam()
5327  + replaced SCIPparamSetChar() by SCIPchgCharParam()
5328  + replaced SCIPparamSetString() by SCIPchgStringParam()
5329 
5330 - Presolving:
5331  - Removed parameters `isunbounded`, `isinfeasible` and `result` from SCIP_DECL_PRESOLINITPRE() and
5332  SCIP_DECL_PRESOLSEXITPRE(). It is not allowed to determine unboundedness or infeasibility in these callbacks, anymore.
5333 
5334 - Propagator:
5335  - changed parameters of function SCIPpropagateCutoffboundVar() in prop_pseudoobj.{c,h}
5336  - Added a parameter `restart` to SCIP_DECL_PROPEXITSOL() callback method, indicating whether this call was triggered
5337  by a restart.
5338  - Added a parameter `relaxedbd` to SCIP_DECL_PROPRESPROP() callback method. If explaining a given bound change
5339  (index), it is sufficient to explain the reason for reaching the `relaxedbd` value.
5340  - Removed parameters `isunbounded`, `isinfeasible` and `result` from SCIP_DECL_PROPINITPRE() and
5341  SCIP_DECL_PROPEXITPRE() callback methods. It is not allowed to determined unboundedness or infeasibility in
5342  these callbacks, anymore.
5343 
5344 - Sort and Copy:
5345  - The methods SCIPsortedvecInsert*() have an additional parameter which can be used to receive the position where
5346  the new element was inserted, if this is not of interest a `NULL` pointer can be given
5347  - new parameter in SCIPcopyPlugins() to indicate whether the message handler from the source SCIP should be passed to the
5348  target SCIP (only the pointer is copied and the usage counter of the message handler is increased)
5349  - New parameter in SCIPcopy() to indicate whether the message handler from the source SCIP
5350  should be passed to the target SCIP (only the pointer is copied and the usage counter of the message handler is
5351  increased). In multi theaded enviroment this parameter needs to be set to FALSE.
5352 
5353 - Variable usage:
5354  - rename SCIPvarGetBestBound() to SCIPvarGetBestBoundLocal()
5355  - rename SCIPvarGetWorstBound() to SCIPvarGetWorstBoundLocal()
5356  - Method SCIPvarGetProbvarSum() is not public anymore, use SCIPgetProbvarSum() instead.
5357  - Replaced method SCIPvarGetRootRedcost() by SCIPvarGetBestRootRedcost().
5358 
5359 ### New API functions
5360 
5361 - setup timer to all plugins and therefore SCIP<plugin-type>GetSetupTime() methods in all pub_plugin-type.h to ask
5362  for this time (, e.g. SCIPeventhdlrGetSetupTime() in pub_event.h)
5363 - new GML(Graph Modeling Language) methods SCIPgmlWriteOpening(), SCIPgmlWriteCosing(), SCIPgmlWriteArc(), SCIPgmlWriteEdge(),
5364  SCIPgmlWriteNode() that write to a given GML file
5365 - new LPI method SCIPlpiGetObjsen() to query objective sense
5366 - SCIPpermuteIntArray() in pub_misc.h and misc.c for permuting an integer array
5367 - SCIPcalcBinomCoef() in pub_misc.h and misc.c which calculates a binomial coefficient up to 33 over 16
5368 - SCIPheurPassSolAddSol() in heur_trysol.c; solution which are passed via this method are just without any feasibility check
5369 - SCIPgetGlobalPseudoObjval() which returns the global pseudo objective value which is all variables
5370  set to their best (w.r.t. the objective function) global bound
5371 - SCIPhashGetKeyStandard() which returns the element itself as the key, SCIPhashKeyEqPtr(),
5372  SCIPhashKeyValPtr() which do the hash-comparison/-conversion on a pointer in pub_misc.h
5373 - SCIPhashtableClear() which removes all elements of a hash table
5374 - SCIPisUpdateUnreliable() to check whether an iteratively updated value should be recomputed from scratch
5375  (e.g., for activities; uses new parameter `misc/num_recompfac`)
5376 - SCIPisHugeValue() to check whether a value is huge and should be handled separately from other values
5377  (e.g., in activity computations) and SCIPgetHugeValue() to get the smallest value counting as huge
5378 - SCIPfixParam() and SCIPunfixParam() to fix and unfix a parameter, respectively;
5379  the fixing status of a parameter can be requested by SCIPparamIsFixed();
5380 - SCIPsetBasePointClosecuts() to set the base point for close cut separation
5381 - SCIPchgCutoffboundDive() to change the cutoffbound in diving mode
5382 - SCIPupdateCutoffbound() which can be used to pass a cutoff bound
5383 
5384 - Presolving:
5385  - SCIPpropIsPresolDelayed() which return if a propagator is delay during presolving
5386  - Added method SCIPisPresolveFinished() which returns whether the presolving process would be stopped after the
5387  current presolving round, given no further reductions will be found, can be used to ensure that a presolver is called very late
5388 
5389 - Memory:
5390  - added forgotten implementation of SCIPfreeMemorySize(), SCIPfreeMemorySizeNull() in scip.h and BMSfreeMemorySize(),
5391  BMSfreeMemorySizeNull() in memory.h
5392  - SCIPmemccpy() in pub_misc.h and misc.c which copies either a specified number of charcters of a source
5393  string to a destination string or until it hits a stoping character
5394  - BMSmoveMemory(), BMSmoveMemoryArray(), BMSmoveMemorySize() and corresponding BMSmoveMemory_call() in
5395  memory.{h,c} too move memory elements
5396 
5397 - Conflict Analysis:
5398  - SCIPisConflictAnalysisApplicable() which return FALSE is the conflict will not runs; can be used
5399  to avoid unnecessary initialization of the conflict analysis
5400  - SCIPaddConflictRelaxedLb(), SCIPaddConflictRelaxedUb() and SCIPaddConflictRelaxedBd(); these methods
5401  can be used to give for a bound change which is part of an explanation a relaxed bound; this means the relaxed bound
5402  is already efficient to be part of a valid explanation
5403  - SCIPisConflictVarUsed() returns TRUE if the given bound change is already part of the conflict set;
5404  that is the bound change is redundant;
5405  - SCIPgetConflictVarLb() and SCIPgetConflictVarUb() returning the lower/upper bound of the given
5406  variable within the current active conflict set
5407 
5408 - Variable usage:
5409  - SCIPvarsGetProbvar() in pub_var.h and var.c, which returns for a given array of variables the active, fixed
5410  or multiaggregated representation
5411  - SCIPgetActiveVars() in scip.{h,c}, which returns for a given array of variables the active counterparts
5412  - SCIPgetNObjVars() which returns the number of variables which have a non-zero objective coefficient
5413  - SCIPenableVarHistory() and SCIPdisableVarHistory() which can be used to turn off and on the collection
5414  of variables statistics which is used for example for branching
5415  - SCIPbranchVarHole() which branches a variable w.r.t. a given domain hole
5416  - SCIPvarGetAggregatedObj() which computes for a (not active) variable the corresponding objective value
5417  - SCIPsolIsOriginal() that returns whether a solution is defined on the original variables
5418  - SCIPgetVarImplRedcost() which returns the implied reduced costs
5419  - SCIPvarGetBestRootSol(), SCIPvarGetBestRootRedcost(), SCIPvarGetBestRootLPObjval() which return the best
5420  combination for a variable w.r.t. root solution value, root LP objective value and root reduced cost
5421  - SCIPhaveVarsCommonClique() in scip.{h,c}, to check for common clique information on two given variables
5422  - added basic creation methods SCIPcreateVarBasic() and SCIPcreateProbBasic() and setter functions for
5423  non-fundamental callbacks of variables and problems.
5424  - added new methods SCIPvarGetBestBoundGlobal() and SCIPvarGetWorstBoundGlobal().
5425 
5426 - Constraint Handler:
5427  - added public wrapper functions for calling constraint handler callback methods for a single constraint:
5428  SCIPactiveCons(), SCIPdeactiveCons(), SCIPinitlpCons(), SCIPsepalpCons(), SCIPsepasolCons(), SCIPpropCons(),
5429  SCIPrespropCons(), SCIPenfopsCons(), SCIPenfolpCons()
5430  - added basic creation methods for all constraint handlers
5431  - SCIPchgCapacityKnapsack() which can be used to change the capacity of a knapsack constraint
5432  - SCIPconsIsAdded() which returns whether a constraint was already to a SCIP instance
5433  - SCIPconshdlrGetNCutsApplied() in pub_cons.h to get the number of cuts applied to the lp
5434  - SCIPconshdlrIncNAppliedCuts() in cons.h to increase the number of applied cuts (used by sepastore.c)
5435  - SCIPchgVarName() and SCIPchgConsName() which can be used to change name of variables and
5436  constraints in problem creation stage
5437  - New methods SCIPgetConsVars() and SCIPgetConsNVars() which return for a given constraint the involved variables and
5438  the number of variables if the corresponding constraint supports this (optional) callbacks
5439  (corresponding callbacks need to be implemented, see above)
5440 
5441 - Message Handler:
5442  - SCIPmessagehdlrCapture() which captures a given message handler (increases number of uses)
5443  - SCIPmessagehdlrRelease() which releases and possibly frees a given message handler (decreases number of uses)
5444  - SCIPsetMessagehdlrLogfile() which can be used to write into a log file
5445  - SCIPsetMessagehdlrQuiet() which can be used to turn the screen output on and off
5446 
5447 ### Command line interface
5448 
5449 - in the interactive shell, parameters can be fixed and unfixed with `fix` (instead of `set`), e.g., `fix heuristics rens freq TRUE`;
5450 - new shell command `change minuc` to minimize the number of unsatisfied constraints
5451 
5452 ### Interfaces to external software
5453 
5454 - beta-version of a MATLAB interface can be found under interfaces/matlab
5455 - beta-version of a AMPL interface can be found under interfaces/ampl
5456 
5457 ### Changed parameters
5458 
5459 - `branching/fullstrong/reevalage` changed from an integer to a longint parameter
5460 
5461 - Removed parameters:
5462  - `separating/closecuts/separootonly`
5463  - `constraints/quadratic/defaultbound`
5464  - `separating/cgmip/nodelimit`
5465 
5466 ### New parameters
5467 
5468 - `constraints/%s/timingmask` for changing the timingmask for calling the propagtion method of all constraint plugins
5469 - `constraints/and/dualpresolving` by default set to TRUE, enabling dual-presolving on and-constraints
5470 - `constraints/indicator/{sepacouplingcuts,sepacouplinglocal}` to enable separation of (local) cuts
5471 - `constraints/indicator/{maxsepacuts,maxsepacutsroot}` to restrict the number of separated cuts
5472 - `constraints/indicator/dualreductions` to enable dual presolving/propagation steps
5473 - `constraints/setppc/cliquelifting`, `constraints/setppc/addvariablesascliques`,
5474  `constraints/setppc/cliqueshrinking`, first for enabling/disabling the clique lifting algorithm in cons_setppc.c,
5475  second parameter is for trying to create extra clique constraints in lifting algorithm, third parameter is for trying
5476  to decrease the number of variable in a clique constraint in the lifting algorithm
5477 - `limits/totalnodes` that allows to stop at the correct node if a restart occured; therefore the new
5478  `SCIP_STATUS_TOTALNODELIMIT` is added
5479 - `lp/{rootiterlim,iterlim}` to set a limit on the LP iterations spend in the initial root LP and each
5480  LP resolve, respectively
5481 - `misc/transorigsols` by default set to TRUE, that switches whether SCIP tries to transfer original
5482  solutions into the transformed space (in initsol and if a heuristic adds an original solution during solving)
5483 - `numerics/hugeval` that defines the smalles value counting as huge (see new method SCIPisHugeValue())
5484 - `numerics/recompfac` which denotes the factor, by which the absolute of an iteratively updated value has
5485  to be decreased in order to recompute the value from scratch
5486 - `presolving/convertinttobin/maxdomainsize` by default is set to `SCIP_LONGINT_MAX`, which deternmines
5487  the domainsize for which integers are converted to their binary representation
5488 - `presolving/convertinttobin/onlypoweroftwo` by default is set to FALSE, that parameter allows you to
5489  only convert integer variables with a domainsize of 2^p-1 to their binary representation
5490 - `presolving/convertinttobin/samelocksinbothdirections` by default is set to FALSE, that parameter allows
5491  you to convert only integer variables to their binary representation, which have the same amount of up- and downlocks
5492 - `presolving/gateextraction/sorting` by default is set to 1, that parameter determines if you want to try
5493  to extract big-gates(-1) or small-gates(1) at first by ordering bigger/smaller logicor constraint up front, or use
5494  them as they are (0)
5495 - `presolving/gateextraction/onlysetpart` by default is set to FALSE, that parameter allows you to
5496  only extract set-partitioning and no and-constraints
5497 - `presolving/gateextraction/searchequations` by default is set to TRUE, that parameter allows you to
5498  search for logicor constraints and set-packing/-partitioning constraints with same variables
5499 - `propagating/%s/timingmask` for changing the timingmask for calling the propagtion method of all propagator plugins
5500 - `propagating/probing/maxdepth` to set the maximal depth until the probing propagation is executed
5501 - `reading/cnfreader/useobj` to state whether an artificial objective, depending on the number of clauses
5502  a variable appears in, should be used, by default set to FALSE, old default behavior of reader corresponds to TRUE
5503 - `separating/cgmip/{minnodelimit,maxnodelimit}` to determine node limit.
5504 - `separating/closecuts/maxlpiterfactor` for iteration limit in relative interior point computation
5505 - `separating/oddcycle/maxunsucessfull` to automatically turn off separation
5506 - `oncepernode` in Rounding and Simple Rounding heuristic
5507 
5508 ### Data structures
5509 
5510 - new data structure for binary trees (`SCIP_BT` and `SCIP_BTNODE` in pub_misc.h)
5511 - renamed data structure `SCIP_STAIRMAP` to `SCIP_PROFILE`
5512 - added new stages `SCIP_STAGE_INITPRESOLVE`, `SCIP_STAGE_EXITPRESOLVE` and `SCIP_STAGE_FREE`; renamed `SCIP_STAGE_FREESOLVE`
5513  to `SCIP_STAGE_EXITSOLVE`
5514 - Changed the counting system within SCIP heavily. `SPARSESOLUTION` was renamed to `SCIP_SPARSESOL` and moved
5515  from cons_countsols.h to struct_misc.h
5516 
5517 Testing
5518 -------
5519 
5520 - the check script now recognizes MIQCP and MINLP instances
5521 - make test now also checks instances in wbo, cnf, osil and fzn format
5522 - renamed parameter SCRDIR of `make testgams` to CLIENTTMPDIR and changed its default to `/tmp`
5523 
5524 Build system
5525 ------------
5526 
5527 ### Makefile
5528 
5529 - CppAD source code is now distributed with SCIP (`src/cppad`), so that `lib/cppad` is not used anymore;
5530  the default for EXPRINT has changed from none to cppad
5531 
5532 Fixed bugs
5533 ----------
5534 
5535 - fixed bug with strong branching with the LP status for conflict analysis
5536 - fixed bug w.r.t. adding a value to the objective offset of the transformed problem
5537 - fixed wrong assert in feasibility pump stage 3
5538 - fixed bug in solve.c, applied bounding for the initial lp was only done if root-lp-solution was valid but another
5539  solution could also have been added
5540 - primal solutions with infinite objective value are now automatically discarded
5541 - all plugins that solve sub-SCIPs now do not stop the whole solution process if there has been an error
5542 - fixed bug in cip reader, wrong use of SCIPstrtok()
5543 
5544 - Variables:
5545  - fixed bug in shiftandpropagate w.r.t. SCIPconstructLP() which can have the side effect that variables are created
5546  - method SCIPvarGetProbvarSum() (and thus also SCIPgetProbvarSum()) returns +/-infinity if the variable resolves to a
5547  variable fixed to +/-infinity (depending on the sign of the scalar) but does not multiply with the scalar, anymore
5548  - better handling of infinite solution values for aggregated and negated variables
5549  - fixed bug that disabled multi-aggregation of two integer or implicit integer variables
5550  - fixed bug in sol.c with requesting values of transformed variables in original solution; previously this had only
5551  been handled in SCIPgetSolVal(), now the handling has been moved to SCIPsolGetVal()
5552  - fixed several bugs writing an mps file in the reader_mps.c, e.g. writing fixed variables which are not (yet) removed
5553  and writing integer variables even with an objective value of 0, if they only exist in non-linear constraints
5554 
5555 - Separation:
5556  - fixed minor bugs with respect to counting generated and lifted cuts in sepa_oddcycle
5557  - fixed bug in sepa_clique.c, could not handle only empty cliques, that were not removed
5558 
5559 - Heuristics:
5560  - fixed potential bugs in shiftandpropagate heuristic concerning the transformation update of a variable with free status
5561  - fixed bug in heur_zirounding with computation of up/downslacks
5562  - fixed bug in mutation heuristic with unnecessary aborts due to a wrong memory limit
5563  - fixed potential bug in fix-and-infer heuristic with variables being fixed to infinite value
5564  - fixed bug in diving heuristics with variables being fixed to values outside their domain
5565  - fixed bug in simple rounding heuristic with column generation for variables with strictly positive lower bound
5566  - made Octane heuristic numerically more stable to avoid asserts being caused by cancellation
5567  - fixed bug in mutation heuristic with variables being fixed to infinite values
5568  - do not run heur_shiftandpropagate if there is no LP
5569 
5570 - LP Interface:
5571  - fixed bug in Cplex LPI: after running simplex, solisbasic flag was always true, which might be wrong if Cplex hit a
5572  time limit
5573  - fixed bug in SCIP probing mode with cleared LPI state but solved LP
5574  - fixed assert with `LPI=none` (need to count rows/cols in lpi_none)
5575  - fixed bug in SoPlex LPI where objective sense was not correct after reading LP from file in SCIPlpiReadLP()
5576 
5577 - Constraints:
5578  - fixed bug in scip.c adding a constraint in SCIPgetConsCopy() to the constraint hashmap
5579  - fixed bug in cons_linear w.r.t recalculation of unreliable activities
5580  - fixed bug in cons_linear concerning huge activity values: besides infinite contributions, we now also treat huge
5581  contributions separately, count their occurences in a constraint and provide a relaxed activity value
5582  - fixed bug in cons_xor.c parsing a constraint
5583  - fixed count of propagations in cons_indicator and only try to propagate if variables are not yet fixed
5584  - fixed some bugs in cons_disjunction.c (wrong assert, forgotten deletion of constraint, wrong SCIPreleaseCons() call)
5585 
5586 Miscellaneous
5587 -------------
5588 
5589 - first release of GCG, a generic branch-cut-and-price solver built on top of SCIP
5590 - first release of UG, a framework for solving mixed integer programs, mixed integer
5591  nonlinear programs and constraint integer programs in parallel
5592 - new SCIP T-shirts
5593 - renamed ZIB Optimization Suite to SCIP Optimization Suite
5594 
5595 @page RN21 Release notes for SCIP 2.1
5596 
5597 @section RN212 SCIP 2.1.2
5598 *************************
5599 
5600 Performance improvements
5601 ------------------------
5602 
5603 - fixed performance issue in debug mode, where SCIPvarGetLPSol_rec() calculated a value to often, which in the end lead
5604  to exponential growth in running time
5605 - force cuts from linearizations of convex constraint in NLP relax solution into LP, thus allowing faster proving of
5606  optimality for convex NLPs
5607 
5608 Fixed bugs
5609 ----------
5610 
5611 - fixed bug in varAddTransitiveImplic() in var.c, when adding implications on special aggregated, namely negated, variables
5612 - fixed issue if a primal solution leads to a cutoff of the current focus node
5613 - fix compilation issues with zlib 1.2.6
5614 - fixed bug in SCIPsolveKnapsackExactly(), trying to allocate too much memory which led to an overflow and later to a segmentation fault
5615 - fixed bug in sepa_rapidlearning, carrying on the optimization process, when already solved
5616 
5617 - Heuristics:
5618  - fixed bug in heur_undercover.c, where a variable with fixed bounds but not of status `SCIP_VARSTATUS_FIXED` was wrongly handled
5619  - fixed bug in heur_oneopt.c which forgot to check LP rows if local rows are present
5620 
5621 - Constraints:
5622  - fixed bug in SCIPsolveKnapsackExactly()
5623  - fixed bug in cons_quadratic where bounds on activity of quadratic term were not always invalidated when quadratic variables were removed
5624  - fixed bug in cons.c, where after a restart the arrays for all initial constraints were corrected in the initsol process
5625  instead of the initpre process, this was to late because you might change the status in presolving which lead to an assert()
5626  - fixed bug in NLP representation of abspower constraints handling (x+a)^2 with nonzero a
5627  - fixed bug parsing an and-constraint in cip format
5628  - fixed bug in cons_setppc, did not handle new constraints with inactive variables
5629  - fixed bug in cons_xor.c which did not copy the artificial integer variable (used for the lp relaxation)
5630 
5631 @section RN211 SCIP 2.1.1
5632 *************************
5633 
5634 Features
5635 --------
5636 
5637 - the pseudo objective propagator can be forced to propagate if active pricers are present; this can be done
5638  if for all (known or unknown) variables follows that: they have positive (negative) objective coefficient
5639  and the global lower (upper) bound is zero.
5640 
5641 Performance improvements
5642 ------------------------
5643 
5644 - improvements in undercover heuristic
5645 - improve SCIPintervalSolveBivariateQuadExpressionAllScalar() for ax=0 case if x has 0 in the interval for the linear coef.
5646 - better domain propagation for quadratic constraints that consist of `non-overlapping` bilinear terms only
5647 - ensure that a fixing of a variable in an abspower constraint is propagated to a fixing of the other variable
5648 - improvements in undercover heuristic, e.g., bound disjunction constraints are considered when setting up the covering problem
5649 
5650 Interface changes
5651 -----------------
5652 
5653 ### Changed parameters
5654 
5655 - changed parameter `propagating/pseudoobj/maxcands` to `propagating/pseudoobj/minuseless` (see prop_pseudoobj.c)
5656  due to revision of the pseudo objective propagator
5657 
5658 ### New parameters
5659 
5660 - added parameters `heuristics/undercover/coverbd` and `heuristics/undercover/fixingorder`
5661 
5662 Fixed bugs
5663 ----------
5664 
5665 - fixed numeric issue in aggregations
5666 - fixed pseudo cost computation
5667 - fixed bug with setting type of slack variables to be implicitly integral
5668 - fixed bug when copying problem data in c++ case returned with the result `SCIP_DIDNOTRUN`
5669 - fixed computation of counter which state the changes since the last call of a presolver
5670 - fixed handling of unbounded solutions, including double-checking their feasibility and that the primal ray is a
5671  valid unboundedness proof and reoptimizing the LP with modified settings if the solution is not feasible
5672 - fixed compilation issues with negate() function in intervalarith.c on exotic platforms
5673 - fixed bug in SCIPsortedvecDelPos...() templates
5674 - pseudo objective propagator does not propagate it active pricers are present
5675 - fixed bug in heur_shiftandpropagate.c concerning the treatment of unbounded variables
5676 - workaround for trying to add variable bounds with to small coefficients
5677 
5678 - Reading and Writing:
5679  - gams writer now also substitutes $-sign from variable/equation names
5680  - fixed bug in reader_mps.c: INTEND marker is now also written, if COLUMNS section ends with non-continous variables
5681  - fixed bug in flatzinc reader w.r.t. boolean expressions
5682 
5683 - Constraints:
5684  - fixed constraint flags evaluation within the ZIMPL reader (reader_zpl.c)
5685  - fixed bug in SCIPmakeIndicatorFeasible() in cons_indicator.c
5686  - fixed bug with conflict clause modification in cons_indicator
5687  - fixed bug in cons_bounddisjunction with uninitialized return values
5688  - fixed bug in cons_orbitope with calling conflict analysis
5689  - fixed bug in nlpi_oracle w.r.t. changing linear coefs in a NLP constraint
5690 
5691 @section RN210 SCIP 2.1.0
5692 *************************
5693 
5694 Features
5695 --------
5696 
5697 - New original solution storage capability, which allows transfering solutions between SCIP runs
5698 - SCIP-CPX is now threadsafe
5699 - comparison of solutions now also works for original solutions
5700 - can now compute the relative interior point of the current LP
5701 - interval arithmetics for power, log, exp, bivariate quadratic expressions should be rounding safe now
5702 - LP iterations in resolving calls can now be limited w.r.t. the average number of LP iterations in previous calls
5703  (after the root node); this is currently only done for the initial LP solve at a node and the corresponding parameter
5704  resolveiterfac is set to -1 (no limit) per default
5705 - it is now possible in `SCIP_STAGE_TRANSFORMED` to call SCIPaddVarLocks() (i.e. to lock variables in initialization methods)
5706 - changed computation of optimality gap which is now done in the same way as described in the MIPLIB 2010 paper: the gap
5707  is 0, if primalbound (pb) and dualbound (db) are equal (within tolerances), it is infinity if pb and db have opposite
5708  signs and (this changed), if both have the same sign, the difference between pb and db is devided by the minimum of
5709  the absolute values of pb and db (instead of always the dual bound)
5710 - functionality to use the bound flipping ratio test of SoPlex is available (requires at least version 1.5.0.7)
5711 - there exists now a solution candidate store for the original problem; during transformation these solutions are tried;
5712  during free the transformed problem the best feasible solution of the transformed problem are copied to the solution
5713  candidate store of the original problem; this useful if you solve several problems iteratively, solutions get now
5714  carried over automatically.
5715 - reworked concept of lazy bounds: they can now also be used for problems where constraints and objective together
5716  ensure the bounds; to allow this also for diving heuristics that might change the objective and thus destroy this
5717  property, lazy bounds are explicitly put into the LP during diving and removed afterwards
5718 - `SCIP_HASHMAP` now works also without block memory
5719 - The variable deletion event is now a variable specific event and not global, anymore.
5720 - All timing flags are now defined type_timing.h.
5721 - all C template files are now called <plugintype>_xyz.{c,h} instead of <plugintype>_xxx.{c,h}
5722 
5723 - Separators and Cuts:
5724  - reorganized computation of scores in cut filtering: instead of the computation at the time of addition, scores are now
5725  only computed w.r.t. the current LP solution and when cut filtering is performed; one can now fill the cut storage
5726  with cuts that were separated for different solutions
5727  - New separator for close cuts and a new function to compute relative interior points of the LP
5728  - added first version of sepa_closecuts.{c,h} to separate cuts w.r.t. a point that is closer to the integral polyhedron
5729 
5730 - Constraints:
5731  - implement possibility to force a restart in cons_indicator if enough indicator variables have been fixed
5732  - the xor constraint handler can now parse its constraints
5733  - the bounddisjunction constraint handler can now parse its constraints
5734  - the knapsack, setppc and soc constraint handler can now parse their constraints
5735  - the varbound constraint handler can now parse its constraints
5736  - added beta version of variable deletion: for branch-and-price application, variables can now be completely deleted
5737  from the problem; variables that are deletable have to be marked with SCIPvarMarkDeletable(), constraint handlers can
5738  implement the new `SCIP_DECL_DELVARS` callback that should remove variables from the constraints; at the moment, only
5739  the linear, the setppc and the knapsack constraint handler support this callback; furthermore, when using this
5740  feature, all used plugins have to capture and release variables they store in their data, this is currently only done
5741  for the aforementioned constraint handlers as well as the and, the varbound and the logicor constraint handler; for
5742  more details about this feature, see the FAQ
5743  - added pseudoboolean constraint handler (cons_pseudoboolean.{c,h})
5744  - added first version of cons_disjunction.{c,h} which allows a disjunction of constraints
5745  - added constraint handler for (absolute) power constraints (cons_abspower.{c,h}) to handle equations like z = sign(x)abs(x)^n, n > 1
5746 
5747 - Heuristics:
5748  - new heuristic vbounds which use the variables lower and upper bounds to fix variable and performs a neighborhood search
5749  - added vbound heuristic (heur_vbounds.{c,h})
5750  - added clique heuristic (heur_clique.{c,h})
5751 
5752 - Reading and Writing:
5753  - added writing for wbo files
5754  - added writing for pip files (linear, quadratic, polynomial nonlinear, polynomial abspower, polynomial bivariate, and
5755  and constraints)
5756  - CIP format variable characters defined, e.g. `SCIP_VARTYPE_INTEGER_CHAR`
5757  - Improved support for wbo format for weighted PBO problems, IBM's xml-solution
5758  format and pip and zimpl format for polynomial mixed-integer programs
5759  - New reader for (standard) bounds on variables
5760  - Extended reader for CIP models to handle various new constraints, including all types of linear constraints
5761  - flatzinc reader is now capable to read cumulative constraints
5762  - changed opb(/wbo) reader which now creates pseudoboolean constraints instead of linear- and and-constraints, only a
5763  non-linear objective will create and-constraints inside the reader and while reading a wbo file the topcost constraint
5764  is created as well
5765  - added clock for determine the time for reading
5766  - added reader for variable bounds (reader_bnd.{c,h})
5767  - Removed method SCIPreadSol(); call solution reading via SCIPreadProb() which calls the solution reader for .sol files.
5768 
5769 - Nonlinear:
5770  - Major extensions for nonlinear CIP, new option for n-ary branching on nonlinear variables (within pseudocost branching rule)
5771  - added BETA version of constraint handler for nonlinear constraints (cons_nonlinear.{c,h}) to handle nonlinear
5772  equations given by algebraic expressions using operands like addition, multiplication, power, exp, log, bivariate
5773  nonlinear constraints; currently no trigonometric functions
5774  - added BETA version of constraint handler for bivariate nonlinear constraints (cons_bivariate.{c,h}) to compute tight
5775  estimators for 1-convex and convex-concave bivariate nonlinear functions (given as expression tree)
5776  - the gams writer can now write nonlinear, abspower and bivariate constraints
5777  - Extended writer for GAMS and pip format to write more types of nonlinear constraints
5778  - the pip and zimpl reader now create nonlinear constraints for polynomials of degree > 2
5779 
5780 - Presolving:
5781  - new dual presolving methods in cons_setppc and cons_logicor
5782  - new presolving step `removeConstraintsDueToNegCliques` in locigor constraint handler which updates logicor constraints
5783  to setppc constraints if a negated clique inside this constraint exist, by default is off
5784  - new presolving step in cons_knapsack (detectRedundantVars, deleteRedundantVars) which determines redundant variables
5785  in knapsack constraint with or without using clique information
5786  - cons_logicor is now able to replace all aggregated variables in presolving by there active or negation of an active
5787  variable counterpart
5788  - prop_pseudoobj is now working in presolving as well
5789  - implement presolving in exitpre() in cons_orbitope and cons_indicator
5790 
5791 - Propagators:
5792  - added counter for number calls and timing for resolve propagation calls for constraint handler and propagators
5793  - Propagators are now also called in node presolving
5794  - the probing presolver presol_probing.{c.h} is now a propagator prop_probing.{c,h}, all corresponding parameters moved as well
5795  - the redcost separator sepa_redcost.{c.h} is now a propagator prop_redcost.{c,h}, all corresponding parameters moved as well
5796  - outsourced propAndSolve() method in solve.c which calls domain propagation and solving of the lp and relaxation
5797 
5798 - Statistic:
5799  - solutions which are given by the user from the outside are now marked by `#` in the output
5800  - the `Solving Time` is now spitted into presolving, solving and reading time
5801  - Presolvers section has new column `AddCons` which states the number of added constraint
5802  - Constraints section has new column named \#ResProp which show the number of resolve propagation calls of certain
5803  constraint handler
5804  - Constraint Timing section has a new column \#ResProp which states the time spend in resolve propagation method of the
5805  constraint handler
5806  - improved output of propagators in display statistics
5807  - new section `Propagator Timing` which shows the time spend in different callbacks of the propagator
5808  - rearranged first two columns of Propagators section; \#Propagate and \#ResProp stating the number of call for
5809  propagation and resolve propagation; the Time column is moved into the new section Propagator Timings
5810  - Constraints section has new column named `MaxNumber` which the maximum number of active constraint of a certain
5811  constraint handler
5812  - added two columns `Time-0-It` and `Calls-0-It` in the LP section which states the number of LP call and time spend for
5813  solving LPs with zero iterations (only refactorization)
5814  - The display of statistics for presolvers, propagators, constraints and LP solving has changed.
5815 
5816 Performance improvements
5817 ------------------------
5818 
5819 - Reorganized filtering process of separation storage (allows adding cuts for different solutions)
5820 - Improved presolving for various constraint handlers
5821 - Improved propagation methods for variable bound constraints
5822 - Improved performance for quadratic constraints
5823 - performance improvements in prop_vbounds
5824 - child selection rules now get also applied when the relaxation value is equal to the bound changed in branching
5825 - added dual reduction to cons_cumulative.c
5826 - for continuous variables, the pseudo costs update and the pscost branching rule now use the same strategies for
5827  updating the pseudo costs and estimating the improvement in the LP bound
5828 - only perform probing if the variables are locked
5829 - performance and memory consumption improvements in xmlparse.c
5830 - Improved knapsack cover cuts
5831 - avoid very long separation times of LEWIs in cons_knapsack for very large minimal covers
5832 - used SCIPallocMemoryArray() instead of SCIPallocBlockMemoryArray() which leads to fewer memory consumption in
5833  getLiftingSequence() in cons_knapsack, also improved cache use bei using an extra array instead blockmemory chunks
5834 - switched FASTMIP from 1 to 2 for CPLEX and changed default pricing rule back to steepest edge pricing instead of
5835  quickstart steepest edge pricing
5836 - made sorting method more robust
5837 - LNS heuristics now use SCIPcopy() by default
5838 - considering inactive variables in undercover heuristic; limiting effort for solving covering problem
5839 - if during probing mode the LP relaxation is solved from scratch, e.g., when calling the shiftandpropagate heuristic
5840  before root node solving, then we clear the resulting LP state, since it might be a bad starting basis for the next
5841  solve of the LP relaxation (controlled by new parameter `lp/clearinitialprobinglp`)
5842 - included LP simplifier into SoPlex LP interface, applied when solving from scratch (lpi_spx.cpp)
5843 - new presolving steps in varbound constraint handler, tightening bounds, coefficients, sides and pairwise presolving
5844 
5845 Interface changes
5846 -----------------
5847 
5848 - Miscellaneous:
5849  - The emphasis setting types now distinguish between plugin-type specific parameter settings (default, aggressive, fast, off),
5850  which are changed by SCIPsetHeuristics/Presolving/Separating(), and global emphasis settings (default, cpsolver, easycip,
5851  feasibility, hardlp, optimality, counter), which can be set using SCIPsetEmphasis().
5852 
5853 ### New and changed callbacks
5854 
5855 - added propagator timings `SCIP_PROPTIMING_BEFORELP`, `SCIP_PROPTIMING_DURINGLPLOOP` and `SCIP_PROPTIMING_AFTERLPLOOP` for
5856  all propagation callbacks (see propagators and constraint handlers) which lead to calling the propagation methods of a
5857  propagator before the lp is solved, during the lp loop and after the lp solving loop
5858 
5859 - Conflict Analysis:
5860  - Added parameter `separate` to conflict handler callback method SCIP_DECL_CONFLICTEXEC() that defines whether the conflict
5861  constraint should be separated or not.
5862 
5863 - Constraint Handler:
5864  - The new constraint handler callback SCIP_DECL_CONSDELVARS() is called after variables were marked for deletion.
5865  This method is optional and only of interest if you are using SCIP as a branch-and-price framework. That means,
5866  you are generating new variables during the search. If you are not doing that just define the function pointer
5867  to be `NULL`.
5868  If this method gets implemented you should iterate over all constraints of the constraint handler and delete all
5869  variables that were marked for deletion by SCIPdelVar().
5870 
5871 - NLP Solver Interface:
5872  - The callbacks SCIP_DECL_NLPIGETSOLUTION() and SCIP_DECL_NLPISETINITIALGUESS() got new parameters to get/set values of
5873  dual variables.
5874  - The callback SCIP_DECL_NLPICOPY() now passes the block memory of the target SCIP as an additional parameter.
5875 
5876 - Presolving:
5877  - New parameters `isunbounded` and `isinfeasible` for presolving initialization (SCIP_DECL_CONSINITPRE(),
5878  SCIP_DECL_PRESOLINITPRE(), SCIP_DECL_PROPINITPRE()) and presolving deinitialization (SCIP_DECL_CONSEXITPRE(),
5879  SCIP_DECL_PRESOLEXITPRE(), SCIP_DECL_PROPEXITPRE()) callbacks of presolvers,
5880  constraint handlers and propagators, telling the callback whether the problem was already declared to be
5881  unbounded or infeasible. This allows to avoid expensive steps in these methods in case the problem is already
5882  solved, anyway.
5883 
5884  Note, that the C++ methods
5885  - scip::ObjConshdlr::scip_presol() corresponding to SCIP_DECL_CONSPRESOL()
5886  - scip::ObjConshdlr::scip_initpre() corresponding to SCIP_DECL_CONSINITPRE()
5887  - scip::ObjPresol::scip_initpre() corresponding to SCIP_DECL_PRESOLINITPRE()
5888  - scip::ObjProp::scip_initpre() corresponding to SCIP_DECL_PROPINITPRE()
5889  - scip::ObjConshdlr::scip_exitpre() corresponding to SCIP_DECL_CONSEXITPRE()
5890  - scip::ObjPresol::scip_exitpre() corresponding to SCIP_DECL_PRESOLEXITPRE()
5891  - scip::ObjProp::scip_exitpre() corresponding to and SCIP_DECL_PROPEXITPRE()
5892  are virtual functions. That means, if you are not adding the new parameters, your code will still compile, but these methods are not executed.
5893  - Propagators are now also called in during presolving, this is supported by the new callback methods SCIP_DECL_PROPINITPRE(),
5894  SCIP_DECL_PROPEXITPRE(), and SCIP_DECL_PROPPRESOL().
5895  - The new parameters `nnewaddconss` and `naddconss` were added to the constraint handler callback method SCIP_DECL_CONSPRESOL()
5896  and the presolver callback method SCIP_DECL_PRESOLEXEC(). These parameters were also added to corresponding C++ wrapper
5897  class methods (scip_presol() in objconshdlr.h and scip_exec() in objpresol.h)
5898 
5899 - Problem Data:
5900  - The callback SCIP_DECL_PROBCOPY() got a new parameter `global` to indicate whether the global problem or a local version is copied.
5901 
5902 ### Deleted and changed API methods
5903 
5904 - implemented SCIPlpiGetPrimalRay() in SoPlex interface that has become available with SoPlex version 1.5.0.2
5905 - allowed calling SCIPgetRowSolActivity() in `SCIP_STAGE_SOLVED`, since LP is still available
5906 - various extensions and modifications for expressions and expression trees (too much to state here)
5907 - The result value `SCIP_NEWROUND` has been added, it allows a separator/constraint handler to start a new separation round
5908  (without previous calls to other separators/conshdlrs).
5909 - SCIPcalcNodeselPriority() got a new parameter `branchdir`, which defines the type of branching that was performed: upwards, downwards, or fixed.
5910 
5911 - Constraint Handlers:
5912  - Method SCIPincludeQuadconsUpgrade() of quadratic constraint handler got new parameter `active` to indicate whether the upgrading method is active by default.
5913  - Method SCIPseparateRelaxedKnapsack() in knapsack constraint handler got new parameter `cutoff`, which is a pointer to store whether a cutoff was found.
5914 
5915 - Nonlinear expressions, relaxation, and solver interface:
5916  - SCIPcreateNLPSol() now creates a `SCIP_SOL` that is linked to the solution of the current NLP relaxation
5917  - Various types and functions dealing with polynomial expressions have been renamed to use the proper terms `monomial` and
5918  `polynomial` in nonlinear expressions (nlpi/∗expr*); results in many renamings of types, structs and methods.
5919  - The methods SCIPnlpGetObjective(), SCIPnlpGetSolVals(), and SCIPnlpGetVarSolVal() have been removed, use SCIPgetNLPObjval(),
5920  SCIPvarGetNLPSol() and SCIPcreateNLPSol() to retrieve NLP solution values instead.
5921  SCIPcreateNLPSol() now returns an error if NLP or NLP solution is not available
5922  - Removed methods SCIPmarkRequireNLP() and SCIPisNLPRequired(), because the NLP is now always constructed if nonlinearities
5923  are present.
5924  - SCIPgetNLP() has been removed and NLP-methods from pub_nlp.h have been moved to scip.h, which resulted in some renamings, too.
5925  - renamed SCIPexprtreeEvalSol() to SCIPevalExprtreeSol() and now located in scip.h.
5926  - renamed SCIPexprtreeEvalIntLocalBounds() to SCIPevalExprtreeLocalBounds() and now located in scip.h.
5927  - renamed SCIPexprtreeEvalIntGlobalBounds() to SCIPevalExprtreeGlobalBounds() and now located in scip.h.
5928  - The functions SCIPnlpiGetSolution() and SCIPnlpiSetInitialGuess() got additional arguments to get/set dual values.
5929  - The method SCIPgetNLPI() got a new parameter `nlpiproblem`, which is a pointer to store the NLP solver interface problem.
5930 
5931 - Timing:
5932  - SCIPincludeProp() got additional parameters to set the timing mask of the propagator and the new callbacks and parameters
5933  related to calling the propagator in presolving.
5934  - SCIPincludeConshdlr() got additional parameters to set the variable deletion callback function and the timing mask for
5935  propagation.
5936  - removed parameters timelimit and memorylimit from SCIPapplyRens()
5937  - The parameters `timelimit` and `memorylimit` were removed from SCIPapplyRens().
5938 
5939 - Problem Data:
5940  - The method SCIPcopyProb() got a new parameter `global` to indicate whether the global problem or a local version is copied.
5941 
5942 - Writing and Parsing Constraints:
5943  - The methods SCIPwriteVarName(), SCIPwriteVarsList(), and SCIPwriteVarsLinearsum() got a new boolean parameter `type`
5944  that indicates whether the variable type should be written or not.
5945  - The methods SCIPparseVarName() and SCIPparseVarsList() got a new output parameter `endptr` that is filled with the position
5946  where the parsing stopped.
5947  - The method SCIPwriteVarsList() got additionally a new parameter `delimiter` that defines the character which is used for delimitation.
5948 
5949 - Variables:
5950  - SCIPmarkDoNotMultaggrVar()/SCIPvarMarkDoNotMultaggr() now allow to mark negated and aggregated variables
5951  - SCIPgetVarCopy() got a new parameter `success` that will be FALSE if method is called after problem creation stage and no hash map is
5952  given or no image for the given variable is contained in the given hash map.
5953  - SCIPchgVarType() got an extra boolean parameter to store if infeasibility is recognized while upgrading a variable from continuous
5954  type to an integer type.
5955  - SCIPdelVar() got a new parameter `deleted`, which stores whether the variable was successfully marked to be deleted.
5956 
5957 ### New API functions
5958 
5959 - information about the quality of the solution of an LP (currently the condition number of the basis matrix) can now be:
5960  + requested from the LPI (currently only available for CPLEX): methods SCIPlpiGetRealSolQuality() and
5961  + SCIPprintLPSolutionQuality() command display lpsolquality in interactive shell display column lpcond to show
5962  + estimate on condition number, if available
5963 - SCIPround() and SCIPfeasRound() to round to nearest integer
5964 - SCIPsortRealRealIntInt() and corresponding sorting/inserting/deleting methods in pub_misc.h and necessary defines in misc.c
5965 - SCIPsortRealIntLong(), SCIPsortPtrPtrRealInt() and corresponding sorting/inserting/deleting methods in
5966  pub_misc.h and necessary defines in misc.c
5967 - SCIPcomputeLPRelIntPoint() to compute relative interior point of the current LP
5968 - SCIPstartSolvingTime() and SCIPstopSolvingTime() which can be used to start or stop the solving time clock
5969 - SCIPstrToRealValue() and SCIPstrCopySection() in pub_misc.h; these methods can be used to convert a string
5970  into a `SCIP_Real` value and to copy a substring.
5971 - SCIPgetBinvarRepresentatives() which gets binary variables that are equal to some given binary variables,
5972  and which are either active, fixed, or multi-aggregated, or the negated variables of active, fixed, or multi-aggregated variables
5973 - SCIPhasPrimalRay() and SCIPgetPrimalRayVal() that return whether a primal ray is stored and which value a
5974  given variable has in the primal ray, respectively
5975 - SCIPsetConsModifiable()
5976 - SCIPsetParam() which is a generic parameter setter method, independent of the parameter type
5977 - SCIPpropInitpre(), SCIPpropExitpre(), SCIPpropPresol() which initializes, exists and executes the presolving phase
5978 - SCIProwGetAge() to access the age of a row (pub_lp.h/lp.c)
5979 - SCIPsolGetOrigObj() in pub_sol.h which returns for a solution in the original problem space the objective value
5980 - SCIPretransformSol() in scip.h that allows to retransform a solution to the original space
5981 - SCIPlpiClearState() to LP interfaces for clearing basis information in the LP solver
5982 - SCIPgetSubscipDepth() to access the depth of the current SCIP as a copied subproblem
5983 - SCIPdebugAddSolVal() and SCIPdebugGetSolVal() to add/get values to/from a debug solution
5984 - SCIPsepastoreRemoveInefficaciousCuts() to remove non-efficious cuts from the separation storage
5985 
5986 - Nodes:
5987  - SCIPnodeGetParent() to get parent node of a node
5988  - SCIPnodesSharePath() in pub_tree.h that determines whether two nodes are on the same leaf-root path
5989  - SCIPnodesGetCommonAncestor() in pub_tree.h that finds the common ancestor node for two given nodes
5990 
5991 - Read and Write:
5992  - SCIPgetReadingTime() which returns the time for reading in seconds
5993  - SCIPparseVarsLinearsum(), SCIPparseVarsPolynomial() and SCIPwriteVarsPolynomial() and for writing and
5994  parsing polynomials in constraint handler writing/parsing methods
5995 
5996 - Memory:
5997  - SCIPcreateMesshdlrPThreads() and SCIPfreeMesshdlrPThreads() for allocating and deleting necessary memory
5998  for message handlers for parallel pthread version
5999  - SCIPallocClearMemoryArray() and BMSallocClearMemoryArray() for allocating cleared memory arrays in scip.h and memory.h
6000 
6001 - Intervals:
6002  - SCIPintervalPowerScalarInverse() to solve an equation y = x^p for given bounds on y and scalar exponent p
6003  - SCIPintervalQuadBivar() to compute tight bounds on a bivariate quadratic form
6004  - SCIPintervalSolveBivariateQuadExpressionAllScalar() to compute tight bounds on the solutions of a bivariate quadratic equation
6005 
6006 - Variables:
6007  - SCIPcomputeVarCurrent{L,U}b{Local,Global}() to compute local or global lower or upper bounds of a
6008  multiaggregated variable from the bounds of the aggregation variables
6009  - SCIPbranchVarValNary() for n-ary variable branching
6010  - SCIPgetNegatedVars() which returns all negated variables for a given array of variables, if the negated
6011  variables are not existing yet, they will be created
6012  - SCIPgetNTotalVars() that returns the total number of created vars, icluding variables that were deleted in the meantime
6013  - SCIPvarGetHashkey(), SCIPvarIsHashkeyEq(), SCIPvarGetHashkeyVal() in pub_var.h which can be used for `SCIP_HASHTABLE` of variables
6014  - SCIPvarGetNBdchgInfosLb() and SCIPvarGetNBdchgInfosUb() in pub_var.h returning the number of lower or upper bound changes on the active path
6015  - SCIPvarGetBdchgInfoLb() and SCIPvarGetBdchgInfoUb() returning the bound change information at the given position
6016  - SCIPvarMarkDeletable() to mark a variable to be deletable completely from the problem (for
6017  branch-and-price); can only be called before the variable is added to the problem
6018  - SCIPvarMarkNotDeletable() that marks a variable to be non-deleteable (used within SCIP for forbidding
6019  deletion of variables contained in solution, LP bases, (multi)aggregation, ...)
6020  - SCIPvarIsDeletable() that returns whether a variable is marked to be deletable (each variable is per default non-deletable)
6021 
6022 - NLP:
6023  - SCIPgetNLPVarsNonlinearity() to get for each variable in the NLP the number of NLP rows in which this variable appears in a nonlinear way
6024  - SCIPnlrowGetDualsol(), SCIPgetNLPVarsLbDualsol(), SCIPgetNLPVarsUbDualsol() to retrieve dual values from an NLP solution
6025  - SCIPgetNLPFracVars() to get the fractional variables in an NLP solution
6026 
6027 - Propagator:
6028  - SCIPpropSetPresolPriority() which changes the presolving priority of a given propagator
6029  - SCIPpropGetPresolPriority(), SCIPpropGetPresolTime(), SCIPpropWasPresolDelayed(), SCIPpropGetNFixedVars(),
6030  SCIPpropGetNAggrVars(), SCIPpropGetNChgVarTypes(), SCIPpropGetNChgBds(), SCIPpropGetNAddHoles(), SCIPpropGetNDelConss(),
6031  SCIPpropGetNAddConss(), SCIPpropGetNUpgdConss(), SCIPpropGetNChgCoefs(), SCIPpropGetNChgSides(), SCIPpropGetTimingmask(),
6032  SCIPpropDoesPresolve() which return corresponding presolving information
6033  - SCIPpropGetNRespropCalls() and SCIPconshdlrGetNRespropCalls() which return the number of times a
6034  propagator or a constraint handler was called for resolving a propagation
6035  - SCIPpropGetRespropTime() and SCIPconshdlrGetRespropTime() which return time spent for resolving a
6036  propagation within a propagator or a constraint handler
6037  - SCIPcheckCumulativeCondition(), SCIPpropCumulativeCondition() and SCIPrespropCumulativeCondition() in
6038  cons_cumulative.h; these methods can be used to check, propagate, or resolve the propagation of a cumulative condition
6039  - SCIPpropagateCutoffboundVar() in prop_pseudoobj.h which can be used to propagate the cutoff bound for the given variables
6040 
6041 - Constraints:
6042  - added to linear constraint handler SCIPsetUpgradeConsLinear(), which (de-)activates the possibility to
6043  upgrade a linear constraint to a specialized linear constraint (e.g. knapsack)
6044  - SCIPconvertCutsToConss() and SCIPcopyCuts() to scip.{c,h} for copying cuts to linear constraints
6045  - SCIPaddCoefLogicor() to add a variable to a logic or constraint
6046  - SCIPfindOrigCons() which return a original constraint with the given name or `NULL`
6047  - SCIPconshdlrGetNAddConss() which returns the number of added constraints during presolving by a given constraint handler
6048  - SCIPpresolGetNAddConss() which returns the number of added constraints during presolving by a given presolver
6049 
6050 ### Command line interface
6051 
6052 - New funtionalities in the interactive shell (modify current CIP instance, write NLP relaxation)
6053 - added dialog `write nlp` to write current NLP relaxation to a file
6054 - new dialog `change freetransproblem` to free transformed problem in the interactive shell before changing the problem
6055 - it is possible to change bounds of a variable in the interactive shell
6056 - it is possible to add a constraint to a problem in the interactive shell
6057 
6058 ### Interfaces to external software
6059 
6060 - Improved SOPLEX interface (LP simplifier)
6061 - Improved CPLEX interface, including measures for numerical stability
6062 
6063 ### Changed parameters
6064 
6065 - change default value of parameter `nodeselection/restartdfs/selectbestfreq` 100
6066 - moved parameters for pseudoboolean constraints from opb-reader to pseudoboolean constraint handler
6067 - changed possible parameter values of `branching/pscost/strategy` from `bri` to `cdsu`: default is now `u`, i.e., to
6068  estimate the LP gain by a branching for external branching candidates (esp. continuous variables) the same way as
6069  their pseudo costs are updated
6070 - added possible value `d` for `constraints/soc/nlpform` to choose a convex division form for SOC constraint
6071  representation in NLP
6072 - renamed parameter `constraints/quadratic/linearizenlpsol` to `constraints/quadratic/linearizeheursol` and do
6073  linearizations in every solution found by some heuristic
6074 - renamed parameter `constraints/quadratic/mincutefficacyenfo` to `constraints/quadratic/mincutefficacyenfofac` and
6075  interpret it as a factor of the feasibility tolerance
6076 - removed fastmip setting 2, which means the dualsolution would not be calculated but because SCIP always asks for the
6077  dual solution, the lp would be reoptimized to calculate them; so it had no real effect
6078 - all parameters in cons_indicator and cons_sos1 have been converted to lower case!
6079 - changed default value of parameter `separating/gomory/maxroundsroot` to 10
6080 - changed default value of parameter `separating/gomory/maxsepacutsroot` to 50
6081 - removed parameter `heuristics/subnlp/nlpsolver`, use `nlp/solver` instead
6082 
6083 ### New parameters
6084 
6085 - `branching/delaypscostupdate` to delay the update of pseudo costs for continuous variables behind the separation round: default is TRUE
6086 - `branching/lpgainnormalize` to set the strategy how the LP gain for a continuous variable is normalized when updating the
6087  variables pseudocosts: default is to divide LP gain by reduction of variable's domain in sibling node
6088 - `branching/pscost/nchildren` and `branching/pscost/nary*` to enable and customize n-ary branching on
6089  external branching candidates (e.g., in spatial branching for MINLP)
6090 - `conflict/bounddisjunction/continuousfrac` which defines the maximum percantage of continuous variables
6091  within a conflict create by the bounddisjunction conflict handler
6092 - `conflict/separate` which enables or disables the separation of conflict constraints
6093 - `constraints/{nonlinear,quadratic,soc,abspower}/sepanlpmincont` to specify minimal required fraction
6094  of continuous variables in problem to enable linearization of convex constraints in NLP relaxation solution in root
6095 - `constraints/indicator/forcerestart` and `constraints/indicator/restartfrac` to control forced restart in cons_indicator
6096 - `constraints/indicator/generatebilinear` to generate bilinear (quadratic) constraints instead of indicator constraints
6097 - `constraints/indicator/maxconditionaltlp` to enable a quality check for the solution of the alternative LP
6098 - `constraints/indicator/removeindicators` to remove indicator constraints if corresponding vub has been added
6099 - `constraints/linear/nmincomparisons` and `constraints/linear/mingainpernmincomparisons` to influence
6100  stopping criterium for pairwise comparison of linear constraints
6101 - `constraints/pseudoboolean/decompose`, for pseudoboolean constraints to transform pseudoboolean constraints into linear- and and-constraints
6102 - `constraints/quadratic/binreforminitial` to indicate whether linear (non-varbound) constraints added due to reformulation of products with
6103  binary variables in a quadratic constraints should be initial (if the quadratic constraint is initial), default is FALSE
6104 - `constraints/quadratic/checkfactorable` to disable check for factorable quadratic functions (xAx = (ax+b)*(cx+d)) in quadratic constraints
6105  and not to use of this information in separation (generates lifted tangent inequalities according to Belotti/Miller/Namazifar if also
6106  linear vars are present)
6107 - `constraints/quadratic/disaggregate` to split a block-separable quadratic constraint into several quadratic constraint
6108 - `constraints/quadratic/maxproprounds` and `constraints/quadratic/maxproproundspresolve` to limit the
6109  number of propagations rounds for quadratic constraints within one propagation round of SCIP solve or during SCIP presolve
6110 - `constraints/varbound/presolpairwise` that allows pairwise presolving of varbound constraints, default is TRUE
6111 - `heuristics/shiftandpropagate/onlywithoutsol` to switch whether the heuristic should be called in case a primal solution is already present
6112 - `limit/maxorigsol` which defines the size of the solution candidate store (default value is 10)
6113 - `lp/resolverestore` controlling how LP solution is restored after diving: if TRUE by resolving them,
6114  if FALSE by buffering them; if `lp/freesolvalbuffers` is TRUE, we free the buffer memory each time (FALSE by default)
6115 - `lp/clearinitialprobinglp` to clear LP state at end of probing mode, if LP was initially unsolved
6116 - `lp/resolveitermin` and `lp/resolveiterfac` to limit the number of LP iterations in resolving calls:
6117  resolveiterfac is a factor by which the average number of iterations per call is multiplied to get the limit, but the
6118  limit is at least resolveitermin; default is -1 (no limit) for resolveiterfac and 1000 for resolveitermin
6119 - `lp/resolverestore` and `lp/freesolvalbuffers` possibility to buffer and restore LP solution after diving without
6120  having to resolve the LP; currently turned off, because performance impact is unclear;
6121 - `misc/improvingsols` which states whether only solutions which have a better (or equal) primal bound
6122  as the best known are checked; this is of interest if the check of a solution is expensive; default value is FALSE
6123 - `misc/resetstat` which state if the statistics should be reseted if the transformed problem is freed
6124  (in case of a benders decomposition this parameter should be set to FALSE) default value is TRUE
6125 - `nodeselection/restartdfs/countonlyleafs` in node selector restart dfs which can be used to select the counting process of processed nodes
6126 - `presolving/donotaggr` to deactivate aggregation of variables globally
6127 - `pricing/delvars` and `pricing/delvarsroot` that define, whether variables created at a node / the
6128  root node should be deleted when the node is solved in case they are not present in the LP anymore
6129 - `propagating/%s/maxprerounds` for all propagators which allows to change to maximal number of rounds
6130  of presolving where this propagator participates in
6131 - `propagating/%s/presoldelay` for all propagators which allows to change if the presolving call of the given propagator should be delayed
6132 - `propagating/%s/presolpriority` for all propagators which allows to change the priority of calling the given propagator
6133 - `propagating/pseudoobj/propfullinroot` for allowing to propagate all variables in the root node,
6134  instead of stopping after `maxcands` which is set by a parameter as well
6135 - `reading/gmsreader/bigmdefault` and `reading/gmsreader/indicatorreform` reader_gms is now able to write indicator
6136  constraints (reformulated either via big-M or sos1)
6137 - `reading/gmsreader/signpower` to enable writing sign(x)abs(x)^n as the rarely used gams function signpower(x,n)
6138 - `separating/closecuts/maxunsucessful` to turn off separation if we can not find cuts
6139 - `timing/reading` to add reading time to solving time
6140 
6141 ### Data structures
6142 
6143 - split off `PARAMEMPHASIS` from `PARAMSETTING` (in pub_paramset.c/paramset.c)
6144 - new data structure `SCIP_STAIRMAP`
6145 - add expression graph data structures and methods for reformulation, domain propagation, simple convexity check on
6146  nonlinear expressions and simplification for expression trees and graphs
6147 
6148 Testing
6149 -------
6150 
6151 - New scripts for running tests with GAMS
6152 - added scripts check_gams.sh, evalcheck_gams.sh and check_gams.awk and target `testgams` in Makefile
6153 - adjusted all test scripts to use the same new optimality gap computation as in SCIP
6154 - added Makefile option `VALGRIND=true` to enable running the SCIP checks (make test) through valgrind; valgrind errors
6155  and memory leaks are reported as fails
6156 - moved *.test and *.solu files to subdirectory testset in check directory and adjusted test scripts
6157 
6158 Build system
6159 ------------
6160 
6161 ### Makefile
6162 
6163 - Variables:
6164  - via `PARASCIP=true` as a `Makefile` option it is possible to compile SCIP threadsafe in DEBUG-mode, (in OPT-mode it's
6165  only necessary if non-default messagehandler or CppAD is used)
6166  - the `make` parameter `PARASCIP=true` leads to threadsafe message handlers where you need to call
6167  SCIPcreateMesshdlrPThreads() and SCIPmessageSetHandler()/SCIPmessageSetDefaultHandler() and SCIPfreeMesshdlrPThreads();
6168  therefore we need to link with pthread library
6169  - new variable $(INSTALLDIR) in Makefile which define installation directory for the libraries, $(INSTALLDIR)/lib/,
6170  binary, $(INSTALLDIR)/bin and include headers, $(INSTALLDIR)/include, the default value is the empty string
6171 
6172 - Linking:
6173  - Linking against Clp and Ipopt has been simplified. Only the directory where the
6174  package has been installed need to be provided now. For details see the INSTALL file.
6175  - to link against IPOPT, only the base directory of an Ipopt installation need to be specified now; additionally, if
6176  building with gnu compilers, the Ipopt libraries directory is stored in the SCIP binary, which should make it easier
6177  to run with Ipopt shared libraries
6178  - to link against Clp, only the base directory of an Clp installation needs to be specified now
6179 
6180 - Targets:
6181  - New targets `(un)install` in Makefile, support for valgrind in testing environment
6182  - new target `make libs` which compiles only the libraries
6183  - new target in Makefile `install` performs `make` and copies using the install command the include headers, binary, and
6184  libraries
6185  - new target in Makefile `uninstall` removes libraries, binary and include headers form `INSTALLDIR`
6186  - removed target `lintfiles`, this target is now imitated by the `lint` target and a none empty variable `FILES`
6187 
6188 Fixed bugs
6189 ----------
6190 
6191 - fixed bug in copying if the target SCIP already is in solving stage: it might be that the copy of a variable cannot be found/created
6192 - fixed bug trying to print big messages bigger than `SCIP_MAXSTRLEN`
6193 - fixed bug w.r.t. counting feasible solutions and turned of sparse solution test
6194 - LP solution status is now checked when checking root LP solution. Otherwise, due to different time measurements, it
6195  might happen that the LP solving was stopped due to the time limit, but SCIP did not reach the limit, yet.
6196 - fixed bug trying to tighten multiaggregated variables, which have only one active representation and this variable is already tightened
6197 - fixed possible buffer overrun in tclique_graph.c
6198 - fixed issue with interactive shell in case (user) plugins are included after the default plugins
6199 - fixed bug where mutiaggregating leads to an aggregation and both variables were of implicit or integral type
6200 - fixed bug in conflict.c, where LPi was manipulated, but not marked as not solved
6201 
6202 - Tree:
6203  - fixed assertion in tree.c w.r.t. node estimation
6204  - fixed bug in debug.c: removed tree nodes had not been checked if they were pruned due to an incumbent solution found by a diving heuristic
6205 
6206 - Bounds:
6207  - fixed bug which occured when changing a bound in the solving stage when this variables got upgraded from continuous to
6208  a integer type, where the bounds of this variable were still not integral; due to that SCIPchgVarType() has changed (see above)
6209  - fixed bug in handling of lazy bounds that resulted in putting the bounds explicitly into the LP
6210 
6211 - Separation:
6212  - fixed assert in sepa_clique.c which is currently not valid because implicit binary variables in cliques are ignored
6213  - fixed bug in sepa_zerohalf.c concerning inconsistent construction of solution array of variables and fixed wrong assert about variable bounds
6214 
6215 - Constraints:
6216  - fixed not correct merging of variable in logicor constraint handler and changed the name of the method to a common
6217  name used by other constraint handlers too(findPairsAndSets->mergeMultiples)
6218  - fixed bugs in changing the initial and checked flags for constraints in original problem
6219  - fixed bug in cons_linear.c, when scaling a constraint maxabscoef was not set correctly, furthermore the correction of
6220  maxabscoef was not handled correctly
6221  - fixed bug in cons_indicator.c trying to copy a constraint where the pointer to the linear constraint did not point to
6222  the already transformed linear constraint (, happend when SCIPcopy() is used after transforming before presolving)
6223  - fixed numerical bug in linear constraint handler: polishing of coefficients after fixing variables led to wrong
6224  results for continuous variables fixed to a close-to-zero value.
6225  - fixed bug in cons_bounddisjunction where branching on multiaggregated variables was tried while all aggregation variables are fixed
6226  - fixed bug in presolving of cons_logicor.c: adding variable implications can lead to further reductions; added call to applyFixings()
6227  - fixed bug in cons_countsols.c w.r.t. none active variables
6228  - fixed bug in cons_linear.c, scaling could have led to wrong values
6229 
6230 - Reader:
6231  - fixed bug in reader_fzn.c w.r.t. cumulative constraints
6232  - fixed bug in reader_mps.c: if a variables first occurence is in the bounds section, then the corresponding variable bound was lost
6233  - fixed several issues in flatzinc reader
6234  - deactived checking of zero solution in Zimpl reader when no starting values are provided
6235  - reader_lp is now able to read lines longer than 65534 characters
6236 
6237 - Memory:
6238  - fixed bug in copying NLPI interfaces that use block-memory (NLPI copy used block memory from source SCIP)
6239  - fixed memory leak in reader_pip.c
6240  - fixed memory leak in coloring part of maximum clique algorithm (tclique_coloring.c)
6241  - fixed memory leak in coloring part of maximum clique algorithm (tclique_coloring.c) in a better way
6242 
6243 - Numerics:
6244  - fixed bug which occured when the dual farkas multipliers were not available in the lpi because the LP could only be
6245  solved with the primal simplex due to numerical problems
6246  - fixed bug in ZI round heuristic that led to infeasible shiftings for numerically slightly infeasible rows with close-to-zero coefficients
6247  - fixed numerical issue in octane heuristic: close-to-zero values for ray direction could have led to bad computations
6248 
6249 - Propagation:
6250  - fixed bug in propagation of indicator constraints: cannot fix slack variable to 0 if linear constraint is disabled/not active
6251  - fixed bug in cons_linear.c while sorting the eventdatas during the binary variable sorting for propagation
6252  - fixed bug and wrong assert in heur_shiftandpropagate.c when relaxing continuous variables from the problem
6253  - fixed bug in cons_orbitope:resprop() for the packing case
6254  - fixed wrong changing of wasdelayed flag for propagators
6255  - fixed bug using wrong sign in infinity check in prop_pseudoobj
6256  - fixed bug in redcost propagator: can only be called if the current node has an LP
6257  - fixed bug w.r.t. infinity loop during propagation
6258 
6259 Miscellaneous
6260 -------------
6261 
6262 - The interface contains several additional callback functions and parameters for plugins. Some effort may be required to compile your old
6263  projects with SCIP 2.1. For details see section `Changes between version 2.0 and 2.1` in the doxygen documentation.
6264 
6265 @page RN20 Release notes for SCIP 2.0
6266 
6267 @section RN202 SCIP 2.0.2
6268 *************************
6269 
6270 Performance improvements
6271 ------------------------
6272 
6273 - improved twoopt-heuristic by considering larger search domains
6274 - the SoPlex interface now has the capability to provide a primal ray, provided it is compiled against the next SoPlex release (>= 1.5.0.2)
6275 - calculation of node priority now also works when variable's relaxation value is equal to a bound
6276 - fixed issue w.r.t. calling primal heuristics after presolving detected infeasibility
6277 
6278 - Constraints:
6279  - fasten propagation in cons_knapsack.c due to negated clique partitions
6280  - recalculating only needed partitions in cons_knapsack.c, not always both
6281 
6282 - Memory:
6283  - reduced memory usage of shift-and-propagate heuristic
6284  - knapsack constraints are now separated faster; SCIPsolveKnapsackExactly() now works faster and requires less memory
6285  - fasten knapsack separation by replacing SCIPallocBuffer(Array) through SCIPallocBlockMemory(Array)
6286  - improved runtime and memory consumption in SCIPsolveKnapsackExactly() in cons_knapsack.c
6287 
6288 Fixed bugs:
6289 ----------
6290 
6291 - fixed `make/make.project`
6292 - fixed wrong assert in plugins that use SCIPcopy()
6293 - fixed bug in DINS w.r.t. column generation
6294 - fixed bug in var.c where a possible multiaggregation was resolved to an aggregation but the variables types were not
6295  checked to prefer more general types for aggregating; possible memory loss removed
6296 - fixed bug in prop_vbounds.c w.r.t. infinity lower and upper bound of variable bound variables
6297 - fixed bug w.r.t. setting wall clocks
6298 - fixed wrong assert in var.c (replaced `==` through SCIPsetIsEQ()), real values do not have to be exactly the same when
6299  computed in different function
6300 - fixed bug in SCIPsolveIsStopped() where it could happen that TRUE was reported if a nodelimit was reached but
6301  checknodelimits had been set to FALSE
6302 - fixed three bugs when writing in fzn format (wrongly splitted writing buffer, wrong variables was used, floats were printed to short)
6303 - fixed bug in conflict.c, infeasibility analysis with big values led to wrong result
6304 
6305 - Heuristics:
6306  - fixed bug in DINS heuristic that occured when the incumbent solution value is outside the variable's current domain
6307  - fixed behavior of LNS heuristics when the subproblem aborts: continue in optimized mode, stop in debug mode
6308  - fixed segmentation fault in heur_subnlp.c which occured if resolving the NLP with a tighter feasibility tolerance
6309  failed with a solver error
6310  - fixed bug in heur_subnlp.c where constraints forbidding variable fixations where added if a cutoff was used in the subproblem
6311  - fixed bug in heur_subnlp.c where wrong constraints forbidding variable fixations where added in case of general integers
6312 
6313 - NLP:
6314  - fixed bug in changing quadratic coefficients of a row in the NLP
6315  - fixed various small bugs in nonlinear expressions code
6316  - fixed removal of fixed linear variables from a nonlinear row: a fixed variable may have not been removed if there was
6317  also a multiaggregated variable
6318 
6319 - LP:
6320  - implemented SCIPlpiGetPrimalRay() in SoPlex interface that has become available with SoPlex version 1.5.0.2
6321  - fixed two bugs at nodes with unbounded LP relaxation: don't check lp rows of infinite solution; don't analyze conflict
6322  due to primal cutoff bound of -infinity
6323  - fixed wrong assumption that an optimal LP solution in the root is optimal for the problem if there are no active
6324  pricers, need to check also whether all variables are in the LP
6325 
6326 - Constraints:
6327  - fixed bug in reader_cip regarding reading of very long constraints
6328  - fixed bug while after restarting possible the aggregted variables were not removed in setppc constraints
6329  - fixed bug in cons_knapsack: in seldom circumstances the relaxation of a linear constraint can detect infeasibility,
6330  which was not handled properly
6331  - fixed bug w.r.t. to pricing variables in case new initial constraints come in during the price and cut loop
6332  - fixed bug in cons_soc.c w.r.t. upgrading from quadratic constraints with finite left-hand-side
6333  - fixed bug caused by not (correctly) counting boundchanges in cons_varbound.c
6334  - fixed bug in sorting mechanism in cons_xor.c
6335  - fixed wrong (neg)cliquepartition check in cons_knapsack.c when deleting a coefficient
6336  - fixed bug in cons_quadratic: in seldom cases, fixed variables may have been substituted out wrongly in presolve
6337  - fixed bugs in cons_countsols.c w.r.t. collecting feasible solutions and forbidding a found solution
6338  - fixed bug in cons_linear.c: multiaggregated variables were not removed when adding during solve, leading to a failing
6339  assert in tightenBounds due to an unsuccessful bound tightening
6340 
6341 - Memory:
6342  - fixed bug concerning overflow in memsize calculation in set.c
6343  - fixed memory leak in SoPlex LP interface when requesting an unbounded solution
6344  - fixed memory leak in SoPlex LP interface when solving with LP scaling
6345  - fixed memory leaks in reader of TSP example
6346 
6347 @section RN201 SCIP 2.0.1
6348 *************************
6349 
6350 Performance improvements
6351 ------------------------
6352 
6353 - SCIP with SoPlex as LP solver now uses auto pricing by default (start with devex, switch to steepest
6354  edge after some iterations); this fixes timeouts on instances where devex converges very slowly
6355 - fixing lifting of new knapsack items which are negated items of already included items, this could lead to very long presolving
6356 - fixed performance issue in presolving w.r.t. to computing the number of new fixings, aggregated,
6357  and so on before a constraint handler presolver is called
6358 - in case of adding constraints during pricing with initial flag set to
6359  TRUE, we add now these constraints after the pricing round to the LP
6360 - changed parameter values in clique separator in order to avoid very large branch-and-bound trees
6361 
6362 Interface changes
6363 -----------------
6364 
6365 ### New and changed callbacks
6366 
6367 - allow access of transformed constraints in `SCIP_STAGE_TRANSFORMED`
6368 
6369 ### Changed parameters
6370 
6371 - replaced parameter `constraints/quadratic/minefficacy` by `constraints/quadratic/minefficacysepa` and `constraints/quadratic/minefficacyenfo`
6372 - added possible values `a` and `e` for `constraints/soc/nlpform` to enable automatic choice and convex exponential-sqrt
6373  form for SOC constraint representation in NLP
6374 
6375 Fixed bugs
6376 ----------
6377 
6378 - fixed bug w.r.t. looseobjval; the counting of number of loose variables in the LP data structure was incorrect in case
6379  a variable got aggregated or multi-aggregated
6380 - fixed bug in copy method of objvardata which should only create a new `SCIP_VARDATA` if the implemented subclass create
6381  a copy of the given objvardata object
6382 - fixed bug in lp.c where in case of objlimit reached and fastmip not all variables where priced because of an incorrect
6383  dual solution
6384 - fixed bugs in binpacking example w.r.t. empty struct and not initializing an array
6385 - fixed bugs in sepa_clique.c concerning incorrect way to ignore implicit binary variables in cliques and non-active
6386  variables in implications
6387 - fixed some bugs w.r.t. to casting pointer arrays
6388 - fixed bug in vars.c which handled arrays with parts of original variables during resolving to active variables (using
6389  SCIPvarsGetProbvarBinary) wrong
6390 - fixed bug in nlp.c: nlrowSearchQuadElem was using SCIPquadelemSortedFind() incorrectly
6391 
6392 - Branching:
6393  - fixed assertion w.r.t. to probing during the propagation round of a branch-and-bound node
6394  - fixed computation of node's objective value estimate when branching on continuous variables (see
6395  SCIPtreeCalcChildEstimate(), SCIPtreeBranchVar())
6396  - fixed bug in statistic w.r.t. number of calls for external branching candidates
6397  - fixes to branching on continuous variables
6398 
6399 - Reader:
6400  - fixed bug in reader_gms.c: linear coefficients for quadratic variables were not printed if they had no
6401  square-coefficient
6402  - fixed bug in reader_mps: indicator constraints do not output the slack variables anymore
6403 
6404 - Constraints:
6405  - fixed bugs in SCIPcopyConss: copy all active constraints (including disabled ones), *valid was not initialized to TRUE
6406  - fixed bug in debug.c w.r.t. checking of constraints and continuous variables
6407  - fixed bug in cons.c which didn't allow the changing of the separation and enforcement flag of a constraint in the
6408  problem stage
6409  - corrected behavior of the copy function in cons_indicator.c: create artificial linear constraint if linear constraint
6410  was deleted
6411  - fixed bug in cons_indicator.c: presolving cannot delete linear constraints; several other minor bugfixes
6412  - fixed bugs in cons_bounddisjunction where the branching during the constraint enforcement was done incorrectly
6413  - fixed bugs in cons_orbitope.c: orbitopal fixing for the packing case had two bugs; also fixed one wrong assert
6414  - fixed bugs in cons_sos?.c: take average of objestimate
6415  - fixed bug in cons_logicor, implications on none `SCIP_VARTYPE_BINARY` variable were handled wrong
6416  - fixed bug in cons_linear while trying to add a conflict without any variables
6417  - fixed bug in cons_indicator.c: creating constraints in transformed stage is now possible
6418 
6419 - LP Interface:
6420  - fixed bug w.r.t. memory allocation for all values of a column in lpi_cpx.c
6421  - fixed bugs in SCIPnlpiOracleChgLinearCoefs() and SCIPnlpiOracleChgQuadCoefs() for the case where new coefficients where
6422  added
6423  - fixed bugs in lpi_none.c w.r.t. debug and opt mode
6424  - fixed bug in lpi_cpx.c w.r.t. to wrong handling in case the crossover did not succeed
6425 
6426 - Heuristics:
6427  - fixed bug in heur_subnlp when initialized starting values of a fixed variable in the NLP of the subscip
6428  - fixed bug in heur_undercover: removed option globalbounds, since we are not allowed to relax bounds at a probing node
6429  - fixed bug in heur_shiftandpropagate where some variables were initialized too late
6430  - fixed numerical issue in some heuristics: nearly-integral values that are between the feasibility and the integrality
6431  tolerance might not have been rounded correctly
6432  - fixed bug in heur_guideddiving: best solution is now copied to avoid deletion in case of many new solutions
6433  - fixed bug in DINS heuristic, information storage for binary variables could lead to bad memory access in column
6434  generation applications
6435  - fixed bug in heur_shiftandpropagate.c: Now, the heuristic checks rows for global infeasibility at the beginning. This
6436  check is only relevant if presolving is disabled.
6437  - fixed bug in heur_subnlp when forbidding a particular combination of integer variables in the main problem
6438 
6439 @section RN200 SCIP 2.0.0
6440 *************************
6441 
6442 Features
6443 --------
6444 
6445 - added relaxation structure to SCIP, it represents global relaxation information independent from a specific relaxator;
6446  at the moment, it contains information about the relaxation solution stored in the variables: objective value and
6447  validness
6448 - SCIP may now be manually restarted
6449 - SCIPsolveKnapsackExactly() got a new 12. parameter `SCIP_Bool* success` which stores if an error occured during
6450  solving(normally a memory problem)
6451 - SCIP can now handle problems with continuous variables w.r.t. to counting (the projection to the integral variables
6452  are counted)
6453 - an XML-parser is available in the src/xml subdirectory
6454 - We do not distinguish between block memory for the original and the transformed problem anymore. The same
6455  block memory is now used in both problem stages.
6456 - added new sorting method SCIPsortLongPtr(), SCIPsortDownLongPtr() and all corresponding methods
6457 - added new sorting method SCIPsortRealIntPtr(), SCIPsortDownRealIntPtr() and all corresponding methods
6458 
6459 - Heuristics:
6460  - SCIP can now copy instances (e.g. for heuristics)
6461  - new undercover heuristic for MINLPs: fixes variables such as to obtain a linear or convex subproblem and solves this
6462  - primal heuristics may now already be called before presolving, using the new timing point
6463  `SCIP_HEURTIMING_BEFOREPRESOL`. Note that solutions that are added before/during presolving, will be retransformed to
6464  the original space.
6465  - primal heuristics may now be called during presolving, using the new timing point `SCIP_HEURTIMING_DURINGPRESOLLOOP`
6466  - added heuristic zirounding (heur_zirounding.{c,h})
6467  - added heuristic twoopt (heur_twoopt.{c,h})
6468  - added new NLP heuristic (heur_subnlp.{c,h}) which solves the sub-NLP that is obtained by fixing all discrete variables
6469  in the CIP and applying SCIP's presolving
6470  - feasibility pump heuristic now implements all functionality for feasibility pump 2.0
6471 
6472 - Reader:
6473  - can now read XML-solution files as used by CPLEX
6474  - the MPS reader can now read MIQPs and MIQCPs where a quadratic objective function can be specified by a QMATRIX or
6475  QUADOBJ section and the quadratic part of a quadratic constraint by a QCMATRIX
6476  - the MPS reader can now write quadratic and SOC constraints
6477  - the GAMS reader can now write SOC constraints
6478  - added support for bool_gt, bool_lt, bool_ge, bool_le, bool_ne, bool_not, int_times, int_minus, int_plus, int_negate,
6479  float_times, float_minus, float_plus, float_negate constraints to flatzinc reader
6480  - the LP reader (.lp files) can now read MIQPs and MIQCPs and write quadratic and SOC constraints
6481  - the LP reader (.lp files) and MPS reader can now read semicontinuous variables, they are handled by creating bound
6482  disjunction constraints
6483  - added new reader for polynomial mixed-integer programs (reader_pip.{c,h}) as used in the POLIP
6484 
6485 - Indicator constraints:
6486  - SCIP can now handle indicator constraints (reading (from LP, ZIMPL), writing, solving, ...) see \ref cons_indicator.h.
6487  - the indicator constraint can now decompose the problem, i.e., not add the linear constraint to the problem if all of
6488  its variables are continuous
6489  - can now read and write indicator constraints in the (extended) MPS format
6490  - cons_indicator tries to adapt solutions to get feasible during check
6491  - cons_indicator allows to store information on other linear constraints that might help to separate cuts
6492 
6493 - Constraint handlers:
6494  - Solution counting extended to constraint integer programs, this also
6495  includes constraint integer programs which contain continuous variables
6496  - The solution behavior of SCIP can be diversified by randomly permuting constraints and variables or randomly
6497  determining a set of branching variables with a unique high priority
6498  - `negated cliques` (1<=i<=n : sum (x_i) >= n-1) were added and we are using them now inside the knapsack constraint
6499  handler, the cliquepartitioning which is returned by SCIPcalcCliquePartition() contains now integer != 0, negatives ones
6500  indicates a negated clique and positive ones indicates a normal clique
6501  - SCIP is now able to detect in DEBUG-mode whether a constraint or variables which will be added, was also created in
6502  the same scip instance, if not an error is thrown
6503  - cons_knapsack is now able to detect negated cliques due to negated cliques on knapsack constraints
6504  - SCIP is now able to write non-linear opb-files(linear instances with and-constraints)
6505  - New constraint handlers for linking constraints (only Beta), cumulative constraints, and for breaking orbitopal symmetries
6506  - `negated cliques` handling in knapsack constraint handler got changed due to the new method
6507  SCIPcalcNegatedCliquePartition() resulting in new consdata members `negcliquepartition`, `negcliquepartitioned` and
6508  `nnegcliques`; changed SCIPcalcCliquePartition() so all cliquepartitions (calculated by SCIPcalcCliquePartition() or
6509  SCIPcalcNegatedCliquePartition(), which uses the first one) contain again not negative integers
6510  - `and`, `knapsack`, `linear`, `logic`, `or`, `quadratic`, `setpp`, `varbound`, `xor` and `clique` constraint handlers
6511  can handle implicit binary variables
6512  - knapsack constraint handler is now able to pairwise presolving constraints
6513  - constraint handlers `logicor`, `and`, `or` can parse their output
6514  - constraint handler `or` can copy its constraints
6515  - added packing/partitioning orbitope constraint handler for symmetry handling (cons_orbitope.{c,h})
6516  - added constraint handler for second order cone constraints (cons_soc.(c|h))
6517  - added constraint handler cons_linking.{c,h} (see cons_linking.c for more details)
6518  - cons_quadratic can make solutions in CONSCHECK feasible for the quadratic constraints by moving values of linear
6519  variables and passing the modified solution to the trysol heuristic
6520  - constraint handler can now register their upgrade functions for quadratic constraints to cons_quadratic (similar to
6521  LINCONSUPGD)
6522 
6523 - Separation:
6524  - New separators for oddcycle cuts and Chvatal-Gomory cuts using sub-MIPs
6525  - modified implementation of separation algorithms in cons_knapsack.c according to results of diploma thesis; including
6526  super-additive lifting (disabled)
6527  - uncommented decomposeProblem() in sepa_zerohalf.c (in default settings, not used anyway): was not adapted to the case
6528  that contiuous variables are allowed in a row
6529  - new separator rapid learning (sepa_rapidlearning.{c,h}) that produces conflicts, global bound changes, primal
6530  solutions and initializes inference values for branching
6531  - added Chvatal-Gomory cuts separated with a sub-MIP (sepa_cgmip.{c|h})
6532  - added reader for 'Weigted Boolean Optimization': problems (reader_wbo.{c,h}), this reader needs the reader_opb files
6533  - new separator oddcycle (sepa_oddcycle.{c,h}) separates oddcycle inequalities using the implication/conflict graph and
6534  dijkstra-algorithm based on binary heaps (dijkstra/dijkstra_bh.{c,h})
6535 
6536 - Branching:
6537  - Branching on externally given candidates, the \ref BRANCH 'branching rules' have a second new callback method
6538  (see type_branch.h for more details): SCIP_DECL_BRANCHEXECEXT(x) can be used to branch on external branching candidates,
6539  which can be added by a user's `relaxation handler` or `constraint handler` plugin, calling SCIPaddExternBranchCand().
6540  - added branchcands for relaxator solution, that can be added by the relaxator and used by branching rules
6541  - added relaxsol to variables, s.t. a relaxator can store a solution on which branching or separation can be done
6542  - SCIP can now branch on relaxation solutions that are either installed to the relaxsol field of the variables or added
6543  to the list of relaxation candidates, e.g., by constraint handlers. Branching on relaxation solutions is performed if
6544  the enforcement resulted in an unresolved infeasibility and there are no LP branching candidates, but before pseudo
6545  solution branching. The branching rules leastinf, mostinf, random and pscost implement the callback for branching on
6546  relaxation candidates.
6547  - SCIP can branch on continuous variables. The branching value x' must not be one of the bounds. Two children (x <= x',
6548  x >= x') will be created.
6549  - the vbc visualization adds the branching type (lower or upper bound change) and the new bound to the node information
6550  - the vbc visualization adds the new bound of the branched variable to the node information
6551 
6552 - Statistic:
6553  - added statistic information about the first primal solution to SCIP statistic; in the statistic output a new line
6554  appears with this information
6555  - now the statistic displays the number of calls of the feasibility checking method of each constraint handler and the
6556  running time of it
6557 
6558 - Propagation:
6559  - New rounding and propagation heuristics
6560  - New propagator for variable bounds
6561  - primal heuristics may now be called directly after the node's propagation loop, using the new timing point
6562  `SCIP_HEURTIMING_AFTERPROPLOOP`
6563  - following methods SCIPinferVarUbProp(), SCIPinferVarLbProp(), SCIPinferVarLbCons(), SCIPinferVarUbCons() have a new 6th
6564  parameter `SCIP_Bool force` which allows bound tightening even if the difference to the newbound is below bound
6565  strengthening tolerance
6566  - added propagator for variable lower and upper bounds (prop_vbounds.{c,h}); adjusted cons_varbound.c, var.c, and,
6567  implics.c to work correctly with the new propagator
6568 
6569 - Nonlinear CIPs:
6570  + Improved constraint handler for quadratic constraints
6571  + New constraint handler for second order cone constraints
6572  + New MINLP heuristics (undercover, subnlp)
6573  + Preliminary support for non-linear relaxations (via expression trees)
6574  + Automatic branching on solutions from arbitrary relaxations and on continuous variables
6575 
6576 Performance improvements
6577 ------------------------
6578 
6579 - improved `settings/emphasis/cpsolver.set` to decrease time per node
6580 - reworked access to pseudo solution and inference value of variables in order to reduce function calls
6581 - changed default value of parameter `nodeselection/restartdfs/selectbestfreq` to 0; this means if the current node has
6582  no children the node with the best bound is selected (SCIPgetBestboundNode())
6583 - added a dual reduction step in cons_knapsack.c
6584 - fasten check for common cliques in SCIPcliquelistsHaveCommonClique
6585 - SCIP with CPLEX as LP solver now uses quickstart steepest edge pricing as default instead of steepest edge pricing
6586 - avoid unnecessary domain propagation and LP resolve at nodes with infeasible LP relaxation
6587 - improved zerohalf cut separator: more than one delta is tested for MIR cuts, better handling of dense base
6588  inequalities, faster scaling of fractional coefficients in rows (now enabled), improved parameter settings (presolving)
6589 
6590 - LP solution:
6591  - in root node, first LP solution is checked for feasibility to avoid expensive setup
6592  - avoided restarting if LP solution is feasible
6593  - separators are not called any longer for an integral initial LP solution
6594 
6595 Examples and applications
6596 -------------------------
6597 
6598 - New branch-and-price example which includes Ryan/Foster branching (binpacking example)
6599 - New example illustrating the use of an event handler (`example/Eventhdlr`)
6600 
6601 Interface changes
6602 -----------------
6603 
6604 - Enhanced user interface for callable library: manual restarts, predefined settings and many other features
6605 - Support of wbo format for weighted PBO problems, IBM's xml-solution format and pip format for polynomial mixed-integer programs
6606 - Extended reader for Flatzinc models
6607 - new API for 'expressions interpreter': code that evaluates expression trees, including first and second derivatives
6608 - NLP solver interface (NLPI) now independent of SCIP like LPI
6609 - SCIP can now maintain a central NLP relaxation of the problem (similar to LP)
6610 - SCIP can now manage a list of external codes (e.g., LP or NLP solver, ZIMPL)
6611 - lp.h/lp.c and the lpi's were changed according to the changes mentioned below.
6612 - adding and deletion of rows to the separation storage and to the LP can now be catched by events
6613  (`SCIP_EVENTTYPE_ROWADDEDSEPA`, `SCIP_EVENTTYPE_ROWDELETEDSEPA`, `SCIP_EVENTTYPE_ROWADDEDLP`, `SCIP_EVENTTYPE_ROWDELETEDLP`)
6614 
6615 ### New and changed callbacks
6616 
6617 - new callback SCIP_DECL_BRANCHEXECRELAX(), together with new parameter in SCIPincludeBranchrule() for branching on a
6618  relaxation solution
6619 
6620 - Copying a SCIP instance:
6621  - Constraint handlers have two new callback methods. One for copying the constraint handler plugins
6622  SCIP_DECL_CONSHDLRCOPY() and the other for copying a constraint itself, SCIP_DECL_CONSCOPY().
6623  - All plugins, like \ref BRANCH `branching rules` and \ref HEUR `primal heuristics`, have a new callback method (see, e.g.,
6624  type_branch.h and type_heur.h for more details):
6625  - SCIP_DECL_BRANCHCOPY(x), SCIP_DECL_HEURCOPY(x) etc.
6626  - When copying a SCIP instance, these methods are called to copy the plugins.
6627  - The main problem has a new callback method (see type_prob.h for more details) SCIP_DECL_PROBCOPY(x) when copying a
6628  SCIP instance, this method is called to copy the problem's data.
6629  - Variables have a new callback method (see type_var.h for more details) SCIP_DECL_VARCOPY(x) when copying a SCIP
6630  instance, this method is called to copy the variables' data.
6631 
6632 - Restarts:
6633  - The callback SCIP_DECL_PROBEXITSOL(x) in the main problem has one new parameter (see type_prob.h for more details):
6634  - The parameter `restart` is `TRUE` if the callback method was triggered by a restart.
6635 
6636 ### Deleted and changed API methods
6637 
6638 - All C++ objects and constructors have a SCIP pointer, now.
6639 - added parameter scip to ObjCloneable::clone()
6640 - changes in a row can now be catched via row events (SCIPcatchRowEvent(), SCIPdropRowEvent(),
6641  `SCIP_EVENTTYPE_ROWCOEFCHANGED`, `SCIP_EVENTTYPE_ROWCONSTCHANGED`, `SCIP_EVENTTYPE_ROWSIDECHANGED`)
6642 - added new parameter `varcopy` to SCIPcreateVar() to add the function for copying variable data
6643 - in case of using SCIPwriteTransProblem() the currently (locally) valid problem is written this now also includes the
6644  local constraints
6645 
6646 - Settings:
6647  - The predefined setting files like `settings/cuts/off.set,aggressive.set,fast.set` have been replaced by
6648  interface methods like SCIPsetHeuristics(), SCIPsetPresolving(), SCIPsetSeparating(), and SCIPsetEmphasis() in
6649  \ref scip.h and by user dialogs in the interactive shell like
6650  `SCIP> set {heuristics|presolving|separating} emphasis {aggressive|fast|off}` or
6651  `SCIP> set emphasis {counter|cpsolver|easycip|feasibility|hardlp|optimality}`
6652  - All functions for setting user parameters of different types like SCIPparamSetBool(), SCIPparamSetChar(),
6653  SCIPparamSetInt(), SCIPparamSetLongint(), and SCIPparamSetString() in pub_paramset.h have a new parameter
6654  `quiet` it prevents any output during the assign to a new value.
6655 
6656 - NLP:
6657  - NLPIs can now be used without generating a SCIP instance (i.e., do not require a SCIP pointer), code moved into src/nlpi
6658  - NLPIs can now be managed like other SCIP plugins, i.e., they can be included into the SCIP core and accessed by
6659  methods SCIPincludeNlpi(), SCIPfindNlpi(), SCIPgetNNlpis(), SCIPgetNlpis(), SCIPsetNlpiPriority()
6660 
6661 - Intervalarithmetic:
6662  - method SCIPgetVarPseudocostCurrentRun() now returns the pseudocost value of one branching direction, scaled to a unit
6663  interval, old method now called SCIPgetVarPseudocostValCurrentRun()
6664  - renamed SCIPintervalScalarProductRealsIntervals()/SCIPintervalScalarProduct() by
6665  SCIPintervalScalprodScalars()/SCIPintervalScalprod() and redesigned them in intervalarith.c including new methods
6666  SCIPintervalScalprodScalarsInf/Sup()
6667 
6668 - Branching:
6669  - The usage of strong branching changed. Now, SCIPstartStrongbranch() and SCIPendStrongbranch() must be
6670  called before and after strong branching, respectively.
6671  - The methods SCIPgetVarPseudocost() and SCIPgetVarPseudocostCurrentRun() in \ref scip.h now return the pseudocost value of
6672  one branching direction, scaled to a unit interval. The former versions of SCIPgetVarPseudocost() and
6673  SCIPgetVarPseudocostCurrentRun() are now called SCIPgetVarPseudocostVal() and SCIPgetVarPseudocostValCurrentRun(), respectively.
6674  - The methods SCIPgetVarConflictScore() and SCIPgetVarConflictScoreCurrentRun() in \ref scip.h are now called
6675  SCIPgetVarVSIDS() and SCIPgetVarVSIDSCurrentRun(), respectively.
6676  - The methods SCIPvarGetNInferences(), SCIPvarGetNInferencesCurrentRun(), SCIPvarGetNCutoffs(), and
6677  SCIPvarGetNCutoffsCurrentRun() are now called SCIPvarGetInferenceSum(), SCIPvarGetInferenceSumCurrentRun(),
6678  SCIPvarGetCutoffSum(), and SCIPvarGetCutoffSumCurrentRun(), respectively. Furthermore, they now return
6679  `SCIP_Real` instead of `SCIP_Longint` values.
6680  - The method SCIPgetVarStrongbranch() has been replaced by two methods SCIPgetVarStrongbranchFrac() and
6681  SCIPgetVarStrongbranchInt().
6682 
6683 - Copying a SCIP instance:
6684  - Every new callback method resulted in a new parameter of the include function for the corresponding plugin,
6685  e.g., SCIPincludeBranchrule() has two new parameters `SCIP_DECL_BRANCHCOPY((*branchcopy))` and
6686  `SCIP_DECL_BRANCHEXECREL((*branchexecrel))`. In the same fashion, the new callbacks
6687  `SCIP_DECL_VARCOPY` and `SCIP_DECL_PROBCOPY` led to new parameters in SCIPcreateVar() and SCIPcreateProb() in
6688  scip.c, respectively.
6689  - W.r.t. to copy and the C++ wrapper classes there are two new classes. These are `ObjCloneable` and `ObjProbCloneable`.
6690  The constraint handlers and variables pricers are derived from `ObjProbCloneable` and all other plugin are derived from `ObjCloneable`.
6691  Both classes implement the function `iscloneable()` which return whether a plugin is clone able or not. Besides that each class has a
6692  function named `clone()` which differ in their signature. See objcloneable.h, objprobcloneable.h, and the TSP example for more details.
6693  - SCIPincludeHeur() and SCIPincludeSepa() in \ref scip.h, as well as scip::ObjSepa() and scip::ObjHeur(), have a new parameter:
6694  `usessubscip`: It can be used to inform SCIP that the heuristic/separator to be included uses a secondary SCIP instance.
6695  - The argument success in `SCIP_DECL_CONSCOPY` has been renamed to valid.
6696 
6697 - Heuristics:
6698  - SCIPcutGenerationHeuristicCmir() in sepa_cmir.h has three new parameters:
6699  - `maxmksetcoefs`: If the mixed knapsack constraint obtained after aggregating LP rows contains more
6700  than `maxmksetcoefs` nonzero coefficients the generation of the c-MIR cut is aborted.
6701  - `delta`: It can be used to obtain the scaling factor which leads to the best c-MIR cut found within
6702  the cut generation heuristic. If a `NULL` pointer is passed, the corresponding c-MIR cut will already be
6703  added to SCIP by SCIPcutGenerationHeuristicCmir(). Otherwise, the user can generate the cut and add it to SCIP
6704  on demand afterwards.
6705  - `deltavalid`: In case, the user wants to know the best scaling factor, i.e., `delta` passed is not `NULL`,
6706  `deltavalid` will be `TRUE` if the stored scaling factor `delta` will lead to a violated c-MIR cut.
6707 
6708 ### New API functions
6709 
6710 - added SCIPcalcNegatedCliquePartition() to scip.c to calculate a clique partition on negations of all given binary
6711  variables
6712 - SCIPpermuteArray() that randomly shuffles an array using the Fisher-Yates algorithm
6713 - SCIPgetRandomSubset() that draws a random subset of disjoint elements from a given set of disjoint elements
6714 - SCIPswapPointers()
6715 - SCIPlpiGetSolverDesc() to get a descriptive string of an LP solver (developer, webpage, ...)
6716 - SCIPholelistGetNext() to get the next hole of the hole list
6717 - SCIPlpRecalculateObjSqrNorm() which is used when the old calculated square norm was unreliable
6718 - SCIPpricerIsDelayed() which returns if the pricer is delayed (see pub_pricer.h)
6719 
6720 - Variables:
6721  - SCIPvarIsBinary() which checks if a variable is (implicit) binary (see var.c for more details)
6722  - SCIPvarGetHolelistOriginal(), SCIPvarGetHolelistGlobal(), SCIPvarGetHolelistLocal() to get the original, global and local holes, respectively
6723  - SCIPvarGetProbvarHole() to tranform a given domain hole to the corresponding active, fixed, or multi-aggregated variable
6724 
6725 - Restart:
6726  - allow user to trigger a restart during presolving SCIPrestartSolve()
6727  - SCIPrestartSolve() that allows the user to manually restart the solving process
6728  - SCIPisInRestart() to detect whether we are currently restarting
6729 
6730 - Heuristics:
6731  - for heuristics SCIPheurSetFreq() to change the frequency of the heuristic (pub_heur.h, heur.c)
6732  - SCIPsepaUsesSubscip(), SCIPheurUsesSubscip()
6733 
6734 - Intervalarithmetic:
6735  - SCIPeventGetHoleLeft() and SCIPeventGetHoleRight() for accessing the left right interval bound of a domain hole added or removed event
6736  - SCIPholelistGetLeft() and SCIPholelistGetRight()to get the left and right interval bounds of the open hole interval
6737  - SCIPintervalAddInf/Sup/Vectors(), SCIPintervalMulInf/Sup() in intervalarith.c
6738 
6739 - Sorting:
6740  - added SCIPsortPtrPtrLongIntInt(), SCIPsortLongPtrPtrIntInt() and corresponding sorting/inserting/deleting methods in
6741  pub_misc.h and necessary defines in misc.c
6742  - added SCIPsortLongPtrInt() and corresponding sorting/inserting/deleting methods in pub_misc.h and necessary defines in misc.c
6743  - added SCIPsortPtrPtrInt() (and various other) and corresponding sorting/inserting/deleting methods in pub_misc.h and
6744  necessary defines in misc.c
6745  - SCIPsortPtrBool() and corresponding sorting/inserting/deleting methods in pub_misc.h and necessary defines in misc.c
6746 
6747 - Constraint Handlers:
6748  - SCIPconshdlrGetEnfoConss(), SCIPconshdlrGetNEnfoConss()
6749  - can now forbid upgrading of individual linear constraints (SCIPmarkDoNotUpgradeConsLinear())
6750  - SCIPpermuteProb() that randomly permutes constraints and variables
6751  - SCIPgetResultantOr() which returns the resultant of an `or` constraint
6752  - SCIPmarkDoNotUpgradeConsLinear() in cons_linear.?, which allows to forbid upgrading of linear constraints
6753  - SCIPgetNUpgrConss() which returns the number of upgraded constraints
6754  - SCIPconshdlrGetCheckTime() and SCIPconshdlrGetNCheckCalls() which returns the running time in the feasibility checking of the
6755  corresponding constraint handler respectively the number of calls of the checking method (implemented in cons.c)
6756 
6757 - Copy:
6758  - SCIPcopy() to clone a SCIP instance
6759  - SCIPcopyPlugins(), SCIPcopyParamSettings(), SCIPcopyVars(), SCIPcopyConss(), SCIPgetVarCopy() to copy
6760  individual parts of a SCIP instance separately.
6761  - SCIPcopyProbData() and SCIPprobCopyProbData() which copies the probdata from a sourcescip to a targetscip
6762 
6763 - Branching:
6764  - two new functions SCIPgetVarsStrongbranchesFrac()/SCIPgetVarsStrongbranchesInt() for computing strong branching
6765  information for several variables
6766  - SCIPbranchruleGetNRelaxCalls() to get the total number of times, a particular branching rule was called on a relaxation solutions
6767  - SCIPbranchRelax() to branch on a relaxation solution
6768  - SCIPbranchVarVal() to branch on an arbitrary value within the variable's bounds
6769  - SCIPbranchGetBranchingPoint() and SCIPgetBranchingPoint() to select branching point for a variable, e.g.,
6770  ensure branching point is inside the interval for a continuous variable
6771  - SCIPexecRelpscostBranching() in branch_relpscost.{c,h}; this method allows of calling the reliability
6772  pseudo cost branching algorithm for given set of branching candidates from the outside
6773  - SCIPinitVarBranchStats() to initialize the branching statistics (such as pseudo costs, VSIDS, inference values) of a variable
6774  - SCIPselectBranchVarPscost() in branch_pscost.{c,h}; this method selects from a given candidate array a
6775  branching variable w.r.t. pseudo cost branching for relax candidates
6776 
6777 - Reading, Writing and Parsing:
6778  - SCIPparseVarName() which parses a string in cip-format as a variable name
6779  - SCIPparseVarList() which parses a string as a variable list in cip-format
6780  - the Flatzinc reader can now handle the output annotations of the Flatzinc format; the method SCIPprintSolReaderFzn()
6781  outputs the given solution in Flatzinc format w.r.t. the output annotations
6782  - SCIPprintSolReaderFzn() which prints the best solution in Flatzinc format w.r.t. to the output annotations
6783  in the input file of the flatzinc model
6784  - SCIPwriteVarName() which writes a variable in cip-format to given stream
6785  - SCIPwriteVarsList() which writes an array of variables in cip-Format to given stream
6786  - SCIPwriteVarsLinearsum() which writes an array of variables and coefficients as linear sum in cip-Format to given stream
6787 
6788 - Copying a SCIP instance:
6789  - SCIPapplyRens() in \ref heur_rens.h has a new parameter `uselprows`. It can be used to switch from LP rows
6790  to SCIP constraints as basis of the sub-SCIP constructed in the RENS heuristic.
6791 
6792 - Parameters:
6793  - SCIPsetParamsCountsols() which sets the parameter for a valid counting process
6794  - SCIPsetEmphasis() which sets parameter to detect feasibility fast, handle hard LP, solves easy CIPs fast, behaves like a
6795  CP solver, set parameter for a valid counting process; the desired behavior is triggered via a parameter of the function
6796  - SCIPresetParam() to reset the value of a single parameter to its default value
6797 
6798 - Settings:
6799  - added SCIPsortRealRealRealPtr() and corresponding sorting/inserting/deleting methods in pub_misc.h and necessary defines in misc.c
6800  as basis for the subSCIP, setting ist to TRUE (uses LP rows) will lead to same version as before
6801  - SCIPsetHeuristics(), SCIPsetSeparating(), SCIPsetPresolving() which set the heuristics to aggressive, fast, off, or
6802  default settings, depending on the `SCIP_PARAMSET` parameter
6803  - SCIPsetSubscipsOff() which disables all plugins that uses subscips
6804  - SCIPsepaSetFreq() to set the calling frequency of a separator
6805 
6806 ### Command line interface
6807 
6808 - added new dialog for setting the SCIP parameters for hardlp, optimality, easy CIP, CP like search
6809 - added new dialog for setting the SCIP parameters for feasibility problems `SCIP> set emphasis feasibility`
6810 - added new dialog for setting the SCIP parameters for counting `SCIP> set emphasis counting`
6811 - added new dialog for setting presolving to aggressive, fast, or off in interactive shell
6812 - added new dialog for setting separation to aggressive, fast, or off in interactive shell
6813 - added new dialog for writing all solutions which are collected during the counting process (see cons_countsols.{c,h})
6814 - added new dialog for setting heuristics to aggressive, fast, or off in interactive shell
6815 - added new dialog `display pricers` which displays all included pricers
6816 
6817 ### Interfaces to external software
6818 
6819 - added interface to CppAD (nlpi/exprinterpret_cppad.cpp)
6820 - Improved Xpress, CPLEX, SoPlex interfaces
6821 - the SoPlex interface now includes equilibrium scaling on lp's solved from scratch without starting basis
6822 - the SoPlex interface can now double check each SoPlex result against CPLEX (lpi_spx.cpp)
6823 - the SoPlex interface has the option to restore basis only after entire strong branching phase instead of after each
6824  strong branch (off, because it mostly appears to increase strong branching time and iterations) (lpi_spx.cpp)
6825 
6826 ### Changed parameters
6827 
6828 - removed parameter `constraints/knapsack/maxnumcardlift` and adapted setting files
6829 - changed parameter `lp/fastmip` from boolean to integer, possible values are 0 (off), 1 (medium, default), 2 (full,
6830  must not be used with branch-and-price).
6831 
6832 ### New parameters
6833 
6834 - `branching/clamp` to set the minimal fractional distance of a branching point to a continuous variable' bounds
6835 - `branching/random/seed` to change the initial seed value of the branching rule random
6836 - `constraints/indicator/addCouplingCons` that allows to add variable upper bounds if addCoupling is true
6837 - `constraints/indicator/enforceCuts` that allows to check for violated cust in enforcement
6838 - `constraints/indicator/maxCouplingValue` for the maximal value of the coefficient in a coupling inequality/constraint
6839 - `constraints/indicator/noLinconsCon` which controls whether the linear constraint is not explicitly
6840  added to the problem. default is FALSE
6841 - `constraints/knapsack/dualpresolving` to switch dualpresolving on/off inside the knapsack constraint handler, default is TRUE
6842 - `constraints/knapsack/presolpairwise` that allows pairwise presolving of knapsack constraints, default is TRUE
6843 - `constraints/knapsack/presolusehashing` that allows fast pairwise presolving of knapsack constraints, default is TRUE
6844 - `heuristics/crossover/dontwaitatroot` that allows to call crossover at root node independently from nwaitingnodes
6845 - `heuristics/rens/uselprows` that allows to switch between LP row and SCIP constraints as basis for the
6846  subSCIP, default is TRUE (uses LP rows)
6847 - `lp/rowrepswitch` telling simplex solver to switch to row representation of the basis (if possible),
6848  if number of rows divided by number of columns exceeds this value (default value infinity, i.e. never switch)
6849 - `lp/threads` to change the number of threads used to solve the LP relaxation (default is 0: automatic)
6850 - `misc/lexdualstalling` that turns on the lex dual algorithm if the separation process is stalling
6851 - `misc/usevartable` and `misc/useconstable` which turns on/off the usage of hashtables mapping from
6852  variable/constraint names to the variables/constraints; when turned off, SCIPfindVar() and SCIPfindCons() may not be
6853  used; the hashtables can be turned off for subMIPs to improve the performance, default value TRUE
6854 - `misc/usesmalltables` which results in using smaller tables for names, cliques and cuts and improves
6855  the performace for smaller instances, default value FALSE
6856 - `misc/permutationseed` to change the permutation seed value for permuting the problem after the
6857  problem is transformed (-1 means no permutation)
6858 - `reading/zplreader/usestartsol` which allows to switch ZIMPL start solutions off, default value TRUE
6859 - `vbc/dispsols` to propose if the nodes where solutions are found should be visualized in the branch and bound tree
6860 
6861 ### Data structures
6862 
6863 - implemented the data structure and events for global and local domain holes added and removed
6864 - new data structures and methods to handle nonlinear expressions in NLPI ({type_, struct_, pub_}expression.{h,c}):
6865  nlpioracle can store and evaluate general NLPs now, nlpi_ipopt can solve general NLPs now
6866 
6867 Testing
6868 -------
6869 
6870 - minor changes on several evaluation scripts (new statuses: better, solved, sollimit, gaplimit) and short-mode for cmpres.awk
6871 - support for FreeBSD (32- and 64-bit) including minor changes in several scripts in the check-directory
6872 
6873 Build system
6874 ------------
6875 
6876 ### Makefile
6877 
6878 - added scripts check_*.sh, evalcheck_*.sh and check_*.awk for blis, glkp, gurobi and symphony (including targets in
6879  Makefile) and slightly modified scripts for cplex, cbc and mosek and cmpres-script
6880 - added target `lintfiles` which allows to call flexelint with a list of file, for example, make lintfiles
6881  `FILES=src/scip/prop_vbounds.c`
6882 - the NLP solver interfaces and expression interpreter are located in a separate library (libnlpi.*; similar to the lpi
6883  library) and is required to link against the SCIP library also projects that use SCIP via `make/make.project` need to
6884  change their Makefile (!!!): in the $(MAINFILE) target, add $(NLPILIBFILE) behind $(LPILIBFILE) in the dependencies
6885  and add $(LINKCXX_l)$(NLPILIB)$(LINKLIBSUFFIX) to the linker flags
6886 - The additional NLPI library requires a change in the Makefile of SCIP's project:
6887  The $(MAINFILE) target now has $(NLPILIBFILE) as additional dependency and the linking
6888  command requires $(LINKCXX_l)$(NLPILIB)$(LINKLIBSUFFIX) as additional argument.
6889 - A bug in the Makefiles of older versions of the SCIP examples may cause
6890  data loss. If you have a custom Makefile, please ensure that the target
6891  `clean` is changed as described here:
6892  http://scipopt.org/download/bugfixes/scip-1.2.0/make.txt.
6893 
6894 Fixed bugs
6895 ----------
6896 
6897 - fixed bug in conflict.c in the method conflictsetAddBound()
6898 - fixed `bug` in projects Makefiles w.r.t. `make clean`
6899 - fixed bug in rapid learning with wrong ordering of dual and primal bound update, primal bound is now updated inside
6900  rapid learning
6901 - fixed potential bug in rapid learning with dual reductions
6902 - fixed potential bug where SCIPselectSimpleValue() returns a value slightly outside of the given bounds due to rounding
6903  errors (probably cancelation in subtraction in SCIPfindSimpleRational), now use rounding control and check result
6904 - fixed bug that SCIP could not be continued after it has been stopped due to a limit
6905 - fixed bug in var.c: SCIPvarChgLbOriginal() and SCIPvarChgUbOriginal() cannot access original bounds if the variable is
6906  negated
6907 - fixed potential bug with pseudo solution branching on free variables
6908 - fixed bug with multiaggregations whose infimum and supremum are both infinite: in such a case multiaggregation is now
6909  forbidden
6910 - fixed numerical issue with multiaggregations which are infinite in one direction: value of multiaggregated variable
6911  could have been larger then inifinity
6912 - fixed bug w.r.t. of adding a variable bound variable to its self
6913 - fixed bug concering the incorrect assumption that every solution computed in SCIPlpGetUnboundedSol() is integral (we
6914  will not branch but return `infeasible or unbounded` like in presolving)
6915 - fixed bug while breaking an clique down to their impications (in SCIPcliquetableCleanup() in implics.c) where the
6916  variable was not of vartype `SCIP_VARTYPE_BINARY`, instead of adding an implication we add a variable bound
6917 - fixed bug with debugging a solution: during restarts erroneously it was claimed that the primal solution is cut off
6918 
6919 - Interface:
6920  - fixed bug w.r.t. ObjDialog and displaying the description of the dialog
6921  - fixed bug when aborting pricing with Ctrl-C
6922 
6923 - LP:
6924  - fixed bug in scip.c w.r.t. to call of conflict analysis for LPs which reached the objective limit in case of diving
6925  - fixed bug with resolving LPs at infeasible root node
6926  - fixed bug in lp.c: in sumMIRRow() rowtoolong was not set correctly
6927  - fixed bug in lp.c w.r.t. objective limit reached and the chosen comparison (fixed buglist entry 40)
6928  - fixed bug in lp.c: if in SCIPlpSolveAndEval() the LP has to be solved from scratch due to numerical troubles, reset
6929  `SCIP_LPPARAM_FROMSCRATCH` to `FALSE` afterwards
6930  - fixed bug in lp.c SCIProwGetObjParallelism() due to a wrong parallelism value which arised from cancellations during
6931  calculation of squared euclidean norm of objective function vector of column variables
6932  - fixed bug in lp.c: SCIPlpGetUnboundedSol() did not ensure that unbounded solution lies withing the bounds of the
6933  variables
6934  - fixed bug in lp.c w.r.t. to the number of `active` pricer
6935 
6936 - Solve:
6937  - fixed bug in solve.c where relaxation branching candidates were cleared, but the relaxation was still marked solved
6938  and not called again, furthermore, adjusted criterions for solving a relaxation again
6939  - fixed bugs in solve.c: even with LP solving disabled, the root LP was solved in case continous variables are
6940  contained; setting pricing/maxvars(root) to 1 resulted in not calling the pricers
6941  - fixed bug in solve.c: make sure SCIP terminates correctly also when a user interrupt or gap limit is reached, i.e.,
6942  avoid error `pricing was aborted, but no branching could be created!`
6943 
6944 - Tree:
6945  - fixed bug in tree.c: if an explicit branching point is given, we may not recompute a better centering point
6946  - fixed bug in tree.c: propagate implications on multi-aggregated should not be performed
6947 
6948 - Constraints:
6949  - corrected several asserts in linear and quadratic constraint handler concerning parsing of CIP format
6950  - fixed bug while deleting redundant variables, which have no influence on changing the feasibility of the linear
6951  constraints, we need to update the sides of the constraint at each step, bug number 51 in bugzilla
6952  - fixed bug in copy procedure of AND constraint handler, negated variables have been copied to their originals
6953  - fixed bug when deleting a constraint where the update was delayed and not processed yet (in cons.c)
6954  - fixed bug in cons_linear.c: binary variables should not be multi-aggregated
6955  - fixed bug in cons_quadratic.c: curvature of bivariate quadratic constraints was not detected correctly
6956  - fixed bug in cons_sos2.c: the branching position was sometimes mistakenly increased
6957  - fixed bug in propagation of cons_sos2.c: the node can be cut off at more places: the previous version was not
6958  sucessfull in this respect
6959  - fixed bug in cons_linear.c:applyFixings() which could lead to lhs/rhs smaller/larger than -/+infinity
6960  - fixed bug in cons_linear.c in detectRedundantConstraints() and corrected old bug fix in SCIProwCreate(): we want lhs
6961  <= rhs to be satisfied without numerical tolerances in order to avoid numerical problems in the LP solver
6962 
6963 - Knapsack Constraint Handler:
6964  - fixed bug in cons_knapsack.c: mergeMultiples() now detects whether a node can be cut off
6965  - fixed bug in cons_knapsack.c w.r.t. to items with zero weight
6966  - fixed bug in cons_knapsack.c: In SCIPseparateRelaxedKnapsack() not all variables need to be active in deeper regions
6967  of the tree
6968  - fixed bug in cons_knapsack.c and sepa_clique.c: the assumption that implications are always nonredundant and contain
6969  only active variables is not correct anymore as the corresponing vbound might be missing because of numerics
6970 
6971 - Separation and Cuts:
6972  - fixed bug in cutpool.c: the hashkey computation was not constant over time
6973  - fixed bug in cutpool.c: hashkey of a row changed during the solving process (if a row is made integral after creation,
6974  maxabsval can be invalid when adding it to the pool, but might be recomputed later on)
6975  - fixed bug in sepa_rapidlearning.c, stop processing if there are no binary variables left
6976  - fixed bug in sepa_rapidlearning.c, corrected computation of right dualbound
6977  - fixed bugs in sepa_zerohalf.c, e.g., handling of intscaling and substitution of variable bounds
6978  - fixed bug in sepastore.c in sepastoreApplyLb/Ub being to hard on feasibility decisions
6979  - fixed bug in sepa_flowcover.c: numerical issues while computing candidate set for lambda
6980 
6981 - LP Interfaces:
6982  - fixed bug in SoPlex autopricing due to which autopricing had behaved like steepest edge pricing so far
6983  - fixed bug in lpi_clp.cpp: SCIPlpiChgBounds() checks if the column status exists in Clp before using it
6984  - fixed wrong assert in Cplex LPI: Due to numerical inaccuracies, a few pivots might be performed after refactorization
6985  - fixed bug concerning assert(!SCIPlpDivingObjChanged(lp)) which was caused by wrong infinity double parameters for
6986  cplex
6987  - fixed makefile system for `OSTYPE=darwin` w.r.t. to CPLEX as LP solver
6988 
6989 - Presolving:
6990  - fixed bug in cons_setppc: aggregated variables were not correctly removed in presolving
6991  - fixed bug in presolving of linear constraint handler: in redundancy detection, two different numerical epsilons were used
6992  - fixed bug in presolving while not applying a bound change on a variable in a single-variable constraint (e.g. x1 =
6993  0.03) in cons_linear which is too small, that lead to another bound change in presol_trivial which is not allowed, so
6994  now this bound change will be forced
6995  - fixed SCIPvarIsTransformedOrigvar() in var.c (variables generated by presol_inttobinary returned false)
6996  - fixed bug w.r.t. an assert in presol_inttobinary.c; it was assumed that the aggregation which is performed there will
6997  never lead to an infeasibility, this is not true, see comment in presol_inttobinary.c
6998  - fixed bug in presol_trivial.c trying to fix continuous variables, now uses a less stricter comparison to fix variables
6999  - fixed bug in cons_bounddisjunction.c: presolve may have tried to tighten bounds on a multiaggregated variable (now
7000  upgrades to linear constraint)
7001 
7002 - Reading, Writing and Messages:
7003  - fixed bug while trying to write a MIP where SCIP needs to flush the lp changes first
7004  - fixed potential resource leak when running out of memory while writing files
7005  - fixed bug in reader_zpl.c which appeared using the parameter `reading/zplreader/parameters`
7006  - fixed bugs in flatzinc readers with constraints that exclusively consist of constants
7007  - fixed bug in reader_gms: correct handling of nonstandard bounds on general integer variables
7008  - fixed buglist entry 35, which was caused by a wrong read in correction when the reading buffer was full in
7009  reader_opb.c
7010  - fixed bugs in reader_fzn.c w.r.t. parsing and solution output in Flatzinc format
7011  - fixed bug in reader_fzn.c w.r.t. comment lines
7012  - fixed bug in reader_opb.c w.r.t. comment lines
7013  - fixed bug in message handler w.r.t. to messages which are longer then `SCIP_MAXSTRLEN`
7014 
7015 - Heuristics:
7016  - fixed bugs do to `HEUR_TIMING SCIP_HEURTIMING_AFTERPROPLOOP` which appeared during repropagation
7017  - fixed bug in trivial heuristic: the locking solution might have falsely initialized some values to zero
7018  - fixed bug in heur_oneopt.c w.r.t. to SCIPtrySol(); it is necessary that the bound of the solution is check otherwise,
7019  infeasible solution could be accepted as feasible
7020  - fixed bug in heur_trivial.c w.r.t. to debug messages after a solution was freed
7021  - fixed bug for `HEUR_TIMING SCIP_HEURTIMING_BEFOREPRESOL` and modifiable constraints
7022  - corrected wrong assert in DINS heuristic when called for an empty problem
7023  - fixed potential bug in OCTANE heuristic with nonbasic solutions
7024  - fixed bug in sub-MIP heuristics with parameter change if some default plugins are not included
7025  - fixed bug in trivial heuristic with bounds that are greater than the heuristic's infinity value
7026 
7027 Miscellaneous
7028 -------------
7029 
7030 - As the interface contains several additional callback functions and
7031  parameters for plugins, some effort may be required to compile your
7032  own projects with SCIP 2.0. See also `Changes between version 1.2 and 2.0` in the doxygen
7033  documentation for additional information.
7034 
7035 @page RN12 Release notes for SCIP 1.2
7036 
7037 @section RN120 SCIP 1.2.0
7038 *************************
7039 
7040 Features
7041 --------
7042 
7043 - adjusted hard memory limit to (soft memory limit)*1.1 + 100mb in check.sh, checkcount.sh, check_cplex.sh,
7044  check_cluster.sh and check_cbc.sh
7045 - new presolving step in cons_knapsack.c, same like `simplifyinequalities` in cons_linear.c
7046 - now it's possible to write strings with more than `SCIP_MAXSTRLEN` amount of characters in all message.c functions
7047 - the current/root lp can be marked to be no relaxation of the current/root problem
7048 - added new preprocessing step (mergeMultiples) in cons_setppc.c where equal variables are merged
7049 - Black-box lexicographic dual simplex algorithm; can now run lexicographical dual algorithm (parameter `lp/lexdualalgo`)
7050 
7051 - Bounds:
7052  - SCIP now has `lazy bounds`, which are useful for column generation: see @ref PRICER_REMARKS `pricer remarks` for an explanation.
7053  Each variable has now two additional `SCIP_Real` parameter which define a lazy lower and upper bound; lazy means that
7054  there exists constraints which implies these (lazy) bounds. If the lazy lower or upper bound is greater or less than
7055  the local lower or upper bound, respectively, then the corresponding bound is not put into the LP. The bounds are set
7056  to minus and plus infinity per default which yields the same behavior as before. With the methods SCIPchgVarLbLazy()
7057  and SCIPchgVarUbLazy() these bounds can be set. This is of interest if SCIP gets used as a branch-and-price
7058  framework. Attention! The lazy bounds need to be valid for each feasible LP solution. If the objective function
7059  implies bounds on the variables for each optimal LP solution, but these bounds may be violated for arbitrary LP
7060  solutions, these bounds must not be declared lazy!
7061  - interval arithmetic functions can work with unbounded intervals added new functions to allow more operations on
7062  intervals, including solving quadratic interval equations
7063 
7064 - Branching:
7065  - extended hybrid relpscost branching rule by usage of the average length of conflicts a variable appears in
7066  - `early branching`-functionality added: in a branch-and-price code, the user can stop pricing at a node although there
7067  may exist variables with negative reduced costs. In this case, the lp-lowerbound will not be used. The pricer has,
7068  however, the option to return a lower bound. This can be useful for column generation.
7069 
7070 - Constraints:
7071  - Copy constructors and i/o functionality for constraints: all linear type constraint handlers are able to copy
7072  constraints using the function SCIPgetConsCopy() in scip.h
7073  - the linear constraint handler is able to parse a string in CIP format and create a corresponding linear constraint
7074  - Constraint handler for indicator constraints and parsing them from *.lp and *.zpl files
7075  - the indicator constraint can now try to produce a feasible solution (via heur_trysol)
7076  - one can now write indicator constraints in LP-format
7077  - added constraint handler for quadratic constraints
7078 
7079 - Cuts:
7080  - added new version of zerohalf cuts from Manuel Kutschka
7081  - added multi-commodity-flow cut separator
7082 
7083 - Heuristics:
7084  - Heuristics which are applied before root LP
7085  - added heuristic that performs a local search in an NLP (takes only linear and quadratic constraints into account so far)
7086  - added heuristic that gets a solution from other components and tries it (heur_trysol.?)
7087  - new trivial heuristic: tries zero solution, lower and upper bound solution and some variable lock based fixing
7088  - added new timing point, `SCIP_HEURTIMING_DURINGPRICINGLOOP`, for calling heuristics; If this timing point is used the
7089  corresponding heuristics is called during the pricing loop of variables; we also added this timing point to
7090  heur_simplerounding.{h,c} which has the effect that a LP solution which satisfies all integrality conditions during
7091  the pricing loop is detected
7092 
7093 - Interfaces:
7094  - added first version of an interface to NLP solvers (type_nlpi.h, struct_nlpi.h, nlpi.h, nlpi.c, nlpi_oracle.h, nlpi_oracle.c)
7095  - Preliminary support of non-convex MIQCPs: Constraint handler for quadratic constraints, NLP heuristic and
7096  Ipopt interface, see \ref cons_quadratic.h.
7097  - There are LP-interfaces to QSopt and Gurobi (rudimentary).
7098 
7099 - Reader and Writer:
7100  - added reader and writer for FlatZinc models (reader_fzn.{c,h})
7101  - added writer for GAMS models (reader_gms.{c,h})
7102 
7103 Performance improvements
7104 ------------------------
7105 
7106 - Enhanced MCF cuts: stable version, used by default
7107 - replaced some function calls in loop conditions
7108 - in sepa_cmir.c, if mksetcoefs is invalid for delta=1 no other values of delta are tested anymore
7109 - changed the timing of the feasibility pump in case of pricing
7110 - removed changing of update rule to `ETA` from standard soplex update `Forrest-Tomlin` in lpi_spx.cpp
7111 - improved memory usage in heur_octane.c
7112 - improved reading time of opb-files, due to using a hashtable for all `and`-constraints
7113 - improved performance of merging variables in mergeMultiples() in cons_knapsack.c
7114 - improved performance in tightenWeightsLift() and SCIPseparateRelaxedKnapsack() in cons_knapsack.c, due to now
7115  sparse-cleaning `global` arrays instead of using BMSclearMemory... functions for cleaning local arrays each time
7116 - improved performance in SCIPcliquelistRemoveFromCliques()
7117 - improved performance in SCIPcalcCliquePartition()
7118 - improved performance in SCIPvarGetActiveRepresentatives() in var.c
7119 
7120 - Presolving:
7121  - improved pairwise presolving in cons_and.c due to using a hashtable
7122  - improved pairwise presolving in cons_xor.c due to using a hashtable
7123 
7124 Interface changes
7125 -----------------
7126 
7127 - A significant change for C++ users is that all include files of SCIP
7128  automatically detect C++ mode, i.e., no `extern `C`` is needed anymore.
7129 - Reader for Flatzinc and GAMS models
7130 
7131 ### New and changed callbacks
7132 
7133 - The callback SCIP_DECL_PRICERREDCOST(x) in the \ref PRICER `pricers` has two new parameters:
7134  + A `result` pointer determines whether the pricer guarantees that there exist no more variables. This allows for early branching.
7135  + A pointer for providing a lower bound.
7136 
7137 - The \ref CONS `constraint handlers` have two new callback methods (see type_cons.h for more details):
7138  + SCIP_DECL_CONSCOPY(x): this method can be used to copy a constraint.
7139  + SCIP_DECL_CONSPARSE(x): this method can be used to parse a constraint in CIP format.
7140 
7141 ### Deleted and changed API methods
7142 
7143 - SCIPcalcMIR() in scip.h has two new parameter `mksetcoefsvalid` and `sol`. The parameter `mksetcoefsvalid` stores
7144  whether the coefficients of the mixed knapsack set (`mksetcoefs`) computed in SCIPlpCalcMIR() are valid. If the mixed
7145  knapsack constraint obtained after aggregating LP rows is empty or contains too many nonzero elements the generation of the
7146  c-MIR cut is aborted in SCIPlpCalcMIR() and `mksetcoefs` is not valid. The input parameter `sol` can be used to separate a
7147  solution different from the LP solution.
7148 - new parameter `set` in SCIPconsSetInitial().
7149 - some interval arithmetic method take an additional argument to denote which value stands for infinity in an interval
7150 
7151 - Variables:
7152  - SCIPgetVarClosestVlb() and SCIPgetVarClosestVub() in scip.h have a new parameter `sol`. It can be used to obtain the closest
7153  variable bound w.r.t. a solution different from the LP solution.
7154  - new parameters `lowerbound` and `result` in type_pricer.h: lowerbound can save a lower bound computed by the pricer,
7155  result indicates whether the pricer guarantees that there exist no more variables if no variable was found
7156 
7157 ### New API functions
7158 
7159 - new methods to deactivate a pricer SCIPdeactivatePricer() in scip.c
7160 - new methods in pub_misc.h/misc.c to access hash map lists and elements of a hash map list and to clear all entries in a hash map
7161 - SCIPsetProbName() to set problem name in scip.h/c (SCIPprobSetName() in prob.h/c)
7162 
7163 - Objective:
7164  - SCIPgetTransObjscale() and SCIPgetTransObjoffset() in scip.c
7165  - SCIPaddObjoffset() in scip.h; sets offset of objective function
7166  - SCIPgetOrigObjoffset() in scip.h; returns the objective offset of the original problem
7167  - SCIPgetOrigObjscale() in scip.h; returns the objective scale of the original problem
7168 
7169 - Constraints:
7170  - detectRedundantConstraints() in cons_xor.c and necessary hash-functions for fast pairwise presolving
7171  - SCIPparseCons() in scip.h; parses constraint information (in cip format) out of a string
7172  - SCIPgetConsCopy() in scip.h; which copies a constraint of the source SCIP
7173 
7174 - Relaxation:
7175  - SCIPisLPRelax() and SCIPisRootLPRelax() in scip.c and scip.h returning whether the current/root LP is a
7176  relaxation of the current/root problem and thus defines a valid lower bound
7177  - SCIPlpSetIsRelax() and SCIPlpSetRootLPIsRelax() in lp.c and lp.h to set the information, whether the lp is a valid relaxation;
7178  this information is per default set to true and constraint be used. The aggregated version has only 2 linear constraints the
7179  default linearization has nvars + 1
7180 
7181 - Sort:
7182  - extended the sort template functions in sorttpl.c with a `five` array; now it possible to used this template to sort
7183  up to five arrays
7184  - new interface methods SCIPcolSort(), SCIProwSort(), SCIPcolGetIndex()
7185  - added SCIPsortPtrPtrLongInt() and corresponding sorting/inserting/deleting methods in pub_misc.h and necessary defines
7186  in misc.c
7187 
7188 - Variables:
7189  - SCIPprintNodeRootPath() in scip.h This method prints all branching decisions on variables from the root to the given node
7190  - SCIPnodeGetParentBranchings(), SCIPnodeGetAncestorBranchings(), SCIPnodeGetAncestorBranchingPath(); These methods return
7191  the set of variable branchings that were performed in the parent node / all ancestor nodes to create a given node
7192  - SCIPchgVarLbLazy() and SCIPchgVarUbLazy() in scip.h; These methods can be used to change the lazy lower or
7193  upper bound of a variable; This might has the consequences that the bounds of the corresponding variable is not in
7194  LP. This is the case if the lazy lower or upper bound is greater or less than the local lower or upper bound, respectively
7195  - SCIPvarGetLbLazy() and SCIPvarGetUbLazy() in pub_var.h; These methods return the lazy lower or upper bound, respectively
7196  - SCIPvarCompareActiveAndNegated() and SCIPvarCompActiveAndNegated() in pub_var.h for comparing variables
7197  negated, active or fixed the same way
7198  - SCIPparseVars() in scip.h; parses variable information (in cip format) out of a string
7199  - SCIPgetNFixedonesSetppc() and SCIPgetNFixedzerosSetppc() in cons_setppc.{h,c}; these methods returns
7200  current (local) number of variables fixed to one/zero in the given setppc constraint
7201  - SCIPgetVarConflictlengthScore(), SCIPgetVarAvgConflictlength(), SCIPgetAvgConflictlengthScore() and their pendants for the current run
7202  - added function SCIPvarsGetProbvarBinary() in pub_var.h; gets active, fixed, or multi-aggregated problem variables of
7203  binary variables and corresponding negated status
7204 
7205 ### Interfaces to external software
7206 
7207 - LP Interfaces:
7208  - heavily revised Mosek interface
7209  - new interface to QSopt due to Daniel Espinoza
7210  - First version of LP interfaces to Gurobi and QSopt
7211  - Major performance improvements in LP interfaces to Clp, Mosek and SoPlex
7212 
7213 - External Software:
7214  - adjusted interface to ZIMPL (reader_zpl.{c,h} for ZIMPL version 2.10; this interface should also work with older ZIMPL versions
7215  - Adjusted interface to Zimpl version 3.0.0
7216  - added first version of an interface to Ipopt (only QCP, no deletion of vars/cons allowed; nlpi_ipopt.(h|c))
7217 
7218 - SCIP Interfaces:
7219  - On http://code.google.com/p/python-zibopt/source/checkout you find a beta
7220  version of a python interface to SCIP implemented by Ryan J. O'Neil.
7221 
7222 ### Changed parameters
7223 
7224 - removed parameter `constraints/and/initiallp` since it is not needed anymore;
7225 - set parameter `constraints/and/sepafreq` default value to 1
7226 - display character of oneopt heuristic changed to `b`
7227 
7228 ### New parameters
7229 
7230 - `branching/relpscost/advanced/conflenscore`, default value 0.001
7231 - `constraints/and/aggrlinearization` in cons_and.c, aggregated version of the linearization
7232 - `constraints/and/enforcecuts` in cons_and.c, should cuts be separated during LP enforcing?
7233 - `constraints/and/presolusehashing` in cons_and.c, should pairwise presolving use hashing?, default TRUE
7234 - `constraints/countsols/sollimit` in cons_countsols.c, counting stops, if the given number of solutions were found (-1: no limit)
7235 - `constraints/xor/presolusehashing` in cons_xor.c, should pairwise presolving use hashing?, default TRUE
7236 - `heuristics/oneopt/duringroot`, default value TRUE
7237 
7238 Build system
7239 ------------
7240 
7241 ### Makefile
7242 
7243 - extend Makefile to link against Ipopt if `IPOPT=true` is set
7244 
7245 Fixed bugs
7246 ----------
7247 
7248 - fixed wrong use of pointer in lp.c
7249 - fixed bug with array dimension not reset to zero when array is freed in pseudoobj propagator
7250 - fixed bug with enforcement of pseudo solutions: if pseudo solution is choosen because LP hit a limit, it has to be
7251  enforced in any case
7252 - fixed potential bug in coloring example: SCIPcreateChild() is now given an estimate in terms of the transformed
7253  problem by SCIPgetLocalTransEstimate(), no longer the estimated original problem value. Also clarified this in the
7254  comments for SCIPcreateChild()
7255 - fixed compiler warning `warning: dereferencing type-punned pointer will break strict-aliasing rules` which resuts in
7256  scip-crashes with gcc version 4.4.0
7257 - adjusted assert in var.c
7258 - fixed bug in SCIPvarGetActiveRepresentatives() in var.c
7259 - fixed bug with objective limit in lp.c: previously the infinity value of SCIP was used as default - now the value of
7260  LPI is used. In the earlier version in many cases the problems where never infeasible.
7261 - added and adjusted some asserts, initialized some values
7262 - increased the numerical stability of coefficient tightening for Big M formulations
7263 - fixed bug with incorrect pseudo activities when objective of a variable switches sign in linear constraint handler
7264 - fixed bug with empty constraints in several writing routines
7265 - fixed `GGT-Kaibel-Bug` in var.c, prop_pseudoobj.c and cons_varbound.c that occured while computing new values using
7266  infinity values
7267 
7268 - Bounds:
7269  - fixed bug in coefficient tightening with infinite bounds
7270  - fixed bug in solve.c: in case lowerbound >= upperbound, SCIPsolveIsStopped() returned `SCIP_STATUS_GAPLIMIT`
7271 
7272 - Nodes:
7273  - fixed bug in SCIPsolveNode() concerning the case that the time limit was hit while solving the LP relaxation of a
7274  subproblem which is already an LP (branching on pseudo solution is not possible)
7275  - fixed bug in vbc tools concerning of marking probing nodes
7276  - fixed bug in solve.c with nodes which are marked to be repropagated while enforcement
7277 
7278 - Variables:
7279  - fixed possible infinite loop while multiaggregating a variable in var.c
7280  - fixed bug in SCIPgetSolVals() similar to SCIPgetSolVal(): try to get original variables of transformed ones if the
7281  solution lives in original space
7282 
7283 - Pricing:
7284  - fixed potential bug: restarts are now only done if no active pricers exist
7285  - fixed bug in SCIPlpSolveAndEval(): if fastmip and pricers enabled and objlimit was reached but CPLEX did not perform
7286  the final pivot step in order to exceed the objlimit, do one additional simplex step with pricing strategy steepest
7287  edge, if this doesn't suffice, turn off fastmip temporarily and solve again. Also consider solstat of the new
7288  solution.
7289  - fixed bug with invalid pseudo solution (lower bound was always >= 0) when using pricing.
7290  - fixed bug in SCIPfreeProb() in scip.c: all pricers are deactivated now
7291 
7292 - Memory:
7293  - now frees debug memory
7294  - fixed bug with exponential complexity for reallocating memory in SCIPvarGetActiveRepresentatives() in var.c
7295  - fixed casting of void* pointers in memory.h for C++, adjusted the same for C in memory.h and due to that adjusted all
7296  header files(set whole files in extern `C`) and cpp-files(removed unnecessary extern `C` lines)
7297  - removed memory leak in connection with freeing branch and bound nodes: focusnode was not freed if both children could
7298  be cut off due to bounding
7299 
7300 - Reading and Writing:
7301  - corrected bug in reader_lp.c: earlier read bounds were thrown away (implementation was not conforming to standard)
7302  - fixed bug in reader_lp.c with respect to constraint and variable names which start with two or more dots `..`
7303  - fixed bug in all readers w.r.t. SCIPgetProbvarLinearSum()
7304  - fixed bug in reader_mps.c with respect to corrupted files
7305  - fixed bug in reader_mps.c with respect to writing transformed problems
7306  - changed wrong writing of mps files due to constraints without any name
7307  - fixed a bug during reading debug solution file
7308  - fixed bug in case of reading an objective function in opb format with multiple occurrences of the same variable
7309  - fixed bug in case of reading an objective function in lp format with multiple occurrences of the same variable
7310  - fixed a wrong fix of a reading bug, which was in reality a writing bug in MPS format; integer variables in mps format
7311  without bounds are binary variables, if the bound of an integer variable is infinity you have to write this bound
7312 
7313 - Separation:
7314  - fixed bug in sepa_cmir.c, sepa_mcf.c and sepa_flowcover.c: sol different to LP solution is now separated
7315  - corrected two asserts in sepa_redcost.c (reduced costs can be negative for fixed variables: qsopt uses this)
7316  - fixed bug in sepa_zerohalf.c; replacement of own sorting functions by template functions was incorrect
7317  - fixed bug in var.c, cons_knapsack.c and sepa_flowcover.c: variable bounds corresponding to implication are not
7318  generated if coefficient is large, variable bounds with large coefficients are ignored for construction of knapsack
7319  and snf relaxations
7320  - fixed bug in sepa_impliedbound.c concerning redundant implications
7321 
7322 - Cuts:
7323  - fixed bug in sepa_cmir.c concerning uninitialized mksetcoefs (if MIR-cut generation is aborted because the aggregated
7324  constraint is empty or contains too many nonzero elements mksetcoefs is invalid)
7325  - interrupts optimization process if a node will be cutoff, which allows the solution
7326  - fixed bug in sepa_impliedbounds.c and sepa_intobj.c: if separating a sol, this sol is now also given to SCIPaddCut()
7327  so that the efficacy of the cut is now computed correctly
7328  - fixed bug in solve.c caused by integer overflow due to setting the number of cuts to INT_MAX
7329 
7330 - Presolving:
7331  - fixed wrong result in check.awk, if infeasible problems are stopped in presolving
7332  - fixed exponential calculation of solution values during check of original solution, therefore changed
7333  SCIPvarGetActiveRepresentatives() in var.c and flattened all multiaggregated vars at the end of presolving in
7334  exitPresolve()
7335  - fixed bug with wrong abort criterion in presolving
7336  - fixed bug in presol.c caused by not reseting presolver-wasdelayed status
7337  - fixed bug in SCIPconsSetInitial() that occurred in pairwise presolving: add or delete constraint in initconss when
7338  changing the initial flag
7339 
7340 - Constraints:
7341  - fixed bug in cons.c caused by not resetting conshdlr data after restart
7342  - fixed memory error in cons_countsols.c
7343  - fixed assert in cons_and.c method SCIP_DECL_CONSINITSOL(consInitsolAnd)
7344  - fixed bug in cons_countsols.c we respect to warning message that `The current parameter setting might cause ...`
7345 
7346 - Knapsack Constraint Handler:
7347  - fixed wrong assert in cons_knapsack.c and handled a special this case in simplifyInequalities()
7348  - fixed some bugs in simplifyInequalities() in cons_knapsack.c
7349  - fixed bug in mergeMultiples() in cons_knapsack.c
7350  - adjusted ConsData and ConsHdlrData in cons_knapsack.c
7351  - fixed compiler warning caused by no initialization of two integer in cons_knapsack.c
7352  - fixed bug in cons_knapsack.c caused by having a multi-aggregated variable in a knapsack constraint, now applyFixing is
7353  able to resolve a binary multi-aggregation with integral values
7354 
7355 - Linear Constraint Handler:
7356  - fixed infinity loop in simplify inequalities in cons_linear.c
7357  - fixed bug in cons_linear.c: do not select variable as slack variable for multiaggregation in convertLongEquality if it
7358  has been marked as not-multiaggregable
7359  - fixed bug in cons_linear.c: also do not multiaggregate variables in dual preproccessing if it has been marked as
7360  not-multiaggregable
7361  - fixed bug in cons_linear.c: slight decrease of epsilon in order to make sure that scaled coefficients are really
7362  integral
7363  - fixed bug in chgRhs() and chgLhs() of cons_linear.c: after changing lhs or rhs of a constraints lhs <= rhs has to be
7364  satisfied without numerical tolerances
7365 
7366 - Heuristics:
7367  - added and changed some SCIPisStopped() calls in several heuristics
7368  - fixed bug in oneopt heuritic with start solution which has become infeasible due to global bound changes
7369 
7370 - Interfaces:
7371  - corrected several bugs in the Clp-interface concerning return values
7372  - fixed potential interface bug: time limits of 0.0 are not anymore passed to the LP solver, which may have caused
7373  errors
7374 
7375 @page RN11 Release notes for SCIP 1.1
7376 
7377 @section RN110 SCIP 1.1.0
7378 *************************
7379 
7380 Features
7381 --------
7382 
7383 - SCIP can now count integer feasible solutions for IPs/CIPs (without continuous variables) (see SCIPcount())
7384 - check.awk now uses TeX package supertabular which supports automatic pagebreak
7385 - struct `SCIP_Stat` has now two additional variables: `nprobboundchgs`, `nprobholechgs`; these are used to fix the domain
7386  reduction counts in sepa.c, cons.c, branch.c and prop.c; this means, that now the domain reduction counts are reduced
7387  by those domain reduceds which are preformed during probing
7388 - added capabilities to flatten the (multi)-aggregation graph of variables
7389 - pseudoobj propagator now also propagates the global lower (dual) bound
7390 - new heuristic DINS (distance induced neighborhood search by Ghosh)
7391 
7392 - Output:
7393  - SCIP can now output a picture of the constraint matrix in PPM format.
7394  - output of real values is now done with 15 digits after the decimal point
7395  - Extended the capabilities of SCIP to output problems in different formats (LP, MPS, CIP, ...). You can output the original and
7396  transformed problem. Furthermore, generic names can be given to the variables and constraints.
7397  - The feasibility test for solutions at the end of the execution now outputs more useful information.
7398  This made some changes in the interface of constraint handlers necessary.
7399 
7400 - Presolving:
7401  - added predefined settings file presolving/aggressive.set
7402  - new presolver boundshift (presol_boundshift.{c,h}); this presolver is currently turned off with default parameter setting
7403 
7404 - Constraints:
7405  - linear constraint handler now detects continuous variables that are implicit integer in dual presolve
7406  - replaced some old sorting methods in cons_knapsack.c, heur_octane.c, sepa_flowcover.c and presol_probing.c through
7407  SCIPsort...() interfaces, adjusted misc.{c,h} and pub_misc.h for these changes
7408  - cons_countsols.c is now able to store the collected solution if required
7409  - added first version of SOS type 1 constraint handler (cons_sos1.{c,h})
7410  - added first version of SOS type 2 constraint handler (cons_sos2.{c,h})
7411  - less aggressive scaling in linear constraint handler presolve to improve numerics
7412  - added first version of constraint handler cons_countsols.{c,h}
7413 
7414 - Reader:
7415  - added ccg-reader (weighted column connectivity graph)
7416  - added reader for pseudo-Boolean problems (reader_opb.{c,h})
7417  - the ZPL reader is now able to pass a starting solution to SCIP
7418  - the MPS reader is now able to write a problem in MPS format
7419  - the ZIMPL reader now understands SOS type 1 and 2 constraints
7420  - the LP reader reads SOS constraints of type 1 and 2
7421  - the MPS reader reads the SOS section (but cannot yet handle `MARKERS`)
7422 
7423 - LPI:
7424  - The SoPlex LPI can now write basis files.
7425  - revised lpi_clp.cpp (many small changes, in particular writing and reading of bases)
7426  - added FASTMIP settings in lpi_clp.cpp that try to improve the performance of Clp as much as possible
7427 
7428 - Cuts and Separation:
7429  - the c-MIR separator now also tries to get rid of implicit integer variables by aggregation
7430  - allow cut selection based on support of inequality in orthogonality computation
7431  - disabled zerohalf cuts by default
7432  - adjusted all predefined settings files, e.g., `settings/cuts/fast.set`, such that they are consistent wrt removed,
7433  added and changed parameter values of scip.
7434  - New cutting plane separator MCF (beta version).
7435  - new separator sepa_zerohalf.{c,h}; separates {0,1/2}-Cuts according to Caprara and Fischetti
7436 
7437 Performance improvements
7438 ------------------------
7439 
7440 - heavily decreased the usage of SCIPisStopped(), which costs system time
7441 - small performance improvement of c-MIR aggregation heuristic
7442 - reworked strong branching in lpi_clp.cpp (scaling works now, bounds can be trusted)
7443 
7444 - Constraints:
7445  - The preprocessing has been revised. It now applies bound computations in a numerically more stable way. The pairwise
7446  comparison of linear, logicor, and setppc constraints has been improved.
7447  - better branching in SOS1/SOS2 constraints
7448  - fixed performance bug with large number of unnamed constraints that will kill the name hash table (now, unnamed
7449  constraints are not put into the hash table)
7450 
7451 - Cuts and Separation:
7452  - improved the performance of SCIPcalcMIR() and SCIPcalcStrongCG() by exploiting sparsity
7453  - improved performance of SCIPvarGetLPSol(), which affects many parts of the code, in particular Gomory and strong CG cuts
7454  - do not calculate MIR and StrongCG cut aggregations if number of nonzeros in aggregated row is too large
7455 
7456 - Presolving:
7457  - improved pairwise presolving in cons_linear.c: reduced cache misses, reduced number of SCIPisStopped() calls and
7458  included detecting of redundant constraints with hash table in advance
7459  - tighter memory limits in knapsack presolve lifting procedure to avoid overly expensive presolving
7460  - included detecting of redundant constraints with hash table in advance in cons_logicor.c and limit other pairwise
7461  presolving
7462  - included detecting of redundant constraints with hash table in advance in cons_setppc.c and limit other pairwise
7463  presolving
7464  - limit pairwise presolving in cons_linear.c
7465 
7466 Examples and applications
7467 -------------------------
7468 
7469 - Added an example for the graph coloring problem in `examples/Coloring`, showing the usage of column generation.
7470 - added SOS2 example
7471 - extended TSP example
7472 
7473 Interface changes
7474 -----------------
7475 
7476 ### New and changed callbacks
7477 
7478 - New callback method SCIP_DECL_READERWRITE(x) in type_reader.h; this method is called to write a problem to file
7479  stream in the format the reader stands for; useful for writing the transformed problem in LP or MPS format. Hence,
7480  also SCIPincludeReader() has changed.
7481 - The callback \ref CONSCHECK (SCIP_DECL_CONSCHECK()) in the constraint handlers now has a new parameter `printreason` that tells
7482  a constraint handler to output the reason for a possible infeasibility of the solution to be checked using
7483  SCIPinfoMessage(). Have a look at one of the constraint handlers implemented in SCIP to see how it works. This
7484  methodology makes it possible to output the reason of a violation in human readable form, for instance, for the check
7485  at the end of a SCIP run, where the obtained best solution is checked against the original formulation.\n This change
7486  often has little effect on C-implementations, since this parameter can be safely ignored with respect to the
7487  correctness of the code. The corresponding C++ method scip::ObjConshdlr::scip_check(), however, has to be extended
7488  and will not compile otherwise.
7489 - added new LPI pricing option `SCIP_PRICING_LPIDEFAULT`, such that every LP interface can set the default pricing
7490  strategy on its own (`auto` is not useful for this, because for CPLEX, for example, SCIP seems to be worse with `auto`
7491  then with `steepest edge`)
7492 - Added user pointer to callback methods of hash table, see pub_misc.h.
7493 
7494 ### Deleted and changed API methods
7495 
7496 - SCIPgetVarRedcost() now returns 0 for variables that have been aggregated out or removed in presolving.
7497  reduced cost in case of infeasible LPs)
7498 - new parameter `maxfrac` for SCIPcalcStrongCG()
7499 - new parameter `maxmksetcoefs` for SCIPcalcMIR() and SCIPcalcStrongCG() methods
7500 - new parameter `conshdlrname` in SCIPincludeLinconsUpgrade()
7501 
7502 - Problem:
7503  - new parameters `extension` in SCIPreadProb() defining a desired file format or `NULL` if file extension should be use
7504  - New parameters `extension` and `genericnames` in SCIPprintTransProblem(), SCIPprintOrigProblem(),
7505  SCIPwriteOrigProblem(), and SCIPwriteTransProblem() defining the requested format or `NULL` for default CIP format
7506  and using generic names for the variables and constraints. Examples are
7507  - SCIPprintTransProblem(scip, NULL, NULL, TRUE) displays the transformed problem in CIP format with
7508  generic variables and constraint names
7509  - SCIPprintOrigProblem(scip, NULL, `lp`, FALSE) displays the original problem in LP format with
7510  original variables and constraint names.
7511 
7512 - Sorting:
7513  - expand sorttpl.c by some parameters
7514  - changed some names for sorting methods
7515  - replaced sorting methods SCIPbsort...() by faster (quicksort/shellsort) algorithms SCIPsort...() Note that the order
7516  of the parameters has been changed to simplify the template code in sorttpl.c!
7517 
7518 - Checking:
7519  - SCIPcheckSolOrig() is restructured. The last two parameters have changed. They are now bools indicating
7520  whether the reason for the violation should be printed to the standard output and whether all violations should be
7521  printed. This reflects the changes in the constraint handlers above, which allow the automation of the feasibility
7522  test. The pointers to store the constraint handler or constraint are not needed anymore.
7523  - the parameter list of the method SCIPcheckCons() (scip.h) has changed; the new advatage is, that SCIP can print the
7524  reason for the violation of a constraint as for as the constraint handler supports that
7525  - the parameter list of the method scip_check() (objconshdlr.h) has an additional parameter `printreason` see for
7526  explanation the previous point
7527 
7528 ### New API functions
7529 
7530 - LPI now has a function SCIPlpiGetSolverPointer() that returns a solver dependent pointer. This can be used to directly
7531  access the LP solver. This should, of course, only be used by people that know exactly what they are doing.
7532 - added capabilities to avoid multi-aggregation of a single variable by setting a corresponding flag (SCIPmarkDoNotMultaggrVar())
7533 - SCIPgetProbvarLinearSum()
7534 - SCIPgetResultantAnd() which returns the resultant variable of an `and` constraint
7535 - SCIPchgChildPrio() to change the node selection priority of the given child
7536 - SCIPconsGetPos()
7537 - SCIPrepropagateNode() to mark a node for repropagation
7538 - SCIPcount() (in cons_countsols.h) for counting all feasible solution of a given CIP
7539 - SCIPcreateRootDialog() (in dialog_default.h) which creates a root dialog
7540 - SCIPgetVectorEfficacyNorm()
7541 - SCIPseparateRelaxedKnapsack() in cons_knapsack.h
7542 - SCIPgetCutoffdepth() which returns the depth of first node in active path that is marked being cutoff
7543 - SCIPflattenVarAggregationGraph()
7544 - SCIPclockGetLastTime()
7545 - SCIPcalcHashtableSize() to get a reasonable hash table size
7546 - SCIPgetVarFarkasCoef() and SCIPgetColFarkasCoef() to get the farkas coefficient of a variable (analogon of
7547 - SCIPgetRepropdepth() to get the depth of first node in active path that has to be propagated again
7548 - SCIPmajorVersion(), SCIPminorVersion() and SCIPtechVersion() returning the corresponding version
7549 
7550 - Read, Write and Print:
7551  - SCIPprintSysError() which encapsulates the strerror_r calls, the NO_STRERROR_R flag switches between the use
7552  of strerror_r and strerror inside
7553  - SCIPsnprintf() safe version of snprintf (and sprintf)
7554  - SCIPreaderCanRead() and SCIPreaderCanWrite() in pub_reader.h, these return TRUE if the corresponding
7555  reader is capable to read or write, respectively
7556  - SCIPwriteOrigProblem(), e.g., SCIPwriteOrigProblem(scip, `orig.lp`, NULL, FALSE) prints the original
7557  problem in LP format in the file `orig.lp`
7558  - SCIPwriteTransProblem(), e.g., SCIPwriteTransProblem(scip, NULL, NULL, FALSE) displays the transformed problem in CIP format
7559 
7560 - Heuristics:
7561  - SCIPcutGenerationHeuristicCmir() in sepa_cmir.h
7562  - SCIPheurGetTimingmask() and SCIPheurSetTimingmask()
7563 
7564 - Sorting:
7565  - added some downwards-sorting methods
7566  - SCIPbsortInd()
7567  - SCIPsortedvecInsert...(), SCIPsortedvecInsertDown...(), SCIPsortedvecDelPos...(),
7568  SCIPsortedvecDelPosDown...(), SCIPsortedvecFind...() and SCIPsortedvecFindDown...() to manage sorted vectors or
7569  groups of vectors of various data types that are sorted w.r.t. the first vector
7570 
7571 ### Command line interface
7572 
7573 - advanced reading and writing dialog in interactive shell
7574 
7575 ### Interfaces to external software
7576 
7577 - Many changes in the SoPlex interface: The current one is tailored towards SoPlex 1.4 (aka 1.3.3). All SoPlex functions
7578  (where applicable) should now have an exception handling. The Bugfix for adding columns has been moved to SoPlex. One
7579  can use ROW representation. Reading/writing of a basis has been implemented.
7580 
7581 ### Changed parameters
7582 
7583 - changed default frequency parameters for RINS, Local Branching, Crossover and Mutation heuristic This should not
7584  change the performance but happened just for consistency reasons
7585 - changed parameter default values for the priority of presolver `dualfix` and `inttobinary`
7586 - removed parameter `separating/cmir/maxtestdeltaroot`
7587 - new value `l` for parameter `lp/pricing`, which is the new default
7588 
7589 ### New parameters
7590 
7591 - `constraints/and/linearize` to enable linearization of all <and> constraints (in presolving),
7592 - `constraints/and/initiallp` to turn on, off, or `auto` that the LP relaxation of the AND constraints are in the initial LP;
7593 - `constraints/countsols/collect` to enable the storing of the solutions; default value FALSE;
7594 - `constraints/indicator/addCoupling` to enable generation of relaxation
7595 - `constraints/indicator/branchIndicators` to decide whether it is branched on indicator constraints in enforcing
7596 - `constraints/indicator/genLogicor` to decide whether logicor constraints instead of cuts are generated
7597 - `constraints/indicator/sepaAlternativeLP` to decide whether separation takes place using the alternative LP
7598 - `constraints/linear/aggregatevariables` to search for aggregations in equations in the presolving step
7599 - `constraints/linear/dualpresolving` to disable dual presolving step in the linear constraint handler; default value is TRUE
7600 - `constraints/linear/simplifyinequalities` to enable a simplification step for inequalities; default value is set to FALSE = disabled
7601 - `constraints/linear/upgrade/binpack` to enable or disable the linear upgrading process
7602 - `constraints/linear/upgrade/eqknapsack` to enable or disable the linear upgrading process
7603 - `constraints/linear/upgrade/invarknapsack` to enable or disable the linear upgrading process
7604 - `constraints/linear/upgrade/knapsack` to enable or disable the linear upgrading process
7605 - `constraints/linear/upgrade/logicor` to enable or disable the linear upgrading process
7606 - `constraints/linear/upgrade/setppc` to enable or disable the linear upgrading process
7607 - `constraints/linear/upgrade/varbound` to enable or disable the linear upgrading process
7608 - `constraints/linear/presolusehashing` to use hashing comparison in cons_linear.c; default value is TRUE
7609 - `constraints/logicor/presolusehashing` to use hashing comparison in cons_logicor.c; default value is TRUE
7610 - `constraints/setppc/presolusehashing` to use hashing comparison in cons_setppc.c; default value is TRUE
7611 - `constraints/SOS1/branchNonzeros` to decide whether SOS1 constraint with largest number of nonzero variables is picked for branching
7612 - `constraints/SOS1/branchSOS` to enable or disable branching on SOS1 constraints
7613 - `heuristics/feaspump/beforecuts` to allow the feaspump to be called before cut separation
7614 - `heuristics/mutation/minimprove`
7615 - `presol/donotmultaggr` which disables multiaggregation for all variables of the problem
7616 - `separating/cmir/densityoffset` to allow for more c-MIR cuts on small models
7617 - `separating/orthofunc` to choose function for scalar product computation in orthogonality test
7618 
7619 Testing
7620 -------
7621 
7622 - updated mmm.{test,solu}, mittelmann.{test,solu}, miplib3.solu, miplib.solu, shortmiplib.test and added
7623  mittelmann_current.test, mittelmann_old.test
7624 - added test scripts for testing counting (make testcount)
7625 - removed tag make testpre (useless without corresponding scripts)
7626 - added tag testcount (make testcount); this allows for testing counting problem
7627 - replaced tcsh by bash and gawk by awk in all check scripts to achieve higher compatibility
7628 
7629 Build system
7630 ------------
7631 
7632 ### Makefile
7633 
7634 - added `make/make.project` as default make include for external projects using SCIP
7635 - added possibility to compile shared libraries in makefiles (and added `make/make.linux.x86.gnu.opt-shared`)
7636 - replaced <string> by <cstring> in all C++-interfaces to get `strlen()` included (gcc-4.3 gave an error)
7637 - Moved -rpath option for ld to linux-specific Makefiles.
7638 - Re-activated readline library on darwin/ppc.
7639 
7640 - Flags:
7641  - added in all `make/make.*` `GMP_FLAGS` and `GMP_LDFLAGS`
7642  - new flag GMP with values (`auto`, `true and `false`); in case of `auto` the library gmp is linked if ZIMPL is
7643  included
7644  - adapted all makefiles of the examples accordingly
7645 
7646 - LP:
7647  - modified makefiles to accept ZIMPLOPT and LPSOPT flags (with values `opt` or `dbg` and default being `opt`), and
7648  removed `LPS=spxdbg` and `LPS=clpdbg`
7649  - added target spx132 for SoPlex version 1.3.2
7650 
7651 Fixed bugs
7652 ----------
7653 
7654 - fixed CTRL-C if NO_SIGACTION is set (e.g., for MinGW)
7655 - added checks whether a plugin (handler) has already been included to avoid later complications e.g. with parameters.
7656 - fixed bug with wrong `tightened` return value of some of the change bounds methods
7657 - forced full propagation in presolving -> this fixes a bug that implied that variable locks became inconsistent
7658 - replaced calls to perror() by SCIP error message using strerror(errno); this avoids problems with the error output
7659  stream
7660 - fixed bug in method SCIPgetProbvarLinearSum()
7661 - fixed bug with errors occurring in sub-MIPs. Search is only aborted in dbg mode, in opt mode a warning will be printed
7662 - fixed bug in tclique-graph datastructure concerning insertion of edges into nonempty graph
7663 - corrected bug in SCIPtreeBranchVar() (tree.c): several comparison functions needed a `feas`.
7664 - fixed bug in SCIPtightenVarLb/Ub() in scip.c concering forcing a bound change (bound improvement is checked now)
7665 - improved stage checking for bound computation
7666 - fixed usage of command test for string comparison in check-scripts (now compatible with ubuntu)
7667 - replaced sprintf and snprintf by SCIPsnprintf() fixed potential bug with overlong strings
7668 - corrected bug in the case when soplex threw an exception in autopricing
7669 - fixed bug in SCIPvarGetOrigvarSum() concerning the corner case the a negated variable has no parent variable in
7670  original problem
7671 
7672 - Aggregation:
7673  - avoid aggregation of implicit integers with fractional aggregation scalars
7674  - fixed bug in aggregateActiveIntVars(): If a < 0, multiply a*x + b*y == c by -1 (algo for finding initial solution does
7675  only work for a > 0).
7676  - avoiding aggregation that removes information about implicitly integer variables (removes bug)
7677  - fixed bug with exponential running times due to complicated recursive multi-aggregation
7678  - corrected bug in var.c occuring during applying boundchanges in varUpdateAggregationBounds method
7679 
7680 - Constraints:
7681  - fixed bug that a missing CONSTRANS in constraint handler leads to `NULL` pointer as constraint data for the copied
7682  constraints instead of pointer copies of the consdata (as explained in the constraint handler `HowTo`)
7683  - fixed bugs in second part of consdataTightenCoefs(): Removed min/maxleftactisinfinity (definition was not correct),
7684  fixed calculation of min/maxleftactivity and removed asserts concerning whether all redundant vars were deleted (led
7685  to different behavior in debug and opt mod).
7686  - fixed typo in documentation: default value for `dynamic` parameter is FALSE for all constraint handlers!
7687  - fixed bug in preprocessing of SOS2 constraints (cons_sos2.c)
7688  - fixed bug in cons_countsols.c concerning variable locking
7689  - fixed bug in cons_varbounds.c, concerning SCIPaddVarVlb() and SCIPaddVarVub()
7690  - fixed bug in applyFixings() in cons_varbound.c concerning tightening the bound of a variable left in a redundant
7691  constraint (bound change is forced now)
7692 
7693 - Heuristics:
7694  - fixed bug with useless objective cutoff in LNS heuristics
7695  - removed bug for values greater than (-)infinity, heur_shifting.c, heur_intshifting.c, heur_rounding.c, heur_oneopt.c
7696  - fixed bug with errors occurring in heuristic LPs. In opt mode a warning will be printed, abort in dbg mode
7697 
7698 - Linear Constraints:
7699  - fixed bug with wrong update of activities in linear constraints after global upper bound changes
7700  - fixed bug in preprocessConstraintPairs() in cons_linear.c concerning updating the flags of the constraint that stayes
7701  in the problem (nonredundant information were lost before)
7702  - fixed bug in cons_linear.c caused by comparing two infinity values during checking of using variable as slackvariable
7703  - removed bug for rhs/lhs greater than (-)infinity, cons_linear.c
7704  - removed bug caused by hashcomparison for non-sorted constraints, cons_linear.c
7705  - fixed bugs with wrong presolving due to cancellation in (res-)activities in cons_linear.c
7706  - removed BOUNDSCALETOL adjustment in cons_linear.c. This fixes bug with slightly infeasible variable fixings in
7707  presolving; reliable resactivities should make the BOUNDSCALETOL relaxation redundant.
7708  - removed `epsilontic` bug in cons_linear.c due to adjusting left/right hand side in applyfixing
7709  - fixed bug with multi-aggregated variables in cons_logicor: instead of fixing them, a linear constraint will be created
7710  - corrected bug in cons_linear.c:applyFixings() [if variable was fixed to infinity the rhs/lhs were wrong]
7711  - fixed bugs in pairwise presolving of cons_linear.c concerning deletion of upgraded constraints and inconsistent update
7712  of nchgsides in case of coefsequal and coefsnegated
7713  - fixed false assert and corrected a bug caused by deleting a constraint on `firstchanged` position in pairwise
7714  presolving with hashing in cons_linear.c
7715 
7716 - LP:
7717  - fixed handling of unbounded variables with 0 objective in SCIPlpGetModifiedPseudo[Proved]Objval() (lp.c)
7718  - fixed bug with uncatched LPSOLSTAT after hitting a time or iteration limit
7719  - corrected bug in SCIPlpGetState() if the LP is empty
7720  - fixed bug in SCIPlpSolveAndEval(): added extra simplex step if objlimit reached, fastmip and pricers enabled in order
7721  to get dual solution for pricing.
7722  - weakened two too strong asserts in lp.c concerning the LP result OBJLIMIT
7723  - fixed bug in SCIPlpSolveAndEval(): allow more than one extra simplex step for getting an objlimit exceeding solution
7724  with fastmip
7725 
7726 - Memory:
7727  - corrected invalid memory access in tcliqueIsEdge: added check whether node1 has no neighbors (tclique_graph.c)
7728  - removed memory leak detected with the help of coverity in dialog.c
7729  - fixed bug with memory reallocation in SCIPgetProbvarLinearSum()
7730  - tried to fix memory leak in dialog.c occuring from different versions of the readline/history libraries
7731  - removed possible memory leak in objdialog.cpp
7732 
7733 - Numerical:
7734  - fixed numerical issue in linear constraint propagation: need slightly more aggressive tightening such that probing
7735  does not choose a wrong value for fixing inside an epsilon interval
7736  - fixed numerical bug in dual presolving of linear constraint handler
7737  - avoid fixing variables to infinity in order to get rid of numerical inconsistencies in the original model
7738 
7739 - Objective:
7740  - added handling of the case of roundable variables with 0 objective in presol_dualfix.c
7741  - fixed bug with writing the MIP relaxation to a file concerning the objective function; in case the original objective
7742  function is requested, the transformed objective function gets re-transformed (scaling, offset)
7743  - fixed bug with wrong objective sense output for transformed problem. The transformed problem is always a minimization
7744  problem!
7745  - fixed bug with objective scaling after restart
7746 
7747 - Reading:
7748  - fixed bug with reading empty lines in TSP example
7749  - fixed bug with non-conformal parameter name in reader_ppm
7750  - fixed infinite loop in LP file reader if a line exceeds the character limit
7751  - fixed bug in reader_ppm while appending strings for output file
7752  - fixed some `SCIP_RETCODE` bugs in reader_fix.c, reader_sol.c, reader_sos.c and reader_zpl.c
7753  - fixed docu in type_reader.h
7754  - fixed bug with multi-aggregated variables which are de facto aggregated or fixed after flattening the aggregation tree
7755  - fixed bug with bound changes of variables in modifiable constraints during full dual presolving of linear conshdlr
7756  - increased compiler compatibility for C++ wrapper classed by adding extern `C` in obj*.cpp files and changing strlen
7757  calls to std::strlen
7758 
7759 - Separation:
7760  - corrected bug in priceAndCutLoop(): separation was aborted if domain reduction was applied
7761  - fixed bug in sepa_mir.c: size of testeddeltas-array was too small
7762  - corrected imlementation of SCIPlpiGetBasisInd() in lpi_clp.cpp (this fixes the bug that almost no Gomory cuts are
7763  found with Clp).
7764 
7765 - Sorting:
7766  - fixed bugs in sorttpl.c: fixed wrong arraysize in shellsort; in case an has at most one element, then no sorting is
7767  applied
7768  - fixed wrong if condition for function call in sorttpl.c
7769  - fixed obvious bug in linear constraint data sorting. Most part of the code assumed pure index sorting, but in fact, it
7770  was sorted by variable type as first criterion and index as second criterion.
7771 
7772 @page RN10 Release notes for SCIP 1.0
7773 
7774 @section RN100 SCIP 1.0.0
7775 *************************
7776 
7777 Features
7778 --------
7779 
7780 - SCIP now has a couple of specialized settings, all called scip_*.set
7781 - SCIP is now compatible to the Exception branch of SoPlex
7782 - if possible, objective function is scaled to make objective value integral with gcd 1
7783 - slightly modified automatic constraint aging strategy
7784 - new C templates disp_xxx.h and dialog_xxx.h and C++ wrapper classes objdisp.h and objdialog.h, respectively
7785 - modified reader `sol`, st. files which where created via typing the order of commands `set log *.sol`,
7786  `disp sol var -`, `set log cplex.log` in Cplex can now be read
7787 - new dummy LP interface `lpi_none.c`; useful for running SCIP without a LP solver
7788 
7789 - Presolver:
7790  - modified probing presolver to do multiple cycles if called in subsequent runs
7791  - changed sort algorithm in probing presolver
7792 
7793 - Node selection:
7794  - new node selection rule `estimate` (best estimate search)
7795  - new node selection rule `hybridestim`
7796 
7797 - Documentation:
7798  - the doxygen documentation now has HowTo's for all plugin types
7799  - the doxygen documentation now contains a FAQ
7800  - the documentation has now a TAB Modules; there you can find list of available constraint handles, presolvers,
7801  propagators, lpi interfaces, file readers and so on
7802 
7803 - Time:
7804  - time limit is now forwarded to lp solving algorithm
7805  - presolving, cut separation, primal heuristics and strong branching now better respect time limit
7806 
7807 - Heuristics:
7808  - best estimate search is now used in all large neighborhood search heuristics
7809  - new improvement heuristic `oneopt`
7810  - new heuristic `actconsdiving` following an idea of John Chinneck
7811 
7812 - Separation and Cuts:
7813  - modified cut selection code
7814  - cut conversion into linear constraints after a restart now works better
7815  - added flow cover separator
7816  - gomory cuts are now also separated for integral slack variables
7817  - less aggressive in Gomory cut separation
7818  - strong CG cuts are now also separated for integral slack variables
7819 
7820 Performance improvements
7821 ------------------------
7822 
7823 - greatly improved performance of LP file reader by replacing string copies with pointer copies
7824 - removed performance bottleneck with non-bfs based node selectors and large leaf queues at the cost of a small memory
7825  overhead (2 ints per node in the leaf queue); this improves performance quite a bit on instances that take a large
7826  number of branching nodes
7827 - improved performance of linear constraint propagation by delaying some floor/ceil calculations
7828 - improved performance of clique cut separator
7829 
7830 Interface changes
7831 -----------------
7832 
7833 ### New and changed callbacks
7834 
7835 - new callback method SCIPdialogFree()
7836 
7837 ### Deleted and changed API methods
7838 
7839 - slightly modified bound substitution heuristic in SCIPcalcMIR() and SCIPcalcStrongCG()
7840 - slightly less conservative in numerics for SCIPmakeRowIntegral()
7841 - linear and knapsack constraint handler may now deal with coefficients of value zero
7842 - new parameter `maxbounddist` for SCIPincludeSepa() and constructor ObjSepa()
7843 - new parameter `restart` for method SCIPfreeSolve()
7844 - calling SCIPwriteLP() is now possible in Solved Stage
7845 - SCIPwrite{LP,MIP} may no longer be called after solving, since the LP data structures may not be valid
7846 - All functions SCIP<datatype>Param() got a new parameter `isadvanced`.
7847  This does not influence the performance of SCIP, but the position of the parameter in the settings menu.
7848  Hence, if you do not care about this, you can assign any value to it.
7849  You should add the corresponding flag to the SCIP<datatype>Param() calls in your own source code.
7850 
7851 - Version:
7852  - modified `SCIP_SUBVERSION` to be a number instead of a string (to be able to use `SCIP_SUBVERSION >= ...`)
7853  - SCIPsubversion() now returns an int instead of a const char*
7854 
7855 - Tree and Nodes:
7856  - new parameter `estimate` for SCIPcreateChild() giving an estimate for value of best feasible solution in the subtree to
7857  be created. One possibility is to use SCIPgetLocalOrigEstimate() for this value.
7858  - removed method SCIPnodeGetPriority()
7859  - removed parameter `lowestboundfirst` from SCIPincludeNodesel()
7860 
7861 - Branching:
7862  - removed parameter `branchdir` from SCIPbranchVar()
7863  - new parameters `leftchild`, `eqchild` and `downchild` for SCIPbranchVar()
7864  - SCIPgetVarStrongbranch() now also returns lperror == TRUE if the solving process should be stopped, e.g., because of a
7865  time limit
7866 
7867 - Variable tightening:
7868  - replaced methods SCIPvarGetClosestVlb() and SCIPvarGetClosestVub() from pub_var.h by new methods
7869  SCIPgetVarClosestVlb() and SCIPgetVarClosestVlb() in scip.h
7870  - new parameter `force` for SCIPtightenVarLb() and SCIPtightenVarUb()
7871 
7872 ### New API functions
7873 
7874 - SCIPreadSol()
7875 - SCIPwriteMIP()
7876 - SCIPgetLocalOrigEstimate() and SCIPgetLocalTransEstimate()
7877 - SCIPisStopped()
7878 - SCIProwIsInGlobalCutpool()
7879 - SCIPresetParams()
7880 - SCIPgetVarRedcost()
7881 - SCIPtightenVarLbGlobal() and SCIPtightenVarUbGlobal()
7882 - SCIPsepaGetMaxbounddist()
7883 - SCIPboundchgGetNewbound(), SCIPboundchgGetVar(), SCIPboundchgGetBoundchgtype(),
7884  SCIPboundchgGetBoundtype(), SCIPboundchgIsRedundant(), SCIPdomchgGetNBoundchgs(), SCIPdomchgGetBoundchg()
7885 - SCIPnodeUpdateLowerboundLP()
7886 - SCIPcalcNodeselPriority()
7887 - SCIPnodeGetEstimate()
7888 - SCIPnodeGetDomchg()
7889 - SCIPgetRootNode() (in combination with SCIPcutoffNode(), this allows the immediate finishing of the optimization)
7890 
7891 ### Command line interface
7892 
7893 - default dialog menu now includes the commands `set default` and `display parameters`
7894 - added option to write node LP and MIP relaxations to LP file from interactive shell
7895 
7896 ### Changed parameters
7897 
7898 - parameters are now separated into basic and advanced, the latter ones have been moved to extra submenus
7899 - priority parameters are now restricted to be in [INT_MIN/4,INT_MAX/4] to avoid overflow errors in comparison methods
7900 - increased priority of `estimate` node selector, such that this is the new default node selector
7901 - changed meaning of parameter setting `nodeselection/childsel = l`; old meaning is now called `r`
7902 - changed default value of `conflict/maxvarsfac` to 0.1
7903 - changed default value of `conflict/useprop` to TRUE
7904 - changed default value of `conflict/useinflp` to TRUE
7905 - changed default value of `conflict/usepseudo` to TRUE
7906 - changed default value of `conflict/maxlploops` to 2
7907 - changed default value of `conflict/lpiterations` to 10
7908 - changed default value of `conflict/interconss` to -1
7909 - changed default value of `conflict/reconvlevels` to -1
7910 - changed default value of `conflict/settlelocal` to FALSE
7911 - changed default value of `constraints/linear/propfreq` to 1
7912 - changed default values of `heuristics/∗diving/backtrack` to TRUE
7913 - changed default value of `nodeselection/restartdfs/stdpriority` to 10000
7914 - changed default value of `numerics/boundstreps` to 0.05 in order to avoid very long propagation loops on continuous variables
7915 - changed default value of `presolving/restartfac` to 0.05
7916 - changed default value of `presolving/restartminred` to 0.10
7917 - changed default value of `separating/objparalfac` to 0.01 for performance reasons
7918 - changed default value of global `separating/maxbounddist` to 1.0
7919 - changed default value of `separating/objparalfac` to 0.0001
7920 
7921 ### New parameters
7922 
7923 - `conflict/enable` to globally enable or disable conflict analysis
7924 - `constraints/linear/maxcardbounddist` and `constraints/knapsack/maxcardbounddist`
7925 - `heuristics/∗diving/backtrack` to activate 1-level backtracking for most of the diving heuristics
7926 - `heuristics/feaspump/maxstallloops`
7927 - `nodeselection/childsel` to control the child selection
7928 - `presolving/immrestartfac`
7929 - `separating/∗/maxbounddist` to have individual maxbounddist parameters per separator
7930 - `separating/clique/backtrackfreq` to speed up clique cut separation in heuristic fashion
7931 - `separating/redcost/continuous`
7932 
7933 Build system
7934 ------------
7935 
7936 ### Makefile
7937 
7938 - added version numbers to library files (There will be a softlink generated in the lib/ and bin/ directories without
7939  version number that point to the latest compiled version.)
7940 - added .exe extension to binaries of MinGW
7941 - removed the `.static` extension associated to the LINK variable from the Makefile system (If you want to build
7942  makefiles for shared library generation, use the OPT variable. For example, you could create a makefile
7943  `make/make.linux.x86.gnu.opt-shared` and compile it with `make OPT=opt-shared`.)
7944 
7945 - Defaults and Options:
7946  - modified the default LP solver to be SoPlex instead of CPLEX
7947  - added `LPS=none` for compiling SCIP without a LP solver
7948  - made `ZIMPL=true` the default; if you do not want to include ZIMPL support, call `make ZIMPL=false`
7949 
7950 Fixed bugs
7951 ----------
7952 
7953 - fixed bug in rowScale() concerning deletion of almost zero coefficients
7954 - weakened assert in primal.c in order to avoid numerical troubles
7955 - fixed bug with too long variable names
7956 - fixed bug with strange user descriptions of plugins
7957 - changed position of some asserts to prevent segmentation faults
7958 - SCIPgetAvgPseudocostCount() and SCIPgetAvgPseudocostCountCurrentRun() now return the average over all integer
7959  variables instead of all variables, since pseudo costs are not recorded for continuous variables
7960 - fixed wrong sorting of plugins with priorities close to INT_MIN or INT_MAX
7961 - replaced `line` by `read` in Makefile, since `line` is non-standard
7962 - fixed bug with branching rules that produce only one child with no changes to the problem
7963 - fixed bug that external relaxator is not reset appropriately for a new problem instance
7964 - removed wrong assert in function paramWrite()
7965 - fixed bug with uninitialized in check.awk
7966 - fixed bug in ZIMPL file reader for multiple occurrences of a single variable in the objective function
7967 - fixed bug with deleting variables from the transformed problem that are contained in the implication graph
7968 - fixed bug in root reduced cost fixing propagator that leads to an empty domain for a variable as a proof of optimality
7969  of the current incumbent
7970 - fixed bug with fractional coefficients of binary variables in cont --> impl int upgrading
7971 
7972 - Solution:
7973  - fixed bug with aggregated variables in debug solution test
7974  - now it is possible to add original solutions
7975  - fixed bugs with SCIPgetBestsol() returning `NULL` after a restart with user objective limit
7976  - fixed wrong status code in presence of user objective limit and a feasible solution that is not better than the limit
7977 
7978 - Bounds:
7979  - fixed bug with wrong bound changes of loose variables
7980  - changed wrong assert in SCIPnodeAddBoundinfer()
7981  - fixed bug in variable bounds search and insertion method
7982  - fixed bug regarding modifying bounds in original problem if negated original variables exist
7983  - fixed bug with multiple pending bound changes on some variable
7984 
7985 - Separator:
7986  - fixed bug in integer objective separator with restarts
7987  - fixed bug in integer objective separator with dynamic columns
7988 
7989 - Cuts:
7990  - fixed bug that cut age was not reset to zero for violated cuts
7991  - fixed bug in SCIPcutpoolAddNewRow() concerning update of minidx and maxidx of added row
7992  - fixed numerical bug in rowScaling of lp.c, which possibly cut off feasible solutions
7993  - significantly improved performance of c-MIR and Gomory cuts by caching closest VLB and VUB info
7994 
7995 - LP:
7996  - fixed numerical buf with slightly different LP optimum after resolving due to probing/diving
7997  - fixed bug in cmir and flowcover separator with variables which are currently not in the LP
7998  - fixed bug with LP size management in probing if column generation is used
7999  - fixed bug in LP file reader with row names identical to section keywords
8000  - fixed potential bugs due to errors in resolving the LP after diving or probing
8001  - fixed potential bugs in SCIPpriceLoop() and priceAndCutLoop(), st. now all LP solution stati are handled appropriately
8002  - fixed potential bug with non-existent LP in SCIPwrite{LP,MIP}
8003 
8004 - Constraint handler:
8005  - removed wrong assert in bounddisjunction constraint enforcement
8006  - fixed numerical bug in propagator of varbound constraint handler
8007  - fixed bug in variable bound constraint handler with changing bounds on multi-aggregated variables
8008  - fixed bug in linear constraint handler: only tight cuts are transformed into linear constraints after restart
8009  - fixed bug in bounddisjunction constraint handler with propagation of multi-aggregated variables
8010  - fixed bug with numerics in linear constraint handler due to non-representable `BOUNDSCALETOL`
8011  - fixed bug with almost integral multi-aggregation in dual presolve of linear constraint handler
8012  - fixed bug with numerics in update of min/maxactivity in linear constraint handler
8013 
8014 - Heuristics:
8015  - fixed bug in intshifting and oneopt heuristic with variables which are currently not in the LP
8016  - fixed bug with primal heuristics reducing the cutoff bound such that the current node is cut off
8017  - fixed bug in oneopt heuristic: must not be called on pseudo nodes if continuous variables are present
8018 
8019 @page RN09 Release notes for SCIP 0.9
8020 
8021 @section RN090 SCIP 0.9.0
8022 *************************
8023 
8024 Features
8025 --------
8026 
8027 - the EXITSOL callback of the plugins is now called before the LP and the global cut pool are freed
8028 
8029 - Primal Heuristics:
8030  - new primal heuristics `rens`, `mutation` and `veclendiving`
8031  - primal heuristics that run before the node is solved now know already whether the LP will be solved at the current
8032  node or not
8033 
8034 - Heuristics:
8035  - new heuristic `intshifting` (ID character `i`)
8036  - in the root node of the very first run, heuristics with timing `AFTERNODELPNODE`, `AFTERLPPLUNGE`, `AFTERPSEUDONODE`, and
8037  `AFTERPSEUDOPLUNGE` are now called before the enforcement of the constraint handlers, in particular before the branching
8038  rules; in this way, the branching rule can already benefit from a tighter primal bound
8039  - if a heuristic found a better solution after the LP loop (and in particular the `AFTERNODE` heuristics in the root node
8040  of the very first run, see above), domain propagation and LP solving is triggered again; this allows for additional
8041  reduced cost tightening and other dual propagations
8042  - slightly modified `crossover` and `rins` heuristics
8043  - improved performance of intdiving heuristic
8044  - improved heuristic `octane` and `shifting`
8045  - slightly modified rens and localbranching heuristics
8046  - modified guided diving heuristic such that it equals the original version of the heuristic (i.e., round in direction of the
8047  current incumbent solution instead of the average of all primal feasible solutions)
8048  - ID character for intdiving heuristic is now `I`
8049 
8050 - Separation and Cuts:
8051  - c-MIR cuts try now to scale the cut to integral values; however, cuts are still generated if this fails
8052  - hard-coded relative objective gain to consider a separation loop to be stalling is now changed from 1e-3 to 1e-4,
8053  which means that separation is not aborted as early as before
8054  - modified c-MIR cut separator to more closely resemble the original version of Marchand and Wolsey
8055 
8056 - Constraint:
8057  - possibility of SAT-like restarts after a number of conflict constraints have been found
8058  - improved presolving of and, or and xor constraints
8059  - implemented additional dual presolving in linear constraint handler
8060  - slightly modified presolving of varbound constraint handler
8061 
8062 Interface changes
8063 -----------------
8064 
8065 ### New and changed callbacks
8066 
8067 - new parameter `solinfeasible` for constraint handler callback methods `ENFOLP` and `ENFOPS`
8068 - replaced callback parameter `inlploop` and `inplunging` by `heurtiming` in `SCIP_DECL_HEUREXEC`
8069 - slightly changed the meaning of the result codes returned by external relaxators: if they modify the LP or tighten
8070  bounds of variables, they are not automatically be called again (it is assumed that they already made use of these
8071  changes). They are only called again, if they returned `SCIP_SUSPENDED` or if some other plugin modified the LP.
8072 
8073 ### Deleted and changed API methods
8074 
8075 - new parameter `escapecommand` for SCIPdialoghdlrAddHistory()
8076 - removed method SCIPgetVarData(); use SCIPvarGetData() from pub_var.h instead
8077 - new calls SCIPgetLPBInvCol() and SCIPgetLPBInvACol() to access the basis inverse and simplex tableau columnwise
8078 - new parameter `ndomredsfound` of SCIPpropagateProbing()
8079 - new parameters `fixintegralrhs`, `maxfrac`, `mksetcoefs` and `fracnotinrange` in SCIPcalcMIR()
8080 - modified SCIPfixVar() such that in problem creation stage it will change the bounds as requested even if the fixing
8081  value is outside of the current bounds
8082 - replaced parameters `pseudonodes`, `duringplunging`, `duringlploop` and `afternode` by `timingmask` in
8083  SCIPincludeHeur() and constructor of ObjHeur() class use the following table to translate old settings into the new
8084  timingmask:
8085 
8086 | PSEUDONODES | DURINGPLUNGING | DURINGLPLOOP | AFTERNODE | timingmask |
8087 |-------------|----------------|--------------|-----------|---------------------------------------------------------------|
8088 | FALSE | FALSE | FALSE | FALSE | SCIP_HEURTIMING_BEFORENODE |
8089 | TRUE | FALSE | FALSE | FALSE | SCIP_HEURTIMING_BEFORENODE |
8090 | FALSE | TRUE | FALSE | FALSE | SCIP_HEURTIMING_BEFORENODE |
8091 | TRUE | TRUE | FALSE | FALSE | SCIP_HEURTIMING_BEFORENODE |
8092 | FALSE | FALSE | TRUE | FALSE | SCIP_HEURTIMING_BEFORENODE \| SCIP_HEURTIMING_DURINGLPLOOP |
8093 | TRUE | FALSE | TRUE | FALSE | SCIP_HEURTIMING_BEFORENODE \| SCIP_HEURTIMING_DURINGLPLOOP |
8094 | FALSE | TRUE | TRUE | FALSE | SCIP_HEURTIMING_BEFORENODE \| SCIP_HEURTIMING_DURINGLPLOOP |
8095 | TRUE | TRUE | TRUE | FALSE | SCIP_HEURTIMING_BEFORENODE \| SCIP_HEURTIMING_DURINGLPLOOP |
8096 | FALSE | FALSE | FALSE | TRUE | SCIP_HEURTIMING_AFTERLPPLUNGE |
8097 | TRUE | FALSE | FALSE | TRUE | SCIP_HEURTIMING_AFTERPLUNGE |
8098 | FALSE | TRUE | FALSE | TRUE | SCIP_HEURTIMING_AFTERLPNODE |
8099 | TRUE | TRUE | FALSE | TRUE | SCIP_HEURTIMING_AFTERNODE |
8100 | FALSE | FALSE | TRUE | TRUE | SCIP_HEURTIMING_AFTERLPPLUNGE \| SCIP_HEURTIMING_DURINGLPLOOP |
8101 | TRUE | FALSE | TRUE | TRUE | SCIP_HEURTIMING_AFTERPLUNGE \| SCIP_HEURTIMING_DURINGLPLOOP |
8102 | FALSE | TRUE | TRUE | TRUE | SCIP_HEURTIMING_AFTERLPNODE \| SCIP_HEURTIMING_DURINGLPLOOP |
8103 | TRUE | TRUE | TRUE | TRUE | SCIP_HEURTIMING_AFTERNODE \| SCIP_HEURTIMING_DURINGLPLOOP |
8104 
8105 - Constraints:
8106  - renamed all occurences of `removeable` by the correct English word `removable`: SCIPconsIsRemovable(),
8107  SCIPsetConsRemovable(), SCIPvarIsRemovable(), SCIPcolIsRemovable(), SCIProwIsRemovable()
8108  - new parameter `sticktonode` in SCIPcreateCons(), SCIPcreateConsAnd(), SCIPcreateConsBounddisjunction(),
8109  SCIPcreateConsKnapsack(), SCIPcreateConsLinear(), SCIPcreateConsLogicor(), SCIPcreateConsOr(),
8110  SCIPcreateConsVarbound(), SCIPcreateConsXor(), SCIPcreateConsSetpart(), SCIPcreateConsSetpack(),
8111  SCIPcreateConsSetcover(): usually, you should set this to FALSE; if you want to add constraints as node markers with
8112  node data and, e.g., use the `activate` and `deactivate` callbacks to get informed about the activation and
8113  deactivation of the node, you should set this flag to TRUE in order to make sure, that the constraint will always be
8114  associated to the node and not moved to a more global node if this would be possible
8115  - slightly changed semantics of SCIPaddConsNode() and SCIPaddConsLocal(), such that a constraint which is added to the
8116  root node now enters the global problem (and is still existing after a restart)
8117 
8118 ### New API functions
8119 
8120 - SCIPgetVerbLevel()
8121 - SCIPescapeString()
8122 - SCIPgetGlobalCutpool(), SCIPgetPoolCuts(), SCIPcutpoolGetCuts(), SCIPcutGetRow() and SCIPcutGetAge()
8123 - SCIPconsGetNLocksPos() and SCIPconsGetNLocksNeg()
8124 
8125 ### Command line interface
8126 
8127 - command shell now understands escape characters `\``,`'` and `\` which makes it possible to read in files with spaces in the
8128  name
8129 
8130 ### Interfaces to external software
8131 
8132 - updated XPress interface to XPress-MP 17 (contributed by Michael Perregaard)
8133 
8134 ### Changed parameters
8135 
8136 - changed default value of `heuristics/octane/usediffray` to FALSE
8137 - removed parameter `heuristics/octane/usediffbwray`
8138 - renamed parameter `heuristics/octane/useavgray` to `heuristics/octane/useavgnbray`
8139 - changed default value of `heuristics/rens/binarybounds` to TRUE
8140 - changed default value of `heuristics/octane/freq` to -1 in order to deactivate Octane
8141 - parameter `heuristics/feaspump/maxsols` is now strict, i.e., if n solutions were already found, the feasibility pump
8142  starts to work only if `maxsols <= n`, instead of `maxsols < n`
8143 
8144 ### New parameters
8145 
8146 - `conflict/restartnum` and `conflict/restartfac`
8147 - `heuristics/octane/useavgray`
8148 - `heuristics/octane/useavgwgtray`
8149 - `limits/absgap` to define an absolute gap limit
8150 - `separating/cmir/aggrtol`
8151 - `separating/cmir/densityscore`
8152 - `separating/cmir/fixintegralrhs`
8153 - `separating/maxruns`
8154 - `presolving/restartminred` which forbids another restart if the last one was not successful enough
8155 - `propagating/abortoncutoff`
8156 - `reading/zplreader/changedir` to control behavior of path switching of ZIMPL file reader
8157 - `reading/zplreader/parameters` to pass additional parameters to ZIMPL
8158 
8159 Build system
8160 ------------
8161 
8162 ### Makefile
8163 
8164 - added ncurses to the readline entries in the `make/make.*` files
8165 - added quotes to sed expressions in Makefile (needed under Windows)
8166 - modified makefiles for Windows/Intel
8167 - added automatic query script in the Makefile for soft-link names
8168 
8169 Fixed bugs
8170 ----------
8171 
8172 - fixed bug with string pointer copy instead of string content duplication in constructors of C++ wrapper classes
8173 - fixed bug in CPLEX interface with basis access methods that dualopt has to be called for more error status codes
8174 - fixed bug with inserting two variable bounds of the same type on the same variable with the same bounding variable but
8175  with different sign of coefficient (e.g., `x <= 10*z + 5` and `x <= -5*z + 10`); in previous version, one of the two was
8176  removed, although both have a useful meaning; now, we keep both and detect a stronger global bound in the implication graph presolving
8177 - objective function is now also checked for integrality after problem transformation (fixed a bug that a solution which
8178  was generated between transformation and presolving for an integral objective function did not reduce the cutoff bound by one)
8179 - fixed a bug with cmir cut efficacy calculation (however, on my first tests, the performance reduced slightly!)
8180 - fixed bug that SCIPvarGetAvgSol() always returned the upper bound (affected guided diving heuristic)
8181 - fixed bug in RENS, RINS, Local Branching, Crossover and Mutation heuristics with wrong variable-subvariable assignments
8182 - fixed bug in infeasible/bound-exceeding LP conflict analysis if the bounds were relaxed in diving (happens in intshifting heuristic)
8183 
8184 - Separation:
8185  - fixed bug with adding constraints with `INITIAL=true` and separating them afterwards, which lead to a second addition of
8186  the constraint's relaxation in the child node
8187  - separation LPs are now immediately resolved after a bound change was generated by a cut separator; before, the
8188  separation round was prematurely aborted, which means that a separation round limit was sometimes reached very quickly
8189  and some of the separators were not even called a single time
8190 
8191 - Cmir Cut Separator:
8192  - too large deltas are now also rejected in c-MIR cut separation
8193  - fixed bug in cmir cut separator, that 8*delta was not tried
8194  - fixed bug in cmir cut separator with wrong sign of slack in row score function
8195  - fixed bug in cmir cut separator with weights fixed to zero, thus making the current aggregation invalid
8196  - fixed bug in cmir cut separator with wrong calculation of cut efficacies
8197 
8198 @page RN08 Release notes for SCIP 0.8
8199 
8200 @section RN082 SCIP 0.8.2
8201 *************************
8202 
8203 Features
8204 --------
8205 
8206 - additional flag `delay` for pricers
8207 - new propagator `rootredcost` which applies reduced cost fixing at the root node whenever a best new primal solution was found
8208 - new separator `redcost` which replaces the internal reduced cost strengthening
8209 
8210 - LP:
8211  - extensions to the LP are kept even if the LP is not solved at the current node; however, if the LP turned out to be
8212  numerically instable, the extensions of the current node are still discarded
8213  - added removal of bound-redundant rows from the LP during root node LP solving loop
8214  - new display column `lpobj`
8215 
8216 - Constraints:
8217  - slightly changed priorities of constraint handlers
8218  - now, conflict constraints are also created if they were generated in strong branching or diving with insertion depth
8219  equal to the current depth
8220  - new constraint handler `bounddisjunction`
8221 
8222 - Readers:
8223  - renamed `sol` file reader to `fix` file reader (reads partial solution files and fixes variables to the given values)
8224  - added `sol` file reader which reads complete solution files and adds the solutions to the solution pool
8225  - LP and MPS file readers are now able to parse lazy constraints and user cuts sections
8226 
8227 - Presolver:
8228  - knapsack presolver now generates cliques in the clique table (this essentially solves `neos1.mps`)
8229  - new presolver `inttobinary`
8230 
8231 - Heuristics:
8232  - new primal heuristic `shifting`
8233  - diving heuristics abort earlier (did not come back in reasonable time on `fast0507`)
8234 
8235 Interface changes
8236 -----------------
8237 
8238 - new solution status code `SCIP_STATUS_STALLNODELIMIT`
8239 
8240 ### New and changed callbacks
8241 
8242 - slightly modified semantics of the `CONSINITLP` callback in the constraint handlers
8243 
8244 ### Deleted and changed API methods
8245 
8246 - methods SCIPisLbBetter() and SCIPisUbBetter() have an additional parameter and slightly different meaning (they now
8247  compare the bound improvement *relatively* to the width of the domain and the bound itself)
8248 - SCIPgetNSols() now returns an int instead of `SCIP_Longint`
8249 - method SCIPreadProb() does not call SCIPfreeTransform() anymore; file readers that want to extend the existing problem
8250  must now call SCIPfreeTransform() themselves before modifying the original problem
8251 - method SCIPgetBinvarRepresentative() can now also be called in problem creation stage
8252 - additional parameter `maxpricerounds` in method SCIPsolveProbingLPWithPricing()
8253 - changed name of method SCIPpresolGetNVarTypes() to SCIPpresolGetNChgVarTypes()
8254 - method SCIPsplitFilenames() now treats both versions of slashes, `/` and `\`, as directory delimiters (under MinGW and
8255  CygWin, both are valid; so, we cannot treat file names anymore where the other slash is used as a regular character)
8256 
8257 - Constraints:
8258  - marking a constraint to be `initial` now means in addition, that if the constraint is added to a local node it will
8259  enter the LP at the time the node is first processed, even if parameters forbid separation at this node
8260  - changed name of method SCIPconshdlrGetNVarTypes() to SCIPconshdlrGetNChgVarTypes()
8261 
8262 - Conflicts:
8263  - method SCIPgetNConflictClausesFound() renamed to SCIPgetNConflictConssFound()
8264  - method SCIPgetNConflictClausesFoundNode() renamed to SCIPgetNConflictConssFoundNode()
8265  - method SCIPgetNConflictClausesApplied() renamed to SCIPgetNConflictConssApplied()
8266 
8267 ### New API functions
8268 
8269 - SCIPsolveProbingLPWithPricing()
8270 - SCIPchgVarLbRoot() and SCIPchgVarUbRoot()
8271 - SCIPinRepropagation()
8272 - SCIPaddDialogInputLine() and SCIPaddDialogHistoryLine()
8273 - SCIPtransformProb() to create the transformed problem; enables the user, e.g., to add primal solutions before the presolving begins
8274 - SCIPcreateSolCopy()
8275 - SCIPareSolsEqual()
8276 
8277 - Getters:
8278  - SCIPgetRowKnapsack(), SCIPgetRowLinear(), SCIPgetRowLogicor(), SCIPgetRowSetppc(), and
8279  SCIPgetRowVarbound() for obtaining the linear relaxation of a corresponding constraint
8280  - SCIPgetLhsVarbound(), SCIPgetRhsVarbound(), SCIPgetVarVarbound(), SCIPgetVbdvarVarbound(), and
8281  SCIPgetVbdcoefVarbound()
8282  - SCIPgetLPRootObjval(), SCIPgetLPRootColumnObjval() and SCIPgetLPRootLooseObjval()
8283  - SCIPcolGetMinPrimsol() and SCIPcolGetMaxPrimsol()
8284  - SCIPgetFocusDepth()
8285 
8286 - Score:
8287  - SCIPgetAvgPseudocostScore()
8288  - SCIPgetAvgPseudocostScoreCurrentRun()
8289  - SCIPgetAvgConflictScore()
8290  - SCIPgetAvgConflictScoreCurrentRun()
8291  - SCIPgetAvgInferenceScore()
8292  - SCIPgetAvgInferenceScoreCurrentRun()
8293  - SCIPgetAvgCutoffScore()
8294  - SCIPgetAvgCutoffScoreCurrentRun()
8295 
8296 - Reduced Cost:
8297  - SCIPgetColRedcost()
8298  - SCIPvarGetRootRedcost()
8299 
8300 - Variables:
8301  - SCIPgetNVarsAnd() and SCIPgetVarsAnd()
8302  - SCIPgetWeightsKnapsack(), SCIPgetNVarsKnapsack(), SCIPgetVarsKnapsack() and SCIPgetWeightsKnapsack()
8303  - SCIPgetNVarsLinear(), SCIPgetVarsLinear() and SCIPgetValsLinear()
8304  - SCIPgetNVarsOr() and SCIPgetVarsOr()
8305  - SCIPgetNVarsXor() and SCIPgetVarsXor()
8306 
8307 ### Command line interface
8308 
8309 - command line syntax changed to support batch modus without piping stdin with `<` or `|` operators
8310 - advanced command line syntax:
8311  - `-l <logfile> `: copy output into log file
8312  - `-q `: suppress screen messages
8313  - `-s <settings> `: load parameter settings (.set) file
8314  - `-f <problem> `: load and solve problem file
8315  - `-b <batchfile>`: load and execute dialog command batch file (can be used multiple times)
8316  - `-c <command> `: execute single line of dialog commands (can be used multiple times)
8317 
8318 ### Interfaces to external software
8319 
8320 ### Changed parameters
8321 
8322 - removed parameter `propagating/redcostfreq`, because reduced cost strengthening is now an external separator plugin
8323 - removed parameter `conflict/maxunfixed`
8324 - parameter `conflict/maxclauses` renamed to `conflict/maxconss`
8325 - parameter `conflict/interclauses` renamed to `conflict/interconss`
8326 - parameter `conflict/reconvclauses` replaced by `conflict/reconvlevels`
8327 - parameter `conflict/uselp` replaced by `conflict/useinflp` and `conflict/useboundlp`
8328 - changed default value of `constraints/obsoleteage` to -1
8329 - changed default value of `branching/relpscost/conflictweight` to 0.01
8330 - changed default value of `branching/relpscost/inferenceweight` to 0.0001
8331 - changed default value of `branching/relpscost/cutoffweight` to 0.0001
8332 - in bfs node selector, parameter `minplungedepth` is now stronger than `maxplungedepth` if they conflict
8333 
8334 ### New parameters
8335 
8336 - `constraints/linear/separateall`
8337 - `conflict/lpiterations`
8338 - `conflict/keepreprop`
8339 - `branching/relpscost/conflictweight`, `branching/relpscost/inferenceweight`,
8340  `branching/relpscost/cutoffweight` and `branching/relpscost/pscostweight`
8341 - `conflict/settlelocal`
8342 - `conflict/depthscorefac`
8343 - `limits/stallnodes`
8344 
8345 Build system
8346 ------------
8347 
8348 ### Makefile
8349 
8350 - removed ncurses and pthread libraries from the Makefile; pthread is now only linked if CPLEX is used
8351 
8352 Fixed bugs
8353 ----------
8354 
8355 - fixed numerical bug in SCIPrealToRational() [thanks to Anders Schack-Nielsen]
8356 - fixed bug in crossover heuristic with negative timelimit
8357 - removed bug in conflict analysis with wrong redundancy check
8358 - fixed bug that unexpected end of stdin (Ctrl-D or piped-in file without `quit` command) gives a segmentation fault
8359 - fixed bug with inconsistent data structures after a global bound was changed at a local subproblem and the local
8360  bounds are not contained anymore in the new global bounds
8361 - fixed dependency generation in example Makefiles
8362 
8363 - Knapsack:
8364  - fixed bug in knapsack presolving with redundancy check after applyFixings() [thanks to Anders Schack-Nielsen]
8365  - fixed bug in knapsack separator with empty initial covers
8366  - fixed bug in knapsack constraint disaggregation that may lead to acceptance of infeasible solutions
8367  - fixed bug in knapsack constraint handler where a modifiable constraint may be declared redundant
8368 
8369 - LP:
8370  - fixed bug with missing LP size updates after pricing or cut separation in probing [thanks to Marc Nuenkesser]
8371  - fixed bug in CPLEX interface with getting basis information after the LP was modified and restored
8372  - fixed bug with updating LP size in probing
8373  - fixed bug that SCIPgetLPSolstat() returns a valid status code even if the LP was not yet constructed for the current node
8374 
8375 - Variables:
8376  - fixed bug with invalid lazy updates after a restart where the LP is not solved again (e.g., due to all variables being fixed)
8377  - fixed bugs resulting from inactive general integer variables being member of the variable bounds array of a variable
8378  - fixed bug in updatePseudocost() with wrong lpgain distribution on multiple branching variables [thanks to Anders Schack-Nielsen]
8379  - fixed bug in objconshdlr.h where member variable scip_maxprerounds_ was declared as an `SCIP_Bool` instead of an int
8380  - branching on nearly-integral variables is now avoided in relpscost branching, which lead to a numerical assertion
8381 
8382 - Implication:
8383  - fixed bug with adding implications that fix the implication variable to the opposite value (due to the bug, it was
8384  returned that the whole problem is infeasible)
8385  - removed wrong assert in varRemoveImplicsVbs()
8386 
8387 - Cliques:
8388  - fixed bug in SCIPcliqueSearchVar() [thanks to Anders Schack-Nielsen]
8389  - fixed bug in SCIPcliqueAddVar() [thanks to Anders Schack-Nielsen]
8390 
8391 - Readers:
8392  - fixed bug in MPS file reader with `OBJSENSE`
8393  - fixed bug in LP reader with potentially uninitialized pointers [thanks to Martin Mueller]
8394 
8395 - Constraints:
8396  - it is now possible to branch on constraints without the risk of going into an infinite loop, because constraints marked as `initial`
8397  will be put to the LP relaxation (of the child nodes) even if separation is prohibited by the parameter settings
8398  - fixed bug that locally valid varbound constraints produce VLB/VUB entries [thanks to Anders Schack-Nielsen]
8399 
8400 @section RN081 SCIP 0.8.1
8401 *************************
8402 
8403 Features
8404 --------
8405 
8406 - improved performance of the priority queue in conflict analysis
8407 - slightly modified restartdfs node selector
8408 
8409 - Presolving:
8410  - new presolver `implics` to find bound changes and aggregations out of the implication graph
8411  - modified probing order in probing presolver
8412 
8413 - Constraints:
8414  - changed handling of added constraints in separation calls
8415  - modified bookkeeping of locally added and disabled constraints such that the order of enabling and disabling constraints stays the same
8416  - logic or constraint handler now adds implications on clauses with 2 literals to the implication graph
8417  - and/or constraint handlers now add implications to the implication graph
8418  - xor constraint handler now uses stronger LP relaxation without auxiliary variable for xor constraint with 2 operands
8419 
8420 - Heuristics:
8421  - added preliminary version of `intdiving` heuristic (disabled in default settings)
8422  - added crossover heuristic
8423 
8424 - Readers:
8425  - LP file reader now accepts the keyword `Integer` for defining the start of the integer variables section
8426  - new file reader for (partial) solutions
8427 
8428 Examples and applications
8429 -------------------------
8430 
8431 - added two small pricer examples (for C and C++)
8432 - updated example code (s.t. it compiles again)
8433 
8434 Interface changes
8435 -----------------
8436 
8437 ### New and changed callbacks
8438 
8439 - callback method `CONSSEPA` of constraint handler was split into two methods `CONSSEPALP` and `CONSSEPASOL`
8440 - callback method `SEPAEXEC` of separator was split into two methods `SEPAEXECLP` and `SEPAEXECSOL`
8441 
8442 ### Deleted and changed API methods
8443 
8444 - replaced method SCIPsepaWasDelayed() by SCIPsepaWasLPDelayed() and SCIPsepaWasSolDelayed()
8445 - additional parameter `sol` for methods SCIPaddCut(), SCIPgetCutEfficacy() and SCIPisCutEfficacious()
8446 - additional parameter `sol` for method SCIPseparateKnapsackCover()
8447 - primal solutions may now contain values marked to be unknown (value is `SCIP_UNKNOWN`); unknown values don't contribute
8448  to the objective value of the solution; an unknown solution value should be treated as an arbitrary value in the
8449  variable's bounds, e.g., in the calculation of the feasibility of a constraint, a value inside the variable's bounds
8450  should be selected that makes the constraint as feasible as possible
8451 - new parameter `printzeros` for methods SCIPprintSol(), SCIPprintTransSol(), SCIPprintBestSol() and SCIPprintBestTransSol()
8452 
8453 - Constraints:
8454  - replaced method SCIPconshdlrWasSeparationDelayed() by two methods SCIPconshdlrWasLPSeparationDelayed() and
8455  SCIPconshdlrWasSolSeparationDelayed()
8456  - renamed method SCIPgetNGlobalConss() to SCIPgetNConss()
8457 
8458 ### New API functions
8459 
8460 - SCIPgetCuts()
8461 - SCIPgetVarConflictScore() and SCIPgetVarConflictScoreCurrentRun()
8462 - SCIPvarSetData()
8463 - SCIPcreateUnknownSol()
8464 - SCIPgetNConflictClausesFoundNode()
8465 - SCIPvarSetDelorigData(), SCIPvarSetTransData() and SCIPvarSetDeltransData()
8466 - SCIPvarHasBinaryImplic()
8467 - SCIPgetFixedVars() and SCIPgetNFixedVars()
8468 - SCIPgetConss(), SCIPgetNOrigConss() and SCIPgetOrigConss()
8469 - SCIPsepaGetNConssFound() and SCIPsepaGetNDomredsFound()
8470 - SCIPconstructLP() to force constructing the LP of the current node
8471 - SCIPisLPConstructed()
8472 
8473 ### Command line interface
8474 
8475 - added `write statistics` command to default user dialogs
8476 
8477 ### Changed parameters
8478 
8479 - modified meaning of parameter `presolving/probing/maxtotaluseless`
8480 - heuristics with `freq = 0` and `freqofs > 0` are now called in depth level freqofs instead of being called in the root
8481  node
8482 - added some parameters in local branching and RINS heuristic
8483 - new parameter values `p`rimal simplex and `d`ual simplex in `lp/initalgorithm` and `lp/resolvealgorithm`
8484 
8485 ### New parameters
8486 
8487 - `branching/inference/conflictweight`
8488 
8489 Build system
8490 ------------
8491 
8492 ### Makefile
8493 
8494 - included version number in binary file name
8495 - tried to make the code Windows compatible
8496 
8497 Fixed bugs
8498 ----------
8499 
8500 - also removed history_length, if `NO_REMOVE_HISTORY` is defined to support older versions of the readline library
8501 - hopefully fixed bug with wrong path slash `/` under Windows
8502 - fixed bug with aggregating fixed variables
8503 
8504 - Implications:
8505  - fixed bug in transitive implication addition
8506  - fixed wrong assert with implications that imply a fixed variable
8507  - removed bug in implication addition
8508 
8509 - Readers:
8510  - fixed bug in ZIMPL model reader with wrong chdir, if .zpl file is in current directory
8511  - fixed bug in LP file reader with signed values without space between sign and value (e.g. `+2x` instead of `+ 2x`)
8512  - fixed various bugs in LP file reader
8513  - fixed bug in LP file reader with explicit zero coefficients
8514 
8515 - Numerics:
8516  - fixed numerics in probing and linear constraint handler (rentacar was detected to be infeasible in presolving)
8517  - fixed numerics in check method of linear constraint handler
8518  - fixed bug with numerical error in LP resolve after probing or diving
8519 
8520 - Heuristics:
8521  - fixed bug with calling heuristics in depths smaller than their frequency offset
8522  - fixed bugs in local branching and RINS heuristic
8523 
8524 Known bugs
8525 ----------
8526 
8527 - if one uses column generation and restarts, a solution that contains variables that are only present in the
8528  transformed problem (i.e., variables that were generated by a pricer) is not pulled back into the original space
8529  correctly, since the priced variables have no original counterpart
8530 
8531 @section RN080 SCIP 0.8.0
8532 *************************
8533 
8534 Features
8535 --------
8536 
8537 - adding variable bounds automatically adds the corresponding implication
8538 - changed restart dfs nodeselector to sort leaves by node number instead of node depth to aviod jumping around in the
8539  search tree after a restart was applied and the current dive ended due to infeasibility
8540 - new Message Handler plugin
8541 - added file reader for LP format
8542 - introduced subversion string
8543 - replaced all abort() calls by SCIPABORT(); this is defined in def.h to be `assert(FALSE)`
8544 - added possibility to disable certain features by using `make USRFLAGS=-DNO_REMOVE_HISTORY`, `make
8545  USRFLAGS=-DNO_SIGACTION`, `make USRFLAGS=-DNO_RAND_R`, or `make USRFLAGS=-DNO_STRTOK_R`
8546 - improved preprocessing abort criteria
8547 - added zlib support
8548 
8549 - Conflict Analysis:
8550  - conflict clauses are now collected in a conflict store, redundant clauses are eliminated and only the best `conflict/maxclauses`
8551  clauses are added permanently to the problem; the remaining clauses are only added temporarily, if they can be used for repropagation
8552  - modified the influence of the depth level in conflict analysis
8553  - slightly changed LP resolving loop in conflict analysis
8554  - if CPLEX returns that the LP exceeds the bound and if no additional LP solves are allowed in conflict analysis, we
8555  have to perform one additional simplex iteration to get the dual solution that actually violates the objective limit
8556 
8557 - Constraints:
8558  - reactivated multiaggregation in cons_linear.c on binary variables again (possible due to bug fix below)
8559  - improved preprocessing of variable bounds constraints
8560  - linear constraint handler now catches events of variables after the problem was completely transformed in order to
8561  avoid the whole bunch of `LOCKSCHANGED` events that are generated at problem transformation stage
8562  - added redundancy detection for pairs of constraints in setppc constraint handler
8563 
8564 - Presolving and Cliques:
8565  - changed linear constraint presolving s.t. redundant sides are not removed if constraint is an equality
8566  - new event type `SCIP_EVENTTYPE_PRESOLVEROUND`
8567  - modified probing presolver to not add implications that are already included in the implication graph and clique table
8568  - incorporated clique and implication information in knapsack constraint presolving
8569  - removed transitive clique generation, because this produces way too many cliques
8570 
8571 - Heuristics:
8572  - diving heuristics now apply propagation at each step
8573  - removed `objfeaspump` heuristic, because the functionality can be achieved by using the `feaspump` heuristic
8574  - diving heuristics are now applying propagation after each bound change
8575  - new primal heuristic `octane`
8576  - slightly changed feaspump heuristic, s.t. after finding a new best solution the target integral solution is modified randomly
8577 
8578 - Separation and Cuts:
8579  - improved debugging for infeasible cuts and propagations, given a primal feasible solution
8580  - improved knapsack cover separation
8581  - improved performance of c-MIR separator
8582  - cut pool is now also separated in root node (to find cuts again that were removed from the LP due to aging)
8583 
8584 Interface changes
8585 -----------------
8586 
8587 - new event type `SCIP_EVENTTYPE_VARDELETED`
8588 - new event `SCIP_EVENTTYPE_IMPLADDED`
8589 - new event types `SCIP_EVENTTYPE_GLBCHANGED` and `SCIP_EVENTTYPE_GUBCHANGED`
8590 
8591 ### New and changed callbacks
8592 
8593 - new callback parameter `validnode` for the `CONFLICTEXEC` method of conflict handlers, which should be passed to
8594  SCIPaddConsNode()
8595 
8596 ### Deleted and changed API methods
8597 
8598 - additional parameter `validnode` for SCIPaddConsLocal() and SCIPaddConsNode()
8599 - SCIPhashtableRemove() can now also be called, if the element does not exist in the table
8600 - SCIPhashmapRemove() can now also be called, if the element does not exist in the map
8601 - additional parameter `branchdir` for SCIPbranchVar()
8602 - replaced method SCIPmessage() by SCIPverbMessage() with additional parameter `file`
8603 - put block memory shell and tclique algorithm into separate subdirectories
8604 - new parameter `duringlploop` of SCIPincludeHeur(): heuristics can now run during the price-and-cut loop at a node
8605 
8606 ### New API functions
8607 
8608 - SCIPgetNConflictClausesApplied()
8609 - SCIPgetNConflictClausesApplied()
8610 - SCIPhashtableExists()
8611 - SCIPhashmapExists()
8612 - SCIPnodeGetNumber()
8613 - SCIPsolveProbingLP() to solve the LP in a probing node (enables mixing of propagation and LP solving for diving heuristics)
8614 - SCIProwGetDualfarkas()
8615 - SCIPgetCurrentNode()
8616 - SCIPinterruptSolve()
8617 - SCIPpropagateProbingImplications()
8618 - SCIPgetLPI() which makes all methods in scip/lpi.h available to the user
8619 - SCIPgetRandomInt() and SCIPgetRandomReal()
8620 - SCIPstrtok()
8621 - SCIPheurGetNBestSolsFound()
8622 
8623 - Variables:
8624  - SCIPdelVar()
8625  - SCIPgetVarStrongbranchLPAge()
8626  - SCIPvarIsTransformedOrigvar()
8627  - SCIPvarIsDeleted()
8628 
8629 - Messages and IO:
8630  - SCIPerrorMessage()
8631  - SCIPwarningMessage()
8632  - SCIPdialogMessage()
8633  - SCIPinfoMessage()
8634  - SCIPsetMessagehdlr()
8635  - SCIPsetDefaultMessagehdlr()
8636  - SCIPgetMessagehdlr()
8637  - new file i/o methods SCIPfopen(), SCIPfclose(), SCIPfprintf(), ... that operate on the data type `SCIPFILE`; these
8638  methods automatically use zlib methods if the zlib is enabled
8639 
8640 - Cliques:
8641  - SCIPvarGetNCliques()
8642  - SCIPvarGetCliques()
8643  - SCIPvarsHaveCommonClique()
8644  - SCIPvarHasImplic()
8645  - SCIPcliqueGetNVars()
8646  - SCIPcliqueGetVars()
8647  - SCIPcliqueGetValues()
8648  - SCIPcliqueGetId()
8649  - SCIPaddClique()
8650  - SCIPcalcCliquePartition()
8651 
8652 - Constraint handler:
8653  - SCIPgetDualfarkasLinear() of linear constraint handler
8654  - SCIPgetDualfarkasLogicor() of logicor constraint handler
8655  - SCIPgetDualfarkasSetppc() of setppc constraint handler
8656  - SCIPgetDualsolKnapsack() of knapsack constraint handler
8657  - SCIPgetDualfarkasKnapsack() of knapsack constraint handler
8658  - SCIPgetDualsolVarbound() of varbound constraint handler
8659  - SCIPgetDualfarkasVarbound() of varbound constraint handler
8660  - SCIPconsGetValidDepth()
8661  - SCIPsetConsInitial()
8662  - SCIPsetConsSeparated()
8663  - SCIPsetConsEnforced()
8664  - SCIPsetConsChecked()
8665  - SCIPsetConsPropagated()
8666  - SCIPsetConsLocal()
8667  - SCIPsetConsDynamic()
8668  - SCIPsetConsRemoveable()
8669 
8670 ### Command line interface
8671 
8672 - added command `write solution` to default dialog
8673 - added commands `write problem` and `write transproblem` to default dialog
8674 
8675 ### Changed parameters
8676 
8677 - additional setting `SCIP_VERBLEVEL_DIALOG` in `display/verblevel` parameter
8678 - additional LP pricing setting `partial`
8679 - replaced parameter `presolving/restartbdchgs` with parameters `presolving/maxrestarts` and `presolving/restartfac`
8680 - replaced parameter `constraints/linear/maxpresolaggrrounds` with `constraints/linear/maxpresolpairrounds`
8681 - parameters `constraints/agelimit` and `constraints/obsoleteage` now iterprete the value 0 as a dynamic setting
8682 - number of fractional variables included in parameter `separating/maxstallrounds`
8683 
8684 - Changed default values:
8685  - changed default values of `heuristics/∗/maxdiveavgquot` and `heuristics/∗/maxdiveavgquotnosol` to 0
8686  - changed default values of `constraints/agelimit` and `constraints/obsoleteage` to 0
8687  - changed default values of `heuristics/objpscostdiving/maxsols` and `heuristics/rootsoldiving/maxsols` to -1
8688  - changed default value of `separating/strongcg/maxroundsroot` to 20
8689  - changed default value of `separating/cmir/maxroundsroot` to 10
8690  - changed default value of `constraints/linear/maxaggrnormscale` to 0.0, which means to not apply aggregation
8691  - changed default value of `separating/maxstallrounds` to 5
8692  - changed default value of `presolving/probing/maxfixings` to 50
8693  - changed default parameter values to MIP settings:
8694  + `conflict/useprop` = FALSE
8695  + `conflict/usepseudo` = FALSE
8696  + `display/verblevel` = 4
8697  + `separating/poolfreq` = 0
8698  + `constraints/linear/sepafreq` = 0
8699  + `constraints/and/sepafreq` = 0
8700  + `constraints/conjunction/sepafreq` = 0
8701  + `constraints/knapsack/sepafreq` = 0
8702  + `constraints/knapsack/sepacardfreq` = 0
8703  + `constraints/logicor/sepafreq` = 0
8704  + `constraints/or/sepafreq` = 0
8705  + `constraints/setppc/sepafreq` = 0
8706  + `constraints/varbound/sepafreq` = 0
8707  + `constraints/xor/sepafreq` = 0
8708  + `separating/clique/freq` = 0
8709  + `separating/cmir/freq` = 0
8710  + `separating/gomory/freq` = 0
8711  + `separating/impliedbounds/freq` = 0
8712  + `separating/strongcg/freq` = 0
8713 
8714 ### New parameters
8715 
8716 - `branching/fullstrong/reevalage`
8717 - `conflict/maxclauses`
8718 - `conflict/allowlocal`
8719 - `constraints/knapsack/disaggregation`
8720 - `presolving/probing/maxtotaluseless`
8721 - `separating/cmir/maxfails`, `separating/cmir/maxfailsroot` and `separating/cmir/trynegscaling`
8722 
8723 ### Data structures
8724 
8725 - MAJOR CHANGE: preceeded all data types with `SCIP_`: you may use shell script reptypes_scip.sh to rename the SCIP
8726  data types in your own source code (But use with care! Create a backup copy of your source first!)
8727 
8728 Build system
8729 ------------
8730 
8731 ### Makefile
8732 
8733 - modified the Makefile to accept an additional parameter `VERBOSE={true,false}`
8734 - added flags `READLINE=true/false`, `ZLIB=true/false`, `ZIMPL=true/false` to Makefile
8735 
8736 Fixed bugs
8737 ----------
8738 
8739 - fixed minor bugs in debug code of primal.c and sol.c
8740 - variables that are being multiaggregated are now automatically removed from all other variables' variable bound and
8741  implication arrays; this fixes bugs with methods, that rely on the fact, that the entries in the variable bound and
8742  implication arrays are active variables only
8743 - aggregations are now always performed in a way, such that the variable of more general type is aggregated (with type
8744  generality being cont > implint > int > bin); in this way, a binary variable's representant is always binary (which
8745  was not the case before and resulted in a bug in SCIPgetBinvarRepresentative())
8746 - removed bug in presol_probing.c: the vars of the sorted variables array have to be captured
8747 - fixed bug in the output of solutions with priced variables
8748 - fixed bug in propagation with parameters prop_maxrounds and prop_maxroundsroot
8749 - conflict analysis can now handle errors in LP solving calls
8750 - removed bug in SCIPvarAddVlb() and SCIPvarAddVub() with fractional vlb/vubcoefs
8751 - fixed bug that primal or dual rays might not be available because the wrong solver was used
8752 - included message.o in LPI library, s.t. one can link this library indepentent of SCIP
8753 - fixed bug that if diving heuristic that changes the objective values finds a solution, the cutoff is reinstalled in
8754  the LP solver (although the objective value has no meaning due to the objective function modification)
8755 
8756 - Feasibiltiy:
8757  - LP primal feasibility for bounds is now defined as absolute measure (was relative to the bound before); this fixes a bug (see alu8_9.mps),
8758  that an LP with an integral variable fixed to a large value yields an accepted solution with that variable slightly different than the fixed
8759  value; the integrality feasibility condition is measured with absolute differences, which leads to the fixed integer variable being fractional;
8760  this leads to an error if branching is performed on this variable
8761  - fixed bug with redundant self implications that wrongly lead to the detection of infeasibility
8762  - fixed bug with potential infinite loop if a separator is delayed and the LP is infeasible
8763 
8764 - Asserts:
8765  - removed wrong asserts from lpi_cpx.c
8766  - removed wrong assertion in varAddImplic()
8767 
8768 - Numerics:
8769  - locally fixed variables are no longer used as branching candidates even if their LP solution value is fractional (due
8770  to numerical reasons, see above)
8771  - fixed numerical bug in pseudo objective propagator with only slightly tightened bounds
8772  - removed bug that an LP might be declared to be solved even if it was marked erroneous due to numerical problems
8773 
8774 - Constraint Handlers:
8775  - fixed bug in linear constraint handler with variables fixed to infinity
8776  - fixed bug with constraint handlers that can only enforce their constraints by adding cuts, but the maximal number of
8777  cuts to separate is set to 0; now, cuts that are generated in the constraint enforcement are used in any case
8778  - fixed bug in knapsack constraint presolving with tightening coefficients and capacity
8779  - fixed bug with modifiable constraints in linear constraint handler preprocessing
8780  - fixed bug in linear constraint handler that global activities are not updated after global bound changes
8781 
8782 - Separation and Cuts:
8783  - global bound changes now lead to the removal of redundant implications (such that the asserts in sepa_implbounds.c are now correct)
8784  - due to usage of variable bounds, SCIPcalcMIR() may return LOOSE variables in the cut -> modified sepa_cmir.c, sepa_gomory.c and
8785  sepa_strongcg.c to use SCIPcreateEmptyRow() and SCIPaddVarsToRow() instead of SCIPcreateRow() which only works for COLs
8786  - fixed bug in clique separator that reduced performance
8787  - increased performance of clique separator by allowing only a certain number of zero-weighted fill ins
8788 
8789 @page RN07 Release notes for SCIP 0.7
8790 
8791 @section RN079 SCIP 0.7.9
8792 *************************
8793 
8794 Features
8795 --------
8796 
8797 - aging and cleanup now only remove non-basic columns and basic rows, s.t. resolving can be applied with 0 simplex iterations
8798 - it is now possible to create subnodes in probing and use backtracking to undo probing changes
8799 - bounds of variables are included in the feasibility checks for solutions
8800 - support for barrier algorithm
8801 - changed implementation of automatic minplungedepth and maxplungedepth calculation in bfs node selector
8802 
8803 - Presolving:
8804  - new plugin: probing presolver
8805  - probing is now also possible in presolving stage
8806  - it is now possible to interrupt and continue presolving
8807 
8808 - Separation and Cuts:
8809  - new plugin: clique separator for clique cuts with at least 3 elements
8810  - new plugin: implied bound cuts separator
8811  - included debugging module to check whether cutting planes cut off the optimal solution
8812 
8813 - Branching:
8814  - changed implementation of reliability value calculation in reliability branching; slightly modified influence of
8815  maximal total number of strong branching LP iterations in reliability branching
8816  - changed implementation of maximal strong branching iterations calculation in reliability branching
8817 
8818 - Constraints:
8819  - if verblevel is at least `NORMAL`, an automatical check of the best solution is performed in the original problem, and
8820  an error message is displayed, if it violates an original constraint
8821  - due to the new constraint handler `cons_cumulative.{c,h}` SCIP can resource-constraint scheduling problem
8822  - during probing, propagation of bounds is now always performed in linear constraint handler, ignoring the parameter `tightenboundsfreq`
8823  - new implementation of the clique graph construction method in clique separator
8824  - new constraint handler `cons_cumulative.{c,h}`
8825 
8826 - Heuristics:
8827  - new implementation of the feasibility pump heuristic by Timo Berthold (replaces old implementation); old
8828  implementation is now called `objfeaspump`; parameter names have been changed accordingly
8829  - diving heuristics now compare their number of LP iterations with the number of node LP iterations instead of the total
8830  number (including their own) LP iterations
8831  - modified the automatic objfactor setting of feaspump heuristic to let the objective function have stronger influence
8832 
8833 Examples and applications
8834 -------------------------
8835 
8836 - added TSP example in `examples/TSP`
8837 
8838 Interface changes
8839 -----------------
8840 
8841 ### New and changed callbacks
8842 
8843 - new callback methods `INITSOL` and `EXITSOL` for variable pricers, primal heuristics, conflict handlers, relaxators,
8844  separators, propagators, event handlers, node selectors and display columns
8845 - callback method `CONFLICTEXEC` of conflict handlers receive additional parameters `dynamic` and `removeable`
8846 - constraint handler callback methods `CONSLOCK` and `CONSUNLOCK` are replaced by a single method `CONSLOCK` with the number
8847  of locks being positive or negative
8848 
8849 ### Deleted and changed API methods
8850 
8851 - calling SCIPaddCut() with `forcecut=TRUE` will add the cut to the LP even if it is redundant
8852 - SCIPreadProb() does not free the current problem, this is done in SCIPcreateProb() now, which is usually
8853  called by a problem reader; in this way, a reader can generate `extra information` for the current problem, s.t. the
8854  full problem information can be distributed to different files read by different readers
8855 - SCIPgetVarStrongbranch() and SCIPgetVarStrongbranchLast() now have two additional parameters that can be used
8856  to check, whether the returned values are correct dual bounds
8857 - SCIPgetBinvarRepresentative() now returns the fixed or multi-aggregated variable instead of returning `NULL` or
8858  aborting with an error message
8859 - SCIPdispDecimal() is replaced by SCIPdispInt() and SCIPdispLongint()
8860 - additional parameter `maxproprounds` in SCIPpropagateProbing()
8861 - changed memory interface (see memory.h), `MEMHDR` is now called `BLKMEM`
8862 - source code was moved into subdirectories: replace includes `scip.h` by `scip/scip.h` and
8863  `objscip.h` by `objscip/objscip.h`; This should allow a user to have include files of the same name as the ones
8864  of SCIP, e.g. `tree.h` or `var.h`.
8865 - event handlers are now available as C++ wrapper class
8866 - new flag `afterrelaxation` for primal heuristics
8867 
8868 - Solution:
8869  - removed method SCIPsolGetObj(), use SCIPgetSolOrigObj() or SCIPgetSolTransObj() instead
8870  - additional parameter `checkbounds` for SCIPtrySol(), SCIPtrySolFree(), SCIPcheckSol()
8871 
8872 - Variables:
8873  - SCIPvarLock(), SCIPvarLockDown(), SCIPvarLockUp(), SCIPvarLockBoth(), SCIPvarUnlock(), SCIPvarUnlockDown(),
8874  SCIPvarUnlockUp() and SCIPvarUnlockBoth() are replaced by SCIPaddVarLocks() which returns a `RETCODE`
8875  - SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), SCIPvarGetLbLocal() and SCIPvarGetUbLocal() now return the
8876  corresponding values of the transformed problem or current subproblem even for original problem variables
8877  - SCIPvarGetProbvar(), SCIPvarGetProbvarBinary() now return the fixed or multi-aggregated variable instead of
8878  returning `NULL` or aborting with an error message; in SCIPvarGetProbvarBinary(), the fixing of a fixed variable does
8879  not influence the negation status anymore
8880  - SCIPvarGetProbvarBound() returns the multi-aggregated variable instead of aborting with an error message
8881  - SCIPvarGetProbvarSum() does not set *var to `NULL` for fixed variables anymore; it may also return a
8882  multi-aggregated variable instead of aborting with an error message
8883  - SCIPaddVarImplication() now also adds variable lower and upper bounds, if the implied variable is non-binary
8884  - additional parameter `aggregated` in SCIPmultiaggregateVars()
8885 
8886 - Constraints:
8887  - SCIPvarLockDownCons(), SCIPvarLockUpCons(), SCIPvarUnlockDownCons() and SCIPvarUnlockUpCons() are replaced by
8888  SCIPlockVarCons() and SCIPunlockVarCons() which return a `RETCODE`
8889  - SCIPlockConsVars() and SCIPunlockConsVars() replaced with method SCIPaddConsLocks()
8890  - SCIPconshdlrGetNConss() is replaced by SCIPconshdlrGetNActiveConss() (returning the number of active
8891  constraints); method SCIPconshdlrGetNConss() does now return the total number of existing constraints, active and inactive
8892  - SCIPconshdlrGetStartNConss() is now called SCIPconshdlrGetStartNActiveConss()
8893  - SCIPconshdlrGetMaxNConss() is now called SCIPconshdlrGetMaxNActiveConss()
8894  - SCIPdisableConsNode() is replaced by SCIPdelConsNode()
8895  - SCIPdisableConsLocal() is replaced by SCIPdelConsLocal()
8896  - added new parameter `dynamic` to SCIPcreateCons() and all plugin methods SCIPcreateCons...()
8897 
8898 ### New API functions
8899 
8900 - SCIPgetObjNorm()
8901 - SCIPcreateOrigSol()
8902 - SCIPwriteImplicationConflictGraph()
8903 - SCIPinProbing()
8904 - SCIPgetProbName()
8905 - SCIPgetVarNStrongbranchs()
8906 - SCIPcolGetNStrongbranchs()
8907 - SCIPfindSimpleRational()
8908 - SCIPselectSimpleValue()
8909 
8910 - Variables:
8911  - SCIPvarGetLbOriginal()
8912  - SCIPvarGetUbOriginal()
8913  - SCIPvarGetImplIds()
8914  - SCIPvarGetOrigvarSum()
8915 
8916 - Constraints:
8917  - SCIPenableCons()
8918  - SCIPdisableCons()
8919  - SCIPenableConsSeparation()
8920  - SCIPdisableConsSeparation()
8921  - SCIPconsIsSeparationEnabled()
8922 
8923 - Averages:
8924  - SCIPgetAvgPseudocost()
8925  - SCIPgetAvgPseudocostCurrentRun()
8926  - SCIPgetAvgPseudocostCount()
8927  - SCIPgetAvgPseudocostCountCurrentRun()
8928  - SCIPgetAvgInferences()
8929  - SCIPgetAvgInferencesCurrentRun()
8930  - SCIPgetAvgCutoffs()
8931  - SCIPgetAvgCutoffsCurrentRun()
8932 
8933 - LPs:
8934  - SCIPisLPSolBasic() to check, whether the current LP solution is basic (i.e. due to a simplex algorithm or barrier with crossover)
8935  - SCIPgetNPrimalLPs()
8936  - SCIPgetNPrimalLPIterations()
8937  - SCIPgetNDualLPs()
8938  - SCIPgetNDualLPIterations()
8939  - SCIPgetNBarrierLPs()
8940  - SCIPgetNBarrierLPIterations()
8941  - SCIPgetNPrimalResolveLPs()
8942  - SCIPgetNPrimalResolveLPIterations()
8943  - SCIPgetNDualResolveLPs()
8944  - SCIPgetNDualResolveLPIterations()
8945 
8946 - Delayed:
8947  - SCIPsepaIsDelayed()
8948  - SCIPsepaWasDelayed()
8949  - SCIPpropIsDelayed()
8950  - SCIPpropWasDelayed()
8951  - SCIPpresolIsDelayed()
8952  - SCIPpresolWasDelayed()
8953  - SCIPconshdlrIsSeparationDelayed()
8954  - SCIPconshdlrIsPropagationDelayed()
8955  - SCIPconshdlrIsPresolvingDelayed()
8956  - SCIPconshdlrWasSeparationDelayed()
8957  - SCIPconshdlrWasPropagationDelayed()
8958  - SCIPconshdlrWasPresolvingDelayed()
8959 
8960 ### Command line interface
8961 
8962 - command line history in interactive shell now only stores useful commands
8963 
8964 ### Interfaces to external software
8965 
8966 - removed storing of dual norms in LPI state of CPLEX interface (too memory consuming)
8967 
8968 ### Changed parameters
8969 
8970 - default frequency offset of fracdiving heuristic changed to 3
8971 - default frequency offset of (new) feaspump heuristic changed to 0
8972 - default frequency offset of objfeaspump heuristic changed to 8
8973 - changed default priority of primal heuristics
8974 - renamed parameter `limits/sol` to `limits/solutions`
8975 - changed default check priority of knapsack constraint handler to -600000
8976 - changed default priority of Gomory cut separator to -1000 (will now be called after constraint handlers!)
8977 - changed default priority of strong CG cut separator to -2000
8978 - changed default priority of cmir cut separator to -3000
8979 - changed default of parameter `lp/pricing` to `s`teepest edge pricing
8980 - default parameter `branching/relpscost/minreliable` changed to 1.0
8981 - default parameter `branching/relpscost/maxlookahead` changed to 8
8982 - default parameter `branching/relpscost/sbiterofs` changed to 100000
8983 - default parameter `heuristics/coefdiving/maxlpiterquot` changed to 0.05
8984 - default parameter `heuristics/fracdiving/maxlpiterquot` changed to 0.05
8985 - default parameter `heuristics/guideddiving/maxlpiterquot` changed to 0.05
8986 - default parameter `heuristics/linesearchdiving/maxlpiterquot` changed to 0.05
8987 - default parameter `heuristics/pscostdiving/maxlpiterquot` changed to 0.05
8988 - default parameter `heuristics/feaspump/freq` changed to 20
8989 - default parameter `heuristics/objfeaspump/freq` changed to 20
8990 - default parameter `heuristics/objpscostdiving/freq` changed to 20
8991 - default parameter `heuristics/rootsoldiving/freq` changed to 20
8992 - default parameter `separating/clique/maxtreenodes` changed to -1
8993 
8994 ### New parameters
8995 
8996 - new parameter delay for presolvers
8997 - new parameter delaypresol for constraint handlers
8998 - `branching/scorefunc`
8999 - `constraints/.../delaypresol`
9000 - `constraints/.../delayprop`
9001 - `constraints/.../delaysepa`
9002 - `conflict/dynamic`
9003 - `conflict/removeable`
9004 - `heuristics/coefdiving/maxlpiterofs`
9005 - `heuristics/feaspump/maxlpiterofs`
9006 - `heuristics/feaspump/maxsols`
9007 - `heuristics/fracdiving/maxlpiterofs`
9008 - `heuristics/guideddiving/maxlpiterofs`
9009 - `heuristics/linesearchdiving/maxlpiterofs`
9010 - `heuristics/objfeaspump/maxlpiterofs`
9011 - `heuristics/objfeaspump/maxsols`
9012 - `heuristics/objpscostdiving/maxlpiterofs`
9013 - `heuristics/objpscostdiving/maxsols`
9014 - `heuristics/pscostdiving/maxlpiterofs`
9015 - `heuristics/rootsoldiving/maxlpiterofs`
9016 - `heuristics/rootsoldiving/maxsols`
9017 - `heuristics/fixandinfer/proprounds` and `heuristics/fixandinfer/minfixings`
9018 - `lp/cleanupcolsroot` and `lp/cleanuprowsroot` to distinguish cleanup settings between root node and other nodes
9019 - `lp/checkstability` to disable stability check of LP solver's result code
9020 - `lp/initalgorithm` and `lp/resolvealgorithm` for switching between simplex and barrier algorithm
9021 - `lp/pricing` to set the pricing strategy used in the LP solver
9022 - `numerics/barrierconvtol` to set the convergence tolerance in the barrier algorithm
9023 - `presolving/.../delay`
9024 - `propagating/.../delay`
9025 - `reading/cnfreader/dynamicconss`
9026 - `reading/mpsreader/dynamicconss`
9027 - `separating/.../delay`
9028 
9029 ### Data structures
9030 
9031 - new possible result `SCIP_DELAYED` for `EXEC` method of separators, presolvers and propagators and `SEPA`, `PROP` and
9032  `PRESOL` methods of constraint handlers
9033 
9034 Fixed bugs
9035 ----------
9036 
9037 - fixed bug in MPS file reader
9038 - removed bug with applying reduced cost strengthening before pricing in all necessary variables
9039 - negated variables must also be reset in SCIPvarInitSolve()
9040 - fixed documentation of `CONSLOCK`-method (missing parameter `scip` in SCIPaddVarLocks())
9041 - included missing `objrelax.h` in includes of objscip.h
9042 - fixed bug that after a resolve and further preprocessing, existing primal solutions may get corrupted due to
9043  aggregations or fixings that are possible due to the primal bound (given by the best solution)
9044 - fixed bug with primal bound becoming wrong, if in a prior run the optimal solution was found and the cutoff bound was
9045  thereby reduced due to further domain propagation w.r.t. the objective function
9046 - fixed bug in SCIPisObjIntegral()
9047 - fixed bug in SCIPprintError() with `file == NULL`
9048 - heuristic's display character is now only shown the first time, the new solution was found
9049 - fixed bug that SCIPreadProb() doesn't discard the transformed problem
9050 - fixed bug with wrong euclidean norm calculation of row, if multiple coefficients for the same variable are added and
9051  the sorting of the row was delayed with SCIProwDelaySort()
9052 - fixed bug with adding implications: wrong insertion position, if only the lower bound change was present but not the
9053  upper bound change
9054 - fixed bug in SCIPvarAddImplics() with wrong variable used in varAdjustBd()
9055 - fixed bug in method reduced() of tclique_branch.c with sorting nodes in V
9056 
9057 - LP:
9058  - removed bug with objective norm calculation and column variables not in the LP (pricing)
9059  - LP error on forced LP resolve (due to 0 unfixed integers) now leads to an error (instead of accepting the pseudo
9060  solution as feasible)
9061  - fixed bug in CPLEX LP interface with dual norms
9062 
9063 - Presolving:
9064  - fixed bug that presolving time is not counted to solving time, if presolving is called explicitly with SCIPpresolve()
9065  - fixed bug where presolving fixings are counted even if the variable was already fixed
9066  - removed bug with dual presolver, that declared a problem to be unbounded or infeasible, if it could fix a variable to
9067  infinity even if its objective value is zero
9068  - fixed bug in knapsack constraint handler that fixed variables are sometimes not removed in presolving
9069 
9070 - Numerics:
9071  - fixed bug with unresolved numerical troubles in LP that don't render the LP useless at the current node
9072  - fixed numerical bugs in rounding heuristic and rootsoldiving heuristic
9073 
9074 - Separator:
9075  - fixed bugs in separation store with single coefficient cuts that are converted into bound changes
9076  - at least one cut per separation round is added to the LP to avoid cycling, even if the cut is redundant
9077  - fixed bug in SCIProwCalcIntegralScalar() with rows consisting of only continuous variables (appeared in gomory cut
9078  separator on miplib/dcmulti.mps)
9079  - fixed bug in linear constraint handler's knapsack relaxation separator
9080  - fixed bugs in intobj separator
9081  - fixed bug in cmir separator with empty rows
9082  - fixed bug in implied bound cut separator: only implications between binary variables were generated before
9083 
9084 - Constraint Handlers:
9085  - removed bug in knapsack constraint handler with merging multiple items if more than two items of the same variable
9086  appear in the constraint
9087  - removed bug in knapsack constraint handler with merging negated variables of equal weight at the end of the variables' array
9088  - fixed bug in linear constraint handler with eventdatas, if the original constraint has no variables
9089  - fixed bug that `CONSLOCK` method of constraint handlers that don't need constraints is not called
9090  - fixeg bug in setppc constraint handler with pairs of aggregated variables in the same constraint
9091  - fixed bug with globally deleting constraints, that have attached rows which are therefore not released in exitsol methods
9092 
9093 - Conflict analysis:
9094  - removed conflict analysis of infeasible diving LP if pricing is activated
9095  - made conflict analysis available in presolving stage (for probing conflicts)
9096 
9097 @section RN078 SCIP 0.7.8
9098 *************************
9099 
9100 Features
9101 --------
9102 
9103 - changed SCIProwCalcIntegralScalar() to a slightly different algorithm
9104 - improved knapsack relaxation in linear constraint handler separator to scale the constraint in order to get integral
9105  coefficients instead of just rounding down all coefficients
9106 - improved presolving of linear constraint handler: aggregation of two constraints with equal coefficient vector into
9107  single constraint
9108 - improved presolving of knapsack constraint handler: aggregation of equal or negated variables in same constraint
9109 
9110 - Plugins:
9111  + priority of separators, propagators and presolvers decide whether the plugin is called before the corresponding
9112  constraint handler methods or after: plugins with nonnegative priorities are called before, plugins with negative
9113  priorities are called after the constraint handlers
9114  + new plugin class for relaxators (external relaxations, that can be used in parallel with LP relaxations)
9115  + if more than one result code applies to a plugin's execution, it should return the one that is higher in the call's
9116  documentation list
9117 
9118 Interface changes
9119 -----------------
9120 
9121 - even in optimized mode, the simple functions that are implemented as defines in the include files exist in the
9122  library, s.t. one can include the include files without `NDEBUG` and use the optimized library
9123 
9124 ### New and changed callbacks
9125 
9126 - new branching rule plugin methods `INITSOL` and `EXITSOL`
9127 
9128 ### Deleted and changed API methods
9129 
9130 - removed SCIPisFeasible(); use !SCIPisFeasNegative() instead
9131 - SCIPisIntegral(), SCIPisFracIntegral(), SCIPfloor(), SCIPceil() and SCIPfrac() don't use the feasibility
9132  tolerance anymore (default: 1e-06); instead, they are using epsilon (default: 1e-09); instead, for handling
9133  integrality of a variable `in feasibility tolerances`, new methods SCIPisFeasIntegral(), SCIPisFeasFracIntegral(),
9134  SCIPfeasFloor(), SCIPfeasCeil() and SCIPfeasFrac() should be used
9135 - in LPI, the semantics of SCIPlpiHasPrimalRay() and SCIPlpiHasDualRay() changed: methods return TRUE, if a ray exists
9136  and the solver can return it; new methods SCIPlpiExistsPrimalRay() and SCIPlpiExistsDualRay() check whether a ray
9137  exists without checking, if the solver knows and can return the ray
9138 
9139 ### New API functions
9140 
9141 - SCIPvarIsInLP()
9142 - SCIPgetLPColumnObjval() and SCIPgetLPLooseObjval()
9143 - SCIPcalcIntegralScalar() with arbitrary array of Real values
9144 - SCIPaddCoefKnapsack() in knapsack constraint handler
9145 - SCIPisScalingIntegral() to check, whether the scaling of a value would lead to an integral value, measured
9146  against epsilon which is also scaled by the same scalar
9147 - SCIPgetRealarrayMinIdx(), SCIPgetRealarrayMaxIdx(), SCIPgetIntarrayMinIdx(), SCIPgetIntarrayMaxIdx(),
9148  SCIPgetBoolarrayMinIdx(), SCIPgetBoolarrayMaxIdx(), SCIPgetPtrarrayMinIdx() and SCIPgetPtrarrayMaxIdx()
9149 - SCIPbsortPtrInt() and SCIPbsortPtrIntInt()
9150 - SCIPvarWasFixedAtIndex()
9151 - SCIPaddConflictBd()
9152 - SCIPprintMemoryDiagnostic()
9153 - SCIPfindObj...() and SCIPgetObj...() in C++ wrapper interface to get the corresponding plugin object
9154 
9155 ### Changed parameters
9156 
9157 - slightly changed the meaning of parameter `presolving/abortfac` a value of 0 now means to abort presolving only after
9158  no more change has been found
9159 
9160 Fixed bugs
9161 ----------
9162 
9163 - assigning a value to a fixed variable in a solution with SCIPsetSolVal() does not return an error anymore, if the
9164  value is equal to the fixed value of the variable
9165 - removed bug in SCIPisScalingIntegral()
9166 - removed bugs with calling SCIPtightenVarLb(), SCIPtightenVarUb(), SCIPinferVarLbCons(), SCIPinferVarUbCons(),
9167  SCIPinferVarLbProp() and SCIPinferVarUbProp() in `PROBLEM` stage
9168 
9169 - (Re)solving:
9170  - solving loop is now immediately aborted, if a node on the active path is marked to be cut off
9171  - removed bug in resolving an interrupted problem, after the last solved node was cut off
9172  - removed bug with infinite solving loop if LP solving is turned off
9173  - removed bug with aborted solving in root node (e.g. due to time limit) that is tagged to be restarted
9174 
9175 - Branching:
9176  - fixed bug in all-fullstrong branching with getting strong branching information for columns not in current LP
9177  - implemented missing case in solve.c with branching rules that add constraints
9178 
9179 - Numerics:
9180  - changed numerics for integrality check of coefficients (fixed bug with accumulated errors in rows s.t. the row's
9181  activity is no longer integral although the row is marked being integer)
9182  - slightly changed numerics in linear constraint handler presolving to fix a bug with coefficients detected to be scaled
9183  to an integral value, that are not integral after scaling due to a large scalar that increased the integrality gap to
9184  a value larger than epsilon
9185 
9186 - Constraint handlers:
9187  - fixed bugs in consdataSwitchWatchedVars() of `or` and `and` constraint handlers
9188  - fixed wrong assertion in xor constraint handler with switching both watched variables to unwatched
9189  - fixed bugs in constraint handlers (and, logicor, or, setppc, xor) with calling conflict analysis during presolving
9190  - removed bug in knapsack constraint handler that appears if a variable is fixed to zero in knapsack presolving, which
9191  triggers a variable of the same knapsack to be fixed to one due to aggregation
9192 
9193 - Presolving:
9194  - removed bug in knapsack presolver
9195  - fixed bug in presolving with wrong number of newly fixed/aggregated/... variables/bounds/... after a restart
9196 
9197 @section RN077 SCIP 0.7.7
9198 *************************
9199 
9200 Features
9201 --------
9202 
9203 - infeasible LPs in diving now produce conflict clauses (if LP conflict analysis is enabled)
9204 - conflict analysis was slightly modified
9205 - slightly changed aging strategy of logic or constraint handler
9206 
9207 Interface changes
9208 -----------------
9209 
9210 ### Deleted and changed API methods
9211 
9212 - method SCIPgetGap() and SCIPgetTransGap() now return infinity, if primal and dual bound have opposite sign (this
9213  removes the oddness with the gap increasing while the dual bound approaches zero)
9214 
9215 ### New API functions
9216 
9217 - added methods SCIPgetVarsLogicor() and SCIPgetNVarsLogicor() in logic or constraint handler
9218 
9219 ### Changed parameters
9220 
9221 - `lp/colagelimit` and `lp/rowagelimit` may now be set to -1 to disable deletion of columns/rows due to aging
9222 
9223 Build system
9224 ------------
9225 
9226 ### Makefile
9227 
9228 - the file names in the archive file are now preceeded with a directory `scip-<version>/`
9229 - the compiler is now also represented in the LP solver library names (e.g. you have to rename the softlink
9230  `libcplex.linux.x86.a` to `libcplex.linux.x86.gnu.a`)
9231 
9232 Fixed bugs
9233 ----------
9234 
9235 - removed bug in conflict analysis that appears if the conflict is only active at the current depth level
9236 - missing SCIPlpiIsPrimalFeasible() and SCIPlpiIsDualFeasible() implemented in lpi_spx.cpp and lpi_spx121.cpp
9237 - removed preprocessing of linear constraint pairs with modifiable constraints
9238 
9239 - Asserts:
9240  - removed wrong assert `assert(eventfilter->len == 0 || eventfilter->eventmask != 0x00000000)` from event.c
9241  - removed wrong assert in conflict analysis (appeared on analyzing diving LP conflicts with both bounds of a non-binary variable changed)
9242 
9243 @section RN076 SCIP 0.7.6
9244 *************************
9245 
9246 Features
9247 --------
9248 
9249 - creation of reconvergence clauses in conflict analysis
9250 - first node of each plunging is not treated as plunging node w.r.t. calling primal heuristics
9251 - improved performance of logic or constraint handler due to better watched variables handling
9252 
9253 Interface changes
9254 -----------------
9255 
9256 ### Deleted and changed API methods
9257 
9258 - changed SCIPcatchVarEvent() and SCIPdropVarEvent()
9259 - SCIPstage() is now called SCIPgetStage()
9260 - SCIPprintStatus() is now called SCIPprintStage()
9261 
9262 ### New API functions
9263 
9264 - SCIPgetActivityLinear() in linear constraint handler
9265 - SCIPgetFeasibilityLinear() in linear constraint handler
9266 - SCIPchgVarBranchDirection()
9267 - SCIPvarGetBranchDirection()
9268 - SCIPgetStatus() returns the solution status
9269 - SCIPprintStatus() outputs the solution status (beware, that the old SCIPprintStatus() method is now called SCIPprintStage())
9270 
9271 ### Changed parameters
9272 
9273 - changed default frequency offset of pscostdiving `heuristics/pscostdiving/freqofs` to 2 and frequency offset of fracdiving
9274  `heuristics/feaspump/freqofs` to 0 in order to not call pscostdiving in root node, where nearly all pseudo costs are uninitialized.
9275 
9276 ### New parameters
9277 
9278 - new parameter `separating/efficacynorm` to choose between Euclidean, maximum, sum and discrete norm in efficacy
9279  calculation
9280 
9281 ### Data structures
9282 
9283 - new possible result code `SCIP_DELAYED` for primal heuristics
9284 
9285 Fixed bugs
9286 ----------
9287 
9288 - removed bugs in CLP Solver interface
9289 - SCIP returned `gap limit reached` even if the problem was solved to optimality, if the optimal solution was found at a
9290  node with lower bound equal to the global lower bound
9291 - after conversion of the focus node into a junction (e.g. in case of numerical troubles while solving the node's LP), the child
9292  nodes got the wrong LP fork attached (the common LP fork of the old and new focus node instead of the old focus node's LP fork)
9293 
9294 - Variables:
9295  - bug reconvergence clauses in conflict analysis if bounds on non-binary variables were the reason for the fixing of the
9296  uip to create a reconvergence clause for
9297  - wrong sub calls in SCIPvarGet...CurrentRun() for aggregated variables
9298  - variables' conflict set counter was not reset when the problem was resolved again
9299 
9300 Known bugs
9301 ----------
9302 
9303 - unbounded models lead to an error
9304 - air04 and air05 return wrong optimal value (1 too large): possibly due to strong branching or setppc propagation?
9305 
9306 @section RN075 SCIP 0.7.5
9307 *************************
9308 
9309 Miscellaneous
9310 -------------
9311 
9312 - started change log*/