Scippy

    SCIP

    Solving Constraint Integer Programs

    CHANGELOG
    Go to the documentation of this file.
    1/**@page RN10 Release notes for SCIP 10
    2
    3@section RN1001 SCIP 10.0.1
    4***************************
    5
    6Fixed bugs
    7----------
    8
    9- fixed that parameters passed on as variadic arguments to SCIPsolveNLP() and SCIPsolveNlpi() were ignored when compiling with MS compilers without -Zc:preprocessor
    10- make more CONOPT output available when verbosity level is set to 2
    11- turn off detection of definitional constraints in CONOPT for now, to work around a related issue in CONOPT 4.39.0
    12- fixed call of SCIPcreateConsBasicSOCNonlinear() with coefs being NULL, and fixed check for offsets being finite
    13- avoid crash when initial IIS solve fails while reporting errors explicitly
    14- fixed that variable removal in IIS cleanup tried to delete variables that were marked as not deletable
    15- fixed that some IIS info messages were not using a user's message handler
    16- fixed use of interactive option (-i) of AMPL interface
    17- fixed failure in nl writing on big endian machines
    18- correct memory reallocation in storeSubproblemMasterVar() of benders.c to avoid errors when freeing memory
    19- also set real solution in SCIPsolSetValExact() to maintain approximation
    20- handle exact solutions in SCIPsolCheckOrig(), SCIPcheckSolOrig(), and SCIPrecomputeSolObj() to correctly check exact initial solutions in SCIPtransformProb()
    21- fixed calculation of Euclidean norm in calcEfficacyDenseStorage() for use in exact solving
    22- removed unnecessary explicit linking of GMP library for exact solving mode unittests
    23- fixed bug with changing the type of the slack variable in indicator constraints while copying
    24- signal extreme estimations in timeSeriesEstimate() and skip pruning estimations in eventExecEstim() to avoid unstable restarting
    25- fixed parallelism computation of dynamic cut selector to use Euclidean norm instead of unsupported argument
    26- fixed that non-efficacious cuts were not filtered out before checking dynamic parallelism in dynamic cut selector
    27- fixes in nauty.h for 32bit systems
    28- fixed SCIPgetDualSolVal() for a linear constraint with a single variable
    29- adjust conflictAnalyzeLP() to inability of row aggregation to handle a change in the number of variables
    30- propagate child lower bounds back to focus node to ensure consistent lower bound tracking
    31
    32Miscellaneous
    33-------------
    34
    35- updated ampl/mp to version 4.0.4
    36- switch from GetTempPath2A to GetTempPathA in nl writer for Windows for broader compatibility
    37
    38@section RN1000 SCIP 10.0.0
    39***************************
    40
    41Features and Performance Improvements
    42-------------------------------------
    43
    44### Exact Solving
    45- added numerically exact solving mode for mixed-integer linear programs to the core framework including certification of branch-and-bound phase
    46- core extensions:
    47 - new wrapper struct SCIP_RATIONAL for rational arithmetic currently based on Boost, GMP, and MPFR
    48 - new data structure SCIP_LPEXACT for handling rational LP relaxation and computing safe dual bounds
    49 - new interfaces to exact LP solvers SoPlex and QSopt_ex
    50 - safe dualproof version of conflict analysis
    51 - new data structure SCIP_CERTIFICATE for certificate printing/proof logging
    52- new plugins:
    53 - new constraint handler "exactlinear" for handling linear constraints with rational data
    54 - new constraint handler "exactsol" to post-process and repair solutions from floating-point heuristics
    55- plugins revised for numerically exact solving mode:
    56 - adjusted readers for MPS, LP, CIP, OPB/WBO, and ZIMPL files
    57 - extended presolver "milp" to perform rational presolving with PaPILO
    58 - adjusted constraint handler "integral" and default reliability pseudo-cost branching rule "relpscost"
    59 - extended Gomory cut separator to separate and certify numerically safe MIR cuts
    60 - adjusted all primal heuristics (except for five dedicated MINLP heuristics)
    61- new interfaces to exact LP solvers SoPlex and QSopt_ex
    62
    63### Symmetry Handling
    64- added more techniques to handle reflection symmetries, in particular, for orbitopes with column reflections and matrices whose rows and columns can be permuted by a symmetry
    65- Dejavu can be used to compute symmetries; the source code is shipped with SCIP and incorporates sassy
    66- implemented symmetry detection callbacks for disjunction and superindicator constraint handlers
    67- detailed information about applied symmetry handling techniques can be printed to the terminal
    68- improve memory usage by introducing different constraint handlers for full orbitopes and packing/partitioning orbitopes
    69- symmetry detection no longer treats implicit integer variables separately, but computes symmetries based on the variable type inferred from variable bounds and implied integrality
    70- extended the statistics to also include information about the number of variables (per type) affected by symmetry
    71- implemented method to compute new permutations from a given list of symmetry group generators
    72- cons_orbisack, cons_orbitope_full, cons_orbitope_pp, and cons_symresack now try to replace the stored aggregated variables by active ones at the end of presolving;
    73 this should reduce the size of copies of the presolved problem
    74- simplified symmetry detection graphs in case all edges have the same color
    75
    76### Presolve
    77- distinguish implicit integrality of variables into strong and weak type, depending on whether integrality is implied for all feasible or only at least one optimal solution
    78- added a new presolver "implint", which detects implied integral variables by detecting (transposed) network submatrices in the problem; for now, this plugin is disabled by default
    79- added support for (transposed) network matrix detection
    80- allow multi-aggregation of unbounded slack variables, which may enable more bound tightening due to a reduction in the number of unbounded variables
    81- resolve all fixings in xor constraints also for an available integer variable
    82
    83### Conflict Analysis
    84- added generalized resolution conflict analysis that operates directly on linear constraints instead of conflict graphs
    85- disabled dualsol and dualray conflict upgrades to maintain conflict store
    86- apply general conflict upgrades in conflict store
    87
    88### Cutting Planes
    89- added a new separator "flower" to generate flower cuts from AND constraints and nonlinear product expressions
    90- added functionality to deal with hypergraphs by means of efficient access to vertices, edges, and intersections edges
    91
    92### Primal Heuristics
    93- added decomposition kernel search (DKS) heuristic (disabled by default), which implements a kernel search framework;
    94 it can be used both as a construction heuristic as well as an improvement heuristic; existing decomposition information can be utilized
    95- reduced maximal fraction of diving LP iterations relative to total node LP iterations
    96
    97### Branching
    98- added a dynamic max-lookahead criterion for strong branching; a probability distribution is fitted to the observed candidate gains and
    99 evaluating further candidates stops when the expected tree-size reduction no longer justifies the LP evaluation cost
    100- added new fields in history to store ancestral pseudo cost updates, used in the pseudo costs branching rule to compute discounted pseudo costs
    101
    102### Nonlinearity
    103- added an interface to the NLP solver CONOPT
    104- implemented columnwise Jacobian sparsity computation in the NLP oracle
    105- extended SOC detection to simple bilinear constraints, e.g., x*y >= 1
    106
    107### Infeasibility Analysis
    108- added the possibility to search for irreducible infeasible subsystems (IIS)
    109- added new plugin type for finding irreducible infeasible subsystems (IIS)
    110- new iisfinder plugin "greedy", which implements a greedy addition and deletion based algorithm with dynamic batch sizing
    111
    112### Benders' Decomposition
    113- when solving a problem with additional decomposition information (for example, when reading a DEC file) and enabling decomposition/applybenders,
    114 the problem is now solved in a Benders' decomposition relaxator; instead of decomposing the original SCIP instance, the relaxator builds the decomposed problem in
    115 sub-SCIPs and solves it via default Benders' Decomposition; a solution to the original (undecomposed) problem is now made available by the relaxator;
    116 the SCIP shell dialog "display statistics" now also prints the statistics from solving the Benders' decomposition in the relaxator
    117- adds objective types for Benders' decomposition; the choices are to sum the subproblems objectives (classical approach) and to use the maximum of the subproblems objectives
    118- the linking master variables for each Benders' decomposition subproblem are now stored; these can be accessed for the generation of cuts and setting up the subproblems
    119
    120### Reading and Writing
    121- added a new data structure SCIP_DATATREE that holds serializable data and a function to export to a JSON file
    122- added ability to collect statistics from tables in a SCIP_DATATREE and write out as JSON file;
    123 dialog write statistics now writes a JSON file if name of file to write ends with .json
    124- added writing support for AMPL NL writer: currently only general and specialized linear and nonlinear constraints can be written
    125- added support for AND-constraints to GAMS writer
    126- simplify expressions of nonlinear constraints in MPS and LP writing to increase chance that they are recognized as quadratic
    127
    128### Applications
    129- New application "PBSolver" to solve pseudoboolean instances in OPB and WBO format while complying with PB competition rules
    130- Coloring: new parameter branching/coloring/strategy to choose the least/most fractional variable for branching
    131
    132### Miscellaneous
    133- do not allow non-root restarts when no global fixings were found
    134- reimplemented SCIPvarGetActiveRepresentatives() by using dense arrays to avoid repeated resorting
    135- avoid unnecessary calls of constraint handlers components, benders, benderslp, propagator genvbounds, and heuristics ofins, subnlp, nlpdiving, indicator
    136- inlined SCIPgetStatus() to reduce computational overhead
    137- variable data pointer are now copied if no copy routine was supplied
    138- add check that parameter value pointers are unique, i.e., no two are the same
    139
    140Interface changes
    141-----------------
    142
    143### Deprecations
    144
    145- The variable type \ref SCIP_VARTYPE_IMPLINT is deprecated in favor of a new enum \ref SCIP_IMPLINTTYPE that indicates if a
    146 variable is implied integral, independent of the variable type.
    147 The problem variable arrays is still sorted as:
    148 ```
    149 (0) | binary | integer | implied integral | continuous | (nvars),
    150 ```
    151 where the implied integral subsection is now subdivided into 3 parts (left to right):
    152 ```
    153 | binary implied integral | integer implied integral | continuous implied integral |
    154 ```
    155 SCIP 10 still supports using `SCIP_VARTYPE_IMPLINT` for backward compatibility, see SCIPcreateVar() and SCIPchgVarType() for more details.
    156 SCIP 11 will remove `SCIP_VARTYPE_IMPLINT`.
    157- SCIPsubversion() is deprecated and will be removed
    158
    159### New and changed callbacks
    160
    161- added SCIP_DECL_IISFINDERCOPY(), SCIP_DECL_IISFINDERFREE(), and SCIP_DECL_IISFINDEREXEC() for iisfinder implementations
    162- added a new callback SCIP_DECL_TABLECOLLECT() for the table plugin that collects the data for the specific statistics table in a SCIP_DATATREE object
    163- for a table plugin, only one of the callbacks SCIP_DECL_TABLECOLLECT() or SCIP_DECL_TABLEOUTPUT() needs to be implemented, but implementing both is preferred;
    164 if SCIP_DECL_TABLEOUTPUT() is omitted, then SCIP tries to print a table from the data given by SCIP_DECL_TABLECOLLECT()
    165- the callback SCIP_DECL_EXPRINTEGRALITY(), which returns the integrality of an expression, had its fourth argument changed from `SCIP_Bool*` to `SCIP_IMPLINTTYPE*` to represent implied integrality in nonlinear expressions,
    166 that is, an implied integral type of an auxiliary variable if the expression were assigned to it
    167- added argument `filename` to the SCIP_DECL_READERWRITE() callback in the 4th position
    168- the callback SCIP_DECL_READERWRITE() is equipped with `objoffset`, `objscale`, `objoffsetexact`, and `objscaleexact` as arguments 9 through 12 to write the exact objective offset and scale in exact mode
    169
    170### Deleted and changed API functions
    171
    172- SCIPgetProbvarLinearSum(): remove parameter `mergemultiples`, which is now automatically true with the new implementation of SCIPvarGetActiveRepresentatives()
    173- `SCIPcreateRow*()`, SCIPaddVarToRow(), SCIPaddVarsToRow(), SCIPaddVarsToRowSameCoef() can now only be called in the solving stage, because otherwise the LP is not yet available and the row data is invalid
    174- SCIPcreateConsPseudobooleanWithConss(), SCIPcreateConsPseudoboolean(), and SCIPcreateConsBasicPseudoboolean(): removed `intvar` from arguments because the non-linear objective reformulation with pseudoboolean constraints did not work
    175- SCIPcleanupConssLinear() and SCIPcleanupConssKnapsack(): added argument `ndelconss` to directly delete empty redundant constraints before creating problem matrix
    176- SCIPcopyPlugins(): added argument `copyiisfinders` (16th position)
    177- SCIPcreateConsOrbitope(): deleted two arguments and changed position of another argument
    178- SCIPvarCalcDistributionParameters(): argument `impltype` added (5th position)
    179- SCIPpermuteProb(): argument `permuteimplvars` has been replaced by new arguments `permutebinimplvars`, `permuteintimplvars`, and `permutecontimplvars`
    180- SCIPgetLPBranchCands(): implied integral variables with integrality constraints are included in `nlpcands` count and stored at the end of `lpcands`
    181- SCIPgetNLPBranchCands(): implied integral variables with integrality constraints are included
    182- SCIPgetSolVarsData(): argument `nimplvars` has been replaced by new arguments `nbinimplvars`, `nintimplvars`, and `ncontimplvars`
    183- SCIPexprSetIntegrality(): replaced argument `SCIP_Bool integral` by `SCIP_IMPLINTTYPE integrality` (4th position)
    184- SCIPcreateVar() (temporarily for SCIP 10 only): attempting to create a variable with type \ref SCIP_VARTYPE_IMPLINT creates a variable of type \ref SCIP_VARTYPE_CONTINUOUS and implied integral type \ref SCIP_IMPLINTTYPE_WEAK
    185- SCIPchgVarType() (temporarily for SCIP 10 only): attempting to change a variable type to \ref SCIP_VARTYPE_IMPLINT leads to a call of SCIPchgVarImplType() with type \ref SCIP_IMPLINTTYPE_WEAK
    186- `SCIPapplyBendersDecomposition()` has been removed; this was originally used to apply Benders' decomposition from a supplied decomposition structure; the application of Benders' decomposition now occurs in relax_benders
    187- SCIPcalcMIR(), SCIPcutGenerationHeuristicCMIR(), SCIPcalcStrongCG(): replaced boolean argument `usevbds` by an integer argument `vartypeusevbds`, which indicates for which variables variable bound substitution should be performed
    188- `SCIPchgAndConsCheckFlagWhenUpgr()`, `SCIPchgAndConsRemovableFlagWhenUpgr()`: removed to keep upgrade flags consistent; use SCIPconsAddUpgradeLocks() to control upgrades instead
    189- SCIPaddConflict(): argument `cons` changed to type `SCIP_CONS**` to release the conflict constraint in a clean way
    190- SCIPprintOrigProblem() and SCIPprintTransProblem(): moved declaration moved from scip_solvingstats.h to scip_prob.h
    191- `SCIPnlpiOracleGetJacobianSparsity()`: renamed to SCIPnlpiOracleGetJacobianRowSparsity() and added arguments `colnlflags` and `nnlnz`
    192- SCIPnlpiOracleGetHessianLagSparsity(), SCIPnlpiOracleEvalHessianLag(): added argument `colwise`
    193- SCIPxmlProcess(), SCIPxmlNewNode(), SCIPxmlNewAttr(), SCIPxmlAddAttr(), SCIPxmlAppendChild(), SCIPxmlFreeNode(), SCIPxmlShowNode(), SCIPxmlGetAttrval(), SCIPxmlFirstNode(), SCIPxmlNextNode(), SCIPxmlFindNode(), SCIPxmlFindNodeMaxdepth(), SCIPxmlNextSibl(), SCIPxmlPrevSibl(), SCIPxmlFirstChild(), SCIPxmlLastChild(), SCIPxmlGetName(), SCIPxmlGetLine(), SCIPxmlGetData(), SCIPxmlFindPcdata(): renamed XML functions by adding `SCIP` prefix to avoid name clash with libxml2
    194- `SCIPhashtableClear()`, `SCIPcomputeArraysIntersection()`, `SCIPcomputeArraysSetminus()`,
    195 `SCIPgetRandomInt()`, `SCIPgetRandomReal()`, `SCIPgetRandomSubset()`, `SCIPpermuteIntArray()`, `SCIPpermuteArray()`,
    196 `SCIPvarGetLbAtIndex()`, `SCIPvarGetUbAtIndex()`, `SCIPvarGetBdAtIndex()`, `SCIPvarWasFixedAtIndex()`,
    197 `SCIPaddCut()`, `SCIPcreateRow()`, `SCIPcreateEmptyRow()`, `SCIPlpfeastol()`, `SCIPchgLpfeastol()`,
    198 `SCIPsolveParallel()`, `SCIPwriteImplicationConflictGraph()`, `SCIPallowDualReds()`, `SCIPallowObjProp()`,
    199 `SCIPcreateConsQuadratic()`, `SCIPcreateConsBasicQuadratic()`, `SCIPaddConstantQuadratic()`, `SCIPaddLinearVarQuadratic()`, `SCIPaddQuadVarQuadratic()`, `SCIPaddQuadVarLinearCoefQuadratic()`, `SCIPaddSquareCoefQuadratic()`, `SCIPaddBilinTermQuadratic()`, `SCIPgetNlRowQuadratic()`, `SCIPchgLhsQuadratic()`, `SCIPchgRhsQuadratic()`,
    200 `SCIPcreateConsAbspower()`, `SCIPcreateConsBasicAbspower()`, `SCIPgetNlRowAbspower()`,
    201 `SCIPcreateConsSOC()`, `SCIPcreateConsBasicSOC()`, `SCIPgetNlRowSOC()`: removed, previously deprecated
    202- `SCIP_NLPTERMSTAT_TILIM`, `SCIP_NLPTERMSTAT_ITLIM`, `SCIP_NLPTERMSTAT_LOBJLIM`, `SCIP_NLPTERMSTAT_NUMERR`, `SCIP_NLPTERMSTAT_EVALERR`, `SCIP_NLPTERMSTAT_MEMERR`, `SCIP_NLPTERMSTAT_LICERR`: removed, these NLP termination status codes were previously deprecated
    203- `SCIPselectPtrRealReal()`, `SCIPselectWeightedPtrRealReal()`, `SCIPsortPtrRealReal()`, `SCIPreoptAddGlbCons()`, `SCIPreoptnodeGetSplitCons()`, `SCIPcomprInitsol()`, `SCIPcomprExitsol()`,
    204 `SCIPcertificatePrintSolExact()`, `SCIPincludeExLinconsUpgrade()`, `SCIPupgradeConsExactLinear()`, `SCIPgetRunningErrorStatsExactLinear()`, `SCIPcolExactGetMinPrimsol()`, `SCIPrationalarrayClear()`, `SCIPgetRowActivityExact()`, `SCIPgetRowFeasibilityExact()`, `SCIPvalsExactFree()`,
    205 `SCIPbendersApplyDecomposition()`, `SCIPgetExprsdataBilinear()`, `SCIPgetVarCoefChg()`, `SCIPvarGetOrigIndex()`, `SCIPallocateSymgraphConsnodeperm()`, `SCIPwriteSto()`: removed the declaration because there was no implementation
    206
    207### New API functions
    208
    209Exact Solving:
    210- SCIPenableExactSolving(): enable and disable exact solving mode; see below for a list of many new API functions added to support exact solving
    211- `SCIPrational*()`: create and compute with rational numbers
    212- SCIPintervalSetRational(): compute interval of rational number
    213- SCIPstrToRationalValue(), SCIPrationalStrLen(), SCIPrationalToString(): handle string conversion of a rational number
    214- SCIPrationalChgInfinity(), SCIPrationalGetInfinity(): handle infinity threshold of rational numbers
    215- `SCIPrationalarray*()`: create and handle rational arrays
    216- SCIPisExact(): query whether exact solving is enabled
    217- SCIPisCertified(): query whether certification is enabled
    218- `SCIPcertify*()`, `SCIP*Certificate()`: support proof logging/certificate generation
    219- `SCIP*MarkExact()`: mark plugins as safe to use in exact solving mode
    220- `SCIP*IsExact()` : query whether objects are ready for exact solving
    221- SCIPincludeConshdlrExactLinear(): include the constraint handler for exact linear constraints
    222- `SCIP*ExactLinear()`: create, query, and modify an exact linear constraint
    223- SCIPconsGetLhsExact()`, SCIPconsGetRhsExact(), SCIPgetConsValsExact(): query exact sides and coefficients of a linear constraint
    224- `SCIPmatrix*Exact()`: query matrix information in rational arithmetic
    225- SCIPaddVarExactData(): add exact data to an existing variable
    226- `SCIPvarGet*Exact()`: query variable information in rational arithmetic
    227- `SCIP*Var*Exact*()`: handle variables exactly
    228- SCIPchgVarLbExactDive(), SCIPchgVarUbExactDive(), SCIPisExactDivePossible(), SCIPinExactDive(), SCIPstartExactDive(), SCIPendExactDive(), SCIPsolveExactDiveLP(): handle exact LP diving
    229- SCIPlpExactDiving(): query whether exact LP is in diving mode
    230- SCIPlpExactIsSolved(): query whether the exact LP is solved
    231- SCIPwriteLPexact(): write the exact LP
    232- `SCIPcolExact*()`, `SCIProwExact*()`: handle the exact LP columns and rows
    233- `SCIPlpiExact*()`: handle the exact LP interface
    234- SCIPgetNExactLPs(): query the number of exact LP solves
    235- SCIPgetLPExactSolstat(), SCIPgetLPExactObjval(): query solution status and objective value of the exact LP
    236- SCIPaddOrigObjoffsetExact(), SCIPgetOrigObjoffsetExact(): add and query exact objective offset of the original problem
    237- `SCIP*Sol*Exact()`: create and handle exact solutions
    238- SCIPsolOrigAddObjvalExact(): add to exact objective of original solution
    239- SCIPincludeConshdlrExactSol(): include the exact post-processing for solutions
    240- `SCIP*Row*Exact*()`: create and handle exact LP rows
    241- `SCIPaggrRow*Safely()`: compute safe real row aggregation
    242- SCIPallowNegSlack(): query whether negative slacks are allowed
    243- SCIPbranchLPExact(): branch exactly on the LP solution
    244- SCIPeventGetOldboundExact(): query exact old bound for a bound change event
    245- SCIPcalcIntegralScalarExact(): compute a scalar so that all given values become exactly integral
    246- SCIPnodeGetLowerboundExact(): query the exact lower bound of a node
    247- SCIPgetCutoffboundExact(), SCIPgetLowerboundExact(), SCIPgetUpperboundExact(), SCIPgetDualboundExact(), SCIPgetPrimalboundExact(): query exact best bounds on optimal value
    248- SCIPvalidateSolveExact(): validate the exact solve
    249
    250Implicit Integrality:
    251- SCIPincludePresolImplint(): include the new implied integral presolver
    252- SCIPcreateVarImpl(), SCIPcreateObjVarImpl(): behave identically to SCIPcreateVar() and SCIPcreateObjVar(), respectively, but have an additional argument for the new implied integral type flag (8th position)
    253- SCIPchgVarImplType(), SCIPvarGetImplType(), SCIPvarIsImpliedIntegral(), SCIPcolIsImpliedIntegral(): control and query implied integrality
    254- SCIPvarIsNonimpliedIntegral(): query whether a variable is integral but not implied integral
    255- SCIPgetNOrigBinImplVars(), SCIPgetNOrigIntImplVars(), SCIPgetNOrigContImplVars(): query the number of implied integral variables of each type in original problem;
    256 note that SCIPgetNOrigBinVars(), SCIPgetNOrigIntVars(), and SCIPgetNOrigContVars() no longer include the implied integral variables in their counts
    257- SCIPgetNBinImplVars(), SCIPgetNIntImplVars(), SCIPgetNContImplVars(): query the number of implied integral variables of each type in current problem;
    258 note that SCIPgetNBinVars(), SCIPgetNIntVars(), and SCIPgetNContVars() no longer include the implied integral variables in their counts
    259- SCIProwGetNumImpliedIntCols(): query number of implied integer columns in a row
    260- SCIPvarsCountTypes(): determine the variable type count distribution for an array of variables
    261- SCIPeventGetOldImplType(), SCIPeventGetNewImplType(): query implication type change for the new event \ref SCIP_EVENTTYPE_IMPLTYPECHANGED
    262- SCIPexprGetIntegrality(): provides information about the presence of weakly implied integral variables, in addition to the existing function SCIPexprIsIntegral()
    263
    264Symmetry Handling:
    265- SCIPincludeConshdlrOrbitopePP(), SCIPcreateConsOrbitopePP(), SCIPcreateConsBasicOrbitopePP(), SCIPincludeConshdlrOrbitopeFull(), SCIPcreateConsOrbitopeFull(), SCIPcreateConsBasicOrbitopeFull()
    266- SCIPdisplaySymmetryGenerators(), SCIPdialogExecDisplaySymmetry(): display generators of symmetry group
    267- SCIPclearSymgraph(), SCIPcopySymgraphAsSubgraph(): clear and copy a symmetry detection graph, respectively
    268
    269Conflict Analysis:
    270- SCIPgetNResConflictConssApplied(): return the number of generalized resolution conflict constraints added to the problem
    271- SCIPaddConsUpgrade(): add constraint upgrades while informing the conflict store
    272
    273Branching:
    274- SCIPhistoryUpdateAncPseudocost(), SCIPvarUpdateAncPseudocost(): update the ancestral pseudo cost fields in variable history
    275- SCIPhistoryGetAncPseudocost(), SCIPhistoryGetAncPseudocostCount(), SCIPhistoryIsAncPseudocostEmpty(), SCIPgetVarAncPseudocostVal(), SCIPvarGetAncPseudocost(): retrieve values related to ancestral pseudo cost fields in variable history
    276- SCIPgetAvgDPseudocostScore(), SCIPgetVarDPseudocostScore(): compute discounted pseudo cost scores using ancestral pseudo costs
    277- SCIPboundchgGetLPSolVal(): access LP solution value in the branching data of a bound change
    278
    279Cutting Planes:
    280- SCIPincludeSepaFlower(): include the new flower cut separator
    281- SCIPconsCreateRow(): to create and return the row of a linearly representable constraint
    282- SCIPcreateRowKnapsack(), SCIPcreateRowLinear(), SCIPcreateRowLogicor(), SCIPcreateRowSetppc(), SCIPcreateRowVarbound(): create and get the row of linearly representable constraints
    283
    284Benders' Decomposition:
    285- SCIPincludeRelaxBenders(): include the Benders' decomposition relaxator
    286- SCIPgetMasterProblemRelaxBenders(): retrieve master problem SCIP instance from the Benders' decomposition relaxator
    287- SCIPbendersGetSubproblemMasterVars(), SCIPbendersGetNSubproblemMasterVars(), SCIPbendersGetSubproblemMasterVarsData(): get the linking master variables for each subproblem and details about the number of binary and integer variables
    288- SCIPsetBendersObjectiveType(), SCIPbendersGetObjectiveType(): set and get the objective type for the aggregation of the Benders' decompostion subproblems
    289- SCIPbenderGetMasterAuxiliaryVar(): get master auxiliary variable
    290- SCIPfreeReaderdataCor(), SCIPfreeReaderdataTim(), SCIPfreeReaderdataSto(): free the data for the COR, TIM, and STO readers, respectively; these readers are all used when reading an SMPS instance
    291
    292IIS:
    293- SCIPincludeIISfinder(), SCIPincludeIISfinderBasic(), SCIPsetIISfinderCopy(), SCIPsetIISfinderFree(), SCIPgenerateIIS(), SCIPfindIISfinder(), SCIPgetIISfinders(), SCIPgetNIISfinders(), SCIPsetIISfinderPriority(), SCIPgetIIS()
    294- SCIPiisfinderGetName(), SCIPiisfinderGetData(), SCIPiisfinderGetDesc(), SCIPiisfinderGetPriority(), SCIPiisfinderSetData(), SCIPiisfinderGetTime(), SCIPiisfinderInfoMessage(), SCIPiisGetTime(), SCIPiisIsSubscipInfeasible(), SCIPiisIsSubscipIrreducible(), SCIPiisGetNNodes(), SCIPiisSetSubscipInfeasible(), SCIPiisSetSubscipIrreducible(), SCIPiisAddNNodes(), SCIPiisGetRandnumgen(), SCIPiisGetSubscip(), SCIPiisGreedyMakeIrreducible()
    295
    296Hypergraphs:
    297- SCIPhypergraphCreate(), SCIPhypergraphClear(), SCIPhypergraphFree(), SCIPhypergraphAddVertex(), SCIPhypergraphAddEdge(), SCIPhypergraphIsValid(), SCIPhypergraphComputeVerticesEdges(): build and delete hypergraphs
    298- SCIPhypergraphComputeOverlaps(), SCIPhypergraphOverlapFind(), SCIPhypergraphIntersectEdges(), SCIPhypergraphComputeOverlapsEdges(), SCIPhypergraphComputeVerticesOverlaps(), SCIPhypergraphOverlapsDisjoint(): handle pair-wise intersections of hyperedges
    299- SCIPhypergraphIterInit(), SCIPhypergraphIterClear(), SCIPhypergraphIterStart(), SCIPhypergraphIterValid(), SCIPhypergraphIterNext(), SCIPhypergraphIterBase(), SCIPhypergraphIterAdjacent(), SCIPhypergraphIterMinVertex(), SCIPhypergraphIterOverlap(): iterate over adjacent edges
    300- SCIPhypergraphHasVertexEdges(), SCIPhypergraphHasOverlaps(), SCIPhypergraphHasOverlapsEdges(), SCIPhypergraphHasVertexOverlaps(), SCIPhypergraphGetNVertices(), SCIPhypergraphGetNEdges(), SCIPhypergraphBlkmem(), SCIPhypergraphGetNOverlaps(),
    301 SCIPhypergraphVertexData(), SCIPhypergraphEdgeData(), SCIPhypergraphEdgeSize(), SCIPhypergraphEdgeVertices(), SCIPhypergraphVertexEdgesFirst(), SCIPhypergraphVertexEdgesBeyond(), SCIPhypergraphVertexEdgesGetAtIndex(), SCIPhypergraphOverlapData(),
    302 SCIPhypergraphOverlapSize(), SCIPhypergraphOverlapVertices(), SCIPhypergraphEdgesOverlapsFirst(), SCIPhypergraphEdgesOverlapsBeyond(), SCIPhypergraphEdgesOverlapsGetAtIndex(), SCIPhypergraphOverlapsEdgesFirst(), SCIPhypergraphOverlapsEdgesBeyond(),
    303 SCIPhypergraphOverlapsEdgesGetAtIndex(), SCIPhypergraphVertexOverlapsFirst(), SCIPhypergraphVertexOverlapsBeyond(), SCIPhypergraphVertexOverlapsGetAtIndex(): query information about vertices, edges, and overlaps as well as their incidences
    304
    305Network Matrix:
    306- SCIPnetmatdecCreate(), SCIPnetmatdecFree(): create and delete a network matrix decomposition
    307- SCIPnetmatdecTryAddCol(), SCIPnetmatdecTryAddRow(): add columns and rows to a matrix decomposition
    308- SCIPnetmatdecContainsRow(), SCIPnetmatdecContainsColumn(): check if a matrix decomposition contains the given row or columns
    309- SCIPnetmatdecRemoveComponent(): remove connected components from a matrix decomposition
    310- SCIPnetmatdecCreateDiGraph(): expose underlying digraph of matrix decomposition
    311- SCIPnetmatdecIsMinimal(), SCIPnetmatdecVerifyCycle(): check whether certain invariants of a matrix decomposition are satisfied and used in tests
    312
    313Solve Statistics:
    314- functions to create, modify, and free SCIP_DATATREE objects and to print as JSON or table (see pub_datatree.h and scip_datatree.h)
    315- `SCIPcollect*Statistics()`: for every `SCIPprint*Statistics()` in scip_solvingstats.h
    316- SCIPprintStatisticsJson(): output a JSON string of the table statistics data
    317
    318Nonlinearity:
    319- SCIPincludeNlpSolverConopt(), SCIPsetLicenseConopt(), SCIPgetSolverNameConopt(), SCIPgetSolverDescConopt(), SCIPisConoptAvailableConopt(): interact with the new CONOPT interface
    320- SCIPnlpiOracleGetConstraintLinearCoef(): get a linear coefficient of a variable in a given constraint in the NLP oracle
    321- SCIPnlpiOracleGetJacobianColSparsity(): get the column-wise sparsity pattern of the Jacobian from the NLP oracle
    322- SCIPnlpiOracleGetObjGradientNnz(): get indices of nonzeroes in the objective gradient
    323- `src/objscip/objexprhdlr.h`: C++ interface for expression handlers
    324
    325Miscellaneous:
    326- SCIPsortRealPtrPtr(), ..., SCIPsortDownIntIntIntReal(): new sorting functions
    327- `SCIPdebugClearSol()`: clear the debug solution
    328- SCIPdialogIsHidden(), SCIPdialogSetHidden(): determine whether a dialog should be hidden in help list
    329- SCIPstatusName() to get a string representation of SCIP_STATUS
    330- SCIPconshdlrSetNeedsCons(): set whether constraint handler callbacks should also be called if there are no constraints
    331- SCIPpropSetTimingmask(): set timing mask of a propagator
    332- SCIPhashmapInsertLong(), SCIPhashmapGetImageLong()
    333- SCIPvarGetMinAggrCoef(), SCIPvarGetMaxAggrCoef(): get bounds on absolute aggregation coefficients for a loose variable
    334- SCIPisVarAggrCoefAcceptable(): check whether bounds on aggregation coefficients would exceed thresholds when using a loose variable in another aggregation
    335- SCIPgetNRootIntFixings(): retrieve the number of integer fixings at the root node
    336- SCIPcollectMemoryGarbage(): explicitly trigger garbage collection on block memory; before SCIP 10, this was done in SCIPtransformProb()
    337
    338### Data Structures
    339
    340\attention changed the numeric values in the \ref SCIP_STATUS enum
    341
    342- added struct \ref SCIP_RATIONAL for rational number arithmetic
    343- added struct \ref SCIP_LPEXACT and many further data structures to support exact solving mode
    344- added structs \ref SCIP_IISFINDER, \ref SCIP_IISFINDERDATA, \ref SCIP_IIS
    345- added struct \ref SCIP_DATATREE to model generic serializable data; new enum \ref SCIP_DATATREE_VALUETYPE
    346
    347### Changes in Preprocessor Macros
    348
    349- `SCIP_EVENTTYPE_TYPECHANGED`: no longer generated if a variable becomes implied integral
    350- `SCIP_EVENTTYPE_IMPLTYPECHANGED`: new event that is generated if a variable is declared implied integral, this event is included in the set \ref SCIP_EVENTTYPE_VARCHANGED
    351- `SCIP_EVENTTYPE_DUALBOUNDIMPROVED`: new event that is generated whenever the global dual bound is improved
    352- `SCIP_EVENTTYPE_GAPUPDATED`: new event mask for catching updates in primal or dual bound
    353- `SCIP_PROPTIMING_NONE`: new propagator timing for never calling a propagator
    354- `SCIP_HEURTIMING_NONE`: new heuristic timing for never call a primal heuristic
    355- `strcasecmp`, `strncasecmp` (Windows builds): removed `#define` from scip/def.h; use SCIPstrcasecmp() and SCIPstrncasecmp() instead
    356- \ref SCIP_VERSION_SUB, `SCIP_SUBVERSION`: deprecated
    357- `SCIP_VARTYPE_IMPLINT_CHAR`: removed
    358- `NO_RAND_R`: removed its use
    359
    360### SCIP Shell
    361
    362- `help <command>` now allows to display information on specific command
    363- allow to hide certain commands in the help list
    364- added the (hidden) command "exit" to exit the shell
    365- added command `iis` to create an infeasible subsystem
    366- added `write/iis` dialog to write out the infeasible subsystem to file
    367- added `display/iis` dialog to write out the infeasible subsystem to console
    368
    369### Changed parameters
    370
    371- `heuristics/scheduler/heurtimelimit` removed to avoid indeterministic behavior of scheduler heuristic, uses main time limit instead
    372- removed parameters `constraints/orbitope/checkpporbitope`, `constraints/orbitope/sepafullorbitope`, `constraints/orbitope/forceconscopy`, which became superfluous
    373- removed `reading/gmsreader/signpower`
    374- removed `benders/default/numthreads`: multi-threading support for Benders' decomposition has been temporarily disabled
    375- restricted range of parameter `propagating/symmetry/sstleadervartype` to [1,7]; its new default value is 6
    376- `propagating/∗/timingmask` extended by setting 0 to disable propagators completely
    377- changed defaults of `constraints/components/propfreq` and `constraints/components/maxdepth` to -1 and 2147483647, respectively, to avoid unnecessary calls of components propagator by default
    378- changed frequencies for the following heuristics: shifting, gins, crossover, rins, randrounding
    379- changed default `maxlpiterquot` to 0.05 for all LP diving heuristics and feaspump, whereas adaptivediving uses 0.15 and rootsoldiving remains at 0.01
    380- changed default of `presolving/restartminred` to 0.05
    381- changed default of `presolving/immrestartfac` to 0.05
    382- removed parameters `propagating/symmetry/{nautymaxncells,nautymaxnnodes}`
    383- updated description of parameter `misc/usesymmetry`
    384
    385### New parameters
    386
    387- `exact/enable`: enable exact solving mode
    388- `exact/improvingsols`: whether only improving exact solutions should be considered
    389- `exact/safedbmethod`: method of safe dual bounding
    390- `exact/interleavedbstrat`: interleaving strategy between safe dual bounding and exact LP solving
    391- `exact/psdualcolselection`: project-and-shift strategy of dual column selection
    392- `exact/cutapproxmaxboundval`: maximal absolute bound for which coefficients in exact cuts should be approximated
    393- `exact/cutmaxdenom`: maximal denominator of coefficients in approximating exact cuts
    394- `exact/allownegslack`: whether negative slack variables in exact Gomory cuts should be used
    395- `exact/lpinfo`: whether the exact LP solver should display status messages
    396- `constraints/exact{linear,sol}/{sepafreq,propfreq,proptiming,eagerfreq,maxprerounds,delaysepa,delayprop,presoltiming}`: functionality of constraint handlers exactlinear and exactsol
    397- `constraints/exactlinear/sortvars`: whether binary variable coefficients should be sorted with decreasing absolute value in exactlinear constraints
    398- `constraints/exactlinear/{tightenboundsfreq,propcont,limitdenom,boundmaxdenom}`: propagation of exactlinear constraints
    399- `constraints/exactlinear/{maxrounds,maxroundsroot,maxsepacuts,maxsepacutsroot}`: separation of exactlinear constraints
    400- `constraints/exactsol/solbufsize`: size of solution buffer in exactsol handler
    401- `constraints/exactsol/{minimprove,checkfpfeasibility,checkcontimplint,abortfrac,unfixfrac}`: solution processing in exactsol handler
    402- `constraints/exactsol/maxstalls`: maximal number of consecutive unsuccessful reparations in exactsol handler
    403- `certificate/filename`, `certificate/maxfilesize`: certificate file
    404- `branching/pscost/discountfactor`, `branching/relpscost/discountfactor`: discount factor for ancestral pseudo costs in pscost and relpscost branching rules
    405- `branching/collectancpscost`: enable/disable recording of ancestral pseudo costs
    406- `branching/relpscost/dynamiclookahead`, `branching/relpscost/dynamiclookaheadquot`, `branching/relpscost/dynamiclookdistribution`, `branching/relpscost/minsamplesize`:
    407 configure the dynamic max-lookahead criterion for strong branching: enable flag, fraction threshold, distribution choice, and minimum sample size
    408- `constraints/cumulative/maxtime`: limit the time horizon and avoid integer overflow for unbounded variables
    409- `constraints/orbitope_full/forceconscopy`, `constraints/orbitope_pp/forceconscopy`: whether non-model constraints of type full orbitope and packing/partitioning orbitope are copied to sub-SCIPs, respectively
    410- `propagating/symmetry/handlesignedorbitopes`: whether to apply special symmetry handling techniques for orbitopes whose columns can be (partially) reflected
    411- `propagating/symmetry/usesimplesgncomp:` whether symmetry components all of whose variables are simultaneously reflected by a symmetry shall be handled by a special inequality
    412- `propagating/symmetry/dispsyminfo`: whether to print information about applied symmetry handling methods
    413- `propagating/symmetry/nautymaxlevel`: limit on depth level of Nauty's search tree
    414- `presolving/implint/convertintegers`: whether implied integrality should also be detected for enforced integral variables
    415- `presolving/implint/columnrowratio`: ratio of rows/columns where the row-wise network matrix detection algorithm is used instead of the column-wise network matrix detection algorithm
    416- `presolving/implint/numericslimit`: limit for absolute integral coefficients beyond which the corresponding rows and variables are excluded from implied integrality detection
    417- `write/implintlevel`: whether integrality constraints should be written for implied integral variables (regarded by cip, mps, lp, rlp, pip, fzn, and gms writers)
    418- `iis/∗`
    419- `presolving/milp/enablecliquemerging`: whether to enable clique merging in PaPILO
    420- `presolving/milp/maxedgesparallel`: maximal number of edges in the parallel clique merging graph
    421- `presolving/milp/maxedgessequential`: maximal number of edges in the sequential clique merging graph
    422- `presolving/milp/maxcliquesize`: maximal size of cliques considered for clique merging
    423- `presolving/milp/maxgreedycalls`: maximal number of greedy max clique calls in a single thread
    424- `heuristics/dks/∗`: heuristic decomposition kernel search
    425- `relaxing/benders/continueorig`: whether original problem should continue solving after the completion of the Benders' decomposition algorithm in the Benders' relaxator, if the problem is not solved to optimality
    426- `relaxing/benders/nodelimit`: node limit for the Benders' decomposition master problem in the Benders' relaxator; by default the limits from the original SCIP instance are copied
    427- `conflict/usegenres`, `conflict/reduction`, `conflict/mbreduction`, `conflict/maxvarsfracres`, `conflict/resfuiplevels`, `conflict/fixandcontinue`, `conflict/maxcoefquot`: control generalized resolution conflict analysis
    428- `lp/minsolvedepth`: lower bound on the depth at which LPs are solved
    429- `reading/opbreader/maxintsize`: maximal intsize above which an OPB instance is rejected
    430- `reading/nlreader/binary`, `reading/nlreader/comments`: adjust writing of `nl` files
    431- `nlpi/conopt/priority`: priority of the CONOPT NLP solver
    432- `randomization/randomseedshiftmultiplier`: multiplier for the shift set by `randomization/randomseedshift`;
    433 the shift is multiplied by (6*`randomseedshiftmultiplier`+1), with the default value for `randomseedshiftmultiplier` set to 10 now;
    434 this default value is expected to change with every major release; setting the parameter to 0 restores SCIP 9 behavior
    435
    436### Other Changes
    437
    438- removed LP solver interface `lpi_spx1`, which used the old SoPlex interface; renamed `lpi_spx2` to `lpi_spx`
    439- removed `cons_abspower.{h,c}`, `cons_quadratic.{h,c}`, and `cons_soc.{h,c}`
    440
    441Build system
    442------------
    443
    444- new option `SYM=dejavu` to choose Dejavu for computing symmetries
    445- changed the default for `TPI` to `tny`
    446- added build flag `CHECKSTAGE=auto` to control stage checks in API function calls
    447- removed `LPS` options `spx1` and `spx2`, only `LPS=spx` is available to select SoPlex now
    448- removed previously deprecated `PARASCIP` option, use `THREADSAFE=false` instead to disable thread-safety
    449
    450### Makefile
    451
    452- added build flag `EXACTSOLVE=<true|false|auto>` to turn exact solving mode on, off, or turn it on if all necessary dependencies are available
    453- added build flag `MPFR` (default: false) to link with the multiprecision floating-point library, needed when SoPlex is also built with `MPFR=true` for precision boosting in rational solving mode
    454- added build flag `CONOPT` (default: false) to link to the CONOPT NLP solver
    455- link-time-optimization can be enabled on Linux and macOS with gcc and clang by setting `LTO=true`, default is false
    456- revised `SANITIZE` options: removed `SANITIZE=full`, added `SANITIZE=thread`, `SANITIZE=address`, and `SANITIZE=memory` to enable thread, address, and memory sanitizers, respectively, in addition to undefined behavior sanitizer;
    457 changed default to `SANITIZE=false`
    458- default settings for makefile variables in `make.project` are now only used if variable hasn't been set already
    459- the symlink `$(LIBDIR)/include/papilo` should now point to the `src` subdirectory of a PaPILO repository or the headers directory of a PaPILO installation without TBB; pointing to the directory of a PaPILO repository still works, but is deprecated
    460- removed option to link TBB library, as this is not used by default when PaPILO has not been built via cmake (use `USRCXXFLAGS=-DPAPILO_TBB USRLDFLAGS=-ltbb` to enable TBB for PaPILO)
    461- `LPS=spx` is no longer mapped to `LPS=spx2`, which changes the name of the generated LPI libraries and binaries when using SoPlex
    462- removed `OPENSOURCE` flag
    463
    464### Cmake
    465
    466- added build flag `EXACTSOLVE=<on|off|auto>` to turn exact solving mode on, off, or turn it on if all necessary dependencies are available
    467- added build flag CONOPT (default: off) to link to the CONOPT NLP solver and variable `CONOPT_DIR` to specify the path to CONOPT
    468- link-time-optimization can be enabled if supported by compiler by using `-DLTO=on`, default is `off`
    469- replaced `SANITIZE_XYZ=(on|off)` options by `SANITIZE=(on|off|thread|address|memory)`;
    470 undefined behavior sanitizer is always enabled if not `SANITIZE=off` (the default)
    471- increased minimal required cmake version to 3.11
    472- scip-config.cmake now defines a variable `SCIP_COMPILE_FLAGS`, which could be used to compile code that builds against SCIP via cmake;
    473 currently, this only passes on the sanitizer flags that were used to build `libscip`
    474- removed automatic download and build of Bliss during cmake configuration when `-DSYM=(s)bliss`;
    475 a Bliss installation from https://github.com/scipopt/bliss can be specified with `-DBLISS_DIR`
    476- removed option `LEGACY`
    477
    478Fixed bugs
    479----------
    480
    481- fixed bug related to unreleased data for the Benders' decomposition framework; when reading an SMPS file and applying
    482 Benders' decomposition, data is created that was not correctly released; also, data within the Benders' decomposition
    483 framework was not appropriately reset; the data is now released/reset as expected
    484- to fix a bug where duplicate cuts from different constraint handlers were not recognized, `SCIPrealHash()` was changed
    485 to be stable around shortly representable numbers, and a numerical tolerance for comparing cutting plane efficacy for the aggregation
    486 separator is introduced
    487- accept fractional continuous implied integral variables in heuristic "completesol"
    488- invalidate activity with contradicting infinity contributions
    489- avoid integer overflow in cumulative constraints triggered by unbounded variables, see new parameter `constraints/cumulative/maxtime`
    490- allow negative update in SCIPconsAddUpgradeLocks() to unlock constraint upgrade
    491- fixed memory leaks when LP, MPS, and OPB/WBO readers abort unsuccessfully
    492- removed erroneous catching of objective-changed events in intobj separator; instead, the separator no longer executes within probing with changed objective function
    493- propagator dualfix no longer fixes variables to infinity to avoid issues when transferring the solution to the original problem
    494- track and check bounds on the coefficients that is used for a variable in aggregations of other variables to improve numerical stability
    495- corrected the upgrade of full orbitopes to packing/partitioning orbitopes in case the orbitopal symmetries form a proper subgroup of a component's symmetry group
    496- aggregate integer variable to not in clique variable in cliquePresolve() of xor constraints to avoid infeasible solutions
    497- fixed memory leak in dynamic partition search primal heuristic
    498- fixed issue with file existence check in XML parser when SCIP was build with ZLIB support on Windows
    499- fixed thread-safety issue when using CppAD and user-defined expression handler
    500- fixed typo in `#pragma` directive of redistributed nauty.h
    501
    502Miscellaneous
    503-------------
    504
    505- removed 4th number in SCIP version; the new format is major.minor.patch
    506- changed sassy to the version included in Dejavu
    507- updated ampl/mp to v4.0.3
    508- the CIP reader now sets an objective offset instead of adding a variable fixed to the objective offset
    509- the solchecker tool has been extended for rational values
    510- SCIPclassifyConstraintTypesLinear() classify a varbound only when a binary variable is present
    511- the internal limit `MAXGENNUMERATOR` has been increased to allow more generators of symmetry groups, especially for problems with many variables
    512
    513@page RN9 Release notes for SCIP 9
    514
    515@section RN924 SCIP 9.2.4
    516*************************
    517
    518Fixed bugs
    519----------
    520
    521- fixed bugs with counting changes in presolving of nonlinear and setppc constraints, which resulted in negative values
    522- cut off dead end node to correctly track dual bound update during solving
    523- no longer construct and flush the LP in SCIPwriteLP() and SCIPwriteMIP() to avoid unexpected side effects
    524- apply multi-aggregations before detecting redundancy in propagation of varbound constraints to keep bound implications
    525- skip bound changes when cutting off a branch-and-bound subtree
    526- correct detection of doublelex matrices and their handling via orbitope constraints
    527- skip attempting to free transformed problem if SCIPtransformProb() failed with an error in SCIPpresolve(), since freeing
    528 the transformed problem is likely to fail as well
    529- fixed memory leak in primal heuristic "scheduler" when there is a restart
    530- fixed stopping when there is a candidate with a change in the LP bound for both children in strong branching of branch_fullstrong
    531- fixed detection of sinks in varbound detection from cumulative constraints
    532- fixed memory allocation when adding strong SBCs for enclosing orbit of symmetric subgroups (disabled by default)
    533- free paths of branch-and-bound tree iteratively instead of recursively to avoid stack overflow
    534- fixed rare invalid memory access when collecting symmetry information for indicator constraints
    535- recompute activity bounds before checking infeasibility and redundancy in linear constraint presolving
    536- skip integer variables with fractional value in reference solution when finding additional variable fixings in ALNS heuristic
    537- fix call of SCIPaddExprsViolScoreNonlinear() with constant expressions (no variables)
    538- fixed bug with concurrent solve w.r.t. variable indices that led to segmentation faults and fix termination test
    539- adjust further bounds before checking feasibility in SCIPvarAddVlb() and SCIPvarAddVub() to detect integrality cutoff
    540- fixed that the last fixed binary variable was not set after binary variables were created for linking constraints
    541- fixed that when a linking constraint with only one binary variable was added during solving, it was not disabled
    542- fixed set_search_limits call when using SYM=sbliss with an old patched Bliss version
    543
    544Build system
    545------------
    546
    547### CMake
    548
    549- added workaround for recent ctest versions rejecting -R -default as arguments
    550
    551### Makefile
    552
    553- added experimental target to run cppcheck
    554
    555
    556@section RN923 SCIP 9.2.3
    557*************************
    558
    559Fixed bugs
    560----------
    561
    562- avoid hashmap key error in removal of doubletons and singletons in dual presolve of setppc constraints by skipping tripleton locks
    563- when upgrading to xor constraint require parity variable to be enforced integral
    564- provide the depth of the applied effective root with SCIPtreeGetEffectiveRootDepth() to avert invalid globalization of constraint set changes
    565- disable objective limit during lexicographic dual minimization to preserve feasibility status
    566- declare infinite bound inference infeasible in SCIPinferVarLbCons() and SCIPinferVarUbCons() to maintain correct loose LP values
    567- fixed update of consssorted flags in a variable expressions data when adding an additional constraint using this variable
    568- corrected computation of number of variables affected by symmetry
    569- fixed computation of symmetry group size
    570- correct comparison conditions in checkRedundancySide() of cons_varbound.c to ensure pair redundancy
    571- also for the initial LP solve force acceptance of Farkas row in SCIPlpGetDualfarkas() if all other means for obtaining a reliable Farkas proof have failed
    572- avoid overwriting the cutoff flag in tightenCoefs(), preprocessConstraintPairs(), and applyFixings() of cons_varbound.c to reject infeasible solutions
    573- fix memory leak in CppAD interface w.r.t. user expressions
    574- adjust bound before checking feasibility in SCIPvarAddVlb() and SCIPvarAddVub() to detect integrality cutoff
    575- choose incumbent solution as reference in varFixingsRins() and varFixingsDins() of ALNS heuristic to ensure integrality
    576- consider variable type in selectInitialVariableRandomly() of GINS heuristic to count integral variables
    577- correct fractionality sign when standardizing bounds in simplifyInequalities() of cons_linear.c
    578
    579Build system
    580------------
    581
    582### CMake
    583
    584- disable setting the boolean variable MACOSX_RPATH to a string value to actually enable @rpath usage
    585- define SOPLEX_NEEDED and ZIMPL_NEEDED to avoid syntax error in configuration file
    586
    587Miscellaneous
    588-------------
    589
    590- when writing a problem with non-generic names, warnings are printed if variable or constraint names are not unique
    591
    592@section RN922 SCIP 9.2.2
    593*************************
    594
    595Fixed bugs
    596----------
    597
    598- fixed definition of slack variables of >= constraints and ranged rows in LP interface to Gurobi
    599- free memory leaking singleton arrays for ignored variables in SCIPapplyHeurDualval()
    600- use epsilon tolerance for bound implications of dual substitutions in dualPresolve() of cons_linear
    601- fixed timeouts due to race conditions when using TPI=omp
    602- fixed issues with indexing of concurrent solvers when a solver finishes (because SCIP is too fast) before others have been created when using TPI=tny
    603- respect fixing if variable is declared binary in bounds section of mps file
    604- fixed reading mps files with short row and column names and some fixed-form mps files with spaces in row names
    605- force local bounds to adjusted value when fixing variable
    606- adds missing NULL check for Benders' subproblems in feasalt cut
    607- apply objective scale to pseudoboolean non-linear terms
    608- impose pseudoboolean cost bound without intermediate casting
    609- flatten aggregation graph before finishing presolve to accelerate evaluating an empty solution
    610- respect fixed resultants in binvarGetActiveProbindex() of branch_relpscost
    611- drop fixed resultants when copying pseudoboolean constraint
    612- correct matrix entry when resolving aggregated variables in checkSystemGF2() of cons_xor
    613- corrected symmetry detection graph of cons_and, cons_or, cons_xor, and cons_indicator
    614- correct redundancy filter in consdataCreateRedundant() of cons_bounddisjunction
    615- replaced unreliable comparison of node pointers by node numbers in prop_genvbounds
    616- allocate memory for all integral variables in applyCliqueFixings() of heur_clique
    617- fix conflict resolution for one particular case in cons_indicator
    618- make interface to nauty thread safe
    619- use relative epsilon tolerance to check Farkas row in SCIPlpGetDualfarkas() to avoid invalid cutoff
    620- fixed bug with SOS2 constraints of size that avoided a correct enforcing
    621
    622Build system
    623------------
    624
    625### Cmake
    626
    627- allow to set HIGHS_DIR via -D flag as well
    628- reenable building and testing of SCFLP example
    629- fixed that compiler flags for sanitizers were not used for compiling objects of SCIP library
    630- prioritize local includes for unittests, examples, and applications to link the intended SCIP version
    631- fix detection of Gurobi 11 and 12 libs on Linux
    632
    633### Makefile
    634
    635- fix use of SANITIZE=full for debug builds with GCC on Linux: removed -fsanitize=leak because it cannot be used together with -fsanitize=address
    636- fix that make install SHARED=true missed to install libscipbase
    637
    638@section RN921 SCIP 9.2.1
    639*************************
    640
    641Fixed bugs
    642----------
    643
    644- apply same feasibility definition in PaPILO as in SCIP to avoid numerical inconsistencies
    645- check variable cancellation in SCIPvarAddVlb() and SCIPvarAddVub() to avert wrong infeasibility
    646- SCIPfreeReoptSolve() now also clears partial solutions
    647- fixed bug in calculation of "fractionality score" for spatial branching candidates in cons_nonlinear
    648- fixed bug with installing symmetry dialog in sub-SCIPs
    649- added copy callbacks for presolvers dualagg and redvub, branching rules lookahead and cloud, primal heuristics dualval and repair, propagator nlobbt, and separators gauge and convexproj
    650- respect maximal separation rounds setting by running remaining delayed separators in last round
    651- replace terms consistently in applyFixings() of cons_linear to handle infinite aggregations
    652
    653Build system
    654------------
    655
    656### Cmake
    657
    658- fix SCIP Optimization Suite build with -DSYM=(s)bliss and bliss being downloaded and built during configuration by cmake
    659- fix use of a bliss cmake installation (from https://github.com/scipopt/bliss) specified via BLISS_DIR if -DSYM=(s)bliss
    660
    661### Makefile
    662
    663- the check/solchecker build can now use also GMP installations by Homebrew on macOS/arm64
    664
    665Miscellaneous
    666-------------
    667
    668- the output precision for writing CIP/OPB files has been increased at several places for nonlinear constraints
    669- the solchecker tool now also supports SCIP solutions without unknown or infinite values
    670- generate an error if the same linear constraint is used by several indicator constraints
    671
    672@section RN920 SCIP 9.2.0
    673*************************
    674
    675Features
    676--------
    677
    678- added check for absolute and relative gap limits at end of synchronization in concurrent solving mode, in order to terminate earlier;
    679 note that if the concurrent solve is stopped due to a gap limit, the "winner" solver will have an interrupted solution status and
    680 its primal and dual bounds may not be the best possible ones (use SCIPgetConcurrentPrimalbound() and SCIPgetConcurrentDualbound() instead)
    681- parse pseudoboolean constraint from CIP format (and add linear-"and"-reformulation)
    682
    683
    684Performance improvements
    685------------------------
    686
    687- reoptimization now also stores propagations from propagators if reoptimization/saveconsprop is enabled;
    688 the parameter will be renamed to reoptimization/saveprop in a next major release
    689- imposed stricter limits on the size of disconnected components which may be solved separately during presolve
    690- use individual slack variables also for constraints indicated by a common binary variable to use tighter formulation by default
    691- when computing symmetries using Nauty, iteration limits are now available to terminate Nauty early
    692
    693Fixed bugs
    694----------
    695
    696- Benders' decomposition subproblems that are always infeasible are correctly handled and the complete problem is declared infeasible
    697- skip linear constraint propagation if the residual activity bound cancels the side precision
    698- correct bound tracking to make the evaluation of primal-dual-integrals work
    699- skip aggregations on fixed variables in milp presolver to avoid errors for earlier versions of PaPILO
    700- use indices of negation counterparts and accept fixings when ordering and-resultants of pseudoboolean constraints
    701- update locks on model variables before removing pseudoboolean constraints in presolve
    702- reformulate soft pseudoboolean constraints with linear constraints if the indicator decomposition is disabled
    703- add workaround for recent HiGHS versions resetting the model status when changing the presolve option after a solve
    704- avoid hashmap key error in removal of doubletons and singletons in dual presolve of setppc constraints by updating constraints and corresponding hashmaps after each multi-aggregation
    705
    706Interface changes
    707-----------------
    708
    709### New API functions
    710
    711- added SCIPtpiIsAvailable() to check whether a working task processing interface is available (TPI != none)
    712- added SCIPtpiGetLibraryName() and SCIPtpiGetLibraryDesc()
    713- SCIPdelCons() can now also be called in SCIP_STAGE_TRANSFORMED
    714- added SCIPstrcasecmp() and SCIPstrncasecmp() for case-insensitive string comparison
    715- added SCIPbendersSubproblemsAreInfeasible() to return if at least one subproblem has been identified as being
    716 infeasible prior to performing any variable fixing
    717
    718### New parameters
    719
    720- presolving/milp/abortfacexhaustive to control the abort threshold for exhaustive presolving in PAPILO
    721- presolving/milp/abortfacmedium to control the abort threshold for medium presolving in PAPILO
    722- presolving/milp/abortfacfast to control the abort threshold for fast presolving in PAPILO
    723- constraints/components/maxcompweight to determine the maximum weight for a disconnected component that is solved during presolve
    724- constraints/components/contfactor counts the contributing factor of a single continuous variables with respect to the weight limit specified by constraints/components/maxcompweight
    725- constraints/indicator/usesameslackvar to decide whether the same slack variable should be used for indicators constraints with common binary variable
    726- propagating/symmetry/nautymaxncells and propagating/symmetry/nautymaxnnodes to set iteration limits in Nauty (only available if build with SYM=nauty or SYM=snauty)
    727
    728### Changed parameters
    729
    730- presolving/milp/threads is now only available if PaPILO is built with TBB
    731- changed default of numerics/recomputefac to 1e+6 to aim at relative epsilon precision
    732
    733Build system
    734------------
    735
    736### Cmake
    737
    738- attempted to fix detection of CPLEX library on macOS and Windows systems
    739
    740Testing
    741-------
    742
    743- added parameter FILTER for tests/Makefile to run only tests with a specific pattern (ctest with -R FILTER)
    744
    745Miscellaneous
    746-------------
    747
    748- adjusted Gurobi interface for Gurobi 12
    749- reordered events: BESTSOLFOUND/NODE_FEASIBLE are now processed before the nodes are cut off and before NODE_DELETE events are processed
    750- removed `#define` of `getcwd` (in case of Windows builds) in scip/def.h
    751- the `#define` of `strcasecmp` and `strncasecmp` (in case of Windows builds) in scip/def.h will be removed with SCIP 10;
    752 use `SCIPstr(n)casecmp()` (scip/pub_misc.h) instead
    753
    754@section RN911 SCIP 9.1.1
    755*************************
    756
    757Fixed bugs
    758----------
    759
    760- fix bug in separator aggregation that caused incorrect terminations when for an integral objective the objective limit was set to a fractional value
    761- fix bug in memory management of doublelex matrices where indices were set beyond array bounds
    762- store relevance flags in consdataTightenCoefs() of cons_linear.c to avoid dropping variables unintentionally due to numerical changes
    763- fix possible segmentation fault when resetting local and global bounds of original variables after abnormal termination
    764- compare coefficient scales to detect parallelism to avoid integral relaxations in detectRedundantConstraints() of cons_linear.c
    765- remove coefficient information from linear constraint hashes in order to compare keys with tolerances
    766- fixed NULL pointer dereference in SCIPtpiGetNumThreads() of TinyCThread interface if called before SCIPtpiInit(); now returns 0 in this case
    767- calling SCIPsolveConcurrent() when SCIP was compiled without a TPI now results in a plugin-not-found error
    768- fixed LPI status functions of lpi_cpx if the barrier is called
    769- check cuts for redundancy after scaling in cutTightenCoefs() and cutTightenCoefsQuad() of cuts.c
    770- maintain definition of artificial integral variables in xor constraints to avoid invalidation of conflict constraints
    771- free childless nodes only after the deactivation of the old focus path in treeSwitchPath() of tree.c
    772- only normalize rows for column norm evaluations in shift-and-propagate heuristic to avoid unscaled violations
    773- expression handler for absolute value computes now also a cut when one of the bounds is infinite as long as the sign of the argument is known
    774- check for more data to be freed before modifying nonlinear constraints in SCIPaddExprNonlinear()
    775- allow for terms with zero coefficients when checking sum in SCIPexprCheckQuadratic()
    776- do not abort writing of constraints to lp/pip files (and forget to free buffer memory) when encountering unsupported nonlinear constraint
    777- fixed that strings with names and descriptions of the LPI's were not null-terminated
    778- fixed decision on when to enforce nonlinear constraints on relaxation solutions if integer variables are present
    779- fixed reading of very long lines (>78000 characters) in FlatZinc reader
    780- fixed write of strings with at least 1024 characters when compiling with MSVS 2015 (14.0) or later (still an issue with earlier MSVS, which will not be fixed)
    781- keep epsilon coefficients in applyFixings() of cons_linear.c until multiples are merged to avoid loss of relevant contributions
    782- fixed that some variable type changes were not accounted correctly in presolve of linear constraints
    783- fix constraint sorting in setpp-orbitope upgrade in symmetry code
    784- fixed that SCIPnodeGetConsProps() also counted bound changes from propagators
    785- use original and-constraints of an untransformed pseudoboolean constraint when copying original problems to avert segmentation faults
    786- sort and-constraints of a pseudoboolean constraint with respect to the resultant problem indices to avoid shuffled copies
    787- treat pseudoboolean constraints as nonlinear constraints in OPB reader to prevent duplication mistakes
    788
    789Examples and applications
    790-------------------------
    791
    792- in example Binpacking implement Farkas pricing for packings because branching can actually lead to infeasible restricted master LPs
    793
    794Testing
    795-------
    796
    797- allow unknown parameters to let tests pass if only optional dependencies are missing
    798
    799Build system
    800------------
    801
    802### Cmake
    803
    804- fixed compilation and linking with HiGHS; to use HiGHS, cmake now requires to specify the directory containing the `highs-config.cmake` file via `-DHIGHS_DIR`
    805- extended identification of Ipopt library on Windows to also look for ipopt.dll.lib, as this is used since Ipopt 3.13.0 (2019)
    806
    807
    808@section RN910 SCIP 9.1.0
    809*************************
    810
    811Features
    812--------
    813
    814- added constraint handler that checks and enforces bounds on original variables which have been fixed or aggregated in the transformed problem
    815- allow for implicit integer variables in xor constraints
    816- implemented symmetry detection callbacks for pseudoboolean constraints
    817- added option to consider enforcement of nonlinear constraints (including spatial branching) before integrality has been enforced
    818
    819Fixed bugs
    820----------
    821
    822- make sure that, in dual proof analysis, upgraded constraints can report their number of variables
    823- check knapsack constraints as linear constraints to avoid violations based on implicit integrality
    824- make sure that symmetry detection callbacks report success
    825- make arithmetics in cuts.c more robust to avoid invalid scg cuts due to numerical rounding sensitivity
    826- allow to copy pseudoboolean constraints even if no AND constraints are present in order to avoid a warning
    827- set value for variable that is introduced to reformulate nonlinear objective function when reading .nl files with initial solution
    828- fixed that multi-aggregations from PaPILO were accepted without ensuring that their bounds hold
    829
    830Examples and applications
    831-------------------------
    832
    833- TSP: removed `gzstream.h/hpp` and parse gzipped files differently
    834
    835Interface changes
    836-----------------
    837
    838### New callbacks
    839
    840- SCIP_DECL_NLHDLRENFO takes additional parameter branchcandonly to indicate whether only branching candidates should be registered,
    841 without looking for cuts or boundchanges
    842
    843### New API functions
    844
    845- new function SCIPgetExprActivityNonlinear() to get activity of nonlinear constraint
    846- new function SCIPincludeConshdlrFixedvar() to include new constraint handler that checks bounds on fixed original variables
    847
    848### New parameters
    849
    850- limits/primal to terminate the solve as soon as the primal bound is at least as good as this value, same as limits/objectivestop (deprecated)
    851- limits/dual to terminate the solve as soon as the dual bound is at least as good as this value
    852- presolving/milp/internalmaxrounds to control the maximal rounds for each call of the milp presolver (PaPILO)
    853- constraints/fixedvar/∗ to control the new constraint handler that checks bounds on fixed original variables
    854- constraints/nonlinear/branching/mixfractional to specify minimal average pseudo cost count for discrete variables
    855 at which to start considering spatial branching before branching on fractional integer variables
    856 (default infinity means that integrality is always enforced before nonlinear constraints)
    857- constraints/nonlinear/branching/fracweight to specify weight of fractionality of integer variables in spatial branching
    858
    859### New data structures
    860
    861- enum SCIP_Status has been extended by SCIP_STATUS_PRIMALLIMIT and SCIP_STATUS_DUALLIMIT to indicate termination at limits/primal and limits/dual respectively
    862
    863Build system
    864------------
    865- changed the default symmetry computation package from sassy+bliss to sassy+nauty
    866- bliss source is no longer included in the source tree, but can be linked as external library (https://github.com/ds4dm/Bliss)
    867- cmake now automatically downloads and installs the latest release version of SoPlex from GitHub if it is not found directly
    868
    869Miscellaneous
    870-------------
    871
    872- updated nauty to version 2.8.8
    873
    874
    875@section RN901 SCIP 9.0.1
    876*************************
    877
    878Fixed bugs
    879----------
    880
    881- fixed bug in detection of double lex matrices due to wrong memory allocation
    882- fixed bug where parameter `limits/objectivestop` was copied to subscips in plugins which have different objectives
    883- in count mode respect empty solution when problem is solved in presolving
    884- fixed that SCIP may have tried to pass a negative random seed to an LP solver
    885- fixed bug where conflict analysis in strong branching tried to analyze an unsuccessful LP solve
    886- enable parameter limits/restarts by allowing to reach the restart limit in restartAllowed()
    887- handle normalizing linear constraints in presolving with more caution to avoid numerical difficulties for integer variables with large coefficients
    888- use quad precision to calculate residual activity bounds to reduce numerical errors for large variable bounds in cons_linear.c
    889- in SCIPsolveProbingLP() when objective has been changed do not return cutoff due to exceeding the cutoff bound
    890- set probing LP to be a relaxation only when objective has not been changed
    891- declare contradicting infinities in getMinActivity() and getMaxActivity() as non-tight
    892- reject farkas solution with large values to bound magnification of errors in SCIPgetFarkasProof()
    893- if all variables are fixed, apply relative feasibility tolerance to avoid invalid infeasibility in applyFixings() of cons_linear.c
    894- delete empty redundant knapsack and linear constraints after cleanup in SCIPmatrixCreate()
    895- cleanup first constraints in SCIPcleanupConssVarbound(), SCIPcleanupConssSetppc(), and SCIPcleanupConssLogicor()
    896- symmetry handling methods have not been added immediately after computing symmetries, which has been fixed
    897- delay checking node limits after presolving to correctly continue up to the exceeding main node
    898- simplified the objective sense assumption for the subproblems in the Lagromory separator
    899- update effective root depth iteratively to avoid trapping it at a single child node
    900- fixed that dualsparsify presolver did not always check do-not-multiaggregate variable flag
    901- fixed bug in computing elements of orbits in orbital reduction
    902
    903Miscellaneous
    904-------------
    905
    906- redefine isrelax to istight in cons_linear.c
    907
    908Build system
    909------------
    910
    911### Cmake
    912
    913- A file cmake.log containing the changed options is written to the cmake build directory.
    914- removed replacement of the settings of RelWithDebInfo
    915- add compile option -ffp-contract=off or /fp:precise to enhance reproducibility across different systems
    916
    917### Makefile
    918
    919- add flags -ffp-contract=off and /fp:precise to enhance reproducibility across different systems
    920
    921Interface changes
    922-----------------
    923
    924### New parameters
    925
    926- added parameter "propagating/symmetry/symtiming" to determine when symmetries are computed and handled
    927
    928### Changed parameters
    929
    930- Disabled "propagating/symmetry/addconsstiming" since it is not used anymore.
    931- Disabled "propagating/symmetry/ofsymcomptiming" since it is not used anymore.
    932
    933@section RN900 SCIP 9.0.0
    934*************************
    935
    936Features
    937--------
    938
    939- added simplification of abs(x)^n to x^n when n is even (simplify rule POW12)
    940- in expression simplification, added possibility to expand power of sum with exponents larger than 2 (simplify rule POW7)
    941- in expression simplification, added possibility to expand products with sums as factor when there are more than two factors (simplify rule SP12b)
    942- in expression simplification, added possibility to allow expanding power of products with fractional exponent (simplify rule POW5a)
    943- can now build with Lapack (used for solving nonlinear problems) explicitly; if IPOPT is used, then Lapack is accessed through it;
    944 an interface to Lapack is available in lapack_calls.h
    945- added support for logical constraints in binary variables and basic logical operators (and, or, not, equal) to AMPL .nl reader
    946- indicator constraints now use the same slack variable for the linear constraints if binary variables are used multiple times
    947 for indicator constraints
    948- new diving heuristic indicatordiving that focuses on indicator variables which control semicontinuous variables
    949- updated statistics on NLP relaxation; information on convexity of NLP has been added
    950- added new bandit method (EXP.3-IX) that is the new default of the ALNS heuristic
    951- added dialog to display recognized permutation symmetries ("display symmetry")
    952- The symmetry detection code has been completely restructured. Instead of completely encoding symmetry information in
    953 prop_symmetry.c, there is a new callback for constraint handlers, which returns symmetry relevant information by
    954 encoding a constraint as a node and edge colored graph. This way, also custom constraint handlers can provide
    955 symmetry information.
    956- added special presolving step for logicor and set covering/packing for constraints with two variables and one independent variable
    957- 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
    958- added new cut selector plugin called cutsel_ensemble. Performs a superset of hybrid cutsel. Implements new filtering methods and scoring options.
    959- added new branching rule based on Gomory mixed-integer cuts
    960- added new branching score to the reliability pseudo-cost branching rule
    961- added new cut selector plugin called cutsel_dynamic. Performs a superset of hybrid cutsel. Implements new filtering methods and scoring options.
    962- added monoidal strengthening to intersection cut generation of nlhdlr_quadratic
    963- extended heuristic dps to run after processing the node and to use strict limits for the reoptimization step
    964- extended obbt propagator to handle variables of the linear constraints corresponding to indicator constraints
    965- added new heuristic heur_scheduler that models the selection of LNS and diving heuristics as a multi-armed bandit problem
    966- added nonlinear handler for signomial expressions: adds cuts based on a difference of convex functions representation
    967- 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.
    968- added a new separator sepa_lagromory to generate Lagromory cuts in a relax-and-cut framework, i.e., GMI cuts generated
    969 at different bases that are explored in the process of solving the Lagrangian dual problem at a node. This separator
    970 is OFF by default.
    971- when parsing nonlinear constraints from CIP files, the * after the number in a term is now optional if followed by a variable,
    972 i.e., instead of 3*<x>*<y>, now also 3<x>*<y> can be read, but 3<x><y> is not supported;
    973 this allows to read some CIP files that were written with SCIP < 8
    974- when running bliss, we now limit the number of actually created generators and not the ones considered by bliss
    975
    976Performance improvements
    977------------------------
    978
    979- Variable conflict-based addition of Schreier-Sims cuts for symmetry handling in prop_symmetry.c does no longer use
    980 an expensive explicit conflict graph construction.
    981- Only run propagation of indicator constraints if relevant variables have changed.
    982- Propagation of indicator constraints propagates maximal activity of linear constraint to upper bound of slack variable.
    983- Added initialization of LP relaxation for SOC constraints.
    984- Avoided some numerical issues when separating SOC constraints.
    985- If differentation of convex expression fails in convex nlhdlr, then a perturbed point is tried.
    986- Use sassy/bliss as default symmetry computation package.
    987- No longer linearize indicator constraints in undercover heuristic by default.
    988- Deactivate pre-root heuristic zeroobj in undercover heuristic.
    989- Added new branching score tiebreaker for reliability pseudo-cost branching rule
    990- Try nearest bound if zero solution value is out of bounds in heuristic trivial.
    991
    992Interface changes
    993-----------------
    994
    995### New and changed callbacks
    996
    997- Added solution linearization callback for nonlinear handlers.
    998 The nonlinear handler may use this callback to add tight cuts that use the given solution as reference point to the cutpool.
    999 The callback is called if option constraints/nonlinear/linearizeheursol is enabled.
    1000- The callback for copying problem data SCIP_DECL_PROBCOPY() now has a parameter "original" indicating whether the original
    1001 or transformed problem should be copied. Similarly, SCIPprobCopy() in prob.h/c has such a parameter.
    1002- Added CONSGETPERMSYMGRAPH and CONSGETSIGNEDPERMSYMGRAPH callback for constraint handlers, which provides symmetry information about constraints to SCIP.
    1003
    1004### Deleted and changed API functions
    1005
    1006- SCIPtpiInitLock(), SCIPtpiDestroyLock(), SCIPtpiInitCondition(), SCIPtpiDestroyCondition() now take a double
    1007 pointer to SCIP_LOCK/SCIP_CONDITION, respectively.
    1008- Renamed SCIPtpiSumbitJob() to SCIPtpiSubmitJob().
    1009- SCIPcreateConsIndicatorLinCons(), SCIPcreateConsIndicatorGenericLinCons() do not allow binvar to be NULL anymore
    1010- Replaced SCIPnlrowSetCurvature() by SCIPsetNlRowCurvature().
    1011- SCIPsnprintf() now returns the required string length in case reallocation is necessary.
    1012- SCIPcomputeCoverUndercover() receives three more arguments which nonlinearities to cover
    1013- removed definition of SQRT
    1014- SCIPincludeObjConshdlr(), SCIPincludeConshdlr(), SCIPconshdlrCreate() receive two more arguments for the
    1015 conshdlr callbacks CONSGETPERMSYMGRAPH and CONSGETSIGNEDPERMSYMGRAPH
    1016- removed SYM_VARTYPE, SYM_OPTYPE, SYM_CONSTTYPE, SYM_RHSTYPE, SYM_MATRIXDATA
    1017- new parameter issigned for SCIPcomputeOrbitsSym()
    1018- new parameter symtype for SCIPcomputeComponentsSym()
    1019- new parameter symtype and permvardomaincenter for SCIPlexicographicReductionAddPermutation()
    1020- replaced parameters matrixdata and exprdata of SYMcomputeSymmetryGenerators() by graph
    1021
    1022### New API functions
    1023
    1024- new functions for interfacing with Lapack: SCIPlapackIsAvailable(), SCIPlapackIsAvailable(), SCIPlapackComputeEigenvalues(), and SCIPlapackSolveLinearEquations
    1025 These functions should be used instead of SCIPisIpoptAvailableIpopt(), SCIPcallLapackDsyevIpopt(), and
    1026 SCIPsolveLinearEquationsIpopt() in the context of computing eigenvalues or solving linear equations.
    1027 If IPOPT is available, the calls will be passed on to Ipopt's interface to Lapack.
    1028- SCIPmultiplyBySumExprSum(), SCIPpowerExprSum()
    1029- SCIPsetParam()
    1030- SCIPgetPrimalDualIntegral() returns the primal dual integral stored in the statistics
    1031- new functions SCIPcreateConsIndicatorLinConsPure() and SCIPcreateConsIndicatorGenericLinConsPure() that
    1032 create indicator constraints from a linear constraint without a slack variable
    1033- SCIPgetNLPNlRowsStat() to retrieve counts on linear, convex, and nonconvex rows in NLP
    1034- SCIPnlhdlrSetSollinearize(), SCIPnlhdlrHasSollinearize()
    1035- SCIPbendersGetNLPParam()
    1036- new API functions SCIPlexicographicReductionGetStatistics(), SCIPlexicographicReductionPrintStatistics(),
    1037 SCIPlexicographicReductionPropagate(), SCIPlexicographicReductionAddPermutation(), SCIPlexicographicReductionReset(),
    1038 SCIPlexicographicReductionFree(), SCIPincludeLexicographicReduction(), for lexicographic reduction.
    1039- new API functions SCIPorbitopalReductionGetStatistics(), SCIPorbitopalReductionPrintStatistics(),
    1040 SCIPorbitopalReductionPropagate(), SCIPorbitopalReductionAddOrbitope(), SCIPorbitopalReductionReset(),
    1041 SCIPorbitopalReductionFree(), SCIPincludeOrbitopalReduction(), SCIPorbitopalReductionGetDefaultColumnOrdering(),
    1042 for orbitopal fixing.
    1043- new API functions SCIPorbitalReductionGetStatistics(), SCIPorbitalReductionPrintStatistics(),
    1044 SCIPorbitalReductionPropagate(), SCIPorbitalReductionAddComponent(), SCIPorbitalReductionReset(),
    1045 SCIPorbitalReductionFree(), SCIPincludeOrbitalReduction(), for orbital fixing.
    1046- new API functions SCIPgetShadowTreeEventHandlerExecutionTime(), SCIPshadowTreeGetShadowNodeFromNodeNumber(),
    1047 SCIPshadowTreeGetShadowNode(), SCIPgetShadowTree(), SCIPactivateShadowTree(), SCIPincludeEventHdlrShadowTree(),
    1048 for managing a copy of the branch-and-bound tree for symmetry handling purposes.
    1049- SCIPdotWriteOpening(), SCIPdotWriteNode(), SCIPdotWriteArc(), SCIPdotWriteClosing()
    1050- SCIPincludeCutselEnsemble(), SCIPselectCutsEnsemble() to include cutsel_ensemble or use the selection algorithm
    1051- SCIPincludeBranchruleGomory() includes new gomory cut based branching rule
    1052- SCIPgetVarAvgGMIScore(), SCIPincVarGMISumScore(), SCIPgetVarLastGMIScore(), SCIPsetVarLastGMIScore() set historical values used by SCIP's default branching rule
    1053- SCIPincludeNlhdlrSignomial() includes the signomial nonlinear handler
    1054- SCIPgetExprMonomialData() returns a monomial representation of a product expression
    1055- SCIPestimateRoot() computes estimators for roots with exponent in [0,1]
    1056- SCIPincludeCutselDynamic(), SCIPselectCutsDynamic() to include cutsel_dynamic or use the selection algorithm
    1057- SCIPincludeSepaLagromory() to include the new Lagromory separator
    1058- SCIPconsCompCheck() to compare two constraints based on their check priority
    1059- SCIPgetConsPermsymGraph() and SCIPgetConsSignedPermsymGraph() to access the (signed) permutation symmetry detection graph of a constraint
    1060- SCIPsetConshdlrGetPermsymGraph() and SCIPsetConshdlrGetSignedPermsymGraph() to set the (signed) permutation symmetry detection graph of a constraint
    1061- SCIPconshdlrSupportsPermsymDetection() and SCIPconshdlrSupportsSignedPermsymDetection() to access whether a conshdlr supports detection of (signed) permutation symmetries
    1062- new API functions for creating and manipulating a symmetry detection graph: SCIPcreateSymgraph(), SCIPfreeSymgraph(), SCIPcopySymgraph(), SCIPextendPermsymDetectionGraphLinear(),
    1063 SCIPaddSymgraphVarAggregation(), SCIPaddSymgraphOpnode(), SCIPaddSymgraphValnode(), SCIPaddSymgraphConsnode(), SCIPgetSymgraphVarnodeidx(), SCIPgetSymgraphNegatedVarnodeidx(),
    1064 SCIPupdateSymgraphLhs(), SCIPupdateSymgraphRhs(), SCIPfixSymgraphVarnode(), SCIPaddSymgraphEdge(), SCIPcomputeSymgraphColors(), SCIPgetSymgraphSymtype(), SCIPgetSymgraphVars(),
    1065 SCIPgetSymgraphNVars(), SCIPgetSymgraphNConsnodes(), SCIPgetSymgraphNNodes(), SCIPgetSymgraphNEdges(), SCIPgetSymgraphEdgeFirst(), SCIPgetSymgraphEdgeSecond(),
    1066 SCIPgetSymgraphVarnodeColor(), SCIPgetSymgraphNodeType(), SCIPgetSymgraphNodeColor(), SCIPisSymgraphEdgeColored(), SCIPgetSymgraphEdgeColor(), SCIPgetSymgraphNVarcolors(),
    1067 SCIPhasGraphUniqueEdgetype(), SCIPcreateSymgraphConsnodeperm(), SCIPgetSymgraphConsnodeperm(), SCIPfreeSymgraphConsnodeperm(),
    1068 SCIPgetSymActiveVariables(), SCIPfreeSymDataExpr(), SCIPgetSymExprdataNConstants(), SCIPgetSymExprdataConstants(), SCIPgetCoefSymData(),
    1069 SCIPcreateSymOpNodeType(), SCIPgetSymOpNodeType()
    1070- SCIPexprhdlrSetGetSymdata(), SCIPexprhdlrHasGetSymData(), SCIPgetSymDataExpr(), SCIPcallExprGetSymData() to access symmetry data of expressions
    1071- SYMcheckGraphsAreIdentical() to check whether two symmetry detection graphs are identical
    1072- new functions SYMbuildSassyGraph(), SYMbuildSassyGraphCheck()
    1073- new type SYM_GRAPH
    1074- new definitions SCIP_DECL_CONSGETPERMSYMGRAPH, SCIP_DECL_EXPRGETSYMDATA
    1075- new member SYM_NODETYPE_CONS in SYM_NODETYPE enum
    1076- new members SYM_CONSOPTYPE_SUM, SYM_CONSOPTYPE_SLACK, SYM_CONSOPTYPE_COEF, SYM_CONSOPTYPE_RHS, SYM_CONSOPTYPE_LAST in SYM_CONSOPTYPE enum
    1077- new defintion SCIP_DECL_EXPRGETSYMDATA
    1078- new function SCIPdetectSingleOrDoubleLexMatrices()
    1079
    1080### Command line interface
    1081
    1082- Added optional parameter -i when calling SCIP in AMPL-mode (-AMPL parameter).
    1083 If -i is specified, a SCIP shell is started where normally SCIPsolve() would be called.
    1084
    1085### Interfaces to external software
    1086
    1087- added interface to nauty/traces for symmetry computation
    1088- added interface to sassy, a preprocessor for symmetry computation
    1089- The directory src/sassy contains the source code of sassy.
    1090- Added interface to Lapack (used for solving nonlinear problems).
    1091- The AMPL interface now supports parameters specified in AMPL command scripts via option scip_options.
    1092 The value of scip_options is expected to be a sequence of parameter names and values, separated by a space, e.g.,
    1093 `option scip_options 'limits/time 10 display/verblevel 1';`.
    1094 String values should not be quoted and spaces in string values are not supported.
    1095- sassy can be used now as preprocessor for nauty/traces
    1096- The solution status codes written to AMPL solution files now match those from https://mp.ampl.com/details.html#_CPPv4N2mp3sol6StatusE.
    1097
    1098### Changed parameters
    1099
    1100- change default value of parameter separating/filtercutpoolrel to FALSE
    1101- Shrunk range of parameter "propagating/symmetry/sstleaderrule" from [0,3] to [0,2], removed "MAXCONFLICTS"-option.
    1102- 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).
    1103- Disabled "propagating/symmetry/symfixnonbinaryvars" since it is not used in the new symmetry code.
    1104- Replaced "propagating/symmetry/onlybinarysymmetry" with "propagating/symmetry/enforcecomputesymmetry" and set to FALSE by default.
    1105- Disabled "propagating/symmetry/performpresolving" since running orbital reduction during presolving is not effective.
    1106- Repurposed "propagating/symmetry/usedynamicprop" since it now also applies to lexicographic reduction.
    1107- Changed default value of parameter "propagating/symmetry/addsymresacks" from FALSE to TRUE.
    1108
    1109### New parameters
    1110
    1111- separating/maxcutsgenfactor and separating/maxcutsrootgenfactor as factors (w.r.t. separating/maxcuts and
    1112 separating/maxcutsroot) for limits on the number of cuts generated (which used to be constants '2')
    1113- expr/pow/expandmaxexponent to specify limit on exponent when to expand power of sum
    1114- expr/pow/distribfracexponent to enable expanding power of products with fractional exponents
    1115- expr/product/expandalways to enable expanding any product with sums as factor (that is, also when more than two factors)
    1116- nlhdlr/convex/maxperturb to specify maximal perturbation of non-differential reference points
    1117- benders/default/nlpiterlimit to adjust iteration limit for NLP solver for Benders' decomposition NLP subproblems
    1118- limits/objectivestop to interrupt the solve as soon as a primal solution is found
    1119 that is at least as good as the given value
    1120- heuristics/undercover/{coverand,coverind,covernl} to control which nonlinearities to consider (by default only "and" and nonlinear constraints)
    1121- cutselection/ensemble/∗ all parameters for new ensemble cut selector
    1122- cutselection/dynamic/∗ all parameters for new dynamic cut selector
    1123- branching/relpscost/gmiavgeffweight specifies the weight in the relpscost branching score of the normalized efficacy of all generated GMI cuts (for a variable)
    1124 branching/relpscost/gmilasteffweight specifies the weight in the elpscost branching score of the normalized efficacy of the last generated GMI cut (for a variable)
    1125- nlhdlr/quadratic/usemonoidal to enable monoidal strengthening when separating quadratics with intersection cuts
    1126- nlhdlr/quadratic/trackmore to collect more statistics for monoidal strengthening when separating quadratics with intersection cuts
    1127- nlhdlr/quadratic/useminrep to use the minimal representation to compute cut coefficients when separating quadratics with intersection cuts
    1128- nlhdlr/quadratic/sparsifycuts to enable sparsification of intersection cuts for quadratics
    1129- heuristics/dps/reoptlimits to set strict limits for the reoptimization step in dps
    1130- heuristics/dps/timing to run dps after processing the node
    1131- heuristics/scheduler/∗ all parameters for new scheduler heuristic
    1132- nlhdlr/signomial/enabled, nlhdlr/signomial/maxnundervars, nlhdlr/signomial/mincutscale: parameters for the signomial nonlinear handler
    1133- separating/lagromory/freq to denote the frequency for calling Lagromory separator
    1134- separating/lagromory/away to denote the minimal integrality violation of a basis variable to try separation
    1135- separating/lagromory/dynamiccuts to denote whether the generated cuts be removed from LP if they are no longer tight
    1136- separating/lagromory/maxroundsroot to denote the maximal number of separation rounds in the root node
    1137- separating/lagromory/maxrounds to denote the maximal number of separation rounds in a non-root node
    1138- separating/lagromory/nmaxcutsperlproot to denote, in the root node, the maximal number of Lagromory cuts that can be
    1139 separated per explored basis of the Lagrangian dual
    1140- separating/lagromory/nmaxcutsperlp to denote, in a non-root node, the maximal number of Lagromory cuts that can be
    1141 separated per explored basis of the Lagrangian dual
    1142- separating/lagromory/perroundnmaxlpiters to denote the maximal number of separating LP iterations that are allowed per
    1143 separation round
    1144- separating/lagromory/dualdegeneracyratethreshold to denote the minimum dual degeneracy rate for the separator execution
    1145- separating/lagromory/varconsratiothreshold to denote the minimum variable-constraint ratio on the optimal face for the
    1146 separator execution
    1147- many other advanced parameters for the Lagromory separator, which are also mentioned under separating/lagromory/∗
    1148
    1149### Data structures
    1150
    1151- new data structure SYM_GRAPH to encode symmetry information from a constraint
    1152- new data structure SYM_EXPRDATA to encode symmetry information from expressions
    1153- replaced enum SYM_SYMTYPE by a complete new one; removed SYM_RHSSENSE, added SYM_NODETYPE and SYM_CONSOPTYPE
    1154
    1155Deleted files
    1156-------------
    1157
    1158- 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
    1159
    1160Unit tests
    1161----------
    1162
    1163- new unittests for nlhdlr_quadratic that test monoidal strengthening and the use of the minimal representation to compute cut coefficients
    1164- unittests for nlhdlr_signomial
    1165
    1166Testing
    1167-------
    1168
    1169- changed `set lim obj` to `set lim objective` in ctest since `obj` is no longer unambiguous
    1170
    1171Build system
    1172------------
    1173
    1174### Cmake
    1175
    1176- New flag -DLAPACK=on for linking with Lapack (must be available in the system)
    1177- added flag option "SYM=sbliss" for using sassy/bliss as a graph automorphism package
    1178- use SYM=sbliss by default, since sassy and bliss are now shipped with SCIP.
    1179- added flag option "SYM=snauty" for using sassy/nauty as a graph automorphism package
    1180
    1181### Makefile
    1182
    1183- added flag option "nauty" for SYM variable to specify which graph automorphism package should be used
    1184- added flag option "sbliss" (sassy/bliss) for SYM variable to specify which graph automorphism package should be used
    1185- added flag option "snauty" (sassy/nauty) for SYM variable to specify which graph automorphism package should be used
    1186- use SYM=sbliss by default, since sassy and bliss are now shipped with SCIP
    1187- New flag LAPACK for linking with Lapack (must be available in the system)
    1188- A file scip/config.h is created in the build directory ($(OBJDIR)/include) now.
    1189 Defining NO_CONFIG_HEADER is no longer necessary and has no effect anymore.
    1190
    1191Fixed bugs
    1192----------
    1193
    1194- Number of runs in which separation is enabled will now be correct as per "separating/maxruns" parameter. Earlier,
    1195 separation was enabled for "maxruns + 1" number of runs, i.e., separation was enabled even when "maxruns = 0" was set.
    1196- add safeguard for number of selected cuts
    1197- use double double precision for delta in activity updates of cons_linear.c
    1198- sort constraints in checkSolOrig() to keep the logic of constraint handlers intact
    1199- fixed make install when SHARED=no and make uninstall
    1200- check absolute coefficients relative to extremal average to avoid invalid unifications in normalizeCons()
    1201- enforce and check symmetry-based constraints to take their locks (in dual reductions) into account
    1202- flush changes at the end of SCIPlpiSetBase() in lpi_grb.c to apply the newly set basis correctly
    1203
    1204Miscellaneous
    1205-------------
    1206
    1207- The TPI has been changed to become mostly independent from the actual parallel interface during compile time.
    1208 For this, the locks and conditions are now pointers to abstract structs.
    1209- fixed that scip/def.h, the header for C preprocessor definition (`#define`'s), included headers for some SCIP type and function definitions
    1210 (scip/type_retcode.h, scip/type_message.h, scip/pub_message.h)
    1211
    1212
    1213@page RN8 Release notes for SCIP 8
    1214
    1215@section RN810 SCIP 8.1.0
    1216*************************
    1217
    1218Fixed bugs
    1219----------
    1220
    1221- fixed that scaling of rows in Gurobi interface (SCIPlpiScaleRow()) changed infinite sides to large finite ones (1e20) when scale factor is negative
    1222- check whether objective limit is truly reached in SCIPlpiIsStable()
    1223- if an objective limit is set and Mosek claims that it is exceeded, check that this is indeed the case in SCIPlpiIsStable()
    1224- the .mps file reader was extended to additionally accept .mps files with the objective sense section on one line
    1225- ensure that delayed cutpool separation does not happen if enough cuts have been found already
    1226- 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
    1227- 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
    1228- fixed memory leak in branching rule "distribution"
    1229- 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
    1230- fixed two bugs in cons_varbound: avoid adding variable bounds if vbdcoef is infinite and unlock/lock variables if lhs/rhs/vbdcoef are changed
    1231- 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
    1232- fixed error when attempting to copy SCIP with activated pricers
    1233- 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
    1234- updated and, or, and pseudoboolean constraint handlers to better handle fractional implicit integer variables in enforcement
    1235- 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
    1236- add missing row links to columns in SCIPflushRowExtensions() required to maintain correct row norms
    1237- restrict separator intobj to solutions for which there can be no better feasible integral objective values to avoid cutting them off
    1238- delay removal of clique lists from SCIPvarRemoveCliquesImplicsVbs() into cliqueCleanup() to avoid segmentation faults by incomplete cleanups after variable conversions
    1239- reject sub-solutions with invalid objectives in SCIPtranslateSubSols() due to contradicting infinite contributions
    1240- correct column index in getMinMaxActivityResiduals() to make presolver dualinfer work
    1241- copy quiet flag from main scip's message handler to the one of solverscip in concurrent optimization
    1242- avoid bound tightening cycles towards huge redundancy bounds in fullDualPresolve() to avert fatal numerical trouble in representing vertices of linear relaxations with unbounded domains
    1243- fix problem where debug solution did not work if branching constraints are present
    1244- update index of dominating variable on coefficient deletion in dualPresolving() of constraint handler logicor
    1245- pass on flags from a redundant to the implying varbound constraint in preprocessConstraintPairs() to avoid suboptimal fixings by model relaxations
    1246- apply reductions of dualinfer only if a dual solution exists (primal is bounded)
    1247- before presolving is finished check solutions before retransforming them including tiny values to keep check flags consistent
    1248- 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
    1249- correct local flag of singleton conflict constraints in tightenSingleVar() against invalid bound globalization
    1250- respect unboundedness in the computation of activity bounds in conflict.c to avoid invalid huge bounds due to small coefficients on unbounded variables
    1251- ensure positive sides of a linear constraint when recognizing a set partition in rangedRowSimplify() to account for redundancy issues
    1252- relax numerical conditions for variable aggregations to avert invalid variable fixings
    1253- fixed harmless read of uninitialized data when creating parameters
    1254- fix call of SCIPnlpiOraclePrintProblem in nlpi_worhp
    1255
    1256Performance improvements
    1257------------------------
    1258
    1259- Use sassy/bliss as default symmetry computation package.
    1260
    1261Interface changes
    1262-----------------
    1263
    1264### Interfaces to external software
    1265
    1266- added interface to nauty/traces for symmetry computation
    1267- added interface to sassy, a preprocessor for symmetry computation
    1268- The directory src/sassy contains the source code of sassy.
    1269
    1270Build system
    1271------------
    1272
    1273### Cmake
    1274
    1275- added flag option "SYM=sbliss" for using sassy/bliss as a graph automorphism package
    1276
    1277### Makefile
    1278
    1279- added flag option "nauty" for SYM variable to specify which graph automorphism package should be used
    1280- added flag option "sbliss" for SYM variable to specify which graph automorphism package should be used
    1281- use SYM=sbliss by default, since sassy and bliss are now shipped with SCIP
    1282
    1283Miscellaneous
    1284-------------
    1285
    1286- the parameter change callback is no longer called at the moment a parameter is created
    1287
    1288@section RN804 SCIP 8.0.4
    1289*************************
    1290
    1291Features
    1292--------
    1293
    1294- use quad precision in cutsSubstituteMIR() for substituting slack variables into CMIR cuts
    1295- use quad precision for activity computations in cons_linear.c
    1296
    1297### Deleted and changed API functions
    1298
    1299- SCIPshrinkDisjunctiveVarSet() no longer attempts to cutoff the current node if it finds the
    1300 given disjunction to be infeasible; it is now in the responsibility of the caller to act accordingly
    1301
    1302### New API functions
    1303
    1304- added SCIPskipSpace
    1305- added XML parser routines from src/xml/xml.h
    1306
    1307### Interfaces to external software
    1308
    1309- updated XPRESS interface to work with XPRESS 41 as well
    1310- new interface to LP solver HiGHS (lpi_highs.cpp)
    1311
    1312### Changed parameters
    1313
    1314- changed integer parameter "propagating/symmetry/recomputrestart" from range {0, 1, 2} to being fixed at value 0
    1315
    1316Unit tests
    1317----------
    1318
    1319- added new checks for objective, bounds and sides inside the scaling tests in lpi/change.c
    1320
    1321Fixed bugs
    1322----------
    1323
    1324- relax condition of assert in lpSolve to hold only if lp/checkstability is true
    1325- OPB reader: dynamically increase the size of the line buffer for reading in getMaxAndConsDim()
    1326- Enabled the solution limit checks in SCIPsolveIsStopped in solve.c when in SCIP_STAGE_PRESOLVING
    1327- fix quad precision comparison for the calculation of knapsackcover constraints.
    1328- force copying of symmetry constraints for concurrent solve
    1329- increase the precision of double multiplications in quad precision environments
    1330- corrected handling of different variable types in symmetry
    1331- orbitope detection: refine computation of overlap structure and fixed bug in finding orbitope generators
    1332- ensure that winner is always determined in concurrent mode
    1333- when a row with invalid index range is added to the global cutpool, update the indices instead of failing with an assert
    1334- update of watched literals in cons_xor.c and ensure that fixed variables are counted in propacateCons()
    1335- avoid some numerical issue in check for redundant variables in linear constraints (introduced with version 8.0.2)
    1336- more rows are treated as being integral in cutsSubstituteMIR() for CMIR cuts
    1337- fixed several relaxations of the rhs of cuts to 0 in cuts.c
    1338- avoid aggregation into a single linear constraint if they should not be upgraded (needed for indicator constraints)
    1339- apply effective root changes before fork is repropagated during treeSwitchPath() in tree.c
    1340- avoid invalid objective value for solutions generated from an unbounded LP relaxation in case of a nonlinear objective function
    1341- disable recomputing symmetries after a restart (constraint removal is not permitted)
    1342- avoid cutting off optimal solutions for small feasibility tolerances in conflict analysis
    1343- initialize variable in presol_dualsparsify.c
    1344- fix in presolving of variable bound constraints to use absolute instead of relative difference
    1345- free variable histories in reoptimization mode
    1346- handle whitespaces in interactive shell history consistently
    1347- check and enforce equalities on which the objective is projected in cons_linear.c
    1348- ensure row feasibilities of solution shiftings in heur_oneopt.c and heur_twoopt.c
    1349- remove rounded row check blocking tolerable primal solutions in cons_varbound.c
    1350- fixed that presolve of logicor-constraints may have attempted to cutoff a root of the not yet existing branch-and-bound tree
    1351- only consider positive slack variables as active in benders.c
    1352- in the feasibility check of and/or constraints, allow for fractional values in operands
    1353- fixed linear outer-approximation for some composite absolute-value expressions
    1354
    1355Miscellaneous
    1356-------------
    1357
    1358- Extended documentation of the parameter limits/solutions to point out that the limit is first checked in presolving
    1359- Added more information about using SCIPcache- and SCIPflushRowExtensions() to documentation and comments
    1360- Extended the `how to add' sections of the documentation by adding information on how to include default plugins into SCIP
    1361
    1362@section RN803 SCIP 8.0.3
    1363*************************
    1364
    1365Examples and applications
    1366-------------------------
    1367
    1368- Externalize STP and PolySCIP applications
    1369
    1370Interface changes
    1371-----------------
    1372
    1373### Command line interface
    1374
    1375- When running the AMPL interface, the .nl filename extension does not need to be omitted for the input file anymore.
    1376
    1377Build system
    1378------------
    1379
    1380### Cmake
    1381
    1382- Forbid CMAKE_BUILD_TYPE nonstandard values
    1383- Move -I/path/to/src/amplmp/include to front of compiler flags for include directories
    1384
    1385### Makefile
    1386
    1387Fixed bugs
    1388----------
    1389
    1390- fixed an incorrect handling of xor constraints
    1391- the feasibility checker for integrality constraints now uses checkintegrality even for implied integers
    1392- skip integrality check in cons_integral for relaxation-only implicit-integer variables
    1393- fixed an issue caused by aggregated variables not added to a hashmap in the xor constraint handler
    1394- changed function solveRowEchelonGF2 in cons_xor.c to avoid errors if rank is 0
    1395- fixed that the implication presolver tried to aggregate or tighten bounds of multiaggregated variables
    1396- fixed a sign check in detection of linear constraints that are parallel to the objective
    1397- fixed bug in Clp and lpi_clp with missing basis information when calling the barrier with crossover; needs new Clp version
    1398- do not assume aggregation is successful in cons_setppc.c
    1399
    1400Miscellaneous
    1401-------------
    1402
    1403- Changed license to Apache 2.0, see https://www.apache.org/licenses/LICENSE-2.0.
    1404- When an LP could not be solved accurately, scaling is now turned off as a last fall-back method.
    1405- Functions for using the debug solution mechanism SCIPdebugAddSolVal, SCIPdebugGetSol, SCIPdebugGetSolVal,
    1406 SCIPdebugSolIsValidInSubtree, SCIPdebugIsMainscip, SCIPdebugSolEnable, SCIPdebugSolDisable, SCIPdebugSolIsEnabled,
    1407 SCIPwithDebugSol are now exported
    1408
    1409@section RN802 SCIP 8.0.2
    1410*************************
    1411
    1412Interface changes
    1413-----------------
    1414
    1415### Deleted and changed API functions
    1416
    1417- added input parameter SCIP_Bool initiallp to SCIPcutselsSelect
    1418- changed function type int to SCIP_Longint for SCIPcutpoolGetMaxNCuts
    1419- replaced SCIPsepastoreGetNCutsFound with SCIPsepastoreGetNCutsAdded following the naming convention for the new statistics
    1420- replaced SCIPsepaIncNAppliedCuts with SCIPsepaIncNCutsApplied
    1421
    1422### New API functions
    1423
    1424- added SCIPsepastoreGetNCutsAdded, SCIPsepastoreGetNCutsAddedViaPool, SCIPsepastoreGetNCutsAddedDirect
    1425- added SCIPsepaIncNCutsAdded, SCIPsepaDecNCutsAdded, SCIPsepaIncNCutsApplied, SCIPsepaGetNRootCalls, SCIPsepaGetNCutsAdded, SCIPsepaGetNCutsAddedViaPool, SCIPsepaGetNCutsAddedDirect, SCIPsepaGetNCutsAppliedViaPool, SCIPsepaGetNCutsAppliedDirect
    1426- added SCIPcutpoolGetNRootCalls, SCIPcutpoolGetNCutsAdded, SCIPcutpoolAddMaxNCuts, SCIPcutpoolSetTime, SCIPcutpoolAddNCalls, SCIPcutpoolAddNRootCalls, SCIPcutpoolAddNCutsFound, SCIPcutpoolAddNCutsAdded,
    1427- added SCIPcutselGetNCalls, SCIPcutselGetNRootCalls, SCIPcutselGetNRootCuts, SCIPcutselGetNRootForcedCuts, SCIPcutselGetNRootCutsFiltered, SCIPcutselGetNLocalCuts, SCIPcutselGetNLocalForcedCuts, SCIPcutselGetNLocalCutsFiltered,
    1428
    1429### Interfaces to external software
    1430
    1431- Added compatibility with Mosek 10.0.18.
    1432
    1433### New parameters
    1434
    1435- new parameters to turn on more statistics: misc/showdivingstats (diving heuristics), heuristics/alns/shownbstats (ALNS), estimation/showstats (tree size estimation)
    1436
    1437### Data structures
    1438
    1439- added nrootcalls and ncutsadded to SCIP_Cutpool
    1440- added fromcutpool flag to SCIP_Row and fixed 33 bit allocation
    1441- added ncalls, nrootcalls, nrootcutsselected, nrootcutsforced, nrootcutsfiltered, nlocalcutsselected, nlocalcutsforced, nlocalcutsfiltered to SCIP_Cutsel
    1442- added ncutsadded, ncutsaddedviapool, ncutsaddeddirect, ncutsappliedviapool, ncutsapplieddirect, nrootcalls to SCIP_Sepa
    1443- added ncutsadded, ncutsaddedviapool, ncutsaddeddirect to SCIP_Sepastore
    1444- fixed statistics of relaxators w.r.t. number of times conss/cuts were added
    1445
    1446Build system
    1447------------
    1448
    1449### Cmake
    1450
    1451- new option `-DAUTOBUILD` that configures scip with dependencies on availability.
    1452 Packages like Ipopt, PaPILO, Readline, Zimpl, ZLIB, GMP, Worhp are automatically found and linked, otherwise ignored.
    1453 The individual flags for these packages are ignored. This makes a quick build easier. It is by default set to off.
    1454
    1455Fixed bugs
    1456----------
    1457
    1458- read objective offset from ZIMPL files
    1459- Make sure that objective limit is disabled if not all variables are in the LP. If we would run into
    1460 an objective limit in this case, the results of the LP solver are unclear.
    1461- fixed bug in reopt.c, which occured for bounds outside of current valid bounds
    1462- fixed problem with recomputing symmetries after a restart
    1463- fixed bug in SCIPcalcMIR() with wrong order of arguments for removeZerosQuad()
    1464- fixed segmentation fault in update of cut statistic
    1465- fixed bug in presolving of and constraints by merging variables with multiple occurrences before cliquePresolve()
    1466- fixed bug in dual presolving of linear constraints by setting implicit integers to integers in multi-aggregation
    1467- fixed update of presolve statistics on added constraints and changed coefficients in constraint handler for nonlinear constraints
    1468- fixed bug with reading CIP files with large constraints split over several lines
    1469- fixed bug with infinite bounds in the computation of conflict cuts
    1470- fixed check for unbounded solution constructed by SCIPlpGetUnboundedSol(): The constructed solution is very likely infeasible
    1471 since scaling increases small numerical feasibility violations. Therefore, the solution is now always accepted. However, the
    1472 feasibility of the ray is now checked. This fix now might lead to several rounds of separation in order to resolve unbounded solutions,
    1473 whereas previously SCIP started to branch immediately.
    1474- changed to absolute tolerances in all redundancy checks for linear constraints
    1475
    1476Miscellaneous
    1477-------------
    1478
    1479- Added extended cutselector statistics splitting between root node specific and general statistics
    1480- Added extended and refined cutpool statistics showing the number of cuts added from the cutpool to the sepastore
    1481- Added extended and refined separator statistics to get a better view of the individual generators performance
    1482- turned off output of statistics for the following information by default:
    1483 diving heuristics, ALNS neighborhood information and tree size estimation statistics;
    1484 they can be turned on using the following new parameters:
    1485 misc/showdivingstats (diving heuristics), heuristics/alns/shownbstats (ALNS), estimation/showstats (tree size estimation)
    1486
    1487@section RN801 SCIP 8.0.1
    1488*************************
    1489
    1490Features
    1491--------
    1492
    1493- clique lifting in cons_setppc (parameter enablecliquelifting) is only disabled if it has been applied
    1494- avoid warning if Mosek has reached/exceeded the objective limit
    1495- improved curvature check for quadratic expressions when extended formulations are disabled
    1496
    1497Examples and applications
    1498-------------------------
    1499
    1500- Fixed handling of enforcing in the TSP example.
    1501
    1502Interface changes
    1503-----------------
    1504
    1505### Interfaces to external software
    1506
    1507- Added compatibility with Mosek 10.0.13.
    1508
    1509Build system
    1510------------
    1511
    1512- BLISS is now built from the vendored version from https://github.com/ds4dm/Bliss
    1513
    1514### Cmake
    1515
    1516- avoid warnings about unrecognized compiler warning silencing options when compilation with GCC fails
    1517- adjust mosek find module to version 9.3
    1518- added cmake compatibility for ipopt versions 3.14.x
    1519
    1520### Makefile
    1521
    1522- avoid warnings about unrecognized compiler warning silencing options when compilation with GCC fails
    1523- fixed that compilation with MS/Intel compilers on Windows and Cray compilers was broken when enabling PAPILO
    1524
    1525Fixed bugs
    1526----------
    1527
    1528- fixed uninitialized array in detection of suborbitopes
    1529- Fixed problem with reading long lines in LP/FZN/OPB/Diff-files. The buffer is now reallocated,
    1530 which also should be much faster.
    1531- fixed that recursive products in expressions were sometimes not flattened
    1532- fixed that expressions in original variables could not be simplified
    1533- fixed handling of objective limit with Mosek
    1534- made SCIPlpiGetSolverName()/SCIPlpiGetSolverDesc() thread-safe for LP Solvers (Cplex,Gurobi,Glop,Mosek,SoPlex,Xpress)
    1535- made SYMsymmetryGetName() thread-safe for Bliss
    1536- fixed memory allocation issue in detection of SOC nlhdlr
    1537- fixed that reaching the walltime limit in Ipopt was not handled properly
    1538- Deactivated dual fixing of unlocked variables with zero objective in presol_milp that SCIP is unable to postsolve.
    1539- set the column flag kImplInt for implicit integers in the papilo problem
    1540- fixed bug in propagation of indicator constraints (one case always reported a change through propagation)
    1541
    1542@section RN800 SCIP 8.0.0
    1543*************************
    1544
    1545Features
    1546--------
    1547
    1548- Variables that were marked as relaxation-only and that were not used in any solution (SCIP_SOL)
    1549 are now deleted when during a restart.
    1550- New symmetry handling method, symmetry handling inequalities based on the Schreier Sims table,
    1551 which is able to handle symmetries of arbitrary kinds of variables.
    1552- Revise way in which external memory (e.g., of LP-solver) is estimated.
    1553- The symmetry code can now heuristically search for orbitopes that do not completely handle
    1554 a symmetry component and add certain Schreier Sims cuts to such components.
    1555- The LPIs for Gurobi and Mosek are thread-safe now.
    1556- The complete code is now thread-safe by default.
    1557- New separator to generate mixing cuts (works well for stochastic programming with probabilistic constraint).
    1558- New parsing routines for cons_orbisack and cons_symresack.
    1559- Variables can now be marked to forbid aggregation.
    1560- Heuristic PADM can now reoptimize found solution with original objective function.
    1561- Added code to support debugging of catching or releasing of variables to var.c (prints backtrace
    1562 when catching and releasing).
    1563- SCIPintervalSin() and SCIPintervalCos() are now rounding-safe.
    1564- Removed special handling of second-order cones in undercover heuristic for now.
    1565- Removed use of Hessian sparsity pattern for nonquadratic nonlinear constraints in undercover heuristic.
    1566- Added reader for AMPL .nl files.
    1567- New separator sepa_rlt to compute cuts via the reformulation-linearization technique (RLT).
    1568- New separator sepa_minor to compute cuts from 2x2 minors of a violated semidefiniteness constraint that is
    1569 implied by the extended formulation for bilinear products.
    1570- New separator sepa_interminor to compute intersection cuts from 2x2 (not only principle) minors of a violated
    1571 rank-one constraint that is implied by the extended formulation for bilinear products.
    1572- Symmetry handling has been extended to detect also symmetries between variables that also appear in nonlinear constraints.
    1573- Improved OBBT propagator by only considering variables that are contained in at least one nonconvex expression that has an auxiliary variable.
    1574- Default parameter settings for NLP solves are now defined independently of the NLP solver.
    1575- Added table to print statistics on NLP solvers.
    1576- Knapsack, linear, logicor, setppc, and varbound constraints now add themselves to the NLP relaxation, if enabled.
    1577 And, linking constraints and bounddisjunctions in one variable are added to the NLP relaxation now.
    1578- Ipopt interface now supports warmstarts from a full primal/dual solution pair.
    1579- Extended data structure SCIP_ROWPREP and routines to assemble a linear inequality before it is turned into a SCIP row and
    1580 made it available via the API.
    1581- MIR procedure is now available for strengthening the Benders' optimality cut
    1582- SCIPbranchcandCalcLPCands() now also returns fractional variables in unbounded solutions.
    1583- New emphasis "benchmark" to avoid different solving paths that may come from checking remaining memory.
    1584- New plugin type for cut selection: users can now include their own cut selection rules, default rule moved to cutsel_hybrid.
    1585- New construction heuristic DPS which additionally needs a user-provided decomposition and splits the problem into several sub-SCIPs
    1586 according to this decomposition. The sub-SCIPs are solved and updated repeatedly until a feasible solution of the original problem is found.
    1587
    1588Expressions:
    1589- Removed support for expression types min and max for now. Removed support for expression type sign.
    1590 Removed complex expression types sum, product, linear, quadratic, polynomial.
    1591 Removed support for parameterized expressions.
    1592- Added support for expression types sin, cos, and entropy. Added an expression type that stores a SCIP variable.
    1593- Added handling of sin and cos expressions in OSiL reader.
    1594- Added handling of sin, cos, and tan expressions in ZIMPL reader.
    1595- Added expression handler plugin type, removed user expression type.
    1596- Replaced expressions, expression trees, and expression graphs by a new implementation of expressions.
    1597- Added differentiation methods (Gradients and Hessian directions) to expressions.
    1598- Added integrality information to expressions.
    1599- Added comparison and hashing of expressions.
    1600- Improved simplification of expressions and identification of common subexpressions, in particular terms that appear
    1601 equally in several quadratic functions are now identified.
    1602- Expression simplification now expands powers also when the resulting exponents will be larger than 2.
    1603- Added table to print statistics on expression handlers.
    1604- Removed interval-arithmetic evaluation from expression interpreter (interfaces to automatic differentiation codes).
    1605- Hessians for user-provided expression handlers are not available in the NLP solver interfaces for now.
    1606- Sparse Hessians are now returned by expression interpreter. Removed dense Hessians.
    1607
    1608Constraint handlers for NLP:
    1609- cons_nonlinear has been completely rewritten and now handles constraints of the form lhs <= expr <= rhs, where
    1610 expr is an expression using the new expression type. A linear part of a nonlinear constraint is no longer distinguished.
    1611- Methods that work on a particular nonlinear structure are now implemented via nonlinear handlers (nlhdlr).
    1612 These handlers are plugins of cons_nonlinear and interact with cons_nonlinear by detecting structures in expressions and
    1613 providing propagation and separation mechanisms.
    1614- Added nlhdlr "default" as a mandatory nlhdlr: this is a nlhdlr that gets active on expressions that no other nlhdlr handles.
    1615 It then uses the callbacks implemented in expression handlers to provide domain propagation and linear under/overestimates.
    1616- Added nlhdlr for quadratic expressions: domain propagation that was previously part of cons_quadratic; separation via intersection cuts (currently disabled).
    1617- Added nlhdlr for bilinear expressions: collects bilinear products and provides under/overestimation of a product over a 2D-projection of the LP.
    1618- Added nlhdlr for convex and concave expressions: detection of convex/concave subexpressions and linear under/overestimation.
    1619- Added nlhdlr for quotients: detects quotients, provides specialized linear under/overestimation and domain propagation for univariate quotients.
    1620- Added nlhdlr for perspective reformulations: detects expressions in semi-continuous variables and tightens linear
    1621 under/overestimates of these expressions by applying a perspective transformation.
    1622- Added nlhdlr for second-order cones: detects second-order cone constraints (as ||x|| <= t or a quadratic that can written like that) and
    1623 separates on a disaggregated reformulation (similar to cons_soc previously).
    1624- Removed constraint handlers abspower, bivariate, quadratic, and soc.
    1625- Removed simplification of duplicate abspower constraints for now.
    1626 Removed simplification of abspower constraints with loose variables.
    1627 Removed resolving of domain propagation (ConsResProp callback) and conflict analysis for abspower constraints.
    1628 Removed propagation of varbounds for variables of abspower constraints.
    1629 Removed reformulation of abs(x)^p * x into signpower expression for now.
    1630- Removed reformulation of SOC constraints when adding to the NLP.
    1631 Removed possibility to add linearizations a la Glineur or BenTal&Nemirovski for SOC constraints.
    1632- Removed possibility to disaggregate quadratic constraints.
    1633 Removed lifted tangent inequalities for bilinear terms in quadratic constraints.
    1634 Removed option to project LP solution onto feasible region of a quadratic constraint via interior point or gauge function.
    1635 Removed handling of unbounded LPs when enforcing quadratic constraints.
    1636- Removed construction of cuts from interval gradients for nonlinear constraints.
    1637 Removed possibility to pretend that all nonlinear constraints are convex.
    1638 Removed possibility to create local or non-initial nonlinear constraints for now.
    1639- Removed explicit reformulation of nonlinear constraints in presolve.
    1640 An extended formulation is now generated implicitly and used to construct the LP relaxation,
    1641 but the original formulation is used to check feasibility, propagate variable domains, etc.
    1642 Variables that are added for the extended formulation are now marked as relaxation-only.
    1643- Improved locking of nonlinear variables in nonlinear constraints by taking monotonicity into account.
    1644- Improved mechanisms to detect and handle structures in nonlinear constraints, which allows for several algorithms
    1645 to work simultaneously on equal or overlapping expressions.
    1646- Improved linearization of (sums of) products of binary variables, e.g., clique information is now taken into account.
    1647 Removed option to linearize products between a binary and a non-binary variable.
    1648- Nonlinear constraints with the same function (but possibly different left- or right-hand-side) are now merged.
    1649- 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.
    1650- New branching rule for variables in nonlinear constraints (implemented in cons_nonlinear) that scores candidates
    1651 based on constraint violation, variable type, and pseudo-costs simultaneously.
    1652- Added tables to print statistics of nonlinear constraint handler and nonlinear handlers.
    1653
    1654Performance improvements
    1655------------------------
    1656
    1657- Use the objective cutoff row as base row for separation in sepa_aggregation.c.
    1658- Separate lifted cover cuts based on newer lifting function of Letchford and Souli (2019) in sepa_aggregation.c.
    1659- In-tree restarts due to tree size estimation have been made compatible with orbital fixing.
    1660- Improved upgrade of orbisacks to packing/partitioning orbitopes.
    1661- Improved running time of symresack cover separation.
    1662- Improved propagation algorithm for orbisack and symresack.
    1663- Improved handling for expressions of type signpower in CppAD interface by making use of CppADs conditional expressions.
    1664- Faster reevaluation of Hessian for quadratic expressions in CppAD interface.
    1665- Enabled optimization of taped expressions in the CppAD interface.
    1666- Sparse Hessian evaluation for expressions with sparse Hessian in the CppAD interface.
    1667- Disabled branching on variables that are added for the extended formulation of a nonlinear constraint.
    1668- 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.
    1669- 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.
    1670- Improved under/overestimation of multidimensional vertex-polyhedral (e.g., multilinear or concave) functions by use of scaling and keeping the cut-generating LP around.
    1671- Products in nonlinear constraints are no longer disaggregated for the extended formulation.
    1672- No longer relax bounds of integral variables when computing bounds on activity in nonlinear constraints.
    1673- Revised and improved Ipopt interface.
    1674- Revised and improved subNLP primal heuristic, in particular choice of iteration limit and starting condition and reuse of subSCIP.
    1675- Merge strongcg into the gomory separator to avoid computing the same base equality twice. The files
    1676 sepa_strongcg.{h|c} have been removed.
    1677- The RENS neighborhood in ALNS now fixes fractional variables if necessary for reaching its target fixing rate.
    1678- Use cpsolver emphasis in sepa_rapidlearning.
    1679- If decomposition/maxgraphedge = 0, the computation of the block graph is completely turned off.
    1680- Fixed a performance bug in cons_integral.c where rounding information was passed incorrectly to the generic diving algorithm.
    1681
    1682Examples and applications
    1683-------------------------
    1684
    1685- Add c++ Sudoku example
    1686- Removed circle.c and renamed string.c to spring.c in CallableLibrary example.
    1687- SCIP-Jack (Steiner tree application):
    1688 Most files have been modified and many new ones have been added (code base more than doubled).
    1689 Two new problem classes are supported: maximum-weight connected subgraph problem with budget constraints, partial-terminal node-weighted Steiner tree problem.
    1690 Major performance improvements accross all problem classes that are supported.
    1691
    1692Interface changes
    1693-----------------
    1694
    1695### New and changed callbacks
    1696
    1697- extend SEPAEXEC{LP,SOL} callbacks by parameter "depth", which should be used within separation instead of SCIPgetCurrentDepth()
    1698- extend SCIPseparateSolCutpool() by parameter "pretendroot", which is passed to SCIPcutpoolSeparate() instead of SCIPtreeGetCurrentDepth(scip->tree) == 0
    1699- removed SCIP_DECL_EXPRGRAPHVARADDED, SCIP_DECL_EXPRGRAPHVARREMOVE, SCIP_DECL_EXPRGRAPHVARCHGIDX
    1700- 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
    1701- added SCIP_DECL_EXPR_OWNERFREE, SCIP_DECL_EXPR_OWNERPRINT, SCIP_DECL_EXPR_OWNEREVALACTIVITY, SCIP_DECL_EXPR_OWNERCREATE
    1702- added SCIP_DECL_EXPR_INTEVALVAR, SCIP_DECL_EXPR_MAPEXPR
    1703- 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
    1704- removed SCIP_DECL_QUADCONSUPGD
    1705- added SCIP_DECL_VERTEXPOLYFUN
    1706- added argument nvarexprs to SCIP_DECL_NONLINCONSUPGD to inform upgrade method about number of variables in constraint
    1707- removed SCIP_DECL_EXPRGRAPHNODEREFORM
    1708- 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
    1709- replaced BMS_BLKMEM* blkmem argument of SCIP_DECL_NLPICOPY by SCIP* scip, removed targetnlpi argument
    1710- added SCIP* scip and SCIP_NLPIDATA** nlpidata arguments to SCIP_DECL_NLPIFREE
    1711- 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
    1712- replaced SCIP_DECL_NLPICHGEXPRTREE by SCIP_DECL_NLPICHGEXPR
    1713- removed nquadelems, quadelems, exprvaridxs arguments from SCIP_DECL_NLPIADDCONSTRAINTS, changed exprtrees argument to exprs
    1714- removed nquadelems, quadelems, exprvaridxs arguments from SCIP_DECL_NLPISETOBJECTIVE, changed exprtree argument to expr
    1715- removed SCIP_DECL_NLPICHGQUADCOEFS, SCIP_DECL_NLPICHGNONLINCOEF, SCIP_DECL_NLPISETMESSAGEHDLR
    1716- added SCIP_NLPIPROBLEM* problem to SCIP_DECL_NLPIGETSOLVERPOINTER
    1717
    1718### Deleted and changed API functions
    1719
    1720- When calling SCIPdelVar() in the SCIP_STAGE_PROBLEM stage, it is now documented as the user's responsibility to ensure
    1721 the variable is not present in any constraints. Otherwise, SCIPsolve() now returns SCIP_INVALIDDATA.
    1722- removed SCIPselectCuts(), replaced by SCIPselectCutsHybrid() of the hybrid cut selector plugin
    1723- If SCIPvarMarkRelaxationOnly() is called for a variable, then this now need to happen before the
    1724 variable is added to the transformed problem (SCIPaddVar()).
    1725 SCIPvarMarkRelaxationOnly() will automatically call SCIPvarMarkDeletable().
    1726- SCIPcomputeOrbitsFilterSym() and SCIPcomputeComponentsSym(): Type of argument componentblocked
    1727 changed from SCIP_Shortbool* to unsigned*.
    1728- removed SCIPsetParam()
    1729- SCIPcreateConsOrbitope() and SCIPcreateConsBasicOrbitope() have two new arguments "usedynamicprop"
    1730 and "mayinteract" to encode whether a dynamic reordering of the orbitope rows shall be used in
    1731 full orbitope propagation and whether the orbitope might interact with other symmetry handling
    1732 methods, respectively.
    1733- internal function SCIPgetPropertiesPerm() has been replaced by SCIPisInvolutionPerm()
    1734- internal function SCIPgenerateOrbitopeVarsMatrix() has new arguments "storelexorder", "lexorder",
    1735 "nvarsorder", "maxnvarsorder" to compute and store the lexicographic order defined by an orbitope
    1736- renamed SCIPcomputeArraysIntersection() and SCIPcomputeArraysSetminus() to
    1737 SCIPcomputeArraysIntersectionInt() and SCIPcomputeArraysSetminusInt(), respectively, and changed
    1738 their return type from SCIP_RETCODE (which _always_ was SCIP_OKAY) to void
    1739- removed SCIPincludeDialogDefault(), use SCIPincludeDialogDefaultBasic() instead and check whether you also need SCIPincludeDialogDefaultSet() and SCIPincludeDialogDefaultFix()
    1740- removed exprint argument from SCIPaddNlRowGradientBenderscutOpt()
    1741- added copyexprhdlrs argument to SCIPcopyPlugins() (19th position)
    1742- added copycutselectors argument to SCIPcopyPlugins() (10th position)
    1743- removed refpoint argument from SCIPaddSquareSecant()
    1744- added argument exprdata to SYMcomputeSymmetryGenerators()
    1745- removed SCIPconsNonlinearGetRhs(), SCIPconsNonlinearGetLhs(), SCIPconsNonlinearAddLinearCoef()
    1746- removed arguments timelimit, minimprove, itercontingent, and iterused from SCIPapplyHeurSubNlp()
    1747- removed SCIPresolveSolHeurSubNlp(), SCIPgetSubScipHeurSubNlp(), SCIPgetVarMappingScip2SubScipHeurSubNlp(), SCIPgetVarMappingSubScip2ScipHeurSubNlp()
    1748- SCIPlockVarCons() and SCIPunlockVarCons() are now allowed in stage TRANSFORMED as well
    1749- Added functions SCIPsetSepaIsParentsepa(), SCIPsetSepaParentsepa() [in scip_sepa.h], SCIPsepaSetIsParentsepa(), SCIPsepaSetParentsepa() [in sepa.h],
    1750 SCIPsepaIsParentsepa(), SCIPsepaGetParentsepa() [in pub_sepa.h]
    1751- Added function SCIPpruneTree() to immediately delete nodes that were marked to be deleted with SCIPcutoffNode
    1752
    1753NLP:
    1754- SCIPhasNLPContinuousNonlinearity() now returns SCIP_RETCODE and has additional argument result
    1755- removed SCIPnlrowGetNQuadVars(), SCIPnlrowGetQuadVars(), SCIPnlrowSearchQuadVar(), SCIPnlrowGetNQuadElems(), SCIPnlrowGetQuadElems(), SCIPnlrowGetQuadData()
    1756- renamed SCIPnlrowGetExprtree() to SCIPnlrowGetExpr() and changed return type to SCIP_EXPR*
    1757- removed arguments nquadvars, quadvars, nquadelems, quadelems from SCIPcreateNlRow(); argument expr(ession) is now of type SCIP_EXPR*
    1758- removed SCIPaddQuadVarToNlRow(), SCIPaddQuadVarsToNlRow(), SCIPaddQuadElementToNlRow(), SCIPaddQuadElementsToNlRow(), SCIPchgNlRowQuadElement(), SCIPsetNlRowExprtreeParam(), SCIPsetNlRowExprtreeParams()
    1759- renamed SCIPsetNlRowExprtree() to SCIPsetNlRowExpr() and changed type of expr(tree) argument to SCIP_EXPR*
    1760- SCIPenableNLP() is no longer allowed in stages INITSOLVE and SOLVING
    1761- removed SCIPaddLinearConsToNlpHeurSubNlp()
    1762- 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
    1763- renamed SCIPsolveNLP() to SCIPsolveNLPParam() and added parameter SCIP_NLPPARAM param
    1764- removed SCIPsolveDiveNLP(), use SCIPsolveNLPParam() instead
    1765
    1766NLPI:
    1767- removed SCIPnlpiCopy(), SCIPnlpiFree(), SCIPnlpiChgQuadCoefs(), SCIPnlpiChgNonlinCoef(), SCIPnlpiSetMessageHdlr()
    1768- removed SCIPnlpiCreate() from public API, use SCIPincludeNlpi() instead
    1769- removed SCIPnlpiGetSolverPointer() from public API, use SCIPgetNlpiSolverPointer() instead
    1770- removed SCIPnlpiCreateProblem() from public API, use SCIPcreateNlpiProblem() instead
    1771- removed SCIPnlpiFreeProblem() from public API, use SCIPfreeNlpiProblem() instead
    1772- removed SCIPnlpiGetProblemPointer() from public API, use SCIPgetNlpiProblemPointer() instead
    1773- removed SCIPnlpiAddVars() from public API, use SCIPaddNlpiVars() instead
    1774- removed SCIPnlpiAddConstraints() from public API, use SCIPaddNlpiConstraints() instead
    1775- removed SCIPnlpiSetObjective() from public API, use SCIPsetNlpiObjective() instead
    1776- removed SCIPnlpiChgVarBounds() from public API, use SCIPchgNlpiVarBounds() instead
    1777- removed SCIPnlpiChgConsSides() from public API, use SCIPchgNlpiConsSides() instead
    1778- removed SCIPnlpiDelVarSet() from public API, use SCIPdelNlpiVarSet() instead
    1779- removed SCIPnlpiDelConsSet() from public API, use SCIPdelNlpiConsSet() instead
    1780- removed SCIPnlpiChgLinearCoefs() from public API, use SCIPchgNlpiLinearCoefs() instead
    1781- removed SCIPnlpiChgExprtree() from public API, use SCIPchgNlpiExpr() instead
    1782- removed SCIPnlpiChgObjConstant() from public API, use SCIPchgNlpiObjConstant() instead
    1783- removed SCIPnlpiSetInitialGuess() from public API, use SCIPsetNlpiInitialGuess() instead
    1784- removed SCIPnlpiSolve() from public API, use SCIPsolveNlpiParam() instead
    1785- removed SCIPnlpiGetSolstat() from public API, use SCIPgetNlpiSolstat() instead
    1786- removed SCIPnlpiGetTermstat() from public API, use SCIPgetNlpiTermstat() instead
    1787- removed SCIPnlpiGetSolution() from public API, use SCIPgetNlpiSolution() instead
    1788- removed SCIPnlpiGetStatistics() from public API, use SCIPgetNlpiStatistics() instead
    1789- removed SCIPnlpiGetWarmstartSize()
    1790- removed SCIPnlpiGetWarmstartMemo()
    1791- removed SCIPnlpiSetWarmstartMemo()
    1792- removed SCIPnlpiGetIntPar()
    1793- removed SCIPnlpiSetIntPar()
    1794- removed SCIPnlpiGetRealPar()
    1795- removed SCIPnlpiSetRealPar()
    1796- removed SCIPnlpiGetStringPar(),
    1797- removed SCIPnlpiSetStringPar()
    1798- removed SCIPnlpiSetPriority() from public API, use SCIPsetNlpiPriority() instead
    1799- removed argument nlpi from SCIPincludeNlpi() and added name, description, priority,
    1800 nlpicopy, nlpifree, nlpigetsolverpointer, nlpicreateproblem, nlpifreeproblem, nlpigetproblempointer, nlpiaddvars, nlpiaddconstraints, nlpisetobjective, nlpichgvarbounds, nlpichgconssides, nlpidelvarset, nlpidelconsset, nlpichglinearcoefs, nlpichgexpr, nlpichgobjconstant, nlpisetinitialguess, nlpisolve, nlpigetsolstat, nlpigettermstat, nlpigetsolution, nlpigetstatistics, nlpidata
    1801- removed SCIPcreateNlpSolverAll(), use SCIPincludeNlpSolverAll() instead
    1802- removed SCIPcreateNlpSolverFilterSQP(), use SCIPincludeNlpSolverFilterSQP() instead
    1803- removed SCIPcreateNlpSolverIpopt(), use SCIPincludeNlpSolverIpopt() instead
    1804- removed SCIPcreateNlpSolverWorhp(), use SCIPincludeNlpSolverWorhp() instead
    1805- replaced argument BMS_BLKMEM* blkmem of SCIPnlpiOracleCreate() by SCIP* scip
    1806- 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()
    1807- removed arguments nquadelems, quadelems, exprvaridxs, exprtrees from SCIPnlpiOracleAddConstraints(), added argument SCIP_EXPR** exprs
    1808- removed arguments nquadelems, quadelems, exprvaridxs, exprtree from SCIPnlpiOracleSetObjective(), added argument SCIP_EXPR* expr
    1809- replaced arguments isnewx of SCIPnlpiOracleEvalHessianLag() by two arguments isnewx_obj and isnewx_cons
    1810- removed SCIPnlpiOracleChgExprtree(), use SCIPnlpiOracleChgExpr() instead
    1811- removed SCIPnlpiOracleSetInfinity(), SCIPnlpiOracleGetInfinity(), SCIPnlpiOracleChgQuadCoefs(), SCIPnlpiOracleChgExprParam(), SCIPnlpiOracleGetMaxDegree()
    1812- removed SCIPnlpiOracleGetVarDegree() and SCIPnlpiOracleGetVarDegrees(), use SCIPnlpiOracleIsVarNonlinear() and SCIPnlpiOracleGetVarCounts(), respectively, instead
    1813- removed SCIPnlpiOracleGetConstraintDegree(), use SCIPnlpiOracleIsConstraintNonlinear() instead
    1814- removed argument messagehdlr from SCIPnlpiOraclePrintProblem() and SCIPnlpiOraclePrintProblemGams()
    1815- removed SCIPcreateNlpiProb(), use SCIPcreateNlpiProblemFromNlRows() instead
    1816- renamed SCIPupdateNlpiProb() to SCIPupdateNlpiProblem() and moved into scip_nlpi.{h,c}
    1817- renamed SCIPaddNlpiProbRows() to SCIPaddNlpiProblemRows() and moved into scip_nlpi.{h,c}
    1818- removed SCIPsetModifiedDefaultSettingsIpopt()
    1819- removed SCIPgetIpoptApplicationPointerIpopt(), use SCIPgetNlpiSolverPointer() instead
    1820- removed SCIPnlpStatisticsCreate(), SCIPnlpStatisticsFree(), SCIPnlpStatisticsGetNIterations(), SCIPnlpStatisticsGetTotalTime(), SCIPnlpStatisticsSetNIterations(), SCIPnlpStatisticsSetTotalTime(), the struct is public now
    1821- renamed LapackDsyev() to SCIPcallLapackDsyevIpopt()
    1822- renamed SCIPsolveLinearProb() to SCIPsolveLinearEquationsIpopt()
    1823
    1824Expression interpreter:
    1825- removed functions that operated with SCIPInterval
    1826- changed first argument of SCIPexprintCreate() to SCIP*
    1827- added SCIP* as first argument to SCIPexprintFree()
    1828- added SCIP* as first argument to SCIPexprintCompile(), changed third argument to SCIP_EXPR*, added fourth argument SCIP_EXPRINTDATA**
    1829- added arguments SCIP*, SCIP_EXPRINT*, and SCIP_EXPR* as first arguments to SCIPexprintFreeData()
    1830- renamed SCIPexprintGetExprtreeCapability() to SCIPexprintGetExprCapability();
    1831 added SCIP* as first argument, changed third argument to SCIP_EXPR*, added fourth argument SCIP_EXPRINTDATA*
    1832- removed SCIPexprintNewParametrization()
    1833- SCIPexprintEval(): added SCIP* as first argument, changed third argument to SCIP_EXPR*, added fourth argument SCIP_EXPRINTDATA*
    1834- removed SCIPexprintEvalInt()
    1835- SCIPexprintGrad(): added SCIP* as first argument, changed third argument to SCIP_EXPR*, added fourth argument SCIP_EXPRINTDATA*
    1836- removed SCIPexprintGradInt()
    1837- removed SCIPexprintHessianSparsityDense() and SCIPexprintHessianDense, use SCIPexprintHessianSparsity() and SCIPexprintHessian() instead
    1838
    1839Expressions:
    1840- removed SCIPexpropGetName(), use SCIPexprhdlrGetName() instead
    1841- removed SCIPexpropGetNChildren()
    1842- removed SCIPexprGetOperator(), use SCIPexprGetHdlr() instead
    1843- removed SCIPexprGetOpIndex(), SCIPexprGetOpReal(), SCIPexprGetOpData(), use SCIPexprGetData() instead
    1844- removed SCIPexprGetRealPowerExponent(), SCIPexprGetIntPowerExponent(), SCIPexprGetSignPowerExponent(), use SCIPgetExponentExprPow() instead
    1845- removed SCIPexprGetLinearCoefs(), SCIPexprGetLinearConstant(), use SCIPgetCoefsExprSum() and SCIPgetConstantExprSum() instead
    1846- removed SCIPexprGetQuadElements(), SCIPexprGetQuadConstant(), SCIPexprGetQuadLinearCoefs(), SCIPexprGetNQuadElements(), use SCIPexprGetQuadraticData(), SCIPexprGetQuadraticQuadTerm(), SCIPexprGetQuadraticBilinTerm() instead
    1847- removed SCIPexprGetMonomials(), SCIPexprGetNMonomials, SCIPexprGetPolynomialConstant(), SCIPexprGetMonomialCoef(), SCIPexprGetMonomialNFactors(), SCIPexprGetMonomialChildIndices(), SCIPexprGetMonomialExponents()
    1848- removed SCIPexprGetUserData(), SCIPexprHasUserEstimator(), SCIPexprGetUserEvalCapability()
    1849- removed SCIPexprCreate(), use SCIPcreateExpr() instead
    1850- removed SCIPexprCopyDeep(), use SCIPduplicateExpr() instead
    1851- removed SCIPexprFreeDeep(), use SCIPreleaseExpr() instead
    1852- removed SCIPexprFreeShallow()
    1853- removed SCIPexprAdd(), SCIPexprMulConstant()
    1854- removed SCIPexprCreateLinear(), use SCIPcreateExprSum() instead
    1855- replaced SCIPexprAddToLinear() by SCIPappendExprSumExpr()
    1856- replaced SCIPexprCreateQuadratic() by SCIPcreateExprQuadratic()
    1857- removed SCIPexprSortQuadElems()
    1858- removed SCIPexprCreatePolynomial(), SCIPexprAddMonomials(), SCIPexprChgPolynomialConstant(), SCIPexprMultiplyPolynomialByConstant(), SCIPexprMultiplyPolynomialByMonomial(), SCIPexprMultiplyPolynomialByPolynomial(), SCIPexprPolynomialPower()
    1859- removed SCIPexprMergeMonomials(), SCIPexprFreeMonomial(), SCIPexprSortMonomialFactors(), SCIPexprFindMonomialFactor(), SCIPexprAreMonomialsEqual(), SCIPexprAddMonomialFactors(), SCIPexprChgMonomialCoef(), SCIPexprMultiplyMonomialByMonomial(), SCIPexprMonomialPower(), SCIPexprMergeMonomialFactors(), SCIPexprSortMonomials()
    1860- replaced SCIPexprCreateMonomial() by SCIPcreateExprMonomial()
    1861- removed SCIPexprCreateUser(), use SCIPincludeExprhdlr() instead
    1862- removed SCIPexprHasParam(), SCIPexprGetMaxDegree(), SCIPexprGetVarsUsage()
    1863- replaced SCIPexprAreEqual() by SCIPcompareExpr()
    1864- replaced SCIPexprSimplify() by SCIPsimplifyExpr()
    1865- replaced SCIPexprEvalShallow() by SCIPcallExprEval()
    1866- replaced SCIPexprEval() by SCIPevalExpr()
    1867- replaced SCIPexprEvalIntShallow() by SCIPcallExprInteval()
    1868- replaced SCIPexprEvalInt() by SCIPevalExprActivity()
    1869- removed SCIPexprEvalUser(), SCIPexprEvalIntUser(), SCIPexprEstimateUser()
    1870- replaced SCIPexprCheckCurvature() by SCIPcomputeExprCurvature()
    1871- removed SCIPexprSubstituteVars(), use SCIPcopyExpr() instead
    1872- removed SCIPexprReindexVars(), SCIPexprReindexParams()
    1873- replaced SCIPexprPrint() by SCIPprintExpr()
    1874- replaced SCIPexprParse() by SCIPparseExpr()
    1875
    1876Expression tree:
    1877- removed SCIPexprtreeGetVars(), SCIPexprtreeSetVars(), SCIPexprtreeAddVars(), SCIPexprtreePrintWithNames(), SCIPexprtreeFindVar()
    1878- removed SCIPexprtreeGetRoot(), SCIPexprtreeGetNVars(), SCIPexprtreeGetNParams(), SCIPexprtreeGetParamVals(), SCIPexprtreeSetParamVal(), SCIPexprtreeHasParam()
    1879- removed SCIPexprtreeGetInterpreterData(), SCIPexprtreeSetInterpreterData(), SCIPexprtreeFreeInterpreterData()
    1880- removed SCIPexprtreeGetMaxDegree()
    1881- removed SCIPexprtreeEval(), use SCIPevalExpr() instead
    1882- removed SCIPexprtreeEvalInt(), use SCIPevalExprActivity() instead
    1883- removed SCIPexprtreePrint(), use SCIPprintExpr() instead
    1884- removed SCIPexprtreeCreate()
    1885- removed SCIPexprtreeCopy(), use SCIPduplicateExpr() instead
    1886- removed SCIPexprtreeFree(), use SCIPreleaseExpr() instead
    1887- removed SCIPexprtreeSetParams(), SCIPexprtreeGetVarsUsage()
    1888- removed SCIPexprtreeSimplify(), use SCIPsimplifyExpr() instead
    1889- removed SCIPexprtreeAddExpr()
    1890- removed SCIPexprtreeCheckCurvature(), use SCIPcomputeExprCurvature() instead
    1891- removed SCIPexprtreeSubstituteVars(), use SCIPcopyExpr() instead
    1892- removed SCIPquadelemSort(), SCIPquadelemSortedFind(), SCIPquadelemSqueeze()
    1893
    1894Expression graph:
    1895- removed SCIPexprgraphCaptureNode(), use SCIPcaptureExpr() instead
    1896- removed SCIPexprgraphIsNodeEnabled()
    1897- removed SCIPexprgraphGetNodeNChildren(), use SCIPexprGetNChildren() instead
    1898- removed SCIPexprgraphGetNodeChildren(), use SCIPexprGetChildren() instead
    1899- removed SCIPexprgraphGetNodeNParents(), SCIPexprgraphGetNodeParents(), SCIPexprgraphGetNodeDepth(), SCIPexprgraphGetNodePosition()
    1900- removed SCIPexprgraphGetNodeOperator(), use SCIPexprGetHdlr() instead
    1901- removed SCIPexprgraphGetNodeOperatorIndex(), SCIPexprgraphGetNodeOperatorReal(), use SCIPexprGetData() instead
    1902- removed SCIPexprgraphGetNodeVar(), use SCIPgetVarExprVar() instead
    1903- removed SCIPexprgraphGetNodeRealPowerExponent(), SCIPexprgraphGetNodeIntPowerExponent(), SCIPexprgraphGetNodeSignPowerExponent(), use SCIPgetExponentExprPow() instead
    1904- removed SCIPexprgraphGetNodeLinearCoefs(), SCIPexprgraphGetNodeLinearConstant(), use SCIPgetCoefsExprSum(), SCIPgetConstantExprSum() instead
    1905- removed SCIPexprgraphGetNodeQuadraticConstant(), SCIPexprgraphGetNodeQuadraticLinearCoefs(), SCIPexprgraphGetNodeQuadraticQuadElements(), SCIPexprgraphGetNodeQuadraticNQuadElements(), use SCIPexprGetQuadraticData(), SCIPexprGetQuadraticQuadTerm(), SCIPexprGetQuadraticBilinTerm() instead
    1906- removed SCIPexprgraphGetNodePolynomialMonomials(), SCIPexprgraphGetNodePolynomialNMonomials(), SCIPexprgraphGetNodePolynomialConstant(), SCIPexprgraphGetNodePolynomialMonomialCurvature()
    1907- removed SCIPexprgraphGetNodeUserData(), SCIPexprgraphHasNodeUserEstimator()
    1908- removed SCIPexprgraphGetNodeBounds(), use SCIPexprGetActivity() instead
    1909- removed SCIPexprgraphGetNodeVal(), use SCIPexprGetEvalValue() instead
    1910- removed SCIPexprgraphGetNodeCurvature(), use SCIPexprGetCurvature() instead
    1911- removed SCIPexprgraphCreateNode()
    1912- removed SCIPexprgraphCreateNodeLinear(), use SCIPcreateExprSum() instead
    1913- removed SCIPexprgraphCreateNodeQuadratic(), use SCIPcreateExprQuadratic() instead
    1914- removed SCIPexprgraphCreateNodePolynomial(), SCIPexprgraphNodePolynomialAddMonomials()
    1915- removed SCIPexprgraphCreateNodeUser(), removed SCIPexprgraphNodeSplitOffLinear(), SCIPexprgraphMoveNodeParents()
    1916- removed SCIPexprgraphReleaseNode(), use SCIPreleaseExpr() instead
    1917- removed SCIPexprgraphFreeNode(), use SCIPreleaseExpr() instead
    1918- removed SCIPexprgraphEnableNode(), SCIPexprgraphDisableNode()
    1919- removed SCIPexprgraphHasNodeSibling(), SCIPexprgraphAreAllNodeChildrenVars(), SCIPexprgraphHasNodeNonlinearAncestor()
    1920- removed SCIPexprgraphPrintNode(), SCIPprintExpr() instead
    1921- removed SCIPexprgraphTightenNodeBounds()
    1922- removed SCIPexprgraphUpdateNodeBoundsCurvature(), use SCIPevalExprActivity() and SCIPcomputeExprCurvature() instead
    1923- removed SCIPexprgraphGetDepth(), SCIPexprgraphGetNNodes(), SCIPexprgraphGetNodes(), SCIPexprgraphGetNVars(), SCIPexprgraphGetVars()
    1924- removed SCIPexprgraphGetVarNodes(), SCIPexprgraphSetVarNodeValue(), SCIPexprgraphSetVarsBounds(), SCIPexprgraphSetVarBounds(), SCIPexprgraphSetVarNodeBounds(), SCIPexprgraphSetVarNodeLb(), SCIPexprgraphSetVarNodeUb(), SCIPexprgraphGetVarsBounds()
    1925- removed SCIPexprgraphCreate(), SCIPexprgraphFree()
    1926- removed SCIPexprgraphAddNode(), SCIPexprgraphAddVars(), SCIPexprgraphAddConst(), SCIPexprgraphAddExprtreeSum()
    1927- removed SCIPexprgraphReplaceVarByLinearSum(), SCIPexprgraphFindVarNode(), SCIPexprgraphFindConstNode()
    1928- replaced SCIPexprgraphPrintDot() by SCIPprintExprDotInit[2](), SCIPprintExprDot(), SCIPprintExprDotFinal()
    1929- removed SCIPexprgraphEval(), use SCIPevalExpr() instead
    1930- removed SCIPexprgraphPropagateVarBounds(), SCIPexprgraphPropagateNodeBounds()
    1931- removed SCIPexprgraphCheckCurvature(), use SCIPcomputeExprCurvature() instead
    1932- removed SCIPexprgraphSimplify(), use SCIPsimplifyExpr() instead
    1933- removed SCIPexprgraphGetTree(), SCIPexprgraphGetSeparableTrees(), SCIPexprgraphGetSubtreeVarsUsage(), SCIPexprgraphGetSumTreesNSummands(), SCIPexprgraphGetSumTrees()
    1934
    1935Constraint handlers for NLP:
    1936- removed SCIPincludeConshdlrAbspower()
    1937- deprecated SCIPcreateConsAbspower() and SCIPcreateConsBasicAbspower(), use SCIPcreateConsBasicSignpowerNonlinear() instead
    1938- deprecated SCIPgetNlRowAbspower(), use SCIPgetNlRowNonlinear() instead
    1939- removed SCIPgetNonlinearVarAbspower(), SCIPgetLinearVarAbspower(), SCIPgetExponentAbspower(), SCIPgetOffsetAbspower(), SCIPgetCoefLinearAbspower(), SCIPgetLhsAbspower(), SCIPgetRhsAbspower()
    1940- removed SCIPgetViolationAbspower(), use SCIPgetAbsViolationNonlinear() instead
    1941- removed SCIPisConvexAbspower(), use SCIPhasExprCurvature() instead
    1942- removed SCIPincludeConshdlrBivariate(), SCIPcreateConsBivariate(), SCIPcreateConsBasicBivariate()
    1943- removed SCIPgetLinearVarBivariate(), SCIPgetLinearCoefBivariate(), SCIPgetExprtreeBivariate(), SCIPgetLhsBivariate(), SCIPgetRhsBivariate()
    1944- removed SCIPincludeConshdlrQuadratic(), use SCIPincludeNlhdlrQuadratic() instead
    1945- removed SCIPincludeQuadconsUpgrade()
    1946- removed SCIPcreateConsQuadratic2(), SCIPcreateConsBasicQuadratic2()
    1947- deprecated SCIPcreateConsBasicQuadratic(), use SCIPcreateConsBasicQuadraticNonlinear() instead
    1948- deprecated SCIPcreateConsQuadratic(), use SCIPcreateConsQuadraticNonlinear() instead
    1949- deprecated SCIPaddConstantQuadratic(), use SCIPgetLhsNonlinear() and SCIPgetRhsNonlinear() instead
    1950- deprecated SCIPaddLinearVarQuadratic(), use SCIPaddLinearVarNonlinear() instead
    1951- deprecated SCIPaddQuadVarQuadratic(), use SCIPaddLinearVarNonlinear() and SCIPaddExprNonlinear() instead
    1952- deprecated SCIPaddQuadVarLinearCoefQuadratic(), use SCIPaddLinearVarNonlinear() instead
    1953- deprecated SCIPaddSquareCoefQuadratic(), use SCIPaddExprNonlinear() instead
    1954- deprecated SCIPaddBilinTermQuadratic(), use SCIPaddExprNonlinear() instead
    1955- deprecated SCIPchgLhsQuadratic(), use SCIPgetLhsNonlinear() instead
    1956- deprecated SCIPchgRhsQuadratic(), use SCIPgetRhsNonlinear() instead
    1957- deprecated SCIPgetNlRowQuadratic(), use SCIPgetNlRowNonlinear() instead
    1958- removed SCIPgetNLinearVarsQuadratic(), SCIPgetLinearVarsQuadratic(), SCIPgetCoefsLinearVarsQuadratic(), SCIPgetNQuadVarTermsQuadratic(), SCIPgetQuadVarTermsQuadratic(), SCIPsortQuadVarTermsQuadratic(), SCIPfindQuadVarTermQuadratic(), SCIPgetNBilinTermsQuadratic(), SCIPgetBilinTermsQuadratic(), SCIPgetLhsQuadratic(), SCIPgetRhsQuadratic()
    1959- removed SCIPgetLinvarMayDecreaseQuadratic(), SCIPgetLinvarMayIncreaseQuadratic()
    1960- removed SCIPcheckCurvatureQuadratic() and SCIPisConvexConsQuadratic(), use SCIPcomputeExprQuadraticCurvature() instead
    1961- removed SCIPisConvexQuadratic(), SCIPisConcaveQuadratic()
    1962- removed SCIPgetViolationQuadratic() and SCIPgetFeasibilityQuadratic(), use SCIPgetAbsViolationNonlinear() instead
    1963- removed SCIPisLinearLocalQuadratic(), SCIPaddToNlpiProblemQuadratic()
    1964- removed SCIPchgLinearCoefQuadratic(), SCIPchgSquareCoefQuadratic(), SCIPchgBilinCoefQuadratic()
    1965- renamed SCIPgetNAllBilinearTermsQuadratic() to SCIPgetNBilinTermsNonlinear() and changed argument from SCIP* to SCIP_CONSHDLR*
    1966- renamed SCIPgetAllBilinearTermsQuadratic() to SCIPgetBilinTermsNonlinear() and replaced arguments by SCIP_CONSHDLR* and changed return type to SCIP_CONSNONLINEAR_BILINTERM*
    1967- removed SCIPaddBilinearIneqQuadratic(), use SCIPinsertBilinearTermImplicitNonlinear() instead
    1968- renamed SCIPcreateConsQuadratic() to SCIPcreateConsQuadraticNonlinear() and removed argument stickingatnode
    1969- removed SCIPincludeConshdlrSOC()
    1970- replaced SCIPcreateConsBasicSOC() by SCIPcreateConsBasicSOCNonlinear()
    1971- deprecated SCIPcreateConsSOC(), use SCIPcreateConsBasicSOCNonlinear() instead
    1972- deprecated SCIPgetNlRowSOC(), use SCIPgetNlRowNonlinear() instead
    1973- removed SCIPgetNLhsVarsSOC(), SCIPgetLhsVarsSOC(), SCIPgetLhsCoefsSOC(), SCIPgetLhsOffsetsSOC(), SCIPgetLhsConstantSOC(), SCIPgetRhsVarSOC(), SCIPgetRhsCoefSOC(), SCIPgetRhsOffsetSOC(), use SCIPisSOCNonlinear() instead
    1974- removed SCIPaddToNlpiProblemSOC()
    1975- renamed SCIPincludeNonlinconsUpgrade() to SCIPincludeConsUpgradeNonlinear() and removed nodereform argument
    1976- removed arguments nlinvars, linvars, lincoefs, nexprtrees, exprtrees, nonlincoefs, stickingatnode from SCIPcreateConsNonlinear() and added SCIP_EXPR* argument
    1977- removed arguments nlinvars, linvars, lincoefs, nexprtrees, exprtrees, nonlincoefs from SCIPcreateConsBasicNonlinear() and added SCIP_EXPR* argument
    1978- removed SCIPcreateConsNonlinear2(), SCIPcreateConsBasicNonlinear2()
    1979- removed SCIPsetExprtreesNonlinear(), use SCIPchgExprNonlinear() instead
    1980- removed SCIPaddExprtreesNonlinear()
    1981- removed SCIPgetNLinearVarsNonlinear(), SCIPgetLinearVarsNonlinear(), SCIPgetLinearCoefsNonlinear()
    1982- removed SCIPgetNExprtreesNonlinear(), SCIPgetExprtreesNonlinear(), SCIPgetExprtreeCoefsNonlinear(), SCIPgetExprgraphNodeNonlinear(), use SCIPgetExprNonlinear() instead
    1983- removed argument scip from SCIPgetLhsNonlinear() and SCIPgetRhsNonlinear()
    1984- removed SCIPcheckCurvatureNonlinear(), SCIPgetCurvatureNonlinear(), and SCIPgetExprtreeCurvaturesNonlinear(), use SCIPhasExprCurvature() instead
    1985- renamed SCIPgetViolationNonlinear() to SCIPgetAbsViolationNonlinear()
    1986- added arguments var and coef to SCIPgetLinvarMayDecreaseNonlinear() and SCIPgetLinvarMayIncreaseNonlinear() and changed return type to void
    1987- removed SCIPgetExprgraphNonlinear()
    1988- removed SCIPcomputeHyperplaneThreePoints(), use SCIPcomputeFacetVertexPolyhedralNonlinear() instead
    1989
    1990### New API functions
    1991
    1992- added SCIPallocClearMemory() and SCIPallocClearBlockMemory() to allocate a chunk of (block) memory
    1993 that is initialized to zeros
    1994- New internal functions for changing the default values of parameters:
    1995 SCIPparamsetSetDefaultLongint(), SCIPparamsetSetDefaultReal(), SCIPparamsetSetDefaultChar(),
    1996 SCIPparamsetSetDefaultString() and
    1997 SCIPparamSetDefaultLongint(), SCIPparamSetDefaultReal(), SCIPparamSetDefaultChar(),
    1998 SCIPparamSetDefaultString()
    1999- new internal function SCIPisPackingPartitioningOrbitope() to check whether an orbitope is of
    2000 packing or partitioning type
    2001- new internal function SCIPcomputeOrbitVar() to compute the symmetry orbit of a variable
    2002- added SCIPcalcFibHash(SCIP_Real) to hash a floating-point value to an unsigned integer
    2003- added SCIPcomputeArraysIntersectionPtr() to compute intersection of two sorted arrays of pointers
    2004- new function SCIPinterruptLP() (intended to be called from a different thread) that interrupts ongoing lp solve
    2005- added SCIPcreateConsIndicatorGeneric() and SCIPcreateConsIndicatorGenericLinCons()
    2006 which copy the interface of SCIPcreateConsIndicator() and SCIPcreateConsIndicatorLinCons() and
    2007 add an activeone argument to specify whether the indicator constraint should be activated on 0 or 1.
    2008 SCIPcreateConsIndicator() also adds a lessthanineq flag to choose whether the linear constraint is a less-than or greater-than inequality.
    2009- added SCIPmarkDoNotAggrVar() to mark that a variable should not be aggregated
    2010- added SCIPdoNotAggrVar() to query whether a variable should not be aggregated
    2011- added SCIPdecompGetNBorderVars() and SCIPdecompGetNBorderConss() to get number of border variables/constraints
    2012- added SCIPdecompGetVarsSize() and SCIPdecompGetConssSize() to get variable/constraint size for each block of a decomposition
    2013- added SCIPincludeDialogDefaultBasic()
    2014- added SCIPintervalAreDisjointEps(), SCIPintervalIntersectEps()
    2015- added SCIPintervalEntropy()
    2016- added SCIPintervalPropagateWeightedSum()
    2017- added SCIPcalcRootNewton()
    2018- added SCIPvarGetImplicVarBounds()
    2019- added SCIPcreateRowprep(), SCIPfreeRowprep(), SCIPcopyRowprep(),
    2020 SCIProwprepGetNVars(), SCIProwprepGetVars(), SCIProwprepGetCoefs(), SCIProwprepGetSide(), SCIProwprepGetSidetype(), SCIProwprepIsLocal(), SCIProwprepGetName(), SCIProwprepGetNModifiedVars(), SCIProwprepGetModifiedVars(),
    2021 SCIProwprepReset(), SCIProwprepAddSide(), SCIProwprepAddConstant(), SCIProwprepSetSidetype(), SCIProwprepSetLocal(), SCIProwprepRecordModifications(),
    2022 SCIPprintRowprep(), SCIPprintRowprepSol(), SCIPensureRowprepSize(), SCIPaddRowprepTerm(), SCIPaddRowprepTerms(), SCIPgetRowprepViolation(), SCIPisRowprepViolationReliable(),
    2023 SCIPmergeRowprepTerms(), SCIPcleanupRowprep(), SCIPcleanupRowprep2(), SCIPscaleupRowprep(), SCIPscaleRowprep(),
    2024 SCIPgetRowprepRowConshdlr(), SCIPgetRowprepRowCons(), SCIPgetRowprepRowSepa()
    2025- added SCIPsetClockEnabled()
    2026- added SCIPisSolveInterrupted() to check whether SCIPinterruptSolve() has been called
    2027- added SCIPgetNPresolRounds()
    2028- added SCIPgetNUnfixedLPCols()
    2029- moved SCIPhistoryGetInferenceSum() and SCIPhistoryGetAvgConflictlength() from internal to public API
    2030
    2031Expression handler:
    2032- added SCIPincludeExprhdlr(), SCIPgetExprhdlrs(), SCIPgetNExprhdlrs(), SCIPfindExprhdlr()
    2033- added SCIPgetExprhdlrVar(), SCIPgetExprhdlrValue(), SCIPgetExprhdlrSum(), SCIPgetExprhdlrProduct(), SCIPgetExprhdlrPower()
    2034- added SCIPexprhdlrSetCopyFreeHdlr(), SCIPexprhdlrSetCopyFreeData(), SCIPexprhdlrSetPrint(), SCIPexprhdlrSetParse(), SCIPexprhdlrSetCurvature(), SCIPexprhdlrSetMonotonicity(), SCIPexprhdlrSetIntegrality(), SCIPexprhdlrSetHash(), SCIPexprhdlrSetCompare(), SCIPexprhdlrSetDiff(), SCIPexprhdlrSetIntEval(), SCIPexprhdlrSetSimplify(), SCIPexprhdlrSetReverseProp(), SCIPexprhdlrSetEstimate()
    2035- added SCIPexprhdlrGetName(), SCIPexprhdlrGetDescription(), SCIPexprhdlrGetPrecedence(), SCIPexprhdlrGetData(), SCIPexprhdlrHasPrint(), SCIPexprhdlrHasBwdiff(), SCIPexprhdlrHasFwdiff(), SCIPexprhdlrHasIntEval(), SCIPexprhdlrHasEstimate(), SCIPexprhdlrHasInitEstimates(), SCIPexprhdlrHasSimplify(), SCIPexprhdlrHasCurvature(), SCIPexprhdlrHasMonotonicity(), SCIPexprhdlrHasReverseProp()
    2036- added SCIPexprhdlrComp()
    2037- added SCIPexprhdlrGetNIntevalCalls(), SCIPexprhdlrGetIntevalTime(), SCIPexprhdlrGetNReversepropCalls(), SCIPexprhdlrGetReversepropTime(), SCIPexprhdlrGetNCutoffs(), SCIPexprhdlrGetNDomainReductions(), SCIPexprhdlrIncrementNDomainReductions(), SCIPexprhdlrGetNEstimateCalls(), SCIPexprhdlrGetEstimateTime(), SCIPexprhdlrGetNBranchings(), SCIPexprhdlrIncrementNBranchings(), SCIPexprhdlrGetNSimplifyCalls(), SCIPexprhdlrGetSimplifyTime(), SCIPexprhdlrGetNSimplifications()
    2038- added SCIPprintExpressionHandlerStatistics()
    2039- added SCIPincludeExprhdlrEntropy(), SCIPcreateExprEntropy(), SCIPisExprEntropy()
    2040- added SCIPincludeExprhdlrErf(), SCIPcreateExprErf(), SCIPisExprErf()
    2041- added SCIPcreateExprAbs(), SCIPincludeExprhdlrAbs(), SCIPisExprAbs()
    2042- added SCIPcreateExprExp(), SCIPincludeExprhdlrExp(), SCIPisExprExp()
    2043- added SCIPcreateExprLog(), SCIPincludeExprhdlrLog(), SCIPisExprLog()
    2044- added SCIPcreateExprPow(), SCIPcreateExprSignpower(), SCIPincludeExprhdlrPow(), SCIPincludeExprhdlrSignpower(), SCIPisExprSignpower(), SCIPgetExponentExprPow(), SCIPisExprPower()
    2045- added SCIPincludeExprhdlrProduct(), SCIPcreateExprProduct(), SCIPgetCoefExprProduct(), SCIPisExprProduct()
    2046- added SCIPincludeExprhdlrSum(), SCIPcreateExprSum(), SCIPsetConstantExprSum(), SCIPappendExprSumExpr(), SCIPmultiplyByConstantExprSum(), SCIPgetCoefsExprSum(), SCIPgetConstantExprSum(), SCIPisExprSum()
    2047- added SCIPincludeExprhdlrSin(), SCIPcreateExprSin(), SCIPincludeExprhdlrCos(), SCIPcreateExprCos(), SCIPisExprSin(), SCIPisExprCos()
    2048- added SCIPincludeExprhdlrValue(), SCIPcreateExprValue(), SCIPgetValueExprValue(), SCIPisExprValue()
    2049- added SCIPincludeExprhdlrVar(), SCIPcreateExprVar(), SCIPgetVarExprVar(), SCIPisExprVar()
    2050- added SCIPincludeExprhdlrVaridx(), SCIPcreateExprVaridx(), SCIPisExprVaridx(), SCIPgetIndexExprVaridx(), SCIPsetIndexExprVaridx()
    2051
    2052Expression:
    2053- added SCIPcaptureExpr(), SCIPreleaseExpr(), SCIPexprGetNUses()
    2054- added SCIPexprGetHdlr(), SCIPexprGetData(), SCIPexprSetData(), SCIPexprGetOwnerData()
    2055- added SCIPevalExpr(), SCIPgetExprNewSoltag(), SCIPexprGetEvalValue(), SCIPexprGetEvalTag()
    2056- added SCIPevalExprGradient(), SCIPevalExprHessianDir(), SCIPexprGetDerivative(), SCIPexprGetDot(), SCIPexprGetBardot(), SCIPexprGetDiffTag()
    2057- added SCIPevalExprActivity(), SCIPexprGetActivity(), SCIPexprGetActivityTag(), SCIPexprSetActivity()
    2058- added SCIPcomputeExprCurvature(), SCIPexprGetCurvature(), SCIPexprSetCurvature()
    2059- added SCIPcomputeExprIntegrality(), SCIPexprIsIntegral(), SCIPexprSetIntegrality()
    2060- added SCIPcheckExprQuadratic(), SCIPfreeExprQuadratic(), SCIPevalExprQuadratic(), SCIPprintExprQuadratic(), SCIPcomputeExprQuadraticCurvature()
    2061- added SCIPexprGetQuadraticData(), SCIPexprGetQuadraticQuadTerm(), SCIPexprGetQuadraticBilinTerm(), SCIPexprAreQuadraticExprsVariables()
    2062- added SCIPcreateExpr(), SCIPcreateExpr2(), SCIPcreateExprQuadratic(), SCIPcreateExprMonomial()
    2063- added SCIPappendExprChild(), SCIPreplaceExprChild(), SCIPremoveExprChildren()
    2064- added SCIPduplicateExpr(), SCIPduplicateExprShallow(), SCIPcopyExpr()
    2065- added SCIPparseExpr()
    2066- added SCIPprintExpr(), SCIPdismantleExpr()
    2067- added SCIPprintExprDotInit(), SCIPprintExprDotInit2(), SCIPprintExprDot(), SCIPprintExprDotFinal(), SCIPshowExpr()
    2068- added SCIPcompareExpr(), SCIPhashExpr()
    2069- added SCIPsimplifyExpr(), SCIPreplaceCommonSubexpressions()
    2070- added SCIPgetExprNVars(), SCIPgetExprVarExprs()
    2071- added SCIPcallExprPrint(), SCIPcallExprCurvature(), SCIPcallExprMonotonicity(), SCIPcallExprEval(), SCIPcallExprEvalFwdiff(), SCIPcallExprInteval(), SCIPcallExprEstimate(), SCIPcallExprInitestimates(), SCIPcallExprSimplify(), SCIPcallExprReverseprop()
    2072- added SCIPexprcurvPowerInv(), SCIPexprcurvMonomialInv()
    2073
    2074Expression iterator:
    2075- added SCIPcreateExpriter(), SCIPfreeExpriter()
    2076- added SCIPexpriterIsInit(), SCIPexpriterInit()
    2077- added SCIPexpriterRestartDFS(), SCIPexpriterSetStagesDFS(), SCIPexpriterGetCurrent(), SCIPexpriterGetStageDFS(), SCIPexpriterGetChildIdxDFS(), SCIPexpriterGetChildExprDFS(), SCIPexpriterGetParentDFS()
    2078- added SCIPexpriterGetCurrentUserData(), SCIPexpriterGetChildUserDataDFS(), SCIPexpriterGetExprUserData(), SCIPexpriterSetCurrentUserData(), SCIPexpriterSetExprUserData(), SCIPexpriterSetChildUserData()
    2079- added SCIPexpriterGetNext(), SCIPexpriterSkipDFS(), SCIPexpriterIsEnd()
    2080- added SCIPexprintHessianSparsity(), SCIPexprintHessian()
    2081
    2082Constraint handlers for NLP:
    2083- added SCIPgetCurBoundsTagNonlinear(), SCIPgetLastBoundRelaxTagNonlinear(), SCIPincrementCurBoundsTagNonlinear()
    2084- added SCIPgetVarExprHashmapNonlinear()
    2085- added SCIPprocessRowprepNonlinear()
    2086- added SCIPassumeConvexNonlinear()
    2087- added SCIPcollectBilinTermsNonlinear(), SCIPgetBilinTermIdxNonlinear(), SCIPgetBilinTermNonlinear(), SCIPevalBilinAuxExprNonlinear(), SCIPinsertBilinearTermExistingNonlinear(), SCIPinsertBilinearTermImplicitNonlinear()
    2088- added SCIPcomputeFacetVertexPolyhedralNonlinear()
    2089- added SCIPgetExprNonlinear()
    2090- added SCIPcheckQuadraticNonlinear(), SCIPchgLhsNonlinear(), SCIPchgRhsNonlinear(), SCIPchgExprNonlinear(), SCIPaddExprNonlinear()
    2091- added SCIPgetRelViolationNonlinear()
    2092- added SCIPgetExprNLocksPosNonlinear(), SCIPgetExprNLocksNegNonlinear(), SCIPgetExprAuxVarNonlinear(), SCIPgetExprNEnfosNonlinear(), SCIPgetExprEnfoDataNonlinear(), SCIPsetExprEnfoAuxValueNonlinear()
    2093- added SCIPgetExprNPropUsesActivityNonlinear(), SCIPgetExprNSepaUsesActivityNonlinear(), SCIPgetExprNAuxvarUsesNonlinear(), SCIPregisterExprUsageNonlinear()
    2094- added SCIPgetExprAbsOrigViolationNonlinear(), SCIPgetExprAbsAuxViolationNonlinear(), SCIPgetExprRelAuxViolationNonlinear()
    2095- added SCIPgetExprBoundsNonlinear(), SCIPtightenExprIntervalNonlinear(), SCIPmarkExprPropagateNonlinear()
    2096- added SCIPaddExprViolScoreNonlinear(), SCIPaddExprsViolScoreNonlinear(), SCIPgetExprViolScoreNonlinear()
    2097- added SCIPgetExprPartialDiffNonlinear(), SCIPgetExprPartialDiffGradientDirNonlinear()
    2098- added SCIPevalExprQuadraticAuxNonlinear()
    2099- added SCIPincludeNlhdlrNonlinear(), SCIPfindNlhdlrNonlinear(), SCIPgetNNlhdlrsNonlinear(), SCIPgetNlhdlrsNonlinear(), SCIPgetNlhdlrExprDataNonlinear()
    2100- added SCIPcreateConsQuadraticNonlinear() and SCIPcreateConsBasicQuadraticNonlinear() to create a nonlinear constraint that is quadratic
    2101- added SCIPcreateConsBasicSignpowerNonlinear() to create a nonlinear constraint that looks like the former abspower or signpower constraints
    2102
    2103Nonlinear Handler:
    2104- added SCIPincludeNlhdlrBilinear(), SCIPgetExprsBilinear(), SCIPgetNExprsBilinear(), SCIPaddIneqBilinear()
    2105- added SCIPincludeNlhdlrConvex(), SCIPincludeNlhdlrConcave(), SCIPhasExprCurvature()
    2106- added SCIPincludeNlhdlrDefault()
    2107- added SCIPincludeNlhdlrPerspective()
    2108- added SCIPincludeNlhdlrQuadratic()
    2109- added SCIPincludeNlhdlrQuotient()
    2110- added SCIPincludeNlhdlrSoc(), SCIPisSOCNonlinear(), SCIPfreeSOCArraysNonlinear()
    2111- added SCIPnlhdlrSetCopyHdlr(), SCIPnlhdlrSetFreeHdlrData(), SCIPnlhdlrSetFreeExprData(), SCIPnlhdlrSetInitExit(), SCIPnlhdlrSetProp(), SCIPnlhdlrSetSepa()
    2112- added SCIPnlhdlrGetName(), SCIPnlhdlrGetDesc(), SCIPnlhdlrGetDetectPriority(), SCIPnlhdlrGetEnfoPriority(), SCIPnlhdlrIsEnabled(), SCIPnlhdlrGetData()
    2113- added SCIPnlhdlrHasIntEval(), SCIPnlhdlrHasReverseProp(), SCIPnlhdlrHasInitSepa(), SCIPnlhdlrHasExitSepa(), SCIPnlhdlrHasEnfo(), SCIPnlhdlrHasEstimate()
    2114- added SCIPnlhdlrComp()
    2115
    2116NLPI:
    2117- added SCIPgetNlpiSolverPointer(), SCIPcreateNlpiProblem(), SCIPfreeNlpiProblem(), SCIPgetNlpiProblemPointer(), SCIPaddNlpiVars(), SCIPaddNlpiConstraints(), SCIPsetNlpiObjective(), SCIPchgNlpiVarBounds(), SCIPchgNlpiConsSides(), SCIPdelNlpiVarSet(), SCIPdelNlpiConsSet(), SCIPchgNlpiLinearCoefs(), SCIPchgNlpiExpr(), SCIPchgNlpiObjConstant(), SCIPsetNlpiInitialGuess(), SCIPsolveNlpiParam(), SCIPgetNlpiSolstat(), SCIPgetNlpiTermstat(), SCIPgetNlpiSolution(), SCIPgetNlpiStatistics()
    2118- added SCIPincludeNlpSolverAll()
    2119- added SCIPincludeNlpSolverFilterSQP(), SCIPgetSolverNameFilterSQP(), SCIPgetSolverDescFilterSQP(), SCIPisFilterSQPAvailableFilterSQP()
    2120- added SCIPincludeNlpSolverIpopt()
    2121- added SCIPincludeNlpSolverWorhp()
    2122- added SCIPnlpiOracleChgExpr()
    2123- added SCIPcreateNlpiProblemFromNlRows()
    2124- added SCIPnlpiOracleGetObjectiveConstant()
    2125- added SCIPnlpiOracleIsVarNonlinear(), SCIPnlpiOracleGetVarCounts(), SCIPnlpiOracleIsConstraintNonlinear()
    2126- added SCIPnlpiGetNProblems(), SCIPnlpiGetProblemTime(), SCIPnlpiGetNSolves(), SCIPnlpiGetSolveTime(), SCIPnlpiGetEvalTime(), SCIPnlpiGetNIterations(), SCIPnlpiGetNTermStat(), SCIPnlpiGetNSolStat(), SCIPnlpiMergeStatistics()
    2127- added SCIPmergeNLPIStatistics(), SCIPprintNLPIStatistics()
    2128- added SCIPnlpiOracleResetEvalTime(), SCIPnlpiOracleGetEvalTime()
    2129- added SCIPaddNlpiProblemNlRows()
    2130
    2131Cut Selector:
    2132- added SCIPincludeCutsel(), SCIPincludeCutselBasic(), SCIPsetCutselCopy(), SCIPsetCutselFree(), SCIPsetCutselInit(), SCIPsetCutselExit(), SCIPsetCutselInitsol(), SCIPsetCutselExitsol(), SCIPfindCutsel(), SCIPgetCutsels(), SCIPgetNCutsels(), SCIPsetCutselPriority()
    2133- added SCIPcutselGetName(), SCIPcutselGetData(), SCIPcutselGetDesc(), SCIPcutselGetPriority(), SCIPcutselSetData(), SCIPcutselIsInitialized(), SCIPcutselGetSetupTime(), SCIPcutselGetTime()
    2134
    2135### Command line interface
    2136### Interfaces to external software
    2137
    2138- removed GAMS interface (originally in interfaces/gams) and reading capability of gms reader;
    2139 the removed interface was a poorly maintained copy of the GAMS/SCIP interface that is available at
    2140 https://github.com/coin-or/GAMSlinks
    2141- integrated AMPL interface into main SCIP executable, that is, added possibility to use SCIP executable as solver in AMPL
    2142 (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)
    2143- the ZIMPL interface has been updated to support ZIMPL 3.4.1;
    2144 the minimal required ZIMPL version is now 3.4.1
    2145
    2146### Changed parameters
    2147
    2148- Extended range of parameter "misc/usesymmetry" from [0,3] to [0,7], changed default from 3 to 5
    2149- deleted parameter "constraints/orbitope/usedynamicprop"
    2150- changed type of parameter "propagating/symmetry/recomputerestart" from SCIP_Bool to int with range [0,2]
    2151- deleted parameter "propagating/symmetry/disableofrestart"
    2152- parameter "heuristics/padm/original" is now an advanced parameter
    2153- removed constraints/nonlinear/linfeasshift, constraints/nonlinear/reformulate, constraints/nonlinear/maxexpansionexponent, constraints/nonlinear/sepanlpmincont
    2154- removed constraints/nonlinear/upgrade/abspower
    2155- removed constraints/nonlinear/upgrade/and, use constraints/nonlinear/reformbinprodsand instead
    2156- removed constraints/nonlinear/upgrade/bivariate
    2157- removed constraints/nonlinear/upgrade/quadratic, use nlhdlr/quadratic/enabled instead
    2158- changed default of constraints/nonlinear/maxproprounds from 1 to 10
    2159- replaced constraints/nonlinear/enfocutsremovable by constraints/nonlinear/rownotremovable
    2160- replaced constraints/nonlinear/cutmaxrange by separating/maxcoefratiofacrowprep
    2161- 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
    2162- removed constraints/quadratic/replacebinaryprod, use constraints/nonlinear/reformbinprodsfac instead
    2163- removed constraints/quadratic/empathy4and, use constraints/nonlinear/reformbinprodsand instead
    2164- removed constraints/quadratic/binreforminitial, constraints/quadratic/binreformbinaryonly, constraints/quadratic/binreformmaxcoef
    2165- removed constraints/quadratic/cutmaxrange, constraints/quadratic/mincurvcollectbilinterms, constraints/quadratic/linearizeheursol, constraints/quadratic/checkcurvature, constraints/quadratic/checkfactorable, constraints/quadratic/checkquadvarlocks, constraints/quadratic/linfeasshift
    2166- removed constraints/quadratic/maxdisaggrsize, constraints/quadratic/disaggrmergemethod, constraints/quadratic/maxproprounds, constraints/quadratic/maxproproundspresolve, constraints/quadratic/enfolplimit, constraints/quadratic/sepanlpmincont, constraints/quadratic/enfocutsremovable
    2167- removed constraints/quadratic/gaugecuts, constraints/quadratic/interiorcomputation, constraints/quadratic/projectedcuts, constraints/quadratic/branchscoring, constraints/quadratic/usebilinineqbranch, constraints/quadratic/bilinineqmaxseparounds,
    2168- removed constraints/quadratic/minscorebilinterms, use nlhdlr/bilinear/enabled instead
    2169- removed constraints/quadratic/upgrade/linear, constraints/quadratic/upgrade/abspower, constraints/quadratic/upgrade/bivariate, constraints/quadratic/upgrade/bounddisjunction
    2170- removed constraints/quadratic/upgrade/soc, use nlhdlr/soc/enabled instead
    2171- renamed constraints/quadratic/upgrade/setppc to constraints/nonlinear/upgrade/setppc
    2172- 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
    2173- 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
    2174- 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
    2175- removed constraints/bivariate/cutmaxrange, constraints/bivariate/linfeasshift, constraints/bivariate/maxproprounds, constraints/bivariate/ninitlprefpoints, constraints/bivariate/enfocutsremovable
    2176- 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
    2177- 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
    2178- removed constraints/soc/generalsocupgrade, use nlhdlr/soc/compeigenvalues instead
    2179- changed default of presolving/qpkktref/maxrounds from -1 to 0
    2180- changed default of propagating/obbt/onlynonconvexvars from FALSE to TRUE
    2181- changed default of heuristics/subnlp/resolvetolfactor from 0.001 to 1.0
    2182- removed heuristics/subnlp/nlpoptfile, use nlpi/ipopt/optfile instead
    2183- removed separating/convexproj/nlptimelimit
    2184- removed separating/gauge/nlptimelimit
    2185- removed heuristics/subnlp/nlptimelimit and heuristics/subnlp/nlpiterlimit
    2186- removed heuristics/subnlp/resolvetolfactor and heuristics/subnlp/resolvefromscratch
    2187- changed default of heuristics/subnlp/itermin to 20
    2188- renamed heuristics/subnlp/iteroffset to heuristics/subnlp/nodesoffset
    2189- renamed heuristics/subnlp/iterquotient to heuristics/subnlp/nodesfactor
    2190- removed heuristics/subnlp/runalways, use heuristics/subnlp/nodesoffset=INT_MAX and heuristics/subnlp/successrateexp = 0.0 instead
    2191- removed heuristics/subnlp/minimprove, heuristics/multistart/nlpminimpr
    2192- Removed parameters for strongcg separator: separating/strongcg/..., i.e.,
    2193 maxrounds, maxroundsroot, maxsepacutsroot, maxsepacuts, dynamiccuts. One can control the
    2194 strongcg behavior throught the parameters of sepa_gomory.
    2195- renamed separating/{minortho,minorthoroot,objparalfac,intsupportfac} to cutselection/hybrid/{minortho,minorthoroot,objparalweight,intsupportweight}
    2196
    2197### New parameters
    2198
    2199- It is now possible to add orbitope constraints to handle symmetries even if not all variables
    2200 in a component of the symmetry group are binary. This feature can be enabled using the
    2201 parameter "propagating/symmetry/onlybinorbitope".
    2202
    2203- new parameter "propagating/symmetry/sstleaderrule" to select a rule for selecting the
    2204 leader in SST cuts
    2205- new parameter "propagating/symmetry/ssttiebreakrule" to select a tiebreak rule for selecting the
    2206 leader in SST cuts
    2207- new parameter "propagating/symmetry/sstleadervartype" to select the possible variable types
    2208 for a leader in SST cuts
    2209- new parameter "propagating/symmetry/addconflictcuts" to control whether SST cuts are added if
    2210 a binary leader variable is in conflict with a variable in its orbit
    2211- new parameter "propagating/symmetry/sstaddcuts" to control whether SST cuts are added
    2212- new parameter "propagating/symmetry/sstmixedcomponents" to control whether SST cuts are added
    2213 if a symmetry component contains variables of different types
    2214- new parameter "propagating/symmetry/detectsubgroups" to search for orbitopes defined by subgroups
    2215- new parameter "propagating/symmetry/addweaksbcs" to add Schreier Sims cuts for a single
    2216 variable orbit in case an orbitope subgroup is detected
    2217- new parameter "propagating/symmetry/addstrongsbcs" to add symretope facets for a single
    2218 variable orbit on which the symmetry group acts like a symmetric group
    2219- new parameter "propagating/symmetry/maxnconsssubgroup" to control up to which number of
    2220 constraints subgroups are detected
    2221- new parameter "propagating/symmetry/preferlessrows" to control whether orbitopes with
    2222 smallest number of rows shall be computed by the subgroup detection heuristic
    2223- new parameter "propagating/symmetry/usedynamicprop" to control if rows of full orbitope
    2224 shall be ordered dynamically in propagation
    2225- new parameter "separating/filtercutpoolrel" to control whether cutpool uses
    2226 a dynamic strategy to separate only cuts with high relative efficacy
    2227- if run from AMPL: display/statistics to enable printing detailed solve statistics after solve
    2228- if run from AMPL: display/logfile to specify name of file to write SCIP log to (additionally to writing to stdout)
    2229- constraints/nonlinear/propauxvars, constraints/nonlinear/varboundrelax, constraints/nonlinear/varboundrelaxamount, constraints/nonlinear/conssiderelaxamount
    2230- constraints/nonlinear/vpmaxperturb, constraints/nonlinear/vpadjfacetthresh, constraints/nonlinear/vpdualsimplex
    2231- constraints/nonlinear/bilinmaxnauxexprs, constraints/nonlinear/forbidmultaggrnlvar, constraints/nonlinear/checkvarlocks, constraints/nonlinear/violscale
    2232- constraints/nonlinear/reformbinprods, constraints/nonlinear/reformbinprodsand, constraints/nonlinear/reformbinprodsfac
    2233- constraints/nonlinear/tightenlpfeastol, constraints/nonlinear/propinenforce, constraints/nonlinear/weakcutthreshold, constraints/nonlinear/strongcutmaxcoef, constraints/nonlinear/strongcutefficacy, constraints/nonlinear/forcestrongcut, constraints/nonlinear/enfoauxviolfactor, constraints/nonlinear/weakcutminviolfactor
    2234- 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
    2235- constraints/nonlinear/linearizeheursol
    2236- nlhdlr/default/enabled
    2237- nlhdlr/convex/enabled, nlhdlr/convex/detectsum, nlhdlr/convex/extendedform, nlhdlr/convex/cvxquadratic, nlhdlr/convex/cvxsignomial, nlhdlr/convex/cvxprodcomp, nlhdlr/convex/handletrivial
    2238- nlhdlr/concave/enabled, nlhdlr/concave/detectsum, nlhdlr/concave/cvxquadratic, nlhdlr/concave/cvxsignomial, nlhdlr/concave/cvxprodcomp, nlhdlr/concave/handletrivial
    2239- nlhdlr/bilinear/enabled, nlhdlr/bilinear/useinteval, nlhdlr/bilinear/usereverseprop, nlhdlr/bilinear/maxseparoundsroot, nlhdlr/bilinear/maxseparounds, nlhdlr/bilinear/maxsepadepth
    2240- 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
    2241- 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
    2242- nlhdlr/quotient/enabled
    2243- nlhdlr/soc/enabled, nlhdlr/soc/mincutefficacy, nlhdlr/soc/compeigenvalues
    2244- propagating/obbt/createlincons
    2245- propagating/symmetry/onlybinarysymmetry
    2246- 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
    2247- 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
    2248- separating/interminor/usestrengthening, separating/interminor/usebounds, separating/interminor/mincutviol, separating/interminor/maxrounds, separating/interminor/maxroundsroot
    2249- table/cons_nonlinear/active, table/nlhdlr/active, table/exprhdlr/active, table/nlpi/active, table/nlhdlr_bilinear/active, table/nlhdlr_quadratic/active
    2250- expr/log/minzerodistance, expr/pow/minzerodistance
    2251- benders/default/maxslackvarcoef to specify maximal coefficient for slack variables; if exceeded, slack variables are fixed to zero
    2252- nlpi/ipopt/optfile to specify name of Ipopt options file to use for every solve with Ipopt
    2253- 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
    2254- nlpi/ipopt/warm_start_push
    2255- timing/nlpieval
    2256- heuristics/subnlp/iterinit, heuristics/subnlp/ninitsolves, heuristics/subnlp/successrateexp
    2257- heuristics/subnlp/expectinfeas, heuristics/subnlp/opttol, heuristics/subnlp/feastolfactor
    2258- heuristics/subnlp/presolveemphasis, heuristics/subnlp/setcutoff
    2259- new parameters "branching/inference/conflictprio" and "branching/inference/cutoffprio" that allow
    2260 using the different score criteria in inference branching hierarchically
    2261- new parameters "heuristics/alns/nodesquotmin", "heuristics/alns/maxcallssamesol" and "heuristics/alns/initduringroot"
    2262 to control neighborhoods in ALNS
    2263- new parameter "benders/default/benderscut/optimality/mir" to control whether mixed-integer rounding procedure is applied to Benders optimality cuts
    2264- new parameter "misc/avoidmemout" to try to avoid running into memory limit
    2265- cutselection/hybrid/dircutoffdistweight, cutselection/hybrid/efficacyweight, cutselection/hybrid/intsupportweight, cutselection/hybrid/objparalweight, cutselection/hybrid/priority
    2266- new parameter "decomposition/disablemeasures" to disable expensive measures in SCIPcomputeDecompStats()
    2267- new parameter "presolving/milp/probfilename" filename to write the problem to a file before MILP presolving starts
    2268
    2269### Data structures
    2270
    2271- removed quadratic terms from NLROWs
    2272- removed SCIP_NLPPAR_INFINITY from SCIP_NLPPARAM enum
    2273- added types SYM_OPTYPE, SYM_CONSTTYPE, SYM_RHSTYPE, SYM_EXPRDATA
    2274- removed class SCIPInterval
    2275- removed enum SCIP_EXPROP
    2276- removed union SCIP_EXPROPDATA, added SCIP_EXPRDATA
    2277- removed struct SCIP_EXPRTREE, use SCIP_EXPR instead
    2278- removed structs SCIP_QUADELEM, SCIP_EXPRDATA_QUADRATIC, SCIP_EXPRDATA_MONOMIAL, SCIP_EXPRDATA_POLYNOMIAL, SCIP_EXPRDATA_USER
    2279- removed structs SCIP_EXPRGRAPHNODE, SCIP_EXPRGRAPH
    2280- removed type SCIP_EXPRBOUNDSTATUS
    2281- removed struct SCIP_USEREXPRDATA
    2282- added enum SCIP_MONOTONE
    2283- added structs SCIP_EXPRHDLR, SCIP_EXPRHDLRDATA
    2284- added union SCIP_EXPRITER_USERDATA
    2285- added enum SCIP_EXPRITER_TYPE
    2286- added structs SCIP_EXPRITERDATA, SCIP_EXPRITER
    2287- added type SCIP_EXPRPRINT_WHAT, struct SCIP_EXPRPRINTDATA
    2288- removed enum SCIP_BIVAR_CONVEXITY
    2289- removed structs SCIP_QUADVAREVENTDATA, SCIP_QUADVARTERM, SCIP_BILINTERM
    2290- added structs SCIP_CONSNONLINEAR_AUXEXPR, SCIP_CONSNONLINEAR_BILINTERM
    2291- added type SCIP_NLHDLR_METHOD
    2292- added structs SCIP_NLHDLR, SCIP_NLHDLRDATA, SCIP_NLHDLREXPRDATA
    2293- enum SCIP_NLPPARAM has been changed to a struct that holds values of parameters for an NLP solve
    2294- removed SCIP_NLPPAR_OPTFILE/optfile from SCIP_NLPPARAM
    2295- added SCIP_NLPTERMSTAT_INTERRUPT to SCIP_NLPTERMSTAT enum; returned from NLP solver if SCIPinterruptSolve() has been called
    2296- renamed SCIP_NLPTERMSTAT_TILIM to SCIP_NLPTERMSTAT_TIMELIMIT
    2297- renamed SCIP_NLPTERMSTAT_ITLIM to SCIP_NLPTERMSTAT_ITERLIMIT
    2298- renamed SCIP_NLPTERMSTAT_LOBJLIM to SCIP_NLPTERMSTAT_LOBJLIMIT
    2299- renamed SCIP_NLPTERMSTAT_NUMERR to SCIP_NLPTERMSTAT_NUMERICERROR
    2300- renamed SCIP_NLPTERMSTAT_EVALERR to SCIP_NLPTERMSTAT_EVALERROR
    2301- renamed SCIP_NLPTERMSTAT_MEMERR to SCIP_NLPTERMSTAT_OUTOFMEMORY
    2302- renamed SCIP_NLPTERMSTAT_LICERR to SCIP_NLPTERMSTAT_LICENSEERROR
    2303- added evaltime to SCIP_NLPSTATISTICS
    2304- added structs SCIP_CUTSEL, SCIP_CUTSELDATA
    2305
    2306Deleted files
    2307-------------
    2308
    2309- interfaces/gams/∗
    2310- interfaces/ampl/∗
    2311- src/nlpi/∗
    2312- src/scip/cons_bivariate.{c,h}
    2313- src/scip/pub_misc_nonlinear.h
    2314- src/scip/misc_nonlinear.c
    2315- src/scip/scip_nonlinear.{c,h}
    2316- src/scip/sepa_strongcg.{h|c}
    2317
    2318Unit tests
    2319----------
    2320
    2321- added cons/linear/nonlinupgd.c
    2322- added cons/nonlinear/addcons.c
    2323- added cons/nonlinear/bilinhash.c
    2324- added cons/nonlinear/check.c
    2325- added cons/nonlinear/copy.c
    2326- added cons/nonlinear/create_nlrow.c
    2327- added cons/nonlinear/curvature.c
    2328- added cons/nonlinear/glbconss.c
    2329- added cons/nonlinear/hessian.c
    2330- added cons/nonlinear/locks.c
    2331- added cons/nonlinear/nlhdlr.c
    2332- added cons/nonlinear/nlhdlr_bilinear.c
    2333- added cons/nonlinear/nlhdlr_concave.c
    2334- added cons/nonlinear/nlhdlr_convex.c
    2335- added cons/nonlinear/nlhdlr_perspective.c
    2336- added cons/nonlinear/nlhdlr_quadratic.c
    2337- added cons/nonlinear/nlhdlr_quotient.c
    2338- added cons/nonlinear/nlhdlr_soc.c
    2339- added cons/nonlinear/parse.c
    2340- added cons/nonlinear/presolve.c
    2341- added cons/nonlinear/propagate.c
    2342- added cons/nonlinear/readers.c
    2343- added cons/nonlinear/reformbinprods.c
    2344- added cons/nonlinear/repair.c
    2345- added cons/nonlinear/transform.c
    2346- added cons/nonlinear/vertexpolyhedral.c
    2347- removed cons/nonlinear/getCoeffsAndConstantFromLinearExpr.c
    2348- removed cons/soc/upgrade.c
    2349- added expr/abs/estimation.c
    2350- added expr/commonsubexprs.c
    2351- added expr/compare.c
    2352- added expr/copy.c
    2353- added expr/cos/cos.c
    2354- added expr/cos/estimation.c
    2355- added expr/curvature.c
    2356- added expr/derivative.c
    2357- added expr/entropy/entropy.c
    2358- added expr/entropy/estimation.c
    2359- added expr/eval.c
    2360- added expr/exp/estimation.c
    2361- added expr/free.c
    2362- added expr/getvarexprs.c
    2363- added expr/hash.c
    2364- added expr/hessian.c
    2365- added expr/integrality.c
    2366- added expr/iterator.c
    2367- added expr/log/estimation.c
    2368- added expr/monotonicity.c
    2369- added expr/parse.c
    2370- added expr/pow/estimation.c
    2371- added expr/pow/pow.c
    2372- added expr/product/estimation.c
    2373- added expr/quad.c
    2374- added expr/simplify.c
    2375- added expr/sin/estimation.c
    2376- added expr/sin/sin.c
    2377- added expr/sum/estimation.c
    2378- added nlpi/exprinterpret.c
    2379- speedup test nlpi:solveQP in nlpi/nlpi.c
    2380- added test projection:transitivity in prob/obbt.c
    2381- added reader/nl.c
    2382- added test intervalarith:sincos in scip/intervalarith.c
    2383- added sepa/minor.c
    2384- added sepa/rlt/cuts.c
    2385- added sepa/rlt/product_detection.c
    2386- added sepa/rlt/separation.c
    2387- added tests test_compute_symmetry:expr{1,2,3,4} in symmetry/compute.c
    2388
    2389Build system
    2390------------
    2391
    2392- the separate NLPI library has been integrated into the main SCIP library;
    2393 uses of NLPILIBFILE or NLPILIBSRC in Makefiles that use make/make.project
    2394 should be removed
    2395
    2396### Cmake
    2397
    2398- replace flag PARASCIP by THREADSAFE
    2399- option AMPL is now ON by default
    2400- add -D_XOPEN_SOURCE=600 cflag for compilation on systems other than windows
    2401- add compile options directly instead of modifying CMAKE_C_FLAGS and CMAKE_CXX_FLAGS
    2402
    2403### Makefile
    2404
    2405- prefix PKG_CONFIG_PATH with Ipopt's pkgconfig dir instead of postfixing
    2406- replace flag PARASCIP by THREADSAFE
    2407- flag AMPL is now true by default
    2408- libscip has been renamed to libscipbase and libscipsolver has been renamed to libscip
    2409 in order to have the same library names for makefiles and cmake. For downward
    2410 compatibility libscipsolver still exists (as a link).
    2411
    2412Fixed bugs
    2413----------
    2414
    2415- fixed handling of multi-aggregation in cons_symresack and cons_orbisack
    2416- SCIPgetLowerbound() now consistently returns infinity when status is infeasible
    2417- improved the likelihood that a solution that satisfies the nonlinear constraints in the transformed (presolved) problem is also feasible for the original problem
    2418- worked around a problem with derivatives of pow at 0 with non-integer exponents in CppAD
    2419- fixed that setting of feasiblity and optimiality tolerance for NLP relaxation was overwritten with defaults when solving NLP
    2420- fixed variance computation in t-value computation in hypothesis testing of reliability branching
    2421- fixed potential overflow in cuts.c:evaluateLiftingFunctionKnapsack()
    2422- do not transfer dual reductions to main SCIP in sepa_rapidlearning if strong dual reductions are forbidden
    2423- fixed a bug in cons_setppc.c:removeDoubleAndSingletonsAndPerformDualpresolve() which led to wrong variable aggregations
    2424- added missing redundancy check to coefficient tightening routine in cons_varbound that led to wrong variable locks
    2425- added a check of numerics to avoid wrong reductions in cons_linear.c:simplifyInequalities()
    2426- fixed a bug in cons_logicor.c regarding fixed variables that were not removed
    2427- presol_milp.c handles variable fixings, suggested by PaPILO, more carefully to cover all cases that can appear
    2428- fixed several reproducability bugs that led to different solving paths across multiple runs with one SCIP environment
    2429- fixed check of limits/absgap, which was incorrectly applied to the scaled objective of the transformed problem
    2430
    2431Miscellaneous
    2432-------------
    2433
    2434- in LP, use absolute instead of relative tolerances to check whether solutions from LP solver are primal feasible
    2435- when a restart occurs, SCIP now asserts (during EXITSOLVE) that all relaxation-only variables are unlocked and
    2436 only captured by the transformed problem.
    2437- Avoid redundant calls to LP solver when LP is already flushed and solved
    2438- In SCIPdebugMsg(), SCIPsetDebugMsg(), SCIPstatDebugMsg() strip directory from filename.
    2439- Recompute activity of rows when checking LP solutions instead of trusting the value given by the LP solver
    2440- The define NPARASCIP has been replaced by SCIP_THREADSAFE
    2441- Parameters are not reset to their default values before activating an emphasis setting; this now allows to combine
    2442 different emphasis settings.
    2443- 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.
    2444
    2445@page RN7 Release notes for SCIP 7
    2446
    2447@section RN703 SCIP 7.0.3
    2448*************************
    2449
    2450Interface changes
    2451-----------------
    2452
    2453### New API functions
    2454
    2455- added function SCIPwithDebugSol() to determine whether SCIP was compiled with WITH_DEBUG_SOLUTION
    2456
    2457- New function SCIPcreateConsBounddisjunctionRedundant() and SCIPcreateConsBasicBounddisjunctionRedundant() that allow
    2458 the input to contain redundant literals.
    2459
    2460### Changed API functions
    2461
    2462- added __attribute__((format(printf,,,))) to variadic SCIP message printing functions;
    2463 this enables warnings about mismatches between format string and variadic function arguments if using GCC.
    2464
    2465### Interfaces to external software
    2466
    2467- removed MATLAB interface from interfaces/matlab
    2468
    2469Build system
    2470------------
    2471
    2472- Compilation will now also work in a raw tarball of the scip git repository
    2473
    2474### Cmake
    2475
    2476- Make find_package more verbose and require packages to be found. Now enabled packages that are not found result in an error.
    2477
    2478Fixed bugs
    2479----------
    2480
    2481- Fixed numerical bug by creating and checking the empty solution when problem vanishes in presolving.
    2482- Fixed several bugs in reoptimization.
    2483- Fixed bug in cons_bounddisjunction in which a constraint leads to a cutoff.
    2484- Fixed bug in reoptimization by avoiding redundant literals for bound disjunctions.
    2485- Replace wrong usage of CMAKE_BINARY_DIR by PROJECT_BINARY_DIR in CMake system
    2486- Fixed lpi_glop to use absl flag instead of GFlags
    2487- Fixed invalid initialization of limits/softtime parameter in cons_components
    2488- Fixed MIN macro not defined in some cases.
    2489- Safeguard some API functions for querying solving statistics against segmentation faults after SCIPpresolve()
    2490- Fixed unfreed solution in concurrent solving
    2491- Make sure that logicor constraints are enforced/separated if genlogicor is true in cons_indicator.
    2492 Thus, do not change constraints/logicor/sepafreq anymore, but output warning.
    2493- Fixed assert that assumed infeasibility cannot occur in presol_boundshift.
    2494- Fixed sign bug during creation of conflict constraints with almost zero left-hand side.
    2495- Disabled call of conflict handler for conflict sets that contain relaxation-only variables.
    2496- Fixed bug in cons_symresack by initializing all constraint data in constrans
    2497- Avoid allowing the upgrade of linear constraints corresponding to indicators in propagation of nodes.
    2498- Fixed bug in computing lex. min/max faces in dynamic orbitope propagation.
    2499- Limit vbounds propagator to one sweep through all bounds per call in order to avoid an infinite loop.
    2500- Fixed mismatches between formatter strings and arguments in calls to SCIP message printing functions.
    2501
    2502Miscellaneous
    2503-------------
    2504
    2505- To avoid performance variablity during reoptimization, the active constraints are now stored in the same order as in the
    2506 original problem.
    2507- Added workaround for bug in MSVS 2019 when compiling CppAD source.
    2508- The original order of variables is now only restored after presolve if `randomization/permutevars` is set to FALSE.
    2509
    2510@section RN702 SCIP 7.0.2
    2511*************************
    2512
    2513Features
    2514--------
    2515
    2516- Extended check for valid variable and constraint names in PIP writer.
    2517- Indicator constraints now write the name of the linear constraint in CIP format. This avoids a complicated
    2518 name matching during parsing. The old format is still supported.
    2519- The objective scale and offset are now taken into account when reading/writing problems in lp/mps/fzn/pip format.
    2520 This often changes the behavior when writing transformed problems.
    2521
    2522Performance improvements
    2523------------------------
    2524
    2525Examples and applications
    2526-------------------------
    2527
    2528- Add c++ Sudoku example
    2529
    2530Interface changes
    2531-----------------
    2532
    2533### Deleted and changed API functions
    2534
    2535- deprecated SCIPsetParam(); use SCIPsetIntParam(), SCIPsetRealParam(), etc, instead
    2536
    2537### New API functions
    2538
    2539- new function SCIPcolGetVarProbindex() for accessing the probindex of a variable corresponding to a column
    2540- added new sorting functions SCIPsortPtrRealRealBoolBool()
    2541
    2542Fixed bugs
    2543----------
    2544
    2545- Fixed a sign bug occuring for some cases in the computation of the directed cutoff distance
    2546- Fixed overflow in inference information of cumulative constraint handler
    2547- Fixed problem with propfreq == 0 in cons_linear.c
    2548- Fixed aggregation heuristic in sepa_aggregation.c to not use local rows when that is requested nor modifiable rows
    2549- Fixed problem with incompatibility of symmetry handling in Benders decomposition
    2550- Fixed parsing of small number in CIP format of nonlinear constraint
    2551- Fixed problem in upgrading full orbitopes to partitioning orbitopes
    2552- Fixed treatment of negated variables in parsing orbitope constraints
    2553- Fixed potential indexing error in prop_vbounds.c
    2554- Fixed bug in writing fzn format
    2555- Revert to old parameter value when parameter change is rejected in PARAMCHGD callback
    2556- Fixed order of linker flags when building AMPL interface with cmake system.
    2557- Fixed bug with ofsymcomptiming == 0: now symmetry is actually computed
    2558- Improved separation for SOC constraint with multiaggregated variable on right-hand-side.
    2559- Fixed bug in presol_boundshift: do not shift non-active variables
    2560- Fixed bug in domain propagation for SOC constraints with negative coefficient for variable on right-hand-side.
    2561- Fixed bug with multi-aggregated integer variables in cons_xor.
    2562- Fixed bug with changed number of variables in storing relaxation solution in probing/diving.
    2563- Fixed issues with scip statistics
    2564- Fixed issue with multi-aggregated variables
    2565- Fixed issue in with buffer memory in cons_cumulative
    2566
    2567@section RN701 SCIP 7.0.1
    2568*************************
    2569
    2570Build system
    2571------------
    2572
    2573### Cmake
    2574
    2575- Fixed cmake module for Ipopt to support Ipopt 3.13
    2576- Added cmake variable BLISS_LIBRARY_DIR to pass a bliss library
    2577- Added warning to require minimal GCC version 4.8
    2578- Renamed FindCriterion cmake findmodule to FindCRITERION
    2579
    2580### Makefile
    2581
    2582- Updated make/make.project for macOS
    2583- Add SANITZERFLAGS (only OPT=dbg) to LDFLAGS also if SHARED=true (and rename SANITZERFLAGS to SANITIZERFLAGS)
    2584- Fixed GCC version check in make/make.linux.gnu.dbg
    2585
    2586Fixed bugs
    2587----------
    2588
    2589- Fixed handling of constant term in quadratic objective of pip-reader
    2590- Fixed incorrect value string for parameter estimation/completiontype
    2591- Fixed initialization of first LP which led to wrong output about LPs not resolved correctly
    2592- Fixed bug in SCIPcutpoolClear() function not clearing internal datastructures properly
    2593- Fixed inability to set a value in a solution if it was within epsilon to the current value
    2594- Fixed problems for linking optimized code with debug library of SCIP (and vice versa) by moving debug-only members
    2595 to end of SCIP structs
    2596
    2597Miscellaneous
    2598-------------
    2599
    2600- Variables that are marked as relaxation-only are no longer checked against debug solutions if
    2601 they are captured by the transformed problem only.
    2602
    2603@section RN700 SCIP 7.0.0
    2604*************************
    2605
    2606Features
    2607--------
    2608
    2609- Using the parameter "propagating/symmetry/recomputerestart" one can now decide to recompute symmetries after a
    2610 restart or not. Previously one could just turn off symmetry computation after a restart. If orbital fixing
    2611 has found a reduction before the restart occured, symmetries have to be updated to ensure correctness.
    2612 To this end, the user can decide via "propagating/symmetry/disableofrestart" whether orbital fixing is disabled or
    2613 whether symmetries are recomputed.
    2614
    2615- extended relaxators statistics in solve statistics about information on number of cutoffs, improved bounds, etc.
    2616
    2617- extends SMPS file reader for the stochastic information, the sto files, to read a lower bound for the discrete
    2618 scenarios. The lower bound is used when creating the auxiliary variables for Benders' decomposition.
    2619
    2620- extended Benders framework to solve NLPs and generate optimality and feasibility cuts from their solution
    2621 when the subproblem is convex nonlinear.
    2622
    2623- extended Benders framework to create copies of Benders decompositions that can be used in a multithreading environment
    2624
    2625- additional functionality has been added to enable the transfer of Benders' decomposition cuts between different SCIP
    2626 instances, e.g., when used in UG
    2627
    2628- LP rows (SCIP_ROW) can now store pointer to a constraint from which the row originates
    2629
    2630- Trust region, a new LNS heuristic, has been added to SCIP as both a standalone primal heuristic heur_trustregion.c
    2631 and as a neighborhood inside of Adaptive Large Neighborhood Search (heur_alns.c). This heuristic is designed to improve the
    2632 heuristic performance of the Benders' decomposition algorithm. It builds upon the successful trust region approaches
    2633 applied to Benders' decomposition.
    2634
    2635- Modularity of symmetry handling has been increased. It is now possible to use orbitopes (i.e., polyhedral symmetry
    2636 handling techniques) and orbital fixing on the same instance.
    2637
    2638- cut strengthening enabled within the Benders' decomposition framework. This uses a mix of the Improved Magnanti-Wong
    2639 method and Kelly's method. The cut strengthening is enabled by setting the paramemter
    2640 "benders/<bendersname>/cutstrengthenenabled" to TRUE. The parameters "cutstrengthenmult", "noimprovelimit" and
    2641 "corepointperturb" control the behavior of the cut strengthening method. Additionally, the parameter
    2642 "cutstrengthenintpoint" allows the user to specify the solution that is used to initialize the core point. The options
    2643 are the first LP solution, the first integer feasible solution, a relative interior point, a solution vector of all
    2644 ones and a solution vector of all zeros. Also, the core point can be reinitialized after each update to the incumbent
    2645 solution.
    2646
    2647- added option to adjust weights of different scores in relpscost (hybrid) branching rule based on degeneracy information
    2648 and skip strong branching for very high degeneracy rates
    2649
    2650- added new SCIP_DECOMP* object to store user decompositions. The user can specify one or several decompositions by assigning variable
    2651 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).
    2652 This format specifies constraint labels, variable labels are inferred from that. The decomposition is transformed after presolving.
    2653- statistics regarding the number of blocks, the largest and smallest blocks, the border, and the constraint graph are printed for the original decomposition,
    2654 and for each decomposition after presolving.
    2655- the decomposition can be used as initial decomposition for the Benders functionality of SCIP.
    2656- new subsection "How to provide a problem decomposition" in the SCIP documentation
    2657
    2658- GINS heuristic can make use of a user-provided decomposition labels in two ways:
    2659 1. by selecting a block of variables that maximizes the potential, and randomly selecting a start variable for the neighborhood and/or
    2660 2. by selecting an interval of consecutive blocks as neighborhood, until fixing rate is reached. In this case, no variable is randomly selected.
    2661
    2662- extend potential parameter of GINS to allow computation based on local LP solution, as well
    2663
    2664- new primal heuristic Adaptive Diving, which registers all publicly available dive sets from other diving heuristics.
    2665 At each call, it selects one of the available dive sets based on the user's score type choice (heuristics/adaptivediving/scoretype).
    2666 During the solution process, the heuristics learns online which divesets reach the best score, and executes them more frequently.
    2667 The statistic output for Diving heuristics has been extended to incorporate the statistics of each dive set within Adaptive diving.
    2668
    2669- Added new penalty alternating direction method (PADM) primal heuristic that splits the problem into several sub-SCIPs
    2670 according to a user-provided decomposition. The sub-SCIPs are solved on an alternating basis until a feasible solution of
    2671 the original problem is found.
    2672
    2673- Symmetry handling constraints (cons_orbisack, cons_orbitope, cons_symresack) now have an additional parameter to encode
    2674 whether they are model constraints, i.e., define the problem, or whether they are only present to handle symmetries.
    2675
    2676- The symmetry code has been completely restructured. The presolvers presol_symbreak and presol_symmetry as well as the propagator
    2677 prop_orbitalfixing have been merged into the single propagator prop_symmetry to avoid storing the same information
    2678 multiple times. This propagator is now responsible for adding symmetry handling constraints as well as activating orbital
    2679 fixing. Moreover, the new file symmetry.c contains general functions for symmetry computations like orbit computations.
    2680
    2681- Variables can now be marked as "relaxation-only". This flag should be used to introduce new variables that are required
    2682 to define a relaxation, but that are not part of any checked constraints. Essentially, these variables should only be used
    2683 in the current SCIP solve and disregarded after a restart or in SCIP copies. Hence, these variables are not copied by SCIPcopy and
    2684 SCIPgetVarCopy, they are currently not used in conflict constraints, and cuts involving them are not upgraded to linear constraints.
    2685 Relaxation-only variables cannot appear in the objective function.
    2686
    2687- The OSiL reader now supports nonlinear expressions of type "signpower".
    2688
    2689- Expressions of form abs(x)^p * x in a nonlinear constraint are now sometimes recognized and handled by abspower constraints.
    2690
    2691- If polyhedral symmetry handling methods are used (cons_orbisack, cons_orbitope, cons_symresack), it is now possible to
    2692 recompute symmetries if a restart occured.
    2693
    2694- upgrade some more quadratic constraints to second-order cone constraints, that is,
    2695 handle linear binary variables as if squared in simple upgrade and
    2696 do not require bounds for variables that have a zero entry in the computed eigenvectors in the non-simple upgrade
    2697
    2698- new variable event when changing the variable type
    2699
    2700- It is no longer necessary to provide a SCIP pointer for the subproblem in SCIPaddBendersSubproblem if custom solving
    2701 methods are defined. A NULL pointer can be supplied to SCIPaddBendersSubproblem. In this case, no internal Benders'
    2702 cut generation methods can be used.
    2703
    2704- Using the parameter "constraints/symresack/checkmonotonicity" one can now decide to upgrade to packing/partitioning
    2705 symresacks even if the underlying permutation is not monotone.
    2706
    2707- New branching rule `vanillafullstrong`, mostly for scientific purpose, with the following features:
    2708 1) no cutoff or domain reduction: only branching;
    2709 2) idempotent (optional): leave SCIP, as much as possible, in the same state before / after the strong branching calls
    2710 - basically, do not update any statistic;
    2711 3) donotbranch (optional): do no perform branching. So that the brancher can be called as an oracle only
    2712 (on which variable would you branch ? But do not branch please);
    2713 4) scoreall (optional): keep scoring variables, even if infeasibility is detected;
    2714 5) collectscores (optional): store the candidate scores from the last call, which can then be retrieved by calling SCIPgetVanillafullstrongData();
    2715 6) integralcands (optional): consider integral candidates for branching,
    2716 i.e., get candidates from SCIPgetPseudoBranchCands() instead of SCIPgetLPBranchCands().
    2717
    2718- If a reference value (misc/referencevalue) is given, the primal-reference and reference-dual integrals are calculated automatically and printed within the SCIP statistics.
    2719
    2720- Locally valid cuts / rows are now considered for dual proof analysis when `conflict/uselocalrows` is set to TRUE.
    2721
    2722- 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.
    2723
    2724- To save memory, it is now possible to remove all variables from the internal symmetry data structures that are
    2725 not affected by any symmetry.
    2726
    2727- Allow to filter first variables from orbits and transfer pseudo cost information to variables in orbit
    2728
    2729- Add integration of external MILP presolve library as a SCIP presolver plugin that runs on MILP problems
    2730
    2731- Parallelisation can be used when applying Benders' decomposition. There are two different forms of parallelisation
    2732 available. The first is applying Benders' decomposition within a parallel branch-and-bound. This is achieved through
    2733 the integration with the UG framework. The second is the use of shared memory parallelisation for solving the Benders'
    2734 decomposition subproblems. A priority queue has been added to help with load balancing.
    2735
    2736- The Benders' decomposition framework can handle MINLPs. If a convex relaxation of the MINLP exists, then this is
    2737 solved to generate optimality and feasibility cuts. The extensions to the framework are:
    2738 - New generic solving methods to solve convex NLP subproblems.
    2739 - Modification to benderscut_opt and benderscut_feas to enable the generation of cuts from convex NLPs.
    2740 - Addition of benderscut_feasalt to generate feasibility cuts from an alternative subproblem that minimises the
    2741 violation of infeasible problems.
    2742 - Better handling of subproblem solution results
    2743
    2744- Adds a feasibility phase to the Benders' decomposition subproblem solving methods. The feasibility phase adds slack
    2745 variables to each of the constraints to ensure feasibility of the subproblem. A large coefficient is given to these
    2746 slack variables in the objective function to penalise constraint violations. The coefficients are progressively
    2747 increased until all slack variables take the value 0.0.
    2748
    2749- Improved convexity check for Benders' decomposition subproblems. The constraints of the subproblem are now checked for
    2750 convexity in the initialisation of the Benders' decomposition algorithm. This enables the solving of convex NLPs as
    2751 Benders' decomposition subproblems.
    2752
    2753- Benders' decomposition can be applied using decomposition supplied in the DEC format. To apply Benders' decomposition
    2754 the parameters decomposition/benderslabels and decomposition/applybenders must be set to TRUE.
    2755
    2756- new event handler event_estim.c/h that approximates search tree completion and estimates tree size
    2757 to trigger restarts; many approximations of search tree completion and estimation, including WBE, SSG, and tree profile method
    2758- new display column that reports approx. search tree completion during the search, and an overview in the statistics table
    2759- added resources (script, tutorial, test data) to adapt tree size estimation to user instances.
    2760
    2761- Orbital Fixing uses a list of variables that have been fixed globally since the computation of symmetries to filter
    2762 symmetries. Previously, some plugins were disabled, which is not necessary anymore.
    2763
    2764- A new presolver "dualsparsify" was added. It tries to combine columns (i.e. variables) to cancel nonzero coefficients in the constraint matrix.
    2765
    2766- The presolver "tworowbnd" was implemented with better performance.
    2767
    2768- 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.
    2769
    2770- allow disabling of pricers during solving process
    2771
    2772- added emphasis setting for numerically challenging instances
    2773
    2774Performance improvements
    2775------------------------
    2776
    2777- Extended cut presolving by removing variables that been fixed at their bounds
    2778
    2779- Improved branching point selection when branching on externals branching candidates. Instead of using exactly the
    2780 LP solution, a point closer to the middle of the variables domain is chosen.
    2781
    2782- Matrix presolvers that do not work on incomplete matrices now skip matrix creation if unsupported constraint types are detected.
    2783
    2784- consLockBenders callback implemented to add down locks on the Benders' decomposition auxiliary variables and
    2785 up and down locks per subproblem for all master problem variables. This allows the use of presolving and propagation
    2786 with Benders' decomposition.
    2787
    2788- improved performance of orbital fixing in several ways:
    2789 store permutations in transposed form to improve cache efficency;
    2790 reverse order to speed up filtering of permutations;
    2791 handle variables globally fixed to 1 in list;
    2792 use event handler to catch global fixings;
    2793 speed up orbit computations;
    2794 change handling of restarts;
    2795 use only permutations that can contribute to a variable's orbit;
    2796
    2797- allow rapid learning at local nodes
    2798
    2799- allow to recompute cut without using fractional values for sepa_cgmip
    2800
    2801- restrict the number of the clique table nonzeros relative to the number of problem nonzeros, which could be a performance bottleneck.
    2802
    2803- variable fixings of LP face heuristic are now computed earlier; subproblem creation is skipped if not enough variables are fixed.
    2804
    2805- Improved domcol presolver to not require a complete representation of all constraints in the matrix
    2806
    2807- performance improvement of adaptive large neighborhood search heuristic on merely continuous problems. The heuristic
    2808 stops if presolving in the sub-SCIP fixes less than 50 % of the current target fixing rate over all variables
    2809 (including continuous).
    2810
    2811- reduce memory usage in symmetry detection by a staggered allocation with decreasing overhead for larger instances
    2812
    2813- improved full orbitope propagation using a static implementation or a dynamic reordering of orbitope rows by a global rank function
    2814
    2815- improved detection of packing/partitioning orbitopes
    2816
    2817- enable an in-tree restart if after a reasonable initialization, the estimated size of the remaining tree is large.
    2818
    2819
    2820Examples and applications
    2821-------------------------
    2822
    2823- added functions to set and get hmin and hmax for optcumulative constraints
    2824
    2825Interface changes
    2826-----------------
    2827
    2828### New and changed callbacks
    2829
    2830- new optional callback `SCIP_DECL_DIVESETAVAILABLE` to check preconditions for this dive set, e.g., if an incumbent solution is available,
    2831 which is passed as new argument to SCIPcreateDiveset(). SCIPcreateDiveset() has another new parameter "ispublic".
    2832
    2833- new callback `SCIP_DECL_CONSHDLRCOPY` and `SCIP_DECL_CONSCOPY` in cons_orbisack and cons_symresack
    2834
    2835- new `idempotent` argument to SCIPgetVarStrongbranchInt() and SCIPgetVarStrongbranchFrac(),
    2836 so that statistics are not updated during the call. Likewise, new `updatecol` and `updatestat` arguments to SCIPcolGetStrongbranch().
    2837
    2838- callback `SCIP_DECL_CONSHDLRENFOLP` can now also return SCIP_SOLVELP as *result, which indicates to the SCIP core that the LP relaxation
    2839 should be solved again because the primal feasibility tolerance of the LP has been tightened (using SCIPsetLPFeastol())
    2840
    2841- 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.
    2842
    2843### Deleted and changed API functions
    2844
    2845- LPI:
    2846 + now for all lp interfaces consistent requirements on SCIP_LPPAR:
    2847 LPITLIM and BARRIERCONVTOL positive or zero; FEASTOL, DUALFEASTOL, LPTILIM strictly positive
    2848 + now projecting SCIP_LPPAR values on feasible values for each lp interface
    2849 + add interface to Glop
    2850 + fixed mapping between scaling parameter values in Gurobi LPI lpi_grb
    2851- Symmetry:
    2852 + removed function SCIPseparateCoversOrbisack() in cons_orbisack.h since the orbitope constraint
    2853 handler has its own implementation of this routine with advanced features now
    2854 + renamed SCIPgetGeneratorsSymmetry() to SCIPgetSymmetry() and removed two arguments
    2855 + extended function SCIPgetSymmetry(): It is possible to access both the original and
    2856 transposed permutations matrix as well as the (independent symmetry) components of a permutation group now.
    2857 + arguments of functions SCIPcreateConsOrbisack(), SCIPcreateConsBasicOrbisack(), SCIPcreateConsOrbitope(),
    2858 SCIPcreateConsBasicOrbitope(), SCIPcreateConsSymresack(), SCIPcreateConsBasicSymresack(), and SCIPcreateSymbreakCons() extended
    2859 by "ismodelcons" to encode whether the constraints are model constraints or not
    2860 + the function SCIPgetSymmetry() no longer accepts the parameter recompute, but has parameter permvarmap as new input
    2861 + removed SCIPgetPermvarsObjSymmetry(), SCIPsetSymmetryComponentblocked(), SCIPgetSymmetryComponentblocked(),
    2862 SCIPgetSyminfoGloballyFixedVars(), SCIPcomputeGroupOrbitsSymbreak, SCIPincludePresolSymmetry(),SCIPincludePresolSymbreak(),
    2863 and SCIPincludePropOrbitalfixing()
    2864 + add function SCIPcomputeOrbitsComponentsSym() to compute orbits without filtering permutations and indices of orbits for each variable
    2865- SCIPallowObjProp() and SCIPallowDualReds() are deprecated and replaced by SCIPallowWeakDualReds() and SCIPallowStrongDualReds(), respectively
    2866- Benders' decomposition
    2867 + changed SCIPstoreBenderscutCut() in scip_benders.c to SCIPstoreBendersCut(). Where this function used to take a
    2868 SCIP_BENDERSCUT pointer, it now accepts a SCIP_BENDERS pointer.
    2869 + the functions SCIPsolveBendersSubproblem() no longer accepts the parameter type. The type is not a necessary
    2870 argument for the subproblem solving method.
    2871 + arguments of functions SCIPbendersSolveSubproblemLP(), SCIPbendersSolveSubproblemCIP(), and SCIPbendersOnlyCheckConvexRelax() changed
    2872 - removed SCIPbenderscutGetNAddedCuts() and SCIPbenderscutGetAddedCutData()
    2873
    2874
    2875### New API functions
    2876
    2877- new argument "onlyifcomplete" in SCIPmatrixCreate() to skip matrix creation right after detecting unsupported constraint types
    2878 and new arguments to count statistics when doing a clean-up of inactive variables in the constraints before building the matrix
    2879
    2880- new argument "threadsafe" in SCIPcopy(), SCIPcopyConsCompression(), SCIPcopyOrig(), SCIPcopyOrigConsCompression and
    2881 SCIPcopyBenders(). This argument must only be set to TRUE if the source and target SCIP instances are to be solved in
    2882 parallel. Setting this argument to TRUE has a performance cost.
    2883
    2884- new argument "append" in SCIPsetModifiedDefaultSettingsIpopt()
    2885- functions SCIPclearRelaxSolVals(), SCIPsetRelaxSolVal(), SCIPsetRelaxSolVals(), SCIPsetRelaxSolValsSol(), and SCIPmarkRelaxSolValid()
    2886 receive an additional argument "relax" to store the relaxation handler as creator of the relaxation solution.
    2887
    2888- LP:
    2889 - SCIProwGetOriginCons() now returns a SCIP_CONS* instead of a SCIP_CONSHDLR*, use SCIProwGetOriginConshdlr() for the previous behavior
    2890 - SCIPcreateRowCons() and SCIPcreateEmptyRowCons() now expect a SCIP_CONS* instead of a SCIP_CONSHDLR*,
    2891 use SCIPcreateRowConshdlr() and SCIPcreateEmptyRowConshdlr(), respectively, for the previous behavior
    2892 - deprecated SCIPlpfeastol() and SCIPchgLpfeastol(), use SCIPgetLPFeastol() and SCIPsetLPFeastol()
    2893
    2894- new parameter "divecontext" for every function that queries statistics for a diveset. The context can be used to distinguish between the dive set
    2895 as single (standalone) heuristic or within Adaptive Diving.
    2896- new parameters "divecontext" and "iterlim" to SCIPperformGenericDivingAlgorithm() to control in which context (single,adaptive) statistics are updated.
    2897
    2898- SCIPcopyVars, SCIPcopy, SCIPcopyConsCompression, and SCIPgetVarCopy do not copy variables that are marked as relaxation-only,
    2899 thus it cannot be assumed anymore that each active variable from the master SCIP also has a counterpart in the copy.
    2900 SCIPcopy, SCIPcopyConsCompression, and SCIPcopyConss can now return *valid=TRUE if some non-checked and non-enforced constraints were not copied, e.g.,
    2901 because they involved relaxation-only variables. Thus, a copy is already regarded as valid if all checked or enforced constraints were copied successfully.
    2902
    2903- linking constraint handler:
    2904 - changed type of vals argument from int* to SCIP_Real* in SCIPcreateConsLinking() and SCIPcreateConsBasicLinking()
    2905 - SCIPgetIntvarLinking() has been renamed to SCIPgetLinkvarLinking().
    2906 - changed return value of SCIPgetValsLinking() from int* to SCIP_Real*.
    2907 - new function SCIPgetBinvarsDataLinking().
    2908
    2909- SCIPbendersCheckSubproblemOptimality() now returns a boolean indicating whether the subproblem is optimal or not.
    2910 Previously this result was returned through a parameter. The change was required to facilitate the integration with
    2911 the UG framework.
    2912
    2913- deleted SCIPcombineTwoInt(), SCIPcombineThreeInt(), SCIPcombineFourInt(); use the appropriate SCIPhashTwo(), ..., SCIPhashSeven() function instead
    2914
    2915- SCIPsetupBendersSubproblem takes a parameter of the enforcement type.
    2916
    2917- SCIPcreateNlpiProb takes a hashmap to store the map between the nlrows and the index in the nlrow array.
    2918
    2919### New API functions
    2920
    2921- SCIPallowWeakDualReds() and SCIPallowStrongDualReds() replace the deprecated SCIPallowObjProp() and SCIPallowDualReds(), respectively
    2922- functions have been added to facilitate the transfer of Benders' decomposition cuts between solvers in UG. These include
    2923 SCIPapplyBendersStoredCuts(), SCIPbendersGetNStoredCuts(), SCIPbendersGetStoredCutData() and
    2924 SCIPbendersGetStoredCutOrigData().
    2925- added SCIPisConvexAbspower()
    2926- new functions SCIPsolGetType(), SCIPsolGetRelax(), SCIPsolSetRelax(), SCIPsolSetLPRelaxation(), SCIPsolSetStrongbranch(),
    2927 SCIPsolSetPseudo to set or query the new type attribute of a primal solution. The type attribute gives information
    2928 about the origin of the solution, ie, whether it was created by a relaxation handler,
    2929 by the LP relaxation, by strong branching, by the current pseudo solution, or by a primal heuristic.
    2930 The meaning of the argument 'heur' in all creation methods for primal solutions such as SCIPcreateSol() stays unchanged.
    2931- added SCIProwGetOriginConshdlr(), SCIPcreateRowConshdlr(), SCIPcreateEmptyRowConshdlr()
    2932- new API functions SCIPsetCommonSubscipParams(), SCIPtranslateSubSol(), and SCIPtranslateSubSols() shared by several Large Neighborhood Search heuristics.
    2933- new API function SCIPgetLPDualDegeneracy() to get two measures for the dual degeneracy of the current LP
    2934- new API functions SCIPdivesetIsAvailable() to check preconditions of a dive set and SCIPdivesetIsPublic() to check if the dive set can be used
    2935 by other primal heuristics.
    2936- new API functions SCIPcomputeOrbitsSym(), SCIPcomputeOrbitsFilterSym(), SCIPgetPropertiesPerm(), SCIPdetermineBinvarAffectedSym(),
    2937 SCIPdetermineNVarsAffectedSym(), SCIPcomputeComponentsSym(), and SCIPextendSubOrbitope(), SCIPgenerateOrbitopeVarsMatrix() for symmetry computations
    2938- new API functions SCIPvarIsRelaxationOnly() and SCIPvarMarkRelaxationOnly() to query and set, resp., whether a variable is marked as relaxation-only
    2939- new API functions SCIPconshdlrGetNUpdateConss() and SCIPconshdlrGetUpdateConss(), for expert users only
    2940- new API function SCIPgetNConflictDualproofsApplied()
    2941- new API functions SCIPeventGetOldtype() and SCIPeventGetNewtype() for the new event when changing the variable type
    2942- new API function SCIPisConvexConsQuadratic() to check whether a quadratic constraint is convex when a given set of variables would be fixed
    2943- new API functions SCIPgetLPFeastol(), SCIPsetLPFeastol(), and SCIPresetLPFeastol() to get, set, and reset (to the default), respectively, the primal
    2944 feasibility tolerance for the LP relaxation
    2945- new API functions SCIPcleanupConss{Linear,Varbound,Setppc,Logicor,Knapsack}() to clean up inactive variables from those types of linear constraints
    2946- new API function SCIPsetBendersSubproblemComp() used to add a custom comparison method for ordering the Benders'
    2947 decomposition subproblem solves. The comparison method is used to help with load balancing.
    2948- new API function SCIPgetRowObjParallelism to get the objective parallelism of a row
    2949- new API function SCIPcolGetAge to get the age of a column
    2950- added SCIPhashThree(), SCIPhashFive(), SCIPhashSix(), and SCIPhashSeven() that complement SCIPhashTwo(), SCIPhashFour() to combine 32bit integers to
    2951 a 32bit hash value
    2952- new API function SCIPgenerateAndApplyBendersOptCut is used to generate a Benders' optimality cut using the dual
    2953 solutions. This function can be supplied vectors for the primal and dual solution for generating an optimality cut.
    2954 This avoids the need for a SCIP instance to solve the Benders' decomposition subproblem and generating cuts.
    2955- new API function SCIPconsAddCoef used for adding a coefficient to a linear-type constraint.
    2956- new API functions SCIPconsNonlinearGetRhs, SCIPconsNonlinearGetLhs and SCIPconsNonlinearAddLinearCoef for getting the
    2957 RHS and LHS from a nonlinear-type constraint and adding a linear coefficient to the constraint.
    2958- new API function SCIPbendersSolSlackVarsActive for checking whether any slack variables from the feasibility phase are
    2959 active in the subproblem solution.
    2960- new API functions SCIPbendersSetSubproblemType and SCIPbendersGetSubproblemType sets and gets the subproblem type.
    2961 This is either:
    2962 - Convex constraints with continuous variables
    2963 - Convex constraints with discrete variables
    2964 - Non-convex constraints with continuous variables
    2965 - Non-convex constraints with discrete variables
    2966- new API functions SCIPbendersSetSubproblemIsNonlinear() and SCIPbendersSubproblemIsNonlinear() for setting and
    2967 identifying whether the Benders' decomposition subproblems contain nonlinear constraints. Similarly, the functions
    2968 SCIPbendersSetMasterIsNonlinear() and SCIPbendersMasterIsNonlinear() sets and identifies whether the Benders'
    2969 decomposition master problem contains nonlinear constraints.
    2970- new API function SCIPapplyBendersDecomposition for applying Benders' decomposition given a decomposition in the DEC
    2971 format
    2972- new API function SCIPwasNodeLastBranchParent to query if a node has been the parent of the most recent branching in the tree
    2973- new API functions SCIPtreemodelInit(), SCIPtreemodelFree(), SCIPtreemodelIsEnabled(), SCIPtreemodelSelectCandidate() related to the new
    2974 treemodel way of comparing branching candidates. These functions are only currently used for reliability pscost branching, but they can be used
    2975 in other parts of the code.
    2976- New function SCIPcalcChildEstimateIncrease() to compute the increase in the child estimation
    2977- new API functions SCIPisOrbitalfixingEnabled() and SCIPgetSymmetryNGenerators() to check whether orbital fixing is
    2978 enabled and to get the number of generators of the current symmetry group, respectively
    2979- new API function SCIPdelNlRow() to remove a row from the NLP
    2980
    2981### Event system
    2982
    2983- new event type SCIP_EVENTTYPE_NODEDELETE to react on nodes that are about to be deleted from the tree
    2984
    2985### Changed parameters
    2986
    2987- renamed parameter "propagating/orbitalfixing/enableafterrestart" to ".../symmetry/recomputerestart"
    2988- Parameter "misc/allowdualreds" is now called "misc/allowstrongdualreds"
    2989- Parameter "misc/allowobjprop" is now called "misc/allowweakdualreds"
    2990- changed default values of propagation (new value: 1, old value: 5) and separation frequency (new value: -1, old value: 5) in cons_orbitope.c
    2991- all primal heuristics that use sub-SCIPs are disabled within the heuristics fast emphasis setting
    2992- deleted parameter heuristics/localbranching/useuct, use heuristics/useuctsubscip instead
    2993- changed default value of "presolving/symbreak/detectorbitopes" (new value: TRUE, old value: FALSE)
    2994- extended range of "misc/usesymmetry" (new range: [0,3], old range: [0,2])
    2995- deleted parameter "constraints/orbisack/checkalwaysfeas"
    2996- deleted parameter "constraints/orbitope/checkalwaysfeas"
    2997- deleted parameter "constraints/symresack/checkalwaysfeas"
    2998- deleted parameter "presolving/symmetry/maxgenerators"
    2999- deleted parameter "presolving/symmetry/checksymmetries"
    3000- deleted parameter "presolving/symmetry/displaynorbitvars"
    3001- deleted parameter "presolving/symbreak/conssaddlp"
    3002- deleted parameter "presolving/symbreak/addsymresacks"
    3003- deleted parameter "presolving/symbreak/computeorbits"
    3004- deleted parameter "presolving/symbreak/detectorbitopes"
    3005- deleted parameter "presolving/symbreak/addconsstiming"
    3006- deleted parameter "propagating/orbitalfixing/symcomptiming"
    3007- deleted parameter "propagating/orbitalfixing/performpresolving"
    3008- deleted parameter "propagating/orbitalfixing/recomputerestart"
    3009- changed default value of "heuristics/coefdiving/freq" (old: 10, new: -1)
    3010- changed default value of "heuristics/conflictdiving/freq" (old: -1, new: 10)
    3011- changed default value of "heuristics/conflictdiving/lockweight" (old: 1.0, new: 0.75)
    3012- replaced parameter "numerics/lpfeastol" by "numerics/lpfeastolfactor" to specify which factor should be applied to the SCIP feasibility
    3013 tolerance to initialize the primal feasibility tolerance of the LP solver
    3014- enabling aggressive presolving now activates all available presolving plugins,
    3015 and decreases the presolving/restartfac parameter correctly with respect to default.
    3016- changed default value of heuristics/rins/nodesquot to 0.3 (was 0.1), to compensate
    3017 the removal of a hard coded factor of 3.0 in the code without affecting the default behavior
    3018 of the RINS heuristic.
    3019- changed default value of "constraints/quadratic/empathy4and" (old: 0, new: 2)
    3020- changed default value of "propagating/redcost/useimplics" (old: TRUE, new: FALSE)
    3021
    3022### New parameters
    3023
    3024- the possibility to define the Benders' decomposition auxiliary variables as implicit integer is provided. This
    3025 behavior is controlled with an additional parameter in the Benders' decomposition framework.
    3026- added parameter benders/<bendersname>/cutcheck to enable the generation of Benders' decomposition cuts during solution
    3027 checking.
    3028- constraints/orbitope/usedynamicprop: the possibility to propagate orbitope constraints by reordering the rows based on the
    3029 branching strategy is provided (only possible for non-model constraints)
    3030
    3031- new parameters heuristics/shiftandpropagate/minfixingratelp and heuristics/locks/minfixingratelp to stop the
    3032 heuristics after propagating integer fixings if no sufficient fixing of the all variables (including continuous)
    3033 could be achieved. These parameters help to avoid solving LP's that are comparable in hardness to the main root LP.
    3034
    3035- Added parameters branching/midpull and branching/midpullreldomtrig to control by how much to move
    3036 the branching point for an external branching candidate closer to the middle of the candidates domain. The
    3037 default of 0.75 and 0.5, respectively, uses a point that is 75*alpha% closer to the middle of the domain, where
    3038 alpha is the relative width of the candidates domain (width of local domain divided by width of global domain),
    3039 if the latter is below 0.5, and alpha=1.0 otherwise. That is, with the default settings, a branching point is
    3040 chosen closer to the middle of the candidates domain if the variables local domain is still similar to its
    3041 global domain, but is chosen closer to the LP solution if the local domain is much smaller than the global
    3042 domain.
    3043
    3044- Added parameter lp/minmarkowitz to set the Markowitz stability threshold (range 0.0001 to 0.9999).
    3045 High values sacrifice performance for stability.
    3046
    3047- Added parameters benders/<bendersname>/lnsmaxcalls and benders/<bendersname>/lnsmaxcallsroot to the Benders'
    3048 decomposition core. These parameters limit the number of Benders' decomposition subproblem checks, for the full
    3049 branch-and-bound tree and root node respective, when solving the auxiliary problem of LNS hueristics. These
    3050 parameters only have effect if the lnscheck parameter is set to TRUE.
    3051
    3052- Added parameter cons/linear/maxmultaggrquot to limit the maximum coefficient dynamism of an equation on which
    3053 multiaggregation is performed. This replaces a compiler define of the same name.
    3054 Default value is 1000, smaller values make multiaggregations numerically more stable.
    3055- new global parameter heuristics/useuctsubscip that affects all LNS heuristics using common sub-SCIP parameters
    3056
    3057- new parameter branching/relpscost/degeneracyaware to switch degeneracy-aware hybrid branching
    3058
    3059- new parameter separation/rapidlearning/checkexec to check whether rapid learning is allowed to run locally
    3060- new parameters separation/rapidlearning/check{degeneracy,dualbound,leaves,nsols,obj} to enable checking the respective feature for local rapid learning
    3061- new parameter separation/rapidlearning/maxcalls to limit the number of rapid learning executions
    3062- new parameter separation/rapidlearning/nwaitingnodes to set the number of waiting nodes before the dual bound is checked
    3063- new parameter separation/rapidlearning/mindegeneracy to set the minimal threshold of degenerate basic-variables
    3064- new parameters separation/rapidlearning/minvarconsratio to set the minimal ratio of unfixed variables in relation to basis size
    3065
    3066- new parameters to control the Benders' decomposition two-phase method.
    3067 - constraints/benderslp/depthfreq: after the maxdepth is reached, then the two-phase method will only be called at
    3068 nodes at a depth divisible by depthfreq.
    3069 - constraints/benderslp/stalllimit: after the maxdepth is reached, if there has been no improvement in the dual bound
    3070 for stalllimit number of nodes, then the two-phase method is executed for the next fractional LP solution that is
    3071 encountered.
    3072 - constraints/benderslp/iterlimit: after the root node, only iterlimit fractional LP solutions are used at each node
    3073 to generate Benders' decomposition cuts.
    3074
    3075- new parameters for symmetry handling
    3076 - new parameter "propagating/symmetry/maxgenerators"
    3077 - new parameter "propagating/symmetry/checksymmetries"
    3078 - new parameter "propagating/symmetry/displaynorbitvars"
    3079 - new parameter "propagating/symmetry/conssaddlp"
    3080 - new parameter "propagating/symmetry/addsymresacks"
    3081 - new parameter "propagating/symmetry/detectorbitopes"
    3082 - new parameter "propagating/symmetry/addconsstiming"
    3083 - new parameter "propagating/symmetry/ofsymcomptiming"
    3084 - new parameter "propagating/symmetry/performpresolving"
    3085 - new parameter "propagating/symmetry/recomputerestart"
    3086 - new parameter "constraints/symresack/checkmonotonicity"
    3087 - new parameter "propagating/symmetry/compresssymmetries"
    3088 - new parameter "propagating/symmetry/compressthreshold"
    3089 - new parameter "propagating/symmetry/disableofrestart"
    3090 - new parameter "propagating/symmetry/symfixnonbinaryvars"
    3091
    3092- new parameter for enabling shared memory parallelisation for solving Benders' decomposition subproblems. The parameter
    3093 benders/<bendersname>/numthreads sets the number of threads used for parallel subproblem solving.
    3094
    3095- new parameters to control enhancements for solving MINLPs by Benders' decomposition
    3096 - benders/<bendersname>/execfeasphase: enables the feasibility phase for solving the Benders' decomposition
    3097 subproblems
    3098 - benders/<bendersname>/slackvarcoef: the initial coefficient of the slack variable for the feasibility phase
    3099 - benders/<bendersname>/checkconsconvexity: should the constraints be checked for convexity. This can be set to FALSE
    3100 if you are certain that the NLP subproblem is convex.
    3101
    3102- new parameter presolving/clqtablefac (default value 2.0) as limit on number of entries in clique table relative to number of problem nonzeros
    3103
    3104- new parameter conflict/uselocalrows (default: TRUE) to incorporate locally valid cuts / rows for dual proof analysis
    3105
    3106- new return code SCIP_NOTIMPLEMENTED for functions, e.g., in the LPI that have not been implemented (yet)
    3107
    3108- new parameter separating/cgmip/genprimalsols that allows to generate initial primal solutions from Gomory cuts
    3109
    3110- new parameter branching/relpscost/filtercandssym to allow filtering from orbits
    3111
    3112- new parameter branching/relpscost/transsympscost to transfer pseudo cost information to orbit
    3113
    3114- new parameters for tree size estimation and restarts:
    3115 - estimation/restarts/restartpolicy (default value n)
    3116 - estimation/method (default value c)
    3117 - estimation/restarts/restartlimit (default value 1)
    3118 - estimation/restarts/minnodes (default value 1000)
    3119 - estimation/restarts/countonlyleaves (default value FALSE)
    3120 - estimation/restarts/restartfactor (default value 2)
    3121 - estimation/coefmonoprog (default value 0.3667)
    3122 - estimation/coefmonossg (default value 0.6333)
    3123 - estimation/restarts/hitcounterlim (default value 50)
    3124 - estimation/reportfreq (default value -1)
    3125 - estimation/regforestfilename (default value "-")
    3126 - estimation/completiontype (default value a)
    3127 - estimation/treeprofile/enabled (default value FALSE)
    3128 - estimation/treeprofile/minnodesperdepth (default value 20)
    3129 - estimation/useleafts (default value TRUE)
    3130 - estimation/ssg/nmaxsubtrees (default value -1)
    3131 - estimation/ssg/nminnodeslastsplit (default value 0)
    3132
    3133- new parameter constraints/linear/extractcliques to turn clique extraction off
    3134
    3135- new emphasis setting emphasis/numerics to increase numerical stability of (mostly) presolving operations such as (multi-)aggregations at the cost of performance.
    3136
    3137- new parameters for treemodel:
    3138 - new parameter branching/treemodel/enable to enable the treemodel in reliability pscost branching and possible
    3139 future parts of the code where it could be used.
    3140 - new parameter branching/treemodel/highrule to specify which branching rule to use when treemodel thinks the node
    3141 is high in the tree.
    3142 - new parameter branching/treemodel/lowrule to specify which branching rule to use when treemodel thinks the node
    3143 is low in the tree.
    3144 - new parameter branching/treemodel/height to specify at which (estimated) height a node is high or low in the tree.
    3145 - new parameter branching/treemodel/filterhigh to specify whether to filter dominated candidates in nodes which are
    3146 high in the tree.
    3147 - new parameter branching/treemodel/filterlow to specify whether to filter dominated candidates in nodes which are
    3148 low in the tree.
    3149 - new parameter branching/treemodel/maxfpiter to specify the maximum number of fixed-point iterations to use when
    3150 computing the ratio of a variable using the fixed-point method.
    3151 - new parameter branching/treemodel/maxsvtsheight to specify the maximum height to compute the SVTS score exactly
    3152 before approximating it using the ratio.
    3153 - new parameter branching/treemodel/fallbackinf defines the fallback strategy to use when the tree size estimates
    3154 obtained by SVTS are infinite.
    3155 - new parameter branching/treemodel/fallbacknoprim defines the fallback strategy to use when no primal bound is known
    3156 and thus SVTS would not be able to compute a tree size (it would be infinite).
    3157 - new parameter branching/treemodel/smallpscost defines the value under which pscosts are considered too small to be
    3158 the deciding factor for branching, in which case it may be better not to use the treemodel.
    3159
    3160- new parameters for symmetry handling constraint handlers to enforce that also non-model constraint are copied:
    3161 - new parameter "constraints/orbisack/forceconscopy"
    3162 - new parameter "constraints/orbitope/forceconscopy"
    3163 - new parameter "constraints/symresack/forceconscopy"
    3164
    3165
    3166### Data structures
    3167
    3168- small changes in constants of hash functions
    3169- added fast 2-universal hash functions for two to seven 32bit elements with 32bit output
    3170- extended SCIPpqueueCreate() by additional callback argument SCIP_DECL_PQUEUEELEMCHGPOS to catch position changes
    3171- new methods SCIPpqueueDelPos() to delete elements at a specific position in the priority queue and SCIPpqueueFind() to
    3172 find a specific position. It is recommended to track position changes using the new callback SCIP_DECL_PQUEUEELEMCHGPOS.
    3173 In contrast, using SCIPpqueueFind() can be slow because it needs to compare the element it searches for
    3174 with each slot in the queue.
    3175
    3176### Build system
    3177
    3178- The default value for DFLAGS in the non-cmake buildsystem has changed from -MM to -MMD. This will break the
    3179 generation of depend.* files if that was done by a compiler call that relied on -MM. The new preferred way
    3180 to handle compilation dependencies is to additionally use $(DFLAGS) when compiling the object files (.o) and
    3181 to include the generated .d files in the Makefile, see also "Build system / Makefile" below.
    3182
    3183Unit tests
    3184----------
    3185 - new unit test for treemodel.
    3186
    3187Testing
    3188-------
    3189
    3190 - fixed an issue that may have lead to wrong status reports in the evaluation scripts
    3191
    3192Build system
    3193------------
    3194
    3195### Cmake
    3196
    3197- avoid problem with doubly defined object together with CPLEX
    3198
    3199### Makefile
    3200
    3201- Removed static object compilation dependency files (depend.*). If using a GCC compatible compiler, then dependency
    3202 files are now dynamically created and updated during build. The new dependency files (*.d) reside next to each object
    3203 file (.o) in the corresponding obj subdirectory.
    3204- added support for building against Ipopt >= 3.13
    3205- unify compiler switches for Intel compiler and avoid problem with doubly defined object together with CPLEX
    3206
    3207Fixed bugs
    3208----------
    3209
    3210- fix and improve memory handling in symmetry computation
    3211- fix shown number of applied conflicts in solving statistics
    3212- fix wrongly skipping strong branching call and using old information if LP was solved with 0 iterations
    3213- fix minor bug in cut score calculation
    3214- fixed several bugs related to rounding locks of variables not being updated correctly
    3215- small fix in cons_varbound.c to skip changing bounds of multi-aggregated variables in separation callback
    3216- fixed issue in SCIPtightenVar* and SCIPinferVar* that occurs for small bound changes
    3217- fixed rejecting minimal boundchange that changed sign of variable, even though SCIPisLb/UbBetter approved it
    3218- fixed issue in generateCutNonConvex() which is triggered when adding quadratic constraints during the solving process
    3219- fixed bug in freeing the reoptimization data if no problem exists
    3220- fixed bug in SCIPreoptReleaseData() when freeing all stored constraints
    3221- fixed bug when freeing the transformed problem via interactive shell if reoptimization is enabled
    3222- fixed two issues related to (near-)redundant logicor constraints in presolving
    3223- fixed counting of aggregations in XOR constraint handler
    3224- fixed handling of unbounded solutions
    3225- fixed update of LP size information when an LP error occured during probing
    3226- handle special case of variable bound constraints during aggregating variables
    3227- tighten sides of linear constraints before trying to upgrade them to more specialized constraints (knapsack, logic-or etc.) when calling SCIPupgradeConsLinear()
    3228- fixed an issue in repair heuristic in the case of loose (noncolumn) variables
    3229- allow user to correctly set heuristics/alns/(un)fixtol
    3230- fixed an issue in heur_completesol which is triggered during bound widening of unbounded continuous variables
    3231- fixed bug in cons_indicator if addopposite is true
    3232- fixed bug in sepa_disjunctive: treat case that conflictgraph is empty
    3233- added safety check in conversion to rational number to avoid overflow
    3234- fixed bug in interval evaluation with power-operator in certain situations
    3235- fixed behavior of SCIPmatrixCreate() regarding memory management and column generation
    3236- SCIPmatrixCreate() returns complete=FALSE when locks do not add up
    3237- fixed bug in sepa_oddcylce when variables are fixed
    3238- fixed numerical issues related to tighter constraint sides in varbound constraint handler
    3239- fixed update of watchedvars in logicor constraint handler in case of a restart during the tree
    3240- fixed treatment of multi-aggregated variables in logicor constraint handler
    3241- handle special case of redundant implications
    3242- fixed numerical issue related to almost-0-values in pseudosolution conflict analysis
    3243- fixed numerical issue related to very large greatest common dividers in linear constraint handler
    3244- avoid using implications on multiaggregated variables when propagating implications
    3245- fixed creation of (Lagrangian) variable bounds in the OBBT propagator
    3246- fixed sorting of primal solutions
    3247- fixed cleaning of clean buffer in conflict analysis
    3248- avoid probing on variables with huge bounds in shift and propagate heuristic
    3249- fix issue in printing solutions for variables that have been added by the dual sparsify presolver
    3250- fix issue related to fixing redundant logic-or constraints after presolving
    3251- fixed bug when parsing logic-or and and-constraints
    3252- fixed wrong assert in updateLazyBounds()
    3253- fixed bug in pricestore, which resulted in too many problem variables being added
    3254- fixed bug in cons_knapsack where weight of clique was not reset after an infeasibility was detected
    3255- fixed bug in presol_inttobinary which did not take into account that the aggregation could be rejected due to numerics
    3256- fixed bug in debug solution mechanism in connection to variables created by presol_inttobinary
    3257- fixed wrong indexing while undoing the implications from a redundant variable in SCIPshrinkDisjunctiveVarSet
    3258- redundancy checks in SCIPnodeAddBoundinfer now take a possible change to an active variable into account
    3259- fixed adding already added quadratic rows to NLP relaxation during solve
    3260- fixed issue related to variable locks in the varbound constraint handler
    3261- fixed bug in the quadratic constraint handler when changing infinite constraint sides
    3262- fixed sorting of variables in linear constraint handler
    3263- added additional checks to ensure numerical stability of dual proofs
    3264- fixed a case when activities of a linear constraint got unreliable but where still used for reductions
    3265- ensure that lhs <= rhs for linear constraints (without tolerances)
    3266- make handling of read errors in SCIPfread() consistent between version with and without ZLIB
    3267- correctly drop variable events in cons_indicator in restart
    3268- fixed bug in cons_orbitope with upgrading of orbitope constraints
    3269- additional checks in some presolvers for time limit being exceeded
    3270- fixed bug in presolving of cons_varbound with multi-aggregated variables
    3271- improve numerics in conflict analysis by using double-double arithmetic
    3272- fixed bound acceptance condition to avoid inconsistencies
    3273- fixed numerics in pseudoobj propagator by using double-double arithmetic
    3274
    3275Miscellaneous
    3276-------------
    3277
    3278- modified display column for memory usage ("mem"), which reports the memory usage most of the time, but shows the creator name
    3279 (heuristic, relaxation handler, LP relaxation, strong branching, pseudo solution) of every new incumbent solution. Together with this change,
    3280 heuristic display characters have been unified to represent the type of the heuristic
    3281 (diving, Large neighborhood search, propagation, etc.), see also type_heur.h.
    3282- added assert that ensures that the locks of a variable have been decreased to 0 when it is freed
    3283- added more output for completing a partial solution
    3284- checks in debug mode that clean buffer memory is really clean when being freed are now disabled by default
    3285- don't compute symmetries if reoptimization is enabled
    3286- prefer integral values when fixing an almost-fixed continuous variable in the trivial presolver
    3287- changed the name of the variable that is added by the OSiL reader to represent the quadratic or nonlinear parts of the objective function
    3288- SCIP_EXPORT is now defined as __attribute__((__visibility__("default"))) if GCC and no SCIP config header is used
    3289
    3290@page RN6 Release notes for SCIP 6
    3291
    3292@section RN602 SCIP 6.0.2
    3293*************************
    3294
    3295Features
    3296--------
    3297
    3298- The abspower constraint handler now passes more accurate convexity
    3299 information to the NLP relaxation.
    3300
    3301Examples and applications
    3302-------------------------
    3303
    3304- added parsing functionality for optcumulative constraints in CIP format
    3305
    3306Interface changes
    3307-----------------
    3308
    3309### Interfaces to external software
    3310
    3311- Updated the Mosek LP solver interface to support Mosek 9.0.
    3312
    3313Build system
    3314------------
    3315
    3316### Cmake
    3317
    3318- new target to 'doc' to build documentation
    3319- ctests now fail if parameter file not found
    3320- add flag STATIC_GMP and improve GMP find module
    3321- remove non-API functions from library (API functions use new macro SCIP_EXPORT)
    3322- increase minimal required CMake version to 3.3
    3323- correct paths and dependency information when installing SCIP
    3324
    3325Fixed bugs
    3326----------
    3327- fixed SCIP-Jack presolving bug that could lead to wrong results for Steiner arborescence problems
    3328- fixed wrong unboundedness result in case not all constraints were already in the LP and enforcement was
    3329 skipped because an optimal solution was found
    3330- fixed wrong enforcement of constraints in the disjunction constraint handler
    3331- fixed wrong behavior of concurrent solve ignoring initial solutions
    3332- fixed bug in concurrent solve when problem was already solved in presolving
    3333- aggregate non-artificial integer variable for XOR constraints with two binary variables and delete constraint
    3334- copy the objective offset when copying the original problem
    3335- fixed bug in SCIPlpiGetBInvARow in lpi_cpx using wrong size of resulting vector
    3336- fixed quadratic runtime behavior in sepa_aggregation
    3337- fixed statistics of separators
    3338- improve numerical stability in varbound constraint handler by using double-double arithmetic
    3339- fixed bug in propagation of dual proofs
    3340- fixed bugs that arise for multiaggregated indicator variables by disallowing multiaggregation for them
    3341- improve numerical stability in SCIPcomputeBilinEnvelope* by using double-double arithmetic
    3342- fixed bug related to releasing pending bound changes in tree.c
    3343- set STD FENV_ACCESS pragma to on in code that changes floating-point rounding mode
    3344- disable GCC optimizations in main interval arithmetic code to prevent wrong optimizations
    3345- fixed wrong assert in cons_xor concerning the variable type
    3346- fixed different behavior of SCIPisLbBetter and SCIPisUbBetter between having NDEBUG defined or not
    3347- correctly handle bound disjunctions in symmetry detection
    3348- fixed issue in reliability branching related to the LP error flag not being reset
    3349- fixed treatment of near-infinite bounds in shiftandpropagate's problem transformation
    3350- fixed handling of infinite values in SCIPcomputeHyperplaneThreePoints()
    3351- fixed comparisons of infinite values in heur_intshifting.c and heur_shifting.c
    3352- fixed bug related to updating unprocessed cuts in the cutpool
    3353- fixed bug related to enabling quadratic constraints during `CONSINITLP`
    3354- add missing SCIP_EXPORT for functions used by GCG
    3355- fixed memory leak and wrong initialization for trival cases in cons_symresack.c
    3356- fixed bug with upgrading to packing/partitioning orbitopes
    3357- fixed bug with the status while upgrading in presol_symbreak.c
    3358- fixed wrong stage while clearing the conflict store
    3359- fixed behavior of SCIPfixVar() by setting infeasible pointer to TRUE if fixval lies outside variable domain
    3360- allow tightenVar() in SCIP_STAGE_PROBLEM stage
    3361- fixed bug in cumulative constraint handler when separating the LP solution
    3362- fixed issues with integer overflow in cumulative constraint handler
    3363- fixed bug where the convexity of Benders' decomposition subproblems was checked even when users defined subproblem
    3364 solving methods. Now, as per the documentation, the user must explicitly state whether the subproblem is convex
    3365- fixed wrong indexing in heur_dualval
    3366- fixed issue with basis status in SoPlex LPi
    3367
    3368Miscellaneous
    3369-------------
    3370
    3371- statistics now output primal/dual bounds if objective limit is reached
    3372- memory check in debug mode is now disabled by default
    3373- message is now provided to the user to inform that automatic Benders' auxiliary variable lower bound computations are
    3374 not activated when user defined subproblem solving methods are present
    3375- corrected documentation of the primalgap in SCIP; describe when it will be infinite
    3376
    3377@section RN601 SCIP 6.0.1
    3378*************************
    3379
    3380Features
    3381--------
    3382
    3383- when using a debug solution every (multi-)aggregation will be checked w.r.t. this solution
    3384
    3385Performance improvements
    3386------------------------
    3387
    3388- try greedy solution first before solving knapsack exactly using dynamic programming in SCIPsolveKnapsackExactly,
    3389 compute greedy solution by weighted median selection.
    3390- don't consider implied redcost by default in the reduced cost propagator
    3391
    3392Interface changes
    3393-----------------
    3394
    3395### Deleted and changed API functions and macros
    3396
    3397- The preprocessor macro NO_CONFIG_HEADER now needs to be defined when
    3398 including SCIP header files from a SCIP build or installation that
    3399 has been build via the Makefile-only build system.
    3400
    3401- The following preprocessor macros have been renamed:
    3402 WITH_ZLIB to SCIP_WITH_ZLIB, WITH_GMP to SCIP_WITH_GMP, WITH_READLINE
    3403 to SCIP_WITH_READLINE, NO_SIGACTION to SCIP_NO_SIGACTION, NO_STRTOK_R
    3404 to SCIP_NO_STRTOK_R, ROUNDING_FE to SCIP_ROUNDING_FE, ROUNDING_FP to
    3405 SCIP_ROUNDING_FP, ROUNDING_MS to SCIP_ROUNDING_MS. Note, however, that
    3406 the names of macros NO_RAND_R and NO_STRERROR_R have not been changed
    3407 so far.
    3408
    3409### New API functions
    3410
    3411- SCIPhashmapInsertInt(), SCIPhashmapSetImageInt(), and SCIPhashmapGetImageInt() to use integer values as images in hashmaps
    3412
    3413### Command line interface
    3414
    3415- warn about coefficients in MPS files with absolute value larger than SCIP's value for infinity
    3416
    3417### Changed parameters
    3418
    3419- default clock type for timing is now wallclock
    3420
    3421Unit tests
    3422----------
    3423
    3424- added unit tests for exact knapsack solving and (weighted) median selection algorithms
    3425
    3426Build system
    3427------------
    3428
    3429### Cmake
    3430
    3431- add missing GMP dependency when compiling with SYM=bliss
    3432- add DL library when linking to CPLEX to avoid linker errors
    3433- new config.h header defining the current build configuration, e.g. SCIP_WITH_GMP
    3434
    3435Fixed bugs
    3436----------
    3437
    3438- fixed handling of weights in cons_sos1 and cons_sos2 (NULL pointer to weights)
    3439- fixed handling of unbounded LPs in SCIP and in several LPIs; added heuristic method to guess solution
    3440- the STO reader is capable of handling scenarios defined using lower case "rhs"
    3441- fixed OPB reader for instances without explicit plus signs
    3442- correct dual solution values for bound constraints
    3443- fixed recognition of variable with only one lock in cons_bivariate, cons_quadratic, and cons_nonlinear
    3444- fixed update of constraint violations in solution repair in cons_bivariate, cons_quadratic, and cons_nonlinear
    3445- print error message and terminate if matrix entries of a column are not consecutive in mps format
    3446- fixed incorrect handling of fixed variables when transfer of cuts from LNS heuristic for Benders' decomposition
    3447- fix returning local infeasible status by Ipopt interface if Ipopt finds problem locally infeasible
    3448- skip attempt to apply fixings in linear constraint handler during solving stage as LP rows cannot change anymore
    3449- fixed bug when reading >= indicator constraints in MPS format
    3450- fix issue with nodes without domain changes if we ran into solution limit in prop_orbitalfixing
    3451- fixed unresolved reference to CppAD's microsoft_timer() function on builds with MS/Intel compilers on Windows
    3452- ignore implications added through SCIPaddVarImplication() that are redundant to global bounds also in the
    3453 special case of an implication between two binary variables; also, use implications instead of cliques in the case
    3454 of a binary implied variable with nonbinary active representative
    3455- fixed bug with aggregated variables that are aggregated in propagation of cons_sos1
    3456- fixed some special cases in SCIPselect/SCIPselectWeighted methods
    3457- relaxed too strict assertion in Zirounding heuristic
    3458- fixed the upgrade routine to XOR constraints: aggregate integer variable if its coefficient has the wrong sign
    3459- fixed handling of nonartificial parity variables when deleting redundant XOR constraints
    3460- earlier deletion of trivial XOR constraints (at most 1 operator left)
    3461- fixed wrong hashmap accesses and added sanity check for the correct hashmap type
    3462- avoid copying of unbounded solutions from sub-SCIPs as those cannot be checked completely
    3463- corrected the output of the first LP value in case of branch-and-price
    3464- fixed possible integer overflow, which led to wrong conclusion of infeasibility, in energetic reasoning of cons_cumulative.c
    3465
    3466Miscellaneous
    3467-------------
    3468
    3469- do not scale linear constraints to integral coefficients
    3470
    3471@section RN600 SCIP 6.0.0
    3472*************************
    3473
    3474Features
    3475--------
    3476
    3477- new diving heuristic farkasdiving that dives into the direction of the pseudosolution and tries to construct Farkas-proofs
    3478- new diving heuristic conflictdiving that considers locks from conflict constraints
    3479- restructuring of timing of symmetry computation that allows to add symmetry handling components within presolving
    3480- `lp/checkstability` is properly implemented for SoPlex LPI (spx2)
    3481- new branching rule lookahead that evaluates potential child and grandchild nodes to determine a branching decision
    3482- limits on the number of presolving rounds a presolver (maxrounds) or propagator/constraint handler (maxprerounds)
    3483 participates in are now compared to the number of calls of the particular presolving method, not the number of
    3484 presolving rounds in general, anymore
    3485- new miscellaneous methods for constraints that have a one-row linear representation in pub_misc_linear.h
    3486- a Benders' decomposition framework has been added. This framework provides the functionality for a user to solve a
    3487 decomposed problem using Benders' decomposition. The framework includes classical optimality and feasibility cuts,
    3488 integer optimality cuts and no-good cuts.
    3489- add statistic that presents the number of resolves for instable LPs
    3490- new readers for stochastic programming problems in SMPS format (reader_sto.h, reader_smps.h)
    3491
    3492Performance improvements
    3493------------------------
    3494
    3495- cuts generated from certain quadratic constraints with convex feasible region are now global
    3496- performance improvements for Adaptive Large Neighborhood Search heur_alns.c
    3497 + all neighborhoods now start conservatively from maximum fixing rate
    3498 + new default parameter settings for bandit selection parameters
    3499 + no adjustment of minimum improvement by default
    3500- improved bound tightening for some quadratic equations
    3501- constraint handler checking order for original solutions has been modified to check those with negative check priority
    3502 that don't need constraints after all other constraint handlers and constraints have been checked
    3503- deactivate gauge cuts
    3504
    3505Examples and applications
    3506-------------------------
    3507
    3508- new example `brachistochrone` in CallableLibrary examples collection; this example implements a discretized model to
    3509 obtain the trajectory associated with the shortest time to go from point A to B for a particle under gravity only
    3510- new example `circlepacking` in CallableLibrary examples collection; this example models two problems about packing
    3511 circles of given radii into a rectangle
    3512- new price-and-branch application for the ringpacking problem
    3513- new stochastic capacitated facility location example demonstrating the use of the Benders' decomposition framework
    3514
    3515Interface changes
    3516-----------------
    3517
    3518### New and changed callbacks
    3519
    3520- added parameter locktype to `SCIP_DECL_CONSLOCK` callback to indicate the type of variable locks
    3521
    3522### Deleted and changed API functions
    3523
    3524- Symmetry:
    3525 + removed function SCIPgetTimingSymmetry() in presol_symmetry.h since this presolver does not compute symmetries independent
    3526 of other components anymore
    3527 + additional argument `recompute` to SCIPgetGeneratorsSymmetry() to allow recomputation of symmetries
    3528
    3529- Random generators:
    3530 + the seed of SCIPinitializeRandomSeed() is now an unsigned int
    3531 + the seed of SCIPsetInitializeRandomSeed() is now an unsigned int and it returns an unsigned int
    3532 + new parameter for SCIPcreateRandom() to specify whether the global random seed shift should be used in the creation of
    3533 the random number generator
    3534
    3535- Miscellaneous:
    3536 + additional arguments `preferrecent`, `decayfactor` and `avglim` to SCIPcreateBanditEpsgreedy() to choose between
    3537 weights that are simple averages or higher weights for more recent observations (the previous default).
    3538 The last two parameters are used for a finer control of the exponential decay.
    3539 + functions SCIPintervalSolveUnivariateQuadExpression(), SCIPintervalSolveUnivariateQuadExpressionPositive(), and
    3540 SCIPintervalSolveUnivariateQuadExpressionPositiveAllScalar() now take an additional argument to specify already
    3541 existing bounds on x, providing an entire interval ([-infinity,infinity]) gives previous behavior
    3542
    3543### New API functions
    3544
    3545- SCIPintervalSolveUnivariateQuadExpressionNegative()
    3546- SCIPvarGetNLocksDownType() and SCIPvarGetNLocksUpType()
    3547- SCIPaddConsLocksType()
    3548- SCIPconsIsLockedTypePos(), SCIPconsIsLockedTypeNeg(), SCIPconsIsLockedType(), SCIPconsGetNLocksTypePos() and SCIPconsGetNLocksTypeNeg()
    3549- SCIPstrncpy(), a safe version of strncpy()
    3550
    3551### Changed parameters
    3552
    3553- Removed parameters:
    3554 - `heuristics/alns/stallnodefactor` as the stall nodes are now controlled directly by the target node limit within the heuristic
    3555 - `presolving/symmetry/computepresolved` since this presolver does not compute symmetries independent of other components anymore
    3556 - `separating/maxincrounds`
    3557
    3558### New parameters
    3559
    3560- `lp/checkfarkas` that enables the check of infeasibility proofs from the LP
    3561- `heuristics/alns/unfixtol` to specify tolerance to exceed the target fixing rate before unfixing variables, (default: 0.1)
    3562- `propagating/orbitalfixing/symcomptiming` to change the timining of symmetry computation for orbital fixing
    3563- `lp/alwaysgetduals` ensure that the dual solutions are always computed from the recent LP solve
    3564- `display/relevantstats` indicates whether the small relevant statistics are displayed at the end of solving
    3565- `propagating/orbitalfixing/performpresolving` that enables orbital fixing in presolving
    3566- `presolving/symbreak/addconsstiming` to change the timining of symmetry computation for symmetry handling inequalities
    3567- `propagating/orbitalfixing/enabledafterrestarts` to control whether orbital fixing is enabled after restarts
    3568- `benders/∗` new submenu for Benders' decomposition related settings. This includes the settings related to the
    3569 included Benders' decompositions and the general Benders' decomposition settings.
    3570- `benders/<decompname>/benderscuts/∗` submenu within each included Benders' decomposition to control the Benders'
    3571 decomposition cuts. The cuts are added to each decomposition separately, so the setting are unique to each
    3572 decomposition.
    3573
    3574### Data structures
    3575
    3576- new enum `SCIP_LOCKTYPE` to distinguish between variable locks implied by model (check) constraints (`SCIP_LOCKYPE_MODEL`)
    3577 and variable locks implied by conflict constraints (`SCIP_LOCKYPE_CONFLICT`)
    3578- expression interpreter objects are now stored in the block memory
    3579
    3580Deleted files
    3581-------------
    3582
    3583- removed presolving plugin presol_implfree
    3584- separated scip.c into several smaller implementation files scip_*.c for better code overview; scip.c was removed,
    3585 but the central user header scip.h remains, which contains includes of the separated headers
    3586
    3587Fixed bugs
    3588----------
    3589
    3590- fixed bug in gcd reductions of cons_linear regarding an outdated flag for variable types
    3591- fixed bug in heur_dualval regarding fixing routine for integer variables
    3592- suppress debug solution warnings during problem creation stage
    3593- fixed check for activated debugging solution in components constraint handler
    3594- fixed potential bug concerning solution linking to LP in SCIPperformGenericDivingAlgorithm()
    3595- fixed reward computation in ALNS on continuous, especially nonlinear, problems
    3596- fixed bug in freeing reoptimization data if problem was solved during presolving
    3597- fixed check of timing in heur_completesol
    3598- fixed wrong propagation in optcumulative constraint handler
    3599- fixed non-deterministic behavior in OBBT propagator
    3600- don't disable LP presolving when using Xpress as LP solver
    3601- fixed possible `NULL` pointer usage in cons_pseudoboolean
    3602- ensured that SCIPgetDualbound() returns global dual bound instead of the dual bound of the remaining search tree
    3603- fixed rare division-by-zero when solving bivariate quadratic interval equation
    3604- use total memory for triggering memory saving mode
    3605- fix parsing of version number in the CMake module for Ipopt
    3606- fixed handling of implicit integer variables when attempting to solve sub-MIP in nlpdiving heuristic
    3607- added workaround for bug when solving certain bivariate quadratic interval equations with unbounded second variable
    3608- fixed bug with releasing slack variable and linear constraint in cons_indicator
    3609- fixed problem when writing MPS file with indicator constraints with corresponding empty linear constraints
    3610- fixed bug in heur_vbound triggered when new variables were added while constructing the LP
    3611- fixed bug with unlinked columns in SCIProwGetLPSolCutoffDistance()
    3612
    3613Miscellaneous
    3614-------------
    3615
    3616- updated CppAD to version 20180000.0
    3617- remove LEGACY mode, compiler needs to be C++11-compliant
    3618
    3619@page RN5 Release notes for SCIP 5
    3620
    3621@section RN501 SCIP 5.0.1
    3622*************************
    3623
    3624Features
    3625--------
    3626
    3627- SCIP executable handles the `SIGTERM` signal. If the process receives a `SIGTERM`, SCIP terminates the solution process with a
    3628 new `SCIP_STATUS` code `SCIP_STATUS_TERMINATE` and displays all relevant statistics before exiting.
    3629- add number of conflict constraints found by diving heuristics to statistics
    3630- allow output of lower bounds for visualization
    3631- added symmetry detection for linking constraints
    3632
    3633Performance improvements
    3634------------------------
    3635
    3636- disable disaggregation of quadratic constraints by changing the default for `constraints/quadratic/maxdisaggrsize` to 1
    3637 (disaggregation can still be very helpful on some instances, but also seems hurtful on others)
    3638
    3639- Cuts:
    3640 - increased threshold when to scale up cuts that are generated by nonlinear constraint handlers
    3641 - test additional scaling factors in CMIR cut generation heuristic
    3642 - cleaned up implementation of the cut selection procedure and added new cut quality measure
    3643 - use random tie-breaking in cut selection
    3644
    3645Interface changes
    3646-----------------
    3647
    3648### New API functions
    3649
    3650- new methods SCIPtryTerminate() and SCIPterminated() in scip/interrupt.h for handling of SIGTERM signals.
    3651- new method SCIPselectCuts() to run SCIP's cut selection procedure on a given array of cuts
    3652
    3653### Changed parameters
    3654
    3655- rename parameter `constraints/orbisack/orbisack/coverseparation` to `constraints/orbisack/coverseparation`
    3656
    3657### New parameters
    3658
    3659- `visual/displb` that enables output of lower bounds for visualization
    3660- `presolving/symmetry/displaynorbitvars` (whether we display the number of affected variables in the statistics)
    3661- `separating/efficacyfac` to change the weight of the efficacy in cut score calculation
    3662- `separating/dircutoffdistfac` to change the weight of the directed cutoff distance in cut score calculation
    3663
    3664### Data structures
    3665
    3666- new `SCIP_STATUS` code `SCIP_STATUS_TERMINATE` in scip/interrupt.h for handling of SIGTERM signals.
    3667
    3668Unit tests
    3669----------
    3670
    3671- expanded unit tests of the lpis
    3672- added check to unit tests that problem is not solved after every change
    3673
    3674Fixed bugs
    3675----------
    3676
    3677- fixed LP status to unsolved when marking LP to be resolved if objective limit has changed
    3678- copy parameter settings to sub-SCIPs in SCIPcopyLargeNeighborhoodSearch() also when copying only LP rows
    3679- fixed a check for fixed variables in Binpacking example
    3680- generate deprecation warnings when using SCIPaddCut
    3681- fix bug in sepa_gomory if cut is a bound change
    3682- fixed handling of infinite bounds in cons_sos1
    3683
    3684- Constraints:
    3685 - fixed bug while scaling linear constraints
    3686 - don't delete conflict constraints that were transformed into model constraints during a restart
    3687 - fixed treatment of variable aggregations in knapsack constraint handler that led to wrong propagations
    3688
    3689- LP Interface:
    3690 - fixed LPI status after changing objective in lpi_cpx, lpi_grb, lpi_xprs, lpi_msk
    3691 - fixed and unified asserts in LPIs
    3692 - retrieve interior solution instead of (possibly non-existing) basic solution from mosek after using barrier without crossover in lpi_msk
    3693 - fixed bug with `NULL` pointer handling in LPIs
    3694
    3695- Heuristics:
    3696 - fixed wrong cast in LP iteration limit computation in proximity search heuristic
    3697 - fixed check for time limit in heur_nlpdiving
    3698 - improved numerics and fixed stop criterion in zirounding heuristic
    3699
    3700@section RN500 SCIP 5.0.0
    3701*************************
    3702
    3703Features
    3704--------
    3705
    3706- new numerical solution violations get printed when checksol is called
    3707- added analysis of the clique table which identifies possible aggregations via the search for
    3708 strongly connected components and may detect infeasible assignments on the way
    3709- added macros to do computations with a higher precision by using double-double arithmetic
    3710- extended conflict analysis by analyzing dual solutions of boundexceeding LPs
    3711- revised internal debugging mechanism to check against a user given debug solution (debug.h)
    3712
    3713- Heuristic:
    3714 - add new heuristic MPEC that solves a MPEC reformulation of a mixed-binary nonlinear problem by regularized NLP reformulations
    3715 - new primal heuristic ALNS that orchestrates eight different LNS heuristics adaptively
    3716 using algorithms for the multi-armed bandit problem
    3717 - three bandit selection algorithms to face sequential decision problems under uncertainty
    3718
    3719- Presolving and symmetry:
    3720 - added presol_symmetry.c for computing and storing symmetry information of a MIP
    3721 - added presol_symbreak.c to detect special symmetry structures and to add symmetry handling constraints
    3722 - SCIP can now automatically detect and compute symmetries in MIPs (if a graph automorphism code is linked in)
    3723 - added cons_symresack.c to handle permutation symmetries in a binary programs via inequalities and propagation
    3724 - added cons_orbisack.c to handle special permutation symmetries in a binary programs via inequalities and propagation
    3725 - cons_orbitope.c can now handle full orbitopes as well
    3726
    3727- Propagator:
    3728 - added new propagator orbital fixing
    3729 - utilizing linear inequalities to compute stronger linearizations for bilinear terms; the inequalities are computed in
    3730 the OBBT propagator
    3731
    3732- Cuts:
    3733 - added API for aggregating rows for generating cuts which uses double-double arithmetic internally
    3734 - added filtering of parallel cuts in the cut pool
    3735
    3736- Plugins:
    3737 + added new plugin type `table` for adding user-defined statistics tables
    3738 + new presolving plugin presol_sparsify that tries to cancel nonzero coefficients in linear constraints by adding
    3739 multiples of linear equalities
    3740
    3741Performance improvements
    3742------------------------
    3743
    3744- use disjoint set to reduce peak memory usage and time to compute of clique table connectedness information
    3745- add and use RESTRICT macro for some pointers
    3746- improved the implementation of SCIPvarGetActiveRepresentatives
    3747- speed-up reverse propagation
    3748- removed bestrelaxsol and directly access relaxation solution instead to decrease overhead when using relaxation handlers
    3749- for fast presolving emphasis, disable use of implications in logicor presolving
    3750- use limit on the total number of nonzeros added to the clique table during the greedyCliqueAlgorithm of cons_knapsack.c
    3751- revised disaggregation of quadratic constraints: the number of created constraints can now be controlled and the
    3752 disaggregated constraints are scaled in order to increase numerical accuracy
    3753- disabled reformulation of products of a binary variable with a linear term that does not solely involve binary variables
    3754- speed up creation of LP in the computation of relative interior points
    3755- improved dual ray analysis
    3756- drop events of disabled linear constraints to reduce event processing effort
    3757
    3758- Separation:
    3759 - new implementation of zerohalf separator
    3760 - enabled cutting plane separation in the tree
    3761 - improved cut selection and management
    3762 - improved cut post-processing: apply coefficient tightening, enforce maximal dynamism
    3763
    3764- Heuristics:
    3765 - improved selection of rows in CMIR aggregation heuristic
    3766 - generate lifted flowcover cuts in CMIR cut generation heuristic
    3767 - faster implementation of CMIR cut generation heuristic
    3768 - use LP solution polishing during probing and diving mode to activate it during many primal heuristics; remains disabled
    3769 during strong branching and OBBT
    3770 - improved versions of the clique and variable bound pre-root heuristics that are often able to fix many more variables
    3771
    3772Interface changes
    3773-----------------
    3774
    3775### New and changed callbacks
    3776
    3777- New types:
    3778 - added new abstract selection algorithm `SCIP_BANDIT` together with callbacks
    3779 - added new types for symmetry handling
    3780
    3781- NLP interface:
    3782 - dropped NLP termination status `SCIP_NLPTERMSTAT_UOBJLIM`
    3783
    3784- NLP callbacks:
    3785 - added parameter `objval` to `SCIP_DECL_NLPIGETSOLUTION` for returning the optimal objective value (can be set to `NULL`)
    3786
    3787- Separation callbacks:
    3788 - added parameter `allowlocal` to `SCIP_DECL_SEPAEXECLP` and `SCIP_DECL_SEPAEXECSOL` to switch generation of locally valid cuts
    3789 - added parameter `dstatssize` to `SCIP_DECL_NLPIDELVARSET` and `SCIP_DECL_NLPIDELCONSSET`
    3790
    3791### Deleted and changed API functions
    3792
    3793- Branching rules:
    3794 - removed parameter `allowaddcons` from SCIPselectVarPseudoStrongBranching(), SCIPselectVarStrongBranching(), and
    3795 SCIPincludeBranchruleRelpscost()
    3796
    3797- Constraint Handlers:
    3798 - generalized SCIPcreateConsOrbitope() and SCIPcreateConsBasicOrbitope() method to three orbitope types (full, partitioning, packing)
    3799
    3800- Cutting plane separation methods:
    3801 - changed function signature of SCIPcalcMIR()
    3802 - changed function signature of SCIPcalcStrongCG()
    3803 - new method SCIPaddRow() to replace deprecated SCIPaddCut()
    3804 - removed parameter `scaling` from SCIPgetRowprepViolation()
    3805 - added parameter `allowlocal` to SCIPseparateSol()
    3806
    3807- LP interface:
    3808 - replaced LP parameters `SCIP_LPPARAM_LOBJLIM` and `SCIP_LPPARAM_UOBJLIM` by `SCIP_LPPARAM_OBJLIM`
    3809
    3810- NLP interface:
    3811 - SCIPnlpStatisticsCreate() and SCIPnlpStatisticsFree() now require a pointer to blockmemory as parameter
    3812 - added parameter `objval` to SCIPnlpiGetSolution() of NLPIs for returning the optimal objective value (can be set to `NULL`)
    3813 - added parameter `varnameslength` to SCIPexprParse()
    3814 - added parameter `dstatssize` to SCIPnlpiDelVarSet() and SCIPnlpiDelConsSet()
    3815 - added modifier const to `exprtree` parameter of SCIPnlpiChgExprtree()
    3816
    3817- Primal heuristics:
    3818 - SCIPheurPassIndicator() has a new parameter which allows to pass the objective of the solution
    3819
    3820- Relaxator methods:
    3821 - added parameter `includeslp` to SCIPmarkRelaxSolValid(), SCIPsetRelaxSolVals() and SCIPsetRelaxSolValsSol();
    3822 - removed parameter `includeslp` from SCIPrelaxCreate() and SCIPincludeRelax()
    3823 - removed functions SCIPrelaxIncludesLp() and SCIPrelaxSetIncludesLp()
    3824 - replaced method SCIPgetRelaxFeastolFactor() by SCIPrelaxfeastol() and added SCIPchgRelaxfeastol()
    3825
    3826- Misc:
    3827 - changed return type of SCIPcliqueGetId() from `int` to `unsigned int`
    3828 - removed SCIPvarGetCliqueComponentIdx(); the connectedness information of the clique table is now stored as a
    3829 `SCIP_DISJOINTSET` member of the clique table and cannot be publicly accessed
    3830 - added parameter `copytables` to SCIPcopyPlugins()
    3831 - SCIPsolveParallel() has been deprecated, use the new method SCIPsolveConcurrent() instead
    3832 - allowed SCIPgetNConss() in stage `SCIP_STAGE_INITSOLVE`
    3833
    3834### New API functions
    3835
    3836- SCIPaddRow() to replace deprecated SCIPaddCut()
    3837- methods to display linear constraint classification types; use SCIPclassifyConstraintTypesLinear()
    3838 after reading a problem to classify linear constraint types
    3839- public methods SCIPvariableGraphBreadthFirst() and SCIPvariableGraph{Create,Free}() to
    3840 perform breadth-first search on the variable constraint graph used by the GINS and ALNS heuristics
    3841- SCIPsetProbingLPState() to install given LP state and/or norms at the current probing node
    3842- SCIPbranchcandGetLPMaxPrio() and SCIPbranchcandGetExternMaxPrio() to query the maximal branching priority of given
    3843 branching candidates; also added SCIPbranchcandGetNPrioLPCands() to access the number of LP candidates with this priority.
    3844- SCIPupdateSolIntegralityViolation(), SCIPupdateSolBoundViolation(), SCIPupdateSolLPRowViolation(),
    3845 SCIPupdateSolConsViolation() and SCIPupdateSolLPConsViolation() for updating numerical solution violations, as well as
    3846 SCIPactivateSolViolationUpdates() and SCIPdeactivateSolViolationUpdates() for activating/deactivating violation updates globally
    3847- SCIPsetSubscipDepth() to set the depth of SCIP as a copied subproblem during problem stage
    3848- SCIPdivesetGetNSols() to query the number of found solutions from a diveset.
    3849- SCIPnextafter() that wraps different nextafter methods to return the next representable value after a given value
    3850- SCIPlinConsStats{Create,Free,GetTypeCount,GetSum}() and SCIPprintLinConsStats() to work with linear constraint classification through the C API
    3851- SCIPgetRowNumIntCols() that returns the number of integer columns in a row
    3852- SCIPsetSlackVarUb() to control upper bound of slack variable in cons_indicator
    3853
    3854- Data structures:
    3855 - methods SCIPrandomCreate() and SCIPrandomFree() are no longer public and should be replaced by SCIPcreateRandom() and
    3856 SCIPfreeRandom(), respectively (the new methods respect the global parameter `randomization/randomseedshift` automatically)
    3857 - methods SCIPdigraphCreate() and SCIPdigraphCopy() are no longer public and should be replaced by SCIPcreateDigraph() and
    3858 SCIPcopyDigraph(), respectively, which receive a SCIP argument and are more robust towards future interface changes
    3859
    3860- Bilinear:
    3861 - SCIPgetAllBilinearTermsQuadratic() to access data of all existing bilinear terms in quadratic constraints
    3862 - SCIPaddBilinearIneqQuadratic() to propose an inequality with two variables that appear in a bilinear term
    3863 - SCIPcomputeBilinEnvelope{1,2}() to compute a linearization of a bilinear term when considering at most two linear inequalities
    3864
    3865- Clique:
    3866 - SCIPcliqueGetIndex() which returns the unique identifier for the given clique
    3867 - SCIPgetNCliquesCreated() which returns the number of cliques created so far
    3868
    3869- Cutting plane separation methods:
    3870 - SCIPisCutNew() that returns whether a cut is already present in the global cut pool
    3871 - SCIPgetSepaMinEfficacy() to access separating/minefficacy(root)
    3872
    3873- Interfaces:
    3874 - interface methods to create and use bandit algorithms implemented as SCIP core plugins
    3875 - interface methods for aggregating rows and computating MIP cuts, see cuts.h
    3876 - interface method SCIPsetRandomSeed() to (re)set a random number generator seed
    3877
    3878### Command line interface
    3879
    3880- new interactive shell functionality to display linear constraint classification types;
    3881 use `display linclass` after reading a problem to classify linear constraint types
    3882- new command line parameter `-r` to pass a nonnegative integer as random seed.
    3883
    3884### Interfaces to external software
    3885
    3886- added interface to the NLP solver WORHP
    3887- added interface to the NLP solver FilterSQP
    3888- added interface to graph automorphism algorithms in `src/symmetry/` (initially only to BLISS)
    3889- unify handling of objective limit in LPIs by replacing LPI parameters `SCIP_LPPAR_LOBJLIM` and `SCIP_LPPAR_UOBJLIM` by
    3890 `SCIP_LPPAR_OBJLIM`
    3891- dropped support for MOSEK < 7.0.0.0
    3892
    3893### Changed parameters
    3894
    3895- changed and removed several parameters for zerohalf separator
    3896- replaced `constraints/quadratic/disaggregate` by `constraints/quadratic/maxdisaggrsize` to bound
    3897 the total number of created constraints when disaggregating a quadratic constraint
    3898- new value 3 for parameter `lp/solutionpolishing` to enable LP polishing only during probing and diving mode
    3899- parameter `conflict/useboundlp` has new values `d` (only dual solution analysis) and `b` (both, conflict and dual solution analysis)
    3900
    3901- Heuristics:
    3902 - fixed typo `heuristics/completesol/maxunkownrate` has changed to `heuristics/completesol/maxunknownrate`
    3903 - replaced parameter `heuristics/{clique,vbounds}/minfixingrate` by `heuristics/{clique,vbounds}/minintfixingrate` and
    3904 `heuristics/{clique,vbounds}/minmipfixingrate`, which check the fixing rate before LP solving and after sub-MIP presolve
    3905
    3906- Separating:
    3907 - parameter `separating/maxstallrounds` only applies to nodes in the tree (not the root node, anymore); use the new
    3908 parameter `separating/maxstallroundsroot` for the root node
    3909 - moved parameters for flowcover and cmir separators to `separating/aggregation`
    3910
    3911- Removed parameters:
    3912 - `constraints/{abspower,bivariate,nonlinear,quadratic,soc}/scaling`
    3913 - `constraints/{abspower,bivariate,quadratic,nonlinear}/mincutefficacysepa`
    3914 - `constraints/{abspower,bivariate,quadratic,nonlinear}/mincutefficacyenfofac`
    3915 - `constraints/soc/minefficacy`
    3916 - `conflict/usemir`
    3917 - `conflict/prefermir`
    3918 - `heuristics/clique/{multiplier,initseed}`
    3919 - `separating/feastolfac`
    3920 - `separating/orthofac`
    3921 - `separating/cgmip/allowlocal` (use parameter passed to separation callback instead)
    3922 - `separating/{gomory,strongcg}/maxweightrange`
    3923
    3924### New parameters
    3925
    3926- `conflict/prefinfproof` (prefer infeasibility proof to boundexceeding proof)
    3927- `conflict/sepaaltproofs`
    3928- `constraints/indicator/maxsepanonviolated` to stop separation after separation of non violated cuts
    3929- `constraints/orbisack/coverseparation` (whether orbisack cover inequalities should be separated)
    3930- `constraints/orbisack/orbiSeparation` (whether facet defining inequalities for orbisack should be separated)
    3931- `constraints/orbisack/coeffbound` (maximal value of coefficients in orbisack facet inequalities)
    3932- `constraints/orbisack/checkpporbisack` (check whether orbisacks can be strengthened by packing/partitioning constraints)
    3933- `constraints/orbisack/checkalwaysfeas` (whether conscheck returns always `SCIP_FEASIBLE`)
    3934- `constraints/orbitope/checkpporbitope` (check packing/partitioning orbitopes)
    3935- `constraints/orbitope/sepafullorbitope` (separate full orbitopes)
    3936- `constraints/orbitope/checkalwaysfeas` (whether conscheck returns always `SCIP_FEASIBLE`)
    3937- `constraints/quadratic/{usebilinineqbranch,minscorebilinterms,bilinineqmaxseparounds}`
    3938- `constraints/quadratic/disaggrmergemethod` to change the strategy of how to merge independent blocks of quadratic constraints
    3939- `constraints/quadratic/mincurvcollectbilinterms` to change the minimal curvature of constraints
    3940 to be considered when returning bilinear terms to other plugins
    3941- `constraints/quadratic/binreformbinaryonly` to disable reformulation of products of binary and non-binary variables
    3942- `constraints/symresack/ppsymresack` (check whether symresacks can be strengthend by packing/partitining constraints)
    3943- `constraints/symresack/checkalwaysfeas` (whether conscheck returns always `SCIP_FEASIBLE`)
    3944- `expbackoff` to all separators which increases the frequency exponentially over the depth in the tree
    3945- `heuristics/completesol/{beforepresol,maxlpiter,maxcontvars}`
    3946- `heuristics/{clique,vbounds}/maxbacktracks` to limit the number of backtracks in the fix-and-propagate phase
    3947- `heuristics/{clique,vbounds}/uselockfixings` to enable fixing of additional variables based on variable locks
    3948- `heuristics/vbounds/{feasvariant,tightenvariant}` to specify the fixing variants used by the vbounds heuristic
    3949- `lp/refactorinterval` to change the refactorization interval of the LP solver
    3950- `misc/debugsol` to specify a debug solution that should be checked during the solve
    3951- `misc/usesymmetry` to determine whether symmetry handling should be used
    3952- `presolving/symbreak/conssaddlp` (whether symmetry handling inequalities should be added to the LP)
    3953- `presolving/symbreak/addsymresacks` (whether symresacks should be used to handle symmetries)
    3954- `presolving/symbreak/computeorbits` (whether symmetry orbits should be computed)
    3955- `presolving/symbreak/detectorbitopes` (whether it should be checked if some symmetries can be handled by orbitopes)
    3956- `presolving/symmetry/computepresolved` (Whether symmetries are computed after presolving)
    3957- `presolving/symmetry/maxgenerators` (maximal number of generators generated by symmetry detection)
    3958- `presolving/symmetry/checksymmetries` (whether validity of computed symmetries should be verified)
    3959- `propagating/obbt/{itlimitfactorbilin,minnonconvexity,createbilinineqs}`
    3960- `propagating/vbounds/minnewcliques` to specify the minimum number of new cliques to trigger another clique table analysis
    3961- `propagating/vbounds/{maxcliquesmedium,maxcliquesexhaustive}` to limit the number of cliques relative to the
    3962 number of binary variable for performing clique table analysis
    3963- `separating/maxincrounds`
    3964- `separating/maxlocalbounddist`, `separating/maxcoefratio` and `separating/intsupportfac`
    3965- if PaPILO >= 2.1: `presolving/milp/maxbadgesizepar` to limit the maximal badge size if PaPILO is called in parallel mode
    3966- if PaPILO >= 2.1: `presolving/milp/maxbadgesizeseq` to limit the maximal badge size if PaPILO is called in sequential mode
    3967
    3968### Data structures
    3969
    3970- new type `SCIP_Shortbool` (equal to uint8_t) for storing Boolean values in a more compact manner
    3971- new disjoint set data structure `SCIP_DISJOINTSET` to incrementally update connectedness information for a graph on nodes {0,...,n-1}
    3972- new red black tree data structure defined in `src/scip/rbtree.{c,h}`
    3973- new object `SCIP_LINCONSSTATS`, see type_cons.h, to work with linear constraint classification through the C API
    3974- added new type `SCIP_TABLE` together with callbacks to output SCIP statistics
    3975
    3976Unit tests
    3977----------
    3978
    3979- added several tests for the LP interface
    3980- added tests that cover nonempty linear constraint classification types
    3981- added tests for the double double arithmetic, the new red black tree data structure, the nlpi, obbt, interval arithmetics,
    3982 symmetry computation, objective function changes in probing, computing envelopes of bilinear function, relaxation enforcement
    3983
    3984Build system
    3985------------
    3986
    3987- added interface to the NLP solver WORHP; set `WORHP=true` in order to link to WORHP
    3988- added interface to the NLP solver FilterSQP; set `FILTERSQP=true` in order to link to FilterSQP
    3989
    3990### Cmake
    3991
    3992- added support for sanitizers in debug mode and options SANITIZE_ADDRESS, SANITIZE_MEMORY, SANITIZE_UNDEFINED, SANITIZE_THREAD
    3993- added option SYM to specify which graph automorphism package (bliss, none) should be used, if available
    3994- disable non-standard compliant floating point optimizations in combination with intel compilers
    3995- improve Visual Studio compilation
    3996- only accept IPOPT version 3.12.0 or higher
    3997- preserve correct rpath in library (e.g. path to libipopt) when installing
    3998
    3999### Makefile
    4000
    4001- new flag `DEBUGSOL={true,false}` to enable checks against a user given debug solution
    4002- added flag SYM to specify which graph automorphism package (bliss, none) should be used
    4003- default value for ZIMPL in the Makefile is now `false`
    4004
    4005Fixed bugs
    4006----------
    4007
    4008- fix wrong statistic display of diving leaf solutions
    4009- fixed order of SCIPcalcCliquePartition() in corner case where no cliques are available
    4010- fix treatment of infinite lower bound in proximity objective cutoff
    4011- fixed minor issue in expression graph simplification
    4012
    4013- Separator:
    4014 - fix linear knapsack relaxation during separation if a binary variable does not have a solution value in [0,1].
    4015 - fixed potential ressource leaks in SCIPsolveLinearProb(), expr.c, sepa_eccuts, cons_cumulative.c, cons_nonlinear.c
    4016 - fixed bug in cons_orbitope.c, where wrong terminating index in separation of SCIs was used
    4017 - fixed wrong mapping of permuted basis indices in gomory separator
    4018 - fixed integer objective separator for objective scales < 1
    4019
    4020- Presolver:
    4021 - fixed numerical issues in boundshift presolver when aggregating integer variables
    4022 - fixed aggregation of variables in boundshift presolver that contain large variable bounds
    4023
    4024- Heuristic:
    4025 - fixed bug in feasibility pump heuristic when switching on the `usefp20` parameter
    4026 - fixed handling of LOOSE variables in locks heuristic
    4027 - fixed creation of conflicts in clique heuristic for incomplete LPs
    4028
    4029- Constraints:
    4030 - fixed bug in mps reader. Reader now prints `OBJSENSE` section and tries to generate unique names of constraints
    4031 - fixed upgrade to a varbound constraint if abspower constraint contains a multi-aggregated variable
    4032 - fixed several bugs related to hashing of constraints/rows in cutpool.c and cons_linear.c
    4033 - fixed registration of almost fixed nonlinear variables in abspower constraints
    4034
    4035- Propagator:
    4036 - fixed releasing of variables in the genvbounds propagator in case the problem could be solved during presolving of a restart
    4037 - fixed numerical issues in bound widening of variable bound constraint handler and vbound propagator during conflict analysis
    4038
    4039@page RN4 Release notes for SCIP 4
    4040
    4041@section RN401 SCIP 4.0.1
    4042*************************
    4043
    4044Features
    4045--------
    4046
    4047- added parsing functionality to cardinality constraint handler for CIP format
    4048- allow to relax objective limit in reoptimization in presolved stage
    4049- suppress excessive printing about numerical troubles in LP on default verblevel (high)
    4050
    4051Performance improvements
    4052------------------------
    4053
    4054- only accept passed improving solutions in heur_indicator
    4055- add and use RESTRICT macro for some pointers
    4056- sorting of parents and children for some expression types is now independent of memory layout
    4057
    4058- Constraints:
    4059 - widened a bottleneck in simplifying long signomial sums in a nonlinear constraint
    4060 - unified and extended code that improves numerics of cuts generated by nonlinear constraint handlers
    4061
    4062- Separation:
    4063 - stop separation in cons_indicator after maxsepanonviolated many non violated separated cuts
    4064 - improve choice of variable to enter support in separation of cons_indicator
    4065
    4066Interface changes
    4067-----------------
    4068
    4069### New API functions
    4070
    4071- SCIPvalidateSolve() to compare solving result with an external primal and dual reference value
    4072- SCIPisObjChangedProbing() to check whether the objective function has changed during probing mode
    4073- SCIPgetDualSolVal() to get the dual solution value of a constraint
    4074- SCIPisLPPrimalReliable() and SCIPisLPDualReliable() to check whether the current primal / dual LP solution
    4075 were successfully checked for feasibility
    4076
    4077### Command line interface
    4078
    4079- New option in the interactive shell to validate the solution against an external primal and dual reference value
    4080- added command line option `-o` and command `validatesolve` in interactive shell
    4081 to validate the solution against an external primal and dual reference value.
    4082
    4083### Interfaces to external software
    4084
    4085- Updated and new interfaces to Mosek 8.1, GAMS and Gurobi
    4086- new LP interface to Glop (Google OR tools); CMake only
    4087
    4088### Changed parameters
    4089
    4090- renamed parameter `heuristics/completesol/maxunkownrate` to `heuristics/completesol/maxunknownrate`
    4091
    4092Testing
    4093-------
    4094
    4095- add options to make test target (see Makefile section)
    4096
    4097Build system
    4098------------
    4099
    4100### Cmake
    4101
    4102- New CMake build system alongside the usual Makefile setup
    4103
    4104### Makefile
    4105
    4106- added make options for specifying EXECUTABLE and OUTPUTDIR variables for the make test target
    4107
    4108Fixed bugs
    4109----------
    4110
    4111- fixed unintended behavior of interrupt signal handler inside SCIP copies
    4112- fixed uninitialized values in SCIP's digraph data structure after calling SCIPdigraphResize()
    4113- fixed issue related to SCIPcreateFiniteSolCopy() not being able to remove all infinite fixings
    4114- fixed issue in SCIPcopyLimits() w.r.t. soft time limit
    4115- fixed bug in dynamic resizing of hashtables and hashmaps
    4116- added workaround for bug in primal simplex of cplex 12.7.1.0 occuring when attempting to solve LPs without rows without presolving
    4117- fixed bug in binpacking example that might have led to doing the same branching several times
    4118- fixed memory issue in binpacking example
    4119- in GAMS writer, forbid also various parenthesis characters in gams symbol names
    4120- added missing definition of `SCIP_UNUSED` in memory.h if def.h is not included
    4121- treat reopt bugs: Avoid numerical problems with changing objective; fix check for changed objective
    4122- fixed reading issue in mps reader: integer variables fixed to 0 or 1 are treated as binaries now,
    4123 allowing to use them as indicator variables
    4124- afternode heuristics are now called even if the node limit was reached and the solving process will be stopped
    4125 after the current node
    4126- fixed bug when activating probing mode with a non-empty separation storage
    4127
    4128- LP interfaces:
    4129 - fixed guard against using old Gurobi versions in lpi_grb.c: Gurobi 7.5 was not permitted
    4130 - fixed wrong handling of unboundedness status in lpi_grb.c
    4131 - fixed wrong handling of row basis status in lpi_grb.c
    4132
    4133- Propagator:
    4134 - fixed bug in shift and propagate--variable information with a negation transformation is correctly reset after backtracking
    4135 - fixed bug in genvbounds propagator when applying a restart after the root node
    4136
    4137- Constraints:
    4138 - fixed bug in varbound coefficient tightening: if a varbound constraint only contained one variable afterwards,
    4139 it may have been deleted without applying the induced bound, if the change was too small, this is now forced
    4140 - fixed potential wrong locks update after a varbound constraint became redundant in coefficient tightening
    4141 - fixed potentially wrong cleanup of fixed variables in nonlinear constraint handler
    4142 - fixed memory leak in OSiL reader when using SOS constraints
    4143
    4144- Solution:
    4145 - improved handling of infinite values in a primal solution in quadratic and nonlinear constraints
    4146 - fixed bug in computing violation and cut for certain nonlinear constraints when LP solution is slightly out of bounds
    4147 - fixed debug solution check that appeared in probing mode when the objective function has changed
    4148 - relaxed a too strong assert concerning solutions close to the objective limit
    4149
    4150@section RN400 SCIP 4.0.0
    4151*************************
    4152
    4153Features
    4154--------
    4155
    4156- Introduced support for partial or infeasible user solutions, which SCIP tries to complete/repair heuristically
    4157- implemented linear time methods for (weighted) median selection for joint arrays of various types
    4158- added adaptive solving behavior of SCIP based on solving phases and heuristic transitions, if enabled via `solvingphases/enabled`
    4159- can now solve relaxations within probing
    4160- in case of multiple relaxators the best solution is saved instead of the last one
    4161- added write callback for reader_bnd
    4162- added possibility to use a reference value for advanced analysis of the tree search. If a finite reference value
    4163 (an objective value in original objective space) is passed via misc/referencevalue, SCIP keeps track of the
    4164 number of nodes exceeding the reference value and the number of early backtracks -- path switches in the tree when
    4165 a child node with lower bound smaller than the reference value was available.
    4166- added reading capabilities for partial solutions with extension *.mst
    4167- new global shift off all random seeds (randomization/randomseedshift) and unification of all existing random seeds
    4168- use new macros SCIPdebugMsg(), SCIPsetDebugMsg(), SCIPstatDebugMsg() at all places where it makes sense
    4169- new random number generator in pub_misc.h
    4170- add check whether variables have been released when freeing SCIP
    4171- a print callback can now be specified for user expressions
    4172
    4173- LP Solutions:
    4174 - will now enforce relaxation solution instead of lp or pseudosolution if lowerbound is better and the whole lp is included in the relaxation
    4175 - new feature solution polishing to improve integrality of LP solutions
    4176
    4177- Constraints:
    4178 - new constraint handler for cardinality constraints
    4179 - added interval-evaluation of sine and cosine
    4180 - allow to create constraints of constraint handlers that don't need constraints
    4181 - New constraint handlers cardinality and components
    4182
    4183- Conflicts:
    4184 - implement a storage for conflicts to have more control over active conflicts
    4185 - Improved conflict analysis through central conflict pool and dual ray analysis for primal infeasible LPs; can now analyze dual
    4186 unbounded rays of primal infeasible LPs
    4187
    4188- Presolving:
    4189 - New presolvers that disaggregate SOC constraints and reformulate QP's by adding KKT conditions
    4190 - new presolving step for variables contained in a single quadratic constraint with proper square coefficients
    4191 - add new presolving step to disaggregate second order cone constraints
    4192 - new presolving method presol_qpkktref to add the KKT conditions of a QP
    4193 - implemented and extended stuffing presolving in linear constraint handler
    4194 - new components constraint handler which replaces the components presolver; it searches for independent subproblems
    4195 and solves small ones as sub-SCIPs during presolve, larger ones are solved alternatingly during the main solving process
    4196 - new presolving timing FINAL: presolving methods with this timing are only called once after all other presolvers with timings
    4197 FAST, MEDIUM and EXHAUSTIVE are finished; during this timing only reductions are allowed that are self-contained, e.g.,
    4198 fixing all variables and deleting all constraints of an independent component; note that reductions found in this timing
    4199 do not trigger a new presolving round
    4200
    4201- Separation and Cuts:
    4202 - can now separate perspective cuts for indicator constraints
    4203 - add sepa_convexproj, a separator which projects onto convex relaxation and build gradient cuts at the projection
    4204 - add sepa_gauge, a separator which computes an interior point of a convex relaxation and performs a binary search in the segment joining
    4205 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
    4206 - changed handling of coupling constraints in cons_indicator; the cuts will not be added to the pool, but are separated by default
    4207 - concurrent solving mode that allows to run multiple SCIP instances, that share solutions and global variable bounds, in parallel
    4208 - Revised pseudo random number generation and introduced central random seed for all plugins
    4209
    4210- Heuristics:
    4211 - new Graph induced neighborhood search (GINS) primal heuristic that uses neighborhoods
    4212 based on distances in the variable constraint connectivity graph.
    4213 In addition, the heuristic supports a rolling horizon-like procedure to solve auxiliary problems
    4214 for neighborhoods with increasing distance from the starting neighborhood.
    4215 - new primal heuristic LP face that tries to find an integer solution inside the optimal LP face.
    4216 - new heuristic that tries to complete partial solutions
    4217 - the subnlp heuristic now gives ownership of a found solution to the heuristic that constructed the starting point, if any;
    4218 as a consequence, MIP heuristics may now be shown more frequently for having found a solution when solving MINLPs, even
    4219 though the solutions required an additional NLP solve
    4220 - new multistart heuristic for NLPs
    4221
    4222- Propagator:
    4223 - add prop_nlobbt, a nonlinear optimization-based bound propagator solving two convex NLP relaxations for each variable
    4224 - nodes can now be postponed; currently, this can only be triggered by BEFORELP propagation callbacks
    4225
    4226- Statistic:
    4227 + Extended statistic output displayable via the interactive shell
    4228 + new statistic computed: `Root LP Estimate` that shows the root LP best-estimate with every pseudo-cost update
    4229 + added leaf statistics about LP objective limit|feasible|infeasible leaves to the statistics output and
    4230 to the callable library: SCIPgetNObjlimLeaves(), SCIPgetNFeasibleLeaves(), SCIPgetNInfeasibleLeaves()
    4231 + next to the number of found solution, also the number of new best solutions is now printed for each heuristic
    4232 (and relaxation solutions) in the statistics in the `Primal Heuristic` section.
    4233
    4234Performance improvements
    4235------------------------
    4236
    4237- Extended the presolving timings by an additional timing FINAL for self-contained reductions
    4238- Randomized tie-breaking in different parts of the code to reduce performance variability
    4239- use connectedness information of the clique table to speed up the clique partitioning algorithm
    4240- knapsack approximation algorithms use linear-time weighted median selection instead of sorting
    4241- improved greedy solution in SCIPsolveKnapsackApproximatelyLT() for the flow cover separation
    4242- reduce performance variability by using random numbers as tie-breaker for external branching candidates
    4243
    4244- Heuristics:
    4245 - adjusted most Large Neighborhood Search heuristics such that they collect their variable fixings first in an array,
    4246 and only create and populate a sub-SCIP if enough variables will be fixed.
    4247 - reduce performance variability by using a small perturbation in the undercover heuristic
    4248 - 1-opt heuristic can now be repeatedly executed as long as new incumbents are found
    4249
    4250- Constraints:
    4251 - Improved and extended stuffing inside of linear constraint handler
    4252 - Changed handling of coupling constraints in cons_indicator
    4253 - SCIP supports constraint compression for problem copies; constraint compression denotes the immediate
    4254 removal of fixed variables from constraint data at creation time to reduce memory requirements.
    4255
    4256- Propagation:
    4257 - rewrote the propagate-and-cut-and-price loop so that successful propagations with DURINGLPLOOP timing, bound changes found by separation,
    4258 and new primal solutions now trigger a new round of node solving, starting with propagation; improved tuning of propagation and heuristic timings
    4259 - tuned propagation methods of several constraint handlers
    4260 - make more use of SCIPmarkConsPropagate() to mark constraints for propagation and improved the internal handling of marked constraints
    4261 - improve propagation of absolute-value expression in the case that the sign of the argument is fixed
    4262
    4263Interface changes
    4264-----------------
    4265
    4266### New and changed callbacks
    4267
    4268- Concurrent SCIP:
    4269 - extended interface to support concurrent solving mode
    4270
    4271- Constraint Handlers:
    4272 - new optional callback `CONSENFORELAX` to enforce a relaxation solution, see \ref CONS
    4273 - `CONSINITLP` callback now has a new parameter `infeasible`, which is a pointer to store whether infeasibility
    4274 was detected while building the initial LP relaxation
    4275
    4276### Deleted and changed API functions
    4277
    4278- setting a parameter to a non-valid value now produces an error message instead of a warning
    4279- bound reader uses angle bracket around variable names
    4280- the parameters of SCIPlpiChgObj(), SCIPlpiSetBase(), SCIPlpiSetState(), SCIPlpiSetNorms() have been declared as const
    4281- SCIPapplyHeurSubNlp() can now return the solution found by the sub-NLP heuristic
    4282
    4283- Random:
    4284 - methods SCIPrandomGetInt() substitutes SCIPgetRandomInt() (marked to be deprecated)
    4285 - methods SCIPrandomGetReal() substitutes SCIPgetRandomReal() (marked to be deprecated)
    4286 - methods SCIPrandomPermuteArray() substitutes SCIPpermuteRandomArray() (marked to be deprecated)
    4287 - methods SCIPrandomPermuteIntArray() substitutes SCIPpermuteRandomIntArray() (marked to be deprecated)
    4288 - method SCIPrandomGetSubset() substitutes SCIPgetRandomSubset() (marked to be deprecated)
    4289
    4290- Conflict Analysis:
    4291 - added parameters `conftype` and `iscutoffinvolved` to SCIPinitConflictAnalysis()
    4292 that indicate the type of the conflict and whether the current cutoff bound is used or not
    4293
    4294- Constraint Handlers:
    4295 - added parameter `infeasible` to SCIPinitlpCons()
    4296
    4297- Copying:
    4298 - added parameters `fixedvars`, `fixedvals`, `nfixedvars` to SCIPcopyVars()
    4299 - added parameters `fixedvars`, `fixedvals`, `nfixedvars` to SCIPcopyOrigVars()
    4300 - renamed parameter `success` to `valid` in SCIPgetConsCopy()
    4301
    4302- Hashmap and Hashtable:
    4303 - removed function SCIPcalcHashtableSize() since not required anymore for `SCIP_HASHTABLE` and `SCIP_HASHMAP`
    4304 - based on the initial size `SCIP_HASHTABLE` and `SCIP_HASHMAP` choose an appropriate size internally to allow insertion of that
    4305 many elements without resizing
    4306 - `SCIP_MULTIHASH` behaves like the old `SCIP_HASHTABLE` and SCIPcalcMultihashSize() should be used as replacement for
    4307 SCIPcalcHashtableSize()
    4308
    4309- Nonlinear Relaxation:
    4310 - added parameter `curvature` to SCIPcreateNlRow()
    4311
    4312- Parameters:
    4313 - the following new methods return a bool indicating whether the given value is valid for the parameter instead of printing a warning
    4314 message and returning an error code if the value is invalid
    4315 - renamed method SCIPcheckBoolParam() to SCIPisBoolParamValid()
    4316 - renamed method SCIPcheckLongintParam() to SCIPisLongintParamValid()
    4317 - renamed method SCIPcheckCharParam() to SCIPisCharParamValid()
    4318 - renamed method SCIPcheckStringParam() to SCIPisStringParamValid()
    4319 - renamed method SCIPcheckRealParam() to SCIPisRealParamValid()
    4320 - 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
    4321 and returning an error code if the value is invalid
    4322 - rename SCIPparamCheckBool() to SCIPparamIsValidBool()
    4323 - rename SCIPparamCheckString() to SCIPparamIsValidString()
    4324 - rename SCIPparamCheckChar() to SCIPparamIsValidChar()
    4325 - rename SCIPparamCheckLongint() to SCIPparamIsValidLongint()
    4326
    4327- Primal Heuristics:
    4328 - added parameter `initialseed` to SCIPcreateDiveset()
    4329 - introduced new type `SCIP_HEURTIMING` for primal heuristic timing masks
    4330 - changed type of parameter `timingmask` from unsigned int to `SCIP_HEURTIMING` in SCIPincludeHeur(), SCIPincludeHeurBasic()
    4331
    4332- Relaxators:
    4333 - new parameter `includeslp` for SCIPincludeRelax() and SCIPincludeRelaxBasic()
    4334 to indicate whether relaxation includes all linear rows and can be enforced
    4335
    4336- Reoptimization:
    4337 - rename method SCIPgetReopSolsRun() to SCIPgetReoptSolsRun()
    4338
    4339- Solutions:
    4340 - added parameter `completely` to SCIPtrySol(), SCIPtrySolFree(), SCIPcheckSol() to check all constraints when
    4341 printing violations
    4342
    4343- Variables:
    4344 - removed SCIPvarGetLbAtIndex() and added SCIPgetVarLbAtIndex()
    4345 - removed SCIPvarGetUbAtIndex() and added SCIPgetVarUbAtIndex()
    4346 - removed SCIPVarGetBdAtIndex() and added SCIPgetVarBdAtIndex()
    4347 - removed SCIPvarWasFixedAtIndex() and added SCIPgetVarWasFixedAtIndex()
    4348 - Removed method SCIPvarGetNBinImpls()
    4349
    4350### New API functions
    4351
    4352- added functions for concurrent solving mode (see concurrent.h, concsolver.h)
    4353- SCIPcreateNlpiProb(), SCIPupdateNlpiProb() and SCIPaddNlpiProbRows() to create and update a nonlinear relaxation
    4354- SCIPgetNObjlimLeaves(), SCIPgetNFeasibleLeaves(), SCIPgetNInfeasibleLeaves() for statistics output
    4355 about LP objective leaves
    4356- SCIPcheckCopyLimits() which can be used to check that enough time and memory is left to run a sub-SCIP after
    4357 subtracting time and memory used by the main-SCIP and SCIPcopyLimits() which copies these limits accordingly and disables
    4358 all other limits (need to be set by the plugin, if needed)
    4359- SCIPcopyLargeNeighborhoodSearch() in heuristics.h that supports compressed copying and two kinds of problem copy: the MIP-relaxation or
    4360 a 1-1 problem copy (by copying the constraints and not the LP relaxation)
    4361- SCIPsolveProbingRelax() to solve a relaxation within probing
    4362- SCIPgetLastStrongbranchingLPSolstat() to query the LP statuses after strong branching on a variable
    4363- SCIPinitializeRandomSeed()
    4364- SCIPswapReals() to swap two real values
    4365- SCIPgetNNZs() to get the number of active non-zeros in the transformed/presolved problem
    4366
    4367- Debug Messages:
    4368 - SCIPprintDebugMessage(), SCIPsetPrintDebugMessage(), SCIPstatPrintDebugMessage() that output debug messages and also print the
    4369 subscip depth; the first two output via the message handler; also added macros SCIPdebugMsg(), SCIPsetDebugMsg(), SCIPstatDebugMsg()
    4370 - SCIPdebugMsgPrint()/SCIPsetDebugMsgPrint() that output a message without `[debug]` prefix via the message handler (compare SCIPdebugPrintf())
    4371
    4372- Solution:
    4373 - SCIPisDualSolAvailable() to query the dual solution availability
    4374 - SCIPlpiSetIntegralityInformation() to improve SoPlex' solution polishing
    4375
    4376- Constraints:
    4377 - library methods SCIPcopyConsCompression(), SCIPcopyOrigConsCompression() that accept an array of variables that are immediately
    4378 fixed in the copy. Alternatively, local instead of global bounds can be used for compression.
    4379 - library methods SCIPenableConsCompression(), SCIPisConsCompressionEnabled(), SCIPcopyConsCompression(), SCIPcopyOrigConsCompression()
    4380 - SCIPgetIntVarXor() to access integer variable of XOR constraints
    4381 - SCIPcreateConsCardinality() to create a cardinality constraint
    4382 - SCIPcreateConsBasicCardinality() to create a basic cardinality constraint
    4383 - SCIPchgCardvalCardinality() to changes cardinality value of cardinality constraint (i.e., right hand side of cardinality constraint)
    4384 - SCIPaddVarCardinality() to add a variable to a cardinality constraint
    4385 - SCIPappendVarCardinality() to append a variable to a cardinality constraint
    4386 - SCIPgetNVarsCardinality() to get the number of variables in a cardinality constraint
    4387 - SCIPgetVarsCardinality() to get the array of variables in a cardinality constraint
    4388 - SCIPgetCardvalCardinality() to get the cardinality value of a cardinality constraint (i.e., right hand side of cardinality constraint)
    4389 - SCIPgetWeightsCardinality() to get the array of weights of a cardinality constraint
    4390 - SCIPgetLinvarMay{Decrease,Increase}Quadratic() to get index of a variable in linear term of quadratic constraint that may be decreased
    4391 without making any other constraint infeasible
    4392
    4393- Parameters:
    4394 - add SCIPparamIsValidInt() and SCIPparamIsValidReal() to param.c/h
    4395 - add missing functions SCIPisIntParamValid() and SCIPisRealParamValid() to scip.c/h
    4396
    4397### Command line interface
    4398
    4399- new command line parameter `-v` to print detailed build options
    4400
    4401### Interfaces to external software
    4402
    4403- Interfaces for Python and Java are, among others, now available via http://www.github.com/scip-interfaces
    4404- Revised documentation of the SCIP C-API to group methods more comprehensively by topics
    4405- dropped support for Ipopt < 3.11
    4406- Additional I/O-functionalities for debugging and logging in SCIP and in the AMPL interface
    4407- updated CppAD to 20160000
    4408- for users of the ampl interface, the display/logfile option has been added to set the name of a
    4409 file to write the SCIP log to (additionally to stdout)
    4410
    4411- LP Interfaces:
    4412 - SCIP uses the lpi_spx2 interface by default
    4413 - Improved Gurobi interface that can handle ranged rows (requires Gurobi >= 7.0.2)
    4414 - the CPLEX LPI now also compiles with CPLEX 12.7.0.0
    4415
    4416### Changed parameters
    4417
    4418- 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
    4419- changed value of parameter `separating/clique/cliquedensity` to 0.0 such that the separator always constructs a dense clique table
    4420 which proved to be faster on the benchmarks MMM and stableset.
    4421- parameters `misc/permutationseed`, `misc/permuteconss` and `misc/permutevars` changed to `randomization/permutationseed`,
    4422 `randomization/permuteconss` and `randomization/permutevars`
    4423- parameters `conflict/useinflp` and `conflict/useboundlp` are now of type char (before bool)
    4424- all parameters of the components presolver (starting with `presolving/components/`) are now parameters of the components
    4425 constraint handler (starting with `constraints/components/`)
    4426
    4427### New parameters
    4428
    4429- class randomization
    4430- `branching/sumadjustweight` to adjust branching scores by adding a sum epsilon in order to keep score differences
    4431 near zero, which are otherwise completely disregarded (they are adjusted to at least sum epsilon)
    4432- `concurrent/∗ ` and `parallel/∗ ` for configuring the concurrent solving mode
    4433- `constraints/cardinality/branchbalanced` to decide whether to use a balanced branching scheme in the enforcing of cardinality
    4434 constraints
    4435- `constraints/cardinality/balanceddepth` to set the maximal depth until balanced branching is turned off
    4436- `constraints/cardinality/balancedcutoff` to determine that balanced branching is only used if the branching cut off value
    4437 w.r.t. the current LP solution is greater than a given value
    4438- `constraints/indicator/sepaperspective` to turn on separation of perspective cuts for indicator constraints
    4439- `constraints/indicator/sepapersplocal` to decide whether local cuts can be used for perspective cuts for indicator constraints
    4440- `constraints/quadratic/projectedcuts` to enable convex quadratics to generate gradients cuts at the
    4441 projection of the point onto the region described by the constraint, which is supporting
    4442- `lp/solutionpolishing` to enable LP polishing only at the root LP or always
    4443- `misc/referencevalue` to pass a reference value for further analysis of the tree search, see also in `features`
    4444- `presolving/qpkktref/addkktbinary` to allow the presence of binary variables for the KKT update
    4445- `presolving/qpkktref/updatequadbounded` to add the KKT conditions to QPs only if all variables are bounded
    4446- `presolving/qpkktref/updatequadindef` to add the KKT conditions to QPs only if the quadratic matrix is indefinite
    4447- `randomization/lpseed` to set the initial seed of the LP solver
    4448- `solvingphases/enabled` to activate adaptive behavior during the solution process; several further parameters
    4449 in the solvingphases-section to control how to switch the parameters and whether a restart should be performed between the phases.
    4450
    4451### Data structures
    4452
    4453- new `SCIP_REGRESSION` data structure in pub_misc.h to incrementally compute a best-fit line through pairs of observations
    4454- add maximum branch-and-bound tree depth constant `SCIP_MAXTREEDEPTH` (replaces SCIPgetDepthLimit() and SCIPtreeGetDepthLimit())
    4455- new files heuristics.c/heuristics.h to collect methods that are frequently used by heuristics
    4456- merged dive.c/pub_dive.h with heuristics.c/heuristics.h, removed dive.c/pub_dive.h
    4457- separated header pub_misc.h from repeated methods for sorting and (weighted) median selection;
    4458 those are also available in separate headers pub_misc_sort.h
    4459 and pub_misc_select.h, but included into pub_misc.h
    4460
    4461Unit tests
    4462----------
    4463
    4464- New unit testing system built on the Criterion framework
    4465
    4466Build system
    4467------------
    4468
    4469### Makefile
    4470
    4471- All makefiles in `examples/` and `applications/` have been updated.
    4472- `make.project` defines a variable `SCIP_VERSION` containing the SCIP version number
    4473- revise sub-makefiles for MSVC on MinGW
    4474- make shared libraries aware of their dependencies
    4475- sub-makefile for CrayXC systems added
    4476
    4477- Places:
    4478 - All objective files are now placed in `obj/static` or `obj/shared`, depending on `SHARED=false` or `SHARED=true`, respectively.
    4479 - All internal and external libraries are placed in `lib/static` and `lib/shared`, the include files are in `lib/include`.
    4480 - The binaries now contain an rpath to the SCIP directory, such that shared libraries are found.
    4481
    4482- Linking:
    4483 - link binary to shared libs when compiling with `SHARED=true`
    4484 - External projects (including make.project) can use the makefile variable LINKCXXSCIPALL or LINKCCSCIPALL to link all SCIP libraries.
    4485 - Building with `SHARED=true` automatically generates the combined library libscipsolver.so for easier linking
    4486
    4487- Targets:
    4488 - Running `make help` lists all makefile options.
    4489 - `make install` copies now all header files
    4490 - new target `dll` to build Windows dlls with MSVC
    4491 - rename `dll` target to `windowslib`
    4492
    4493Fixed bugs
    4494----------
    4495
    4496- fixed bug in event system: bound change events of the new focus node must be processed, even if the bound
    4497 is the same as at the last focus node
    4498- avoid numerically unstable (multi-)aggregations
    4499- fixed bug in XML reader concerning comments
    4500- the AMPL interface now writes a solve status (solve_result_num) into the .sol file
    4501- in the cmpres.awk (allcmpres.sh) output, the counts in the time column are now with respect to the
    4502 whole set of processed instances (as with fail and solv), while before it was with respect to the
    4503 set of instances where no solver failed (eval set); thus, now proc = fail + time + solv.
    4504- writing of solutions or parameters to a file now works also with the message handler set to quiet
    4505- ignore lower and upper bound tightenigs beyond +/-infinity during solving
    4506- time limit of SCIP-infinity is converted to LPI-infinity when setting it
    4507- fix LP activity of a row that has been modified
    4508
    4509- Propagation:
    4510 - fixed possible segmentation fault in genvbounds propagator
    4511 - fixed bug with sorting of propagators in presolving: the order can be changed by calling probing; thus, there is a copy of the
    4512 propagators, which is sorted by presolving priority
    4513 - added missing capturing and releasing mechanism in genvbounds propagator
    4514 - fix wrong propagation of product expressions
    4515
    4516- Constraints:
    4517 - fixed wrong representation of SOC constraints in NLP
    4518 - fixed a few issues within redundant constraint detection of (specialized) linear constraint handlers
    4519 - fixed issue in reader_opb concerning writing of fixed variables contained in no constraints
    4520
    4521- Memory:
    4522 - fixed memory bug in `SCIP_DIGRAPH`
    4523 - improved counting of memory consumption by using more block memory and counting all allocated memory
    4524 - fix memory leaks in TSP example
    4525 - return `SCIP_ERROR` when a memory exception is caught in SoPlex (was `SCIP_LPERROR`)
    4526 - fixed memory leak in OSiL reader
    4527
    4528- Objective:
    4529 - fixed bug while changing the objective value of an original value after transforming the problem
    4530 - fixed bug with solutions from previous runs not satisfying an objective limit
    4531 - SCIPisObjIntegral() now works correctly in `SCIP_STAGE_PROBLEM`
    4532
    4533- Heuristics:
    4534 - fixed two bugs in heur_indicator: use improvesols parameter now and update pointer to indicator constraint handler
    4535 - fix wrong NLP representation of logic-or constraints in the dual value heuristic
    4536 - correct handling of implicit integer variables with fractional solution value in simplerounding heuristic
    4537 - fixed bug in heur_octane with uninitialized ray direction
    4538
    4539@page RN3_2 Release notes for SCIP 3.2
    4540
    4541@section RN321 SCIP 3.2.1
    4542*************************
    4543
    4544Features
    4545--------
    4546
    4547- new `force` parameter in (root)redcost propagator to run the propagator also with active pricers
    4548
    4549Performance improvements
    4550------------------------
    4551
    4552- do not transfer solutions to original space, if SCIP is being freed
    4553- modified implication graph analysis of SOS1 constraint handler; a new component allows to deduce zero fixings of variables
    4554- made SOS1 constraint handler specific diving selection rule faster for the case that the SOS1 constraints do not overlap
    4555- improved disjunctive cuts by the `monoidal cut strengthening` procedure of Balas and Jeroslow
    4556
    4557Examples and applications
    4558-------------------------
    4559
    4560- several improvements of SCIP-Jack (STP application): extended presolving for STP variants, STP-specific branching
    4561 rule, dual heuristic to generate initial LP relaxation
    4562 SCIP-Jack is now competitive with problem specific state-of-the-art solvers on several well-known STP variants,
    4563 e.g., the (rooted) prize-collecting Steiner tree problem.
    4564- MultiObjective application renamed to PolySCIP; several improvements: better command line argument processing,
    4565 overhaul of much of the source code, installation via CMake
    4566
    4567Interface changes
    4568-----------------
    4569
    4570- made debug solution functionality thread safe (see debug.h for further information)
    4571
    4572### Deleted and changed API functions
    4573
    4574- add SCIPcomputeHyperplaneThreePoints() to compute a hyperplane containing three given 3-dimensional points
    4575- SCIPsolveLinearProb() now uses a 1-dimensional matrix representation
    4576
    4577### Command line interface
    4578
    4579- added interactive shell command `display finitesolution` to print solution with infinite fixings removed,
    4580 added reference to that method to `display solution` output if there are infinite fixings
    4581- new interactive shell command `write history` to write the command line history (only when compiled with Readline)
    4582
    4583### Interfaces to external software
    4584
    4585- significantly improved Python interface to support user callbacks as well as linear and quadratic expressions
    4586
    4587### New parameters
    4588
    4589- `constraints/sos1/branchingrule` to decide whether to use neighborhood, bipartite, or SOS1 branching (this parameter
    4590 replaces the old parameters `constraints/sos1/neighbranch`, `constraints/sos1/bipbranch`, and `constraints/sos1/sos1branch`)
    4591- `constraints/sos1/depthimplanalysis` to limit the number of recursive calls of implication graph analysis
    4592- `constraints/sos1/perfimplanalysis` to perform an implication graph analysis to deduce variable fixings and
    4593 additional SOS1 constraints (this parameter replaces the old parameter `constraints/sos1/updateconflpresol`)
    4594- `misc/transsolorig` for transfering transformed solutions to the original space (default: true)
    4595- `propagating/rootredcost/onlybinary` to propagate root reduced costs of binary variables only
    4596
    4597### Data structures
    4598
    4599- renamed MIP matrix structure to `SCIP_MATRIX`
    4600- changed the numeric values for `PRESOLTIMING` flags
    4601
    4602Build system
    4603------------
    4604
    4605### Makefile
    4606
    4607- new target `dll` to build Windows dlls with MSVC
    4608- add new compiling flag OPENSOURCE to allow/forbid the usage of third party software
    4609
    4610Fixed bugs
    4611----------
    4612
    4613- fixed wrong objective sense when copying the original problem
    4614- fixed a bug in merge step of cliques during clean up phase; method did not correctly handle infeasibility in the case of multiple
    4615 variable-negation pairs
    4616- fixed a previously untreated case in the linear cons simplification where coefficients only differ by slightly more than an epsilon
    4617- fixed bug in parsing emphasis parameters which formerly led to completely wrong results
    4618- fixed bug in the computation of the Wilcoxon test
    4619- do not use the relative and absolute gap limit if no primal solution has been found so far
    4620- fixed bug in conflict.c with wrong reset of bounds used
    4621- fixed bug with transferring solutions to new runs (need to recompute objective before checking)
    4622- fixed issue with infinite values when checking cuts for redundancy
    4623- fixed library problems on Windows operating systems
    4624
    4625- Variables:
    4626 - fixed wrong check when computing cuts for factorable quadratic functions bound tightening of a single variable
    4627 - fixed wrong handling of loose variables in OBBT
    4628 - fixed freeing of hash for binary variables
    4629 - fixed bug during the computation of branching points for continuous variables which are almost fixed to +/- SCIPinfinity()
    4630 - treated the case of integer variables as intermediate variables in the process of obtaining the active variable for a
    4631 given binary variable
    4632
    4633- LP:
    4634 - fixed a bug in dive.c that occurred when lpsolvefreq was set to 1; after a cutoff, the solution values of the
    4635 linked LP solution might have become invalid
    4636 - do not analyse an infeasible LP for conflicts during diving mode when LHS/RHS of rows were changed
    4637 - use LPi infinity when reverting bound changes in conflict analysis
    4638
    4639- Heuristics:
    4640 - fixed bug in heur_simplerounding in connection with relaxators
    4641 - fixed bug in feaspump heuristic where last solution candidates were not updated correctly
    4642 - fixed bug with infinite shift values in heur_shifting
    4643 - fixed bug in shiftandpropagate heuristic: the heuristic did not correctly handle intermediate, global bound changes of the selected variable
    4644 after its tentative fixing led to a cutoff.
    4645
    4646- Propagator:
    4647 - (root) reduced cost propagators are not run anymore when doing branch-and-price,
    4648 since they may install upper bounds on variables which might interfere with the
    4649 pricing (they may be enabled again by their force parameters)
    4650 - fixed too hard assertion in pseudoobj propagator
    4651 - fixed a bug in shiftandpropagate where column positions after sorting are now correctly linked to their variables after sorting
    4652 - fixed potential memory leak in genvbound propagator
    4653
    4654- Presolving:
    4655 - fixed inconsistency in knapsack constraint handler data during presolving
    4656 - fixed some problem with reoptimization when the problems are infeasible or have been solved in presolving
    4657 - fixed endless loop in knapsack constraint handler when continuous variables change their types to binary during presolving
    4658 - squares of binary variables might not have been replaced by the binary variable itself in presolve,
    4659 if the variable was originally general integer and only became binary during presolve (due to bound tightening)
    4660 - fixed bug in dive.c avoiding a check of constraints in the presence of indicator constraints
    4661
    4662- Constraints:
    4663 - fixed numerical problems in computation of cuts for bivariate functions in quadratic constraint handler
    4664 - fixed bug in quadratic constraint handler when computing lifted-tangent inequalities
    4665 - fixed bug in nonlinear constraint handler when replacing a violated nonlinear constraint leads to an infinite
    4666 - fixed bug in SOS1 constraint handler with inconsistent data structure after restart
    4667 - fixed wrong handling of negated variables in bound tightening procedure of SOS1 constraint handler
    4668 - fixed bug in simple fixing heuristic of SOS1 constraint handler
    4669 - fixed two bugs in pseudoboolean constraint handler with wrong sorting of and constraints
    4670 - fixed issue: constraints being parallel to objective function (after restart) sometimes led to wrongly stating infeasible
    4671 - fixed bug during coefficient tightening in varbound constraint handler
    4672 - handle cutoffs in cons_indicator detected by infeasible inequalities
    4673 - fixed late change of type of slack variables in cons_indicator, if the bounds are not integral
    4674 - fixed initsol and exitsol of cons_indicator, if problem has already been solved
    4675 - fixed bug in cons_indicator with changing type of slackvariable
    4676
    4677@section RN320 SCIP 3.2.0
    4678*************************
    4679
    4680Features
    4681--------
    4682
    4683- added reoptimization feature for optimization problems with changed objective function or tighter feasible region
    4684- the original problem can now be permuted directly after reading (if `misc/permutationseed` has value >= 0)
    4685- added methods to compute strongly connected components with Tarjan's Algorithm
    4686- added method to propagate implications of SOS1 variables
    4687- convex quadratic contraints can now generate gradient cuts which are supporting to the feasible region
    4688- SoPlex interface can now (re)store dual steepest edge weights
    4689- extended expression parsing to support power, realpower and signpower operators; started support for user-defined operators
    4690 in expression trees/graphs
    4691- possibility to set a soft time limit which becomes active only after the first primal solution was found
    4692- added matrix module for getting access to the internal mixed inter linear problem matrix
    4693- better handling of large values returned by the LP solver
    4694- added more checks to SCIP{alloc,realloc,duplicate}BufferArray() to handle overflows properly
    4695- new plugin for reoptimizing a sequence of optimization problem that differ in the objective function, e.g., sequences arising from
    4696 column generation
    4697- new plugin `compr` for rearranging the search tree, currently this only works on the reoptimization tree
    4698- moved assertions in comparison methods from scip.c to set.c
    4699
    4700- Constraints:
    4701 - we can now upgrade quadratic constraints with one bilinear term to SOC constraints
    4702 - we can also upgrade general quadratic constraints with a single negative eigenvalue to SOC constraints
    4703
    4704- Branching:
    4705 - tighter reliability notions introduced for reliability branching, based on pseudo-cost relative errors
    4706 and comparing candidates with the best pseudo-candidate using a 2-sample student-T test. These methods
    4707 are used in disjunction with the existing reliability notion that uses a fixed number as reliability
    4708 threshold for every variable before turning off strong-branching. This means, the classical method
    4709 must be turned off by setting parameters minreliable and maxreliable to 0. The behavior is
    4710 controlled through several parameters.
    4711 - new distribution branching rule to base decisions on row activity (normal) distribution over domain space
    4712 - can now output information for BAK: Branch-and-bound Analysis Kit
    4713 - new score in hybrid reliability pseudocost branching that prefers nonlinear variables when solving MINLPs
    4714 - new branching rule multaggr which allows to branch on general disjunctions defined by fractional multi-aggregated variables
    4715 - new branching rules for SOS1 constraints for branching on a neighborhood or a complete bipartite subgraph of
    4716 the conflict graph. In addition to variable domain fixings, it is sometimes also possible to add complementarity
    4717 constraints to the branching nodes. This results in a nonstatic conflict graph, which may change dynamically
    4718 with every branching node.
    4719 - new branching rule nodereopt to reconstruct the tree after changing the objective function
    4720
    4721- Reader:
    4722 - the MPS reader can now read semi-integer variables, they are handled by creating bound disjunction constraints
    4723 - the MPS reader can now handle objective constants given as (the negation of) the RHS of the objective row
    4724
    4725- Separation:
    4726 - obbt propagator applies now additional separation and propagation in order to learn stronger and more bound tightenings
    4727 - extended probing mode to allow separation and objective coefficient changes
    4728 - improved separation procedure of SOS1 constraint handler, including bound (clique) cuts and implied bound cuts
    4729 - new disjunctive cut separator for SOS1 constraints
    4730 - new edge-concave cut separator for quadratic constraints
    4731
    4732- Presolver:
    4733 - Improved coordination of presolvers. There are three timings for presolvers now, FAST, MEDIUM and EXHAUSTIVE.
    4734 Each presolving callback can specify one or more of these timings in which it will be called later.
    4735 Within a presolving method, the current timing can be checked and the algorithms to be performed selected based on
    4736 the timing. In one presolving round, first all presolving methods with timing FAST are called, sorted by priority.
    4737 If they found enough reductions, a new round is started, otherwise, all presolving methods with timing MEDIUM are
    4738 called. Again, with enough reductions, a new presolving round is started, too few reductions lead to running
    4739 the EXHAUSTIVE presolvers. Similar to the delay concept used before, we are not neccessarily running all EXHAUSTIVE
    4740 presolvers but stop as soon as one of them found enough reductions, starting a new presolving round immediately.
    4741 - new presolving components for SOS1 constraints, including bound tightening and clique extension
    4742 - new presolver tworowbnd for improving variable bounds and detecting redundant constraints added
    4743 - new presolver dualagg for aggregating single up-/downlocked variables by a binary variable added
    4744 - new presolver implfree for aggregating implied free variables added
    4745 - new presolver redvub which can detect redundant variable upper bound constraints added
    4746 - new presolver stuffing for fixing of singleton continuous variables added
    4747
    4748- Heuristic:
    4749 - improved clique and variable bound heuristics
    4750 - new heuristic distribution diving that bases its score function on the changes regarding solution density
    4751 - variable histories can be transferred between sub-SCIPs solved by LNS heuristics and the component presolver
    4752 and the main SCIP to reuse this information.
    4753 - new heuristic heur_indicator that tries to make partial solutions with indicator constraints feasible. It also
    4754 tries to improve them (or external solutions) by a one-opt local search.
    4755 - new heuristic (heur_bound) which fixes all integer variables to their lower/upper bounds and solves the remaining LP
    4756 - modified diving heuristics to handle SOS1 constraints
    4757 - new primal heuristic for reoptimization 'ofins': objective function induced neighborhood heuristic
    4758 - new heuristic for reoptimization which constructs solutions based in the changes between the objective function and the optimal
    4759 solution before changing the objective function
    4760
    4761- Statistic:
    4762 - extended variable branching statistics in the interactive shell by sample variance of unit gains
    4763 - extended statistic output of interactive shell by more information on diving heuristic behavior
    4764
    4765Performance improvements
    4766------------------------
    4767
    4768- improved treatment of nonlinearities in hybrid reliability pseudo cost branching
    4769- using sparsity information of the SoPlex LP
    4770
    4771- Constraints:
    4772 - improved vartype upgradability from continuous to implicit variables in cons_linear.c, depending on their objective coefficients
    4773 - improved propagation of SOS1 constraint handler using the information from a conflict
    4774
    4775- Heuristics:
    4776 - zi rounding heuristic uses buffer data structures, thereby decreasing total memory usage of SCIP
    4777 - adjusted (hard) diving heuristics to solve fewer LPs. LP's are resolved only if a parameter-defined
    4778 percentage of the variable bounds changed through domain propagation or at a predefined frequency.
    4779 - some of the diving heuristics additionally consider indicator variables and SOS1 variables as candidate variables and try to
    4780 make these constraint types feasible before passing a rounded solution to SCIPtrySol()
    4781
    4782- Presolving:
    4783 - new presolving/propagation algorithm using the gcd for ranged rows and equations in cons_linear
    4784 - added presolving levels (FAST, MEDIUM and EXHAUSTIVE) to allow better balancing of presolvers
    4785
    4786- Separation:
    4787 - improved separation procedure of SOS1 constraint handler
    4788 - improved separation procedure for convex quadratic constraints
    4789
    4790Examples and applications
    4791-------------------------
    4792
    4793- two new applications for multi-objective optimization (PolySCIP) and the Steiner Tree Problem in Graphs
    4794- new application for solving Steiner tree problems: SCIP-Jack can handle both the classical Steiner tree problem in graphs
    4795 and 10 of its variants
    4796
    4797Interface changes
    4798-----------------
    4799
    4800### New and changed callbacks
    4801
    4802- new callback function `SCIP_DECL_CONSGETDIVEBDCHGS` to provide
    4803 constraint handler method to suggest dive bound changes during the generic diving algorithm, see type_cons.h for details
    4804- new callback `SCIP_DECL_DIVESETGETSCORE` to implement scoring function to guide diving
    4805
    4806### Deleted and changed API functions
    4807
    4808- avoid potential comparisons of different infinity values by adjusting the LP solution value
    4809- SCIPintervalSign(), SCIPintervalAbs(), SCIPintervalMax(), SCIPintervalMin(), SCIPexprgraphGetNodePolynomialMonomialCurvature(),
    4810 and SCIPexprgraphTightenNodeBounds() need an infinity value to decide whether an interval is empty or not
    4811- SCIPgetFeasibilityQuadratic() and SCIPgetActivityQuadratic() returns now a `SCIP_RETCODE` and needs an additional `SCIP_Real*` to
    4812 store the result
    4813- methods which support statistical tests in pub_misc.h, SCIPstudentTGetCriticalValue(), SCIPcomputeTwoSampleTTestValue() etc.
    4814- SCIPsolveLinearProb() solves a linear problem of the form Ax=b for a regular square matrix A
    4815- Added parameter `freesubscip` to SCIPapplyProximity()
    4816
    4817- Data structures:
    4818 - Renamed method SCIPdigraphGetSuccessorsDatas() to SCIPdigraphGetSuccessorsData()
    4819 - Renamed method SCIPdigraphGetNodeDatas() to SCIPdigraphGetNodeData()
    4820 - Renamed method SCIPdigraphSetNodeDatas() to SCIPdigraphSetNodeData()
    4821
    4822- Constraint Handlers:
    4823 - Renamed method SCIPconshdlrGetPropTimingmask() to SCIPconshdlrGetPropTiming()
    4824 - new method SCIPconshdlrSetPropTiming()
    4825 - Removed method SCIPconshdlrIsPresolvingDelayed()
    4826 - Removed method SCIPconshdlrWasPresolvingDelayed()
    4827 - SCIPmakeSOS1sFeasible() based on solution values, fixes variables to zero to turn all SOS1 constraints feasible
    4828 - removed `delay(presol)` parameter from SCIPinclude{Conshdlr,Presol,Prop}() and added `(presol)timing` parameter
    4829 - new parameter `presoltiming` for method SCIPpresolCons()
    4830 - SCIPvarIsSOS1() returns whether some variable is involved in an SOS1 constraint
    4831 - SCIPgetConflictgraphSOS1() gets conflict graph of SOS1 constraints
    4832 - Added parameter `presoltiming` to SCIPpropCumulativeCondition()
    4833 - Removed parameter `delaypos` from SCIPsetConshdlrPresol()
    4834 - Added parameter `presoltiming` to SCIPsetConshdlrPresol()
    4835 - Removed parameter `delaypos` from SCIPincludeConshdlr()
    4836 - Added parameter `presoltiming` to SCIPincludeConshdlr()
    4837 - Added parameter `consgetdivebdchgs` to SCIPincludeConshdlr() to provide a divebdchg-callback for the constraint handler
    4838 to include
    4839
    4840- Branching Rules:
    4841 - Added parameter `forcestrongbranch` to SCIPselectVarStrongBranching()
    4842 - Added parameter `executebranching` SCIPexecRelpscostBranching()
    4843 - Added parameters `ndomredsdown` and `ndomredsup` to SCIPgetVarStrongbranchWithPropagation()
    4844
    4845- LP and Cutting Planes:
    4846 - Added parameters `inds` and `ninds` to SCIPgetLPBInvRow(), SCIPgetLPBInvCol(), SCIPgetLPBInvARow(), SCIPgetLPBInvACol(), and
    4847 SCIPcalcStrongCG()
    4848 - Added parameters `maxweight`, `weightinds`, `nweightinds`, and `rowlensum` to SCIPcalcMIR()
    4849
    4850- Variables:
    4851 - SCIPvarGetNodeSOS1() returns node of SOS1 variable in the conflict graph
    4852 - SCIPnodeGetVarSOS1() returns SOS1 variable associated to some given node in the conflict graph
    4853 - Removed method SCIPvarGetNBinImpls()
    4854
    4855- Presolving:
    4856 - Removed parameter `delaypos` from SCIPincludePresolBasic()
    4857 - Added parameter `presoltiming` to SCIPincludePresolBasic()
    4858 - Removed parameter `delaypos` from SCIPincludePresol()
    4859 - Added parameter `presoltiming` to SCIPincludePresol()
    4860 - Removed parameters `presoldelay` and `presoltiming` from SCIPincludePresol()
    4861 - Removed parameters `presoldelay` and `presoltiming` from SCIPsetPropPresol()
    4862
    4863- Misc:
    4864 - Added parameter `isequation` to SCIPaddClique()
    4865 - Removed parameter `writeimplications` from SCIPwriteCliqueGraph()
    4866 - Removed method SCIPallocBufferSize()
    4867 - Removed method SCIPduplicateBufferSize()
    4868 - Removed method SCIPreallocBufferSize()
    4869 - Removed method SCIPfreeBufferSize()
    4870 - Removed method callback SCIPdialogExecConflictgraph()
    4871
    4872### New API functions
    4873
    4874- started support for user-defined operators in expression trees/graphs (see SCIPexprCreateUser()),
    4875 interface will likely change again in future SCIP versions
    4876- new methods for mixed inter linear matrix access (see pub_matrix.h) added
    4877- SCIPcomputeArraysIntersection() to compute the set intersection of two ordered arrays
    4878- SCIPcomputeArraysSetminus() to compute the set difference of two ordered arrays
    4879- SCIPcutGetLPActivityQuot() in pub_cutpool.h to get the potion of LP's where this cut was sharp in an optimal basis.
    4880- SCIPpresolGetTiming(), SCIPpresolSetTiming(), SCIP{conshdlr,prop}GetPresolTiming(), and SCIP{conshdlr,prop}SetPresolTiming()
    4881- SCIPdigraphSetNSuccessors() sets the number of successors of some digraph node to a given value
    4882
    4883- Diving:
    4884 - SCIPcreateDiveset() to add a diveset to a heuristic. Heuristics may have multiple divesets under different names
    4885 - SCIPperformGenericDivingAlgorithm() that performs diving with periodic LP resolve according to the diveset argument.
    4886
    4887- Constraints:
    4888 - new setter function SCIPsetConshdlrGetDiveBdChgs() in scip.h to set dive bound change callback for this constraint handler
    4889 - SCIPaddDiveBoundChange() to add a diving bound change to the diving bound change storage of SCIP together with the information if this is a
    4890 bound change for the preferred direction or not, to be used by constraint handlers inside the getDiveBdChgs-callback
    4891 - SCIPchgCoefLinear() and SCIPdelCoefLinear() to modify linear constraint during problem creation
    4892
    4893- Memory:
    4894 - BMSallocClearBlockMemoryArray()/SCIPallocClearBlockMemoryArray() and
    4895 BMSallocClearBufferMemoryArray(), SCIPallocClearBufferArray() to allocate arrays that are initialized to 0
    4896 - SCIPbuffermem() to get buffer memory;
    4897
    4898- Sort:
    4899 - added new sorting functions SCIPsortRealRealRealBoolBoolPtr(), SCIPsortDownRealRealRealBoolBoolPtr()
    4900 - added new sorting functions SCIPsortIntIntIntReal(), SCIPsortDownIntIntIntReal(), SCIPsortRealIntInt(), SCIPsortDownRealIntInt()
    4901
    4902- Param:
    4903 - SCIPwriteParam() to write a single parameter to a file
    4904 - SCIPcheckParam{Bool,Char,...}() to check whether a parameter value is within the feasible domain
    4905
    4906- Quadratic:
    4907 - SCIPchgLhsQuadratic(), SCIPchgRhsQuadratic(), SCIPchgLinearCoefQuadratic(), SCIPchgSquareCoefQuadratic(),
    4908 and SCIPchgBilinCoefQuadratic() to modify quadratic constraints during problem creation
    4909 - SCIPgetFeasibilityQuadratic() and SCIPgetActivityQuadratic() to get the feasibility and activity of a quadratic constraint in a given solution
    4910 - SCIPaddSquareLinearization(), SCIPaddSquareSecant(), SCIPaddBilinLinearization() and SCIPaddBilinMcCormick()
    4911 in cons_quadratic.h to compute linear under- and overestimation for bilinear and quadratic terms
    4912
    4913### Command line interface
    4914
    4915- extended variable branching statistics and statistic output in the interactive shell (see Statistic section)
    4916- submenu for setting `vbc` settings renamed to `visual`
    4917- at the end of a command line run the best solution can now be output in the orignal space
    4918
    4919### Interfaces to external software
    4920
    4921- in the AMPL interface, variable and constraint attributes (flags) can now be set via suffixes, where 0 (unset) stands
    4922 for the default, 1 for TRUE and other values for FALSE; see SCIPcreateVar() and SCIPcreateCons() for their meaning;
    4923 for variables, `initial` and `removable` are recognized;
    4924 for constraints, `initial`, `separate`, `enforce`, `check`, `propagate`, `dynamic` and `removable` are recognized
    4925- the AMPL interface now passes an initial guess, if specified, as a solution (that will be checked for feasibility) to SCIP
    4926
    4927### Changed parameters
    4928
    4929- rowrepswitch set to 2.0, so row representation is activated if LP has at least 2 times more rows than columns
    4930- one can now set emphasis parameters at the beginning of a settings file; it should start with `emphasis:` and
    4931 the contain the emphasis string, e.g., `emphasis: feasibility` or `emphasis: heuristics off`.
    4932
    4933- Renamed parameters:
    4934 - `vbc/filename` to `visual/vbcfilename`
    4935 - `vbc/realtime` to `visual/realtime`
    4936 - `vbc/dispsols` to `visual/dispsols`
    4937
    4938### New parameters
    4939
    4940- added parameter to switch pseudo cost update in diving heuristics (enabled by default)
    4941- `branching/relpscost/confidencelevel` to set the confidence level to be used by statistical tests
    4942- `branching/relpscost/higherrortol` to define the highest reliability threshold for relative error based reliability
    4943- `branching/relpscost/lowerrortol` to define a lower reliability threshold for relative error based reliability
    4944- `branching/relpscost/nlscoreweight` for weight of nonlinear score when branching on MINLPs
    4945- `branching/relpscost/usedynamicconfidence` to use a dynamic confidence level based on the amount of
    4946 strong-branching simplex-iterations compared to the overall simplex iterations (default is FALSE)
    4947- `branching/relpscost/usehyptestforreliability` to enable strong branching decisions based on a 2-sample student-T test of all prior
    4948 pseudo-cost observations between the best pseudo-candidate and the candidate for which to decide whether strong-branching should be applied
    4949- `branching/relpscost/userelerrorreliability` to enable relative error based reliability
    4950- `branching/relpscost/skipbadinitcands` for skipping strong-branching candidates whose estimated gain
    4951 is significantly worse than the one of the locally best (sb or pseudo) candidate
    4952- `constraints/linear/multaggrremove` to perform multi-aggregations in linear constraint handler only if the constraint can be removed afterwards
    4953- `constraints/linear/rangedrowpropagation` to disabled newly implemented propagtion algorithm for ranged rows and equations
    4954- `constraints/quadratic/advanced/interiorcomputation` to select the way of computing and interior point for gauge cuts
    4955- `constraints/quadratic/gaugecuts` to enable convex quadratics to generate gradients cuts which are supporting
    4956- `constraints/soc/generalsocupgrade` to allow general quadratics to be upgraded to soc
    4957- `constraints/SOS1/addcomps` to add local complementarity constraints to the branching nodes (can be used in combination
    4958 with neighborhood or bipartite branching)
    4959- `constraints/SOS1/addbdsfeas` to define a minimal feasibility value for local bound (clique) inequalities in order to be
    4960 added to the branching node
    4961- `constraints/SOS1/addcompsdepth` to define the maximal depth for adding complementarity constraints
    4962- `constraints/SOS1/addcompsfeas` to define a minimal feasibility value for local complementarity constraints in order to be
    4963 added to the branching node
    4964- `constraints/SOS1/autocutsfromsos1` to automatically switch to separating bound cuts from SOS1 constraints if the SOS1
    4965 constraints do not overlap
    4966- `constraints/SOS1/autosos1branch` to switch to SOS1 branching if the SOS1 constraints do not overlap
    4967- `constraints/SOS1/conflictprop` to define whether to use conflict graph propagation
    4968- `constraints/SOS1/bipbranch` to branch on a complete bipartite subgraph of the conflict graph
    4969- `constraints/SOS1/boundcutsdepth` to define the node depth of separating bound (clique) cuts
    4970- `constraints/SOS1/boundcutsfreq` to define the frequency for separating bound (clique) cuts
    4971- `constraints/SOS1/boundcutsfromgraph` to define whether to separate bound (clique) inequalities from the conflict graph
    4972- `constraints/SOS1/boundcutsfromsos1` to define whether to separate bound (clique) inequalities from SOS1 constraints
    4973- `constraints/SOS1/fixnonzero`: If neighborhood branching is used, then fix the branching variable (if positive in sign)
    4974 to the value of the feasibility tolerance
    4975- `constraints/SOS1/implcutsdepth` to define the node depth of separating implied bound cuts
    4976- `constraints/SOS1/implcutsfreq` to define the frequency for separating implied bound cuts
    4977- `constraints/SOS1/implprop` to define whether to use implication graph propagation
    4978- `constraints/SOS1/maxaddcomps` to define the maximal number of complementarity constraints added per branching node
    4979- `constraints/SOS1/maxboundcuts` to define the maximal number of bound (clique) cuts separated per branching node
    4980- `constraints/SOS1/maxboundcutsroot` to define the maximal number of bound (clique) cuts separated per iteration in the root node
    4981- `constraints/SOS1/maximplcuts` to define the maximal number of implied bound cuts separated per branching node
    4982- `constraints/SOS1/maximplcutsroot` to define the maximal number of implied bound cuts separated per iteration in the root node
    4983- `constraints/SOS1/maxextensions` to define maximal number of extensions that will be computed for each SOS1 constraint in presolving
    4984- `constraints/SOS1/maxsosadjacency` to define that the adjacency matrix of the conflict graph is not created in presolving if
    4985 the number of SOS1 variables is too large
    4986- `constraints/SOS1/maxtightenbds` to define the maximal number of bound tightening rounds per presolving round
    4987- `constraints/SOS1/neighbranch` to branch on a neighborhood of the conflict graph
    4988- `constraints/SOS1/nstrongiter` to define the maximal number LP iterations to perform for each strong branching round
    4989- `constraints/SOS1/nstrongrounds` to define the maximal number of strong branching rounds to perform for each node (only
    4990 available for neighborhood and bipartite branching)
    4991- `constraints/SOS1/sos1branch` to branch on a single SOS1 constraint, i.e., a clique of the conflict graph
    4992- `constraints/SOS1/sosconsprop` to define whether to use SOS1 constraint propagation
    4993- `constraints/SOS1/strthenboundcuts` to define whether to strengthen bound (clique) cuts in case bound variables are available
    4994- `constraints/SOS1/updateconflpresol` to update the conflict graph during the presolving procedure
    4995- `display/allviols` to print all violated constraints of the best solution during checksol in the scip shell
    4996- `heuristics/indicator/improvesols` that turns on the improvement of external solutions by one-opt
    4997- `heuristics/∗diving/lpresolvedomchgquot` to determine the percentage of changed domains since previous LP to trigger
    4998 an LP resolve [default: 0.15] (* stands for eight diving heuristics to support this feature)
    4999- `heuristics/∗diving/lpsolvefreq` to determine the frequency for resolving LP's during the execution of
    5000 this heuristic [default: 1, use 0 for a dynamic setting based on the number of domain reductions]
    5001 (* stands for eight diving heuristics to support this feature)
    5002- `heuristics/shiftandpropagate/binlocksfirst` to set if binaries without locks should be preferred in ordering
    5003- `heuristics/shiftandpropagate/maxcutoffquot` to select a maximum percentage of allowed cutoffs before stopping the heuristic (default is 0.0)
    5004- `heuristics/shiftandpropagate/selectbest` to trigger if shiftandpropagate should select the best candidate in every round
    5005 (set to FALSE for static order) (default is FALSE)
    5006- `limits/autororestart` for triggering an automatic restart after this many nodes, or -1 for no auto restart [default is -1]
    5007- `limits/softtime` to set a soft time limit (active only after first primal solution was found)
    5008- `misc/allowobjprop` to allow objective function propagation
    5009- `misc/allowdualreds` to allow dual reductions
    5010- `misc/outputorigsol` to control whether at the end of a command line run the solution should be output in the orignal space
    5011- `numerics/checkfeastolfac` to scale feasibility tolerance when checking the feasibility of best found solution
    5012 after the solving process finished (e.g., checksol in scip shell)
    5013- `separating/cutselrestart` for cut selection during restart copy process (`a`ge, activity `q`uotient) [default is `a`]
    5014- `separating/cutselsubscip` for cut selection for sub SCIPs (`a`ge, activity `q`uotient) [default is `a`]
    5015- `separating/disjunctive/maxconsdelay` to delay separation of disjunctive cuts if number of SOS1 constraints is larger than predefined value
    5016- `separating/disjunctive/maxdepth` to define the node depth of separating disjunctive cuts
    5017- `separating/disjunctive/maxinvcuts` to define the maximal number of disjunctive cuts investigated per iteration in a branching node
    5018- `separating/disjunctive/maxinvcutsroot` to define the maximal number of disjunctive cuts investigated per iteration in the root node
    5019- `separating/disjunctive/maxrank` to define the maximal permissible rank of a disjunctive cut that could not be scaled to integral coefficients
    5020- `separating/disjunctive/maxrankintegral` to define the maximal permissible rank of a disjunctive cut that could be scaled
    5021 to integral coefficients
    5022- `separating/disjunctive/maxrounds` to define the maximal number of separation rounds of disjunctive cuts in a branching node
    5023- `separating/disjunctive/maxweightrange` to define the maximal valid range of simplex tableau row weights
    5024
    5025### Data structures
    5026
    5027- new enum `SCIP_CONFIDENCE_LEVEL` for different levels of confidence for statistical tests.
    5028- new struct `SCIP_DIVESET` that bundles options for SCIP's diving heuristics; all hard diving heuristics (those
    5029 without `obj` at the beginning) include diveset and implement only the scoring callback.
    5030- rename all file `*_vbc.?` to the more generic `*_visual.?`
    5031- moved buffer memory handling to blockmemory/memory.?;
    5032 remove files type_buffer.h, struct_buffer.h buffer.h buffer.c;
    5033 removed functions SCIP*buffer*() from scip.? and replaced them by macros;
    5034 redesigned buffer interface to be similar to block memory; added checks for strange sizes
    5035
    5036Testing
    5037-------
    5038
    5039- added scripts and targets for testing with xpress (see Makefile section)
    5040
    5041Build system
    5042------------
    5043
    5044### Makefile
    5045
    5046- new parameter `DELHEADERS` for `uninstall`-target: scip headers are only removed when invoking `make uninstall DELHEADERS=true`
    5047- added scripts check_xpress.awk, check_xpress.sh, evalcheck_xpress.sh and check_cluster_xpress.sh and target
    5048 `testclusterxpress` and `testxpress`
    5049
    5050Fixed bugs
    5051----------
    5052
    5053- fixed bug in primal.c and tree.c by using SCIPinfinity() as a cutoffbound to delete child nodes
    5054- fixed bug in lp.c which leads to wrong primal and dual feasibility
    5055- fixed wrong handling of infinite activities and primal values in sepastore.c and lp.c
    5056- fixed bug that led to an erroneous warning about the clock type
    5057- fix behavior of `make install` which now sets symbolic links and short links to binaries and libraries
    5058- fix bug which lead to wrong global bound tightenings in prop_genvbounds.c
    5059- fix call to random generator for Windows operating systems in misc.c
    5060- fixed again a bug in backward propagation of linear expressions in expression graph
    5061- fixed bug in prop_symmetry.c, where an incorrect weak symmetry handling constraint got added.
    5062
    5063- NLP:
    5064 - fixed bug in heur_nlpdiving.c: wrong counting of fix variables
    5065 - fix wrong handling of `SCIP_NLPSOLSTAT_LOCALINFEASIBLE` solution status in nlp.c
    5066 - fix characterization of logic or constraints in SCIP's NLP relaxation
    5067
    5068- Branching:
    5069 - fixed wrong comparison when executing branching rule for external branching candidates
    5070 - fix spatial branching on implicit integer variables
    5071 - fix wrong comparisons of values larger/less than +/- SCIPinfinity() in branch.c, lp.c and sol.c
    5072 - fixed problem with lpisrelax flag in probing mode when doing branch-and-price
    5073
    5074- Constraint Handlers:
    5075 - try to handle fixings of multi-aggregated variable in cons_sos1 presolving and avoid error
    5076 - fixed bug in pseudoboolean constraint handler about negated variables
    5077 - fixed assert in cons_soc.c: now soc with 1 lhs variable are allowed
    5078 - fixed wrong assert in cons_indicator (slack variables might be replaced by active variables that have nonzero objective)
    5079 - fix late creation of auxiliary LP in cons_nonlinear.c, which lead to a segmentation fault with lpi_spx2.cpp
    5080 - fixed bug in cons_abspower.c: do not generate cuts with infinity right-hand-side anymore
    5081 - fixed setting of enforcement flag for constraints created by reformulation in nonlinear constraint handlers
    5082 - fixed bug in cons_indicator with handling local bounds
    5083
    5084- Memory:
    5085 - fix potential memory leak in SoPlex LP interfaces when setting invalid basis
    5086 - fix potential memory leak in method SCIPgetConsCopy()
    5087 - fix potential memory leak in method detectRedundantConstraints() of the knapsack constraint handler
    5088
    5089- Interval arithmetic:
    5090 - fix handling of infinite intervals in SCIPintervalIsEmpty()
    5091 - fixed bug in intervalarith.c: bivariate quadratic equations may have been solved wrongly if second variable is unbounded
    5092
    5093- Quadratic Constraints:
    5094 - fix wrong sorting of bilinear terms in cons_quadratic
    5095 - fix potentially tightening of LB/UB of a variable to +/- infinity in cons_quadratic
    5096 - fixed bug in cons_quadratic.c which leads to an overflow when SCIP allocates memory for a dense matrix
    5097 - fixed bug in cons_quadratic.c: do not generate linearization cuts for disabled constraints
    5098 - fix missing clean phase of bilinear terms with zero coefficient in cons_quadratic.c
    5099
    5100@page RN3_1 Release notes for SCIP 3.1
    5101
    5102@section RN311 SCIP 3.1.1
    5103*************************
    5104
    5105Features
    5106--------
    5107
    5108- use clock average to reduce number of system calls via `timing/rareclockcheck` parameter
    5109- added copy mechanism for conjunction constraints
    5110- added revised lpi_xprs for using XPRESS as LP solver
    5111
    5112Performance improvements
    5113------------------------
    5114
    5115- improved solving of LPs in OBBT propagator
    5116- improved activity-delta computation and thereby propagation for linear constraints
    5117- improved memory management of proximity heuristic
    5118- disabled statistic timing in all subscips via new parameter `timing/statistictiming`
    5119
    5120Interface changes
    5121-----------------
    5122
    5123### New and changed callbacks
    5124
    5125- rename array arcdatas in digraph to arcdata
    5126- changes in clock type are now transferred to SoPlex
    5127- corrected wrong primal bound in statistics for unbounded problems
    5128- forbid to call SCIPfixVar() in `SCIP_STAGE_PRESOLVED` stage, which is not allowed since it calls SCIPchgVarLb/Ub()
    5129
    5130### Deleted and changed API functions
    5131
    5132- rename SCIPdigraphGetNodeDatas() to SCIPdigraphGetNodeData();
    5133- rename SCIPdigraphSetNodeDatas() to SCIPdigraphSetNodeData()
    5134- SCIPapplyProximity() has an additional parameter freesubscip, which causes the method to free
    5135 the created subscip automatically at the end.
    5136
    5137### New API functions
    5138
    5139- SCIPhasPerformedPresolve() to check, e.g., whether LP duals are accessible
    5140- SCIPconvertRealTo[Long]Int() to convert reals that represent integers to [long] ints.
    5141- SCIPisDualfeasEQ() and related to perform checks w.r.t. to the dual feasibility tolerance
    5142- SCIPdeleteSubproblemProximity() to free proximity subproblem manually as external caller
    5143
    5144### Command line interface
    5145
    5146- added dialog for writing the finite solution (calling SCIPcreateFiniteSolCopy() before writing)
    5147
    5148### Interfaces to external software
    5149
    5150- AMPL interface now returns dual multipliers if problem is an LP and presolving was turned off
    5151
    5152### Changed parameters
    5153
    5154- changed default value of parameter `heuristics/proximity/minimprove` to 0.02; previous value was 0.25
    5155- changed default value of parameter `heuristics/proximity/usefinallp` to FALSE
    5156
    5157### New parameters
    5158
    5159- `timing/rareclockcheck` to call the system time less frequently, based on the current average time interval
    5160 between two calls to SCIPsolveIsStopped(); the default value is FALSE
    5161- `timing/statistictiming` to enable/disable all timers for statistic output of SCIP; the default value is TRUE
    5162
    5163### Data structures
    5164
    5165- renamed MIP matrix structure to `SCIP_MATRIX`
    5166- changed the numeric values for `PRESOLTIMING` flags
    5167
    5168Build system
    5169------------
    5170
    5171### Makefile
    5172
    5173- added Makefile support for cygwin 64 Bit
    5174- allow to turn off block and buffer memory by the makefile parameters NOBLKMEM, NOBUFMEM, NOBLKBUFMEM;
    5175 also remove the now superfluous makefiles for noblkmem, nobufmem, noblkbufmem
    5176
    5177Fixed bugs
    5178----------
    5179
    5180- fixed wrong conversion of reals representing negative integer values
    5181- in debug mode, SCIP checks that no NaN's are introduced in SCIPsolSetVal()
    5182- fixed bug 697 (and 699), calling SCIPsolve() after the problem was already solved and SCIPfreeSolve() was called now
    5183 does nothing anymore
    5184- added support for character `#` in variable names in old non-linear CIP format (i.e., names without `<` and `>`)
    5185- fixed bug 702, removed too hard assert when casting too big values into `SCIP_Longint`
    5186- branching for continuous variables with unbounded intervals now takes `branching/clamp` into account
    5187- forbid aggregations with scalar smaller feastol or larger 1/feastol
    5188- fixed bug 683, not recognizing errors/segfaults especially in free stage of SCIP by improving the check scripts
    5189- fixed bug where quieting a message handler also disabled writing to files other than stdout
    5190- fixed bug 708, special case of implications led to a fixing
    5191- fixed bug, variable bounds detected wrong infeasibility
    5192- another bug fix when computing the original variable sum of a given variable in SCIPvarGetOrigvarSum()
    5193- fixed setting solution value of multi-aggregated var in xml-solution case
    5194- fixed bug changing the variable type of an negated variable
    5195- fixed numerical troubles in SCIPcreateFiniteSolCopy()
    5196- fixed bug in SCIPpermuteProb(): if called before transforming the problem, data structures were not initialized yet
    5197- fixed bug in aggregation procedure if two variables were of non-binary type but for one of the variables
    5198 SCIPvarIsBinary() returned true
    5199- treat activities of pseudo solutions as invalid when containing positive and negative infinity contributions
    5200- fixed bug in GMI example: fractionality of slack variable is now computed correctly
    5201- fixed LP interface of CPLEX: functions getBInv* return the correct sign of the coefficients.
    5202- fixed bug in SCIPpermuteProb(), when called in transformed stage and non-active constraints exist
    5203
    5204- Dual:
    5205 - use dual feasibility tolerance for comparisons regarding reduced costs
    5206 - fixed bug in prop_dualfixing: don't fix variables to infinite values during solving
    5207 - fixed sign of the dual multipliers returned by AMPL interfaces for maximization
    5208
    5209- Objective and Time Limit:
    5210 - fixed wrong output of status when an objective limit was imposed but not reached yet
    5211 - fixed the rare case that branching was performed even though strong branching found global bound changes leading to
    5212 an infeasible/objlimit LP
    5213 - fixed bug that objective limit was not reset correctly during SCIPfreeTransform() for maximization problems
    5214 - fixed bug that hitting the time limit while solving a pure LP and then continuing the solving process lead to
    5215 not solving the LP, but always creating a single child node until maximum depth is reached
    5216
    5217- Heuristic:
    5218 - fixed bug leading to an incorrect dual bound when solving probing LPs within a DURINGPRICINGLOOP heuristic
    5219 - fixed bug in proximity heuristic which attempted to enter diving mode even at nodes without a constructed LP
    5220 - fixed wrong pseudo cost updates during diving heuristic execution after backtracking
    5221 - fixed bug in heur_oneopt: avoid bound violations if shift value is negative due to infeasibilities
    5222 - fixed bug that reaching a solution limit by beforenode heuristics lead to disregarding the current node if the
    5223 optimization process was restarted later
    5224 - fixed bug in trysol heuristic not saving the best solution in maximization problems
    5225
    5226- Presolve:
    5227 - fixed bug in presolving of abspower constraints that lead to wrong variable locks
    5228 - allow to call SCIPmarkConsPropagate() in INITPRESOLVE stage
    5229 - fixed bug in components presolver with handling of dual fixable variables: unboundedness was not detected,
    5230 better handle components with single variables by dual fixing propagator
    5231 - issues in component solving by presol_components do not lead to stopping the overall process, anymore, the component
    5232 is just disregarded
    5233
    5234- Memory:
    5235 - fixed bug with freeing problem: need to reset objective limit
    5236 - fixed memory leaks in case of erroneous parsing of constraints, e.g., non-linear constraints
    5237 - fixed missing memory allocation for node data in digraphs
    5238
    5239- Constraints:
    5240 - fixed bug in cons_quadratic which leads to wrong min/max activities
    5241 - removed wrong break in cons_pseudoboolean
    5242 - fixed bug in cons_varbound.c using the wrong constraint side for updating an upper bound
    5243 - fixed bug in presolve of cons_nonlinear: wrong constraint upgrades may have been performed due to outdated bound
    5244 information in expression graph
    5245 - fixed bug in cons_setppc, wrongly aggregating variables if dual-presolving was disabled
    5246 - fixed bug in cons_sos1: locks and events were not initialized if constraint was added to transformed problem
    5247 - fixed bug in cons_setppc with dual presolving disabled
    5248 - corrected copy of disjunction constraints
    5249
    5250- Reading:
    5251 - allow to read numbers like `42856.` in lp-format
    5252 - fixed bug(?) in reader_mps: variables are now written in columns section even of they occur in no constraint
    5253 and have an objective coefficient of 0 (otherwise, CPLEX and Gurobi cannot read the file)
    5254 - fixed bug with reading `>=1` indicator constraints in LP-files
    5255 - fixed bug in reader_lp which created two indicator constraints with the same name to trigger an equality
    5256 - fixed bug when reading indicator constraints for linear constraints (equations/ranged rows) from MPS files
    5257
    5258@section RN310 SCIP 3.1.0
    5259*************************
    5260
    5261Features
    5262--------
    5263
    5264- added breadth first search node selection
    5265- new node selection rule UCT which balances exploration and exploitation by considering node visits
    5266- added possibility to not set a cutoff bound in the LP solver (can be enabled by setting `lp/disablecutoff` to TRUE)
    5267- added missing debugging solution check for cliques
    5268- added a data pointer to each node of the `SCIP_DIGRAPH`
    5269- SCIPgetVarCopy() will now copy the original bounds when called for an original variable
    5270- added upgrade of continuous variables to implicit variables for linear equations even if the coefficient is
    5271 not equal to 1
    5272- probing supports implicit binary variables
    5273- added scaling to computation of relative interior point in SCIPcomputeLPRelIntPoint()
    5274
    5275- Solution:
    5276 - added two methods to iterate over a sparse solution (`SCIP_SPARSESOLUTION`), see pub_misc.h
    5277 - it is now possible to add an offset for the original problem instance, all original solutions will be initialized with
    5278 this value and updated, when the offset is changed
    5279 - extended and corrected dual feasibility checks for LP solution (controlled by parameter `lp/checkdualfeas`)
    5280
    5281- Cuts and Separation:
    5282 - the rank of cuts is now stored and taken into account to improve numerical stability
    5283 - added possibility to separate a cutpool w.r.t. a given solution (instead of LP-solution)
    5284
    5285- Branching:
    5286 - new branching rule `cloud branching` that considers several alternative LP optima
    5287 - additional vbc output added: branching information is printed earlier and also for nodes which were cut off
    5288 - added support for strong branching with domain propagation in full strong and reliability pseudo cost branching
    5289 - added strong branching with domain propagation support: in SCIPstartStrongbranch(), support for propagation can
    5290 be enabled (uses the probing mode, some overhead compared to standard strong branching), after that
    5291 SCIPgetVarStrongbranchWithPropagation() can be used to perform strong branching on a variable with previous domain
    5292 propagation; similar to probing, valid bounds for variables are collected
    5293 - strong branching with propagation can be enabled in fullstrong and relpscost branching rule
    5294 - added possibility to store pricing norms of the LP solver (in addition to basis information) to speed up LP solving
    5295 after a backtrack, e.g. in probing or strong branching with domain propagation
    5296 - a pricer can now return that no further pricing should be done but rather early branching, even if it added variables
    5297
    5298- LP interface:
    5299 - SoPlex (>= 1.7.0.5) can compute condition number of current basis matrix via LP interface
    5300 - LPI files (lpi*.[h|c]) all moved from src/scip to src/lpi
    5301
    5302- Constraints:
    5303 - added propagation method to cons_xor relying on Gaussian elimination, which can also produce feasible solutions
    5304 - added first implication detection in cons_linear
    5305 - cons_indicator can now try to construct feasible solutions from a cover
    5306 - added possibility to forbid upgrading of linear constraints
    5307 - new initial constraints are now added to the LP before solving a probing LP
    5308 - first implementation of parsing for nonlinear constraints in CIP format
    5309 - added upgrade from varbound constraints to set-packing constraints
    5310 - added upgrade from bounddisjunction constraints to set-packing/logicor constraints
    5311 - cumulative constraint handler adds disjunctive constraints (cumulative with capacity 1) for all jobs which cannot
    5312 be processed in parallel
    5313 - added new clique extraction algorithm for linear constraints
    5314 - the slack variables of indicator constraints can now be scaled
    5315 - added redundancy check of sides of ranged row varbound constraint
    5316 - added coefficient tightening for ranged row varbound constraint
    5317 - XOR constraint handler can add two extended formulations (flow/asymmetric, parameter `addflowextended/addextendedform`)
    5318 - added multi-aggregation for binary variables with at most two uplocks and two downlocks, which emerge from set-
    5319 partitioning or set-packing constraints
    5320 - added upgrade from quadratic constraints to set-packing constraints
    5321 - generalized the linking constraint handler
    5322
    5323- Reader:
    5324 - can now read and write CIP-files with (multi-)aggregated variables
    5325 - all readers now take the global parameters `reading/dynamic{conss|cols|rows}` and `reading/initialconss` into account
    5326 - added reader_pbm, which writes the constraint-variable incidence matrix in pbm format (possibly scaled to given size)
    5327 - reader_osil can now read SOS1 and SOS2 constraints
    5328 - reader_lp and reader_mps are now able to write and-constraints in form of their (weak/strict) relaxation
    5329 - added reading capability to GAMS reader (if compiling with GAMS=true, requires a GAMS system)
    5330 - added capability of writing SOS1/2 constraints to GAMS reader (introduces extra variables and equations)
    5331
    5332- Heuristic:
    5333 - new primal heuristics dual value
    5334 - new LNS heuristic called `proximity`, which solves a problem in which a local branching constraint replaces the
    5335 objective function which in turn is treated as additional constraint
    5336 - new LP-based rounding heuristic (heur_randround) whose randomized rounding is biased towards the LP solution value;
    5337 the heuristic uses the probing mode of SCIP to generate conflict clauses on the fractional variables
    5338
    5339- Presolving:
    5340 - added new dual presolving for setppc-constraints
    5341 - changed dualfix presolver to propagator such that dual fixing can also be applied during repropagation of the root node
    5342 - added full-dual presolving step in setppc constraint handler
    5343 - dual solution can now be displayed for pure LPs when no presolving was performed
    5344 - added clique presolving for xor constraints
    5345 - added presolving using pairs of variable bound constraints that use the same variables
    5346 - added more presolving to cons_indicator, checking whether indicator/slack variables are aggregated
    5347 - added presolve.{c,h} which should be used for all preprocessing mechanisms executed from within SCIP, corresponding to
    5348 solve.{c,h} and also for presprocessing methods which can be called from different plugins or from the core to avoid
    5349 code doubling
    5350 - return error if variable should be fixed to infinity after presolving (LP-solvers do not handle this consistently)
    5351 - in verblevel `SCIP_VERBLEVEL_FULL`, the number of non-zeros will be output for the original and presolved model
    5352 - new presolving step for tightening logicor constraints using implication and clique information
    5353 - several new presolving steps for linear and knapsack constraints, using gcd information and many more
    5354
    5355- Statistic:
    5356 - added average gap based on primal-dual integral to solution statistics; can be disabled via parameter
    5357 `misc/calcintegral`
    5358 - the statistics now include the value of the first LP solved at the root node (without cuts)
    5359 - added new statistic which distinguishes between internal nodes and leaves which got processed
    5360 - new section `Root Node` in statistics, listing objective value, iterations and solving time for the first LP solved
    5361 at the root node as well as final dual bound of the root node and LP iterations for processing the root node
    5362 (those where listed in the `Solutions` section before, named `Root Dual Bound` and `Root Iterations`)
    5363
    5364Performance improvements
    5365------------------------
    5366
    5367- allow multiaggregation of binary variables
    5368- shorten conflicts and deriving global boundchanges from conflicts
    5369- apply lowerbound provided by pricers already during pricing loop, stop pricing if the lower bound computed by pricing
    5370 already exceeds the cutoff bound
    5371- improved performance of SCIPcliquelistDel(), SCIPcliquetableAdd(), SCIPcliquetableCleanup()
    5372
    5373- LP Solution:
    5374 - strong branching LP solutions are checked for integrality
    5375 - improved LP reoptimization for branch-and-price applications
    5376 - improved numerical stability checks for LP solution
    5377 - faster feasibility check of LP solutions (controlled by parameters `lp/checkprimfeas` and `lp/checkdualfeas`)
    5378
    5379- Presolver:
    5380 - improved methods SCIPlpiGetBInv{Row,Col,ACol} for row representation in SoPlex LP interface
    5381 - improved performance of method SCIPsolRetransform() when called during presolving with many aggregations
    5382 - minor presolving performance improvements in cons_logicor.c and cons_knapsack.c
    5383 - dual fixing presolver was turned into a propagator
    5384 - many presolving improvements in constraint handlers
    5385 - improved dual-presolving for setppc constraints in special cases
    5386
    5387- Constraints:
    5388 - major improvements in pseudo-boolean constraint handler
    5389 - performance improvement in domain propagation by marking constraints for propagation
    5390 - added more constraint upgrading possibilities
    5391 - improved handling of initial constraints created during solving
    5392 - disabled scaling in feasibility check of nonlinear constraint handlers
    5393 - conflict consisting of exactly two binary variables will be handled as set-packing constraint instead of an logicor
    5394 constraint and the corresponding clique information is globally added
    5395 - fasten repropagation for set-packing and -partitioning constraints
    5396 - improved merging of and-constraints
    5397 - disabled multi-aggregation in linear constraint handler when coefficients differ too much
    5398 - improved multi-aggregation in linear constraint handler when only one variable in the aggregation has infinity
    5399 contribution
    5400 - added upgradability for implicit binary variable cases for linear constraints
    5401
    5402Examples and applications
    5403-------------------------
    5404
    5405- new textbook Gomory mixed integer cuts example
    5406
    5407Interface changes
    5408-----------------
    5409
    5410- removed all message length parameters in message.c and for printing error messages (not needed anymore)
    5411
    5412### New and changed callbacks
    5413
    5414- Domain Propagation:
    5415 - added parameter `nmarkedconss` to SCIP_DECL_CONSPROP() callback which gives the number of constraints marked
    5416 for propagation (these constraints are listed first in the conss array given as parameter).
    5417
    5418- Primal Heuristics:
    5419 - Added parameter `nodeinfeasible` to SCIP_DECL_HEUREXEC() callback which states whether the current subproblem was
    5420 already detected to be infeasible. In this case, the current LP solution might not respect local bounds and the
    5421 heuristic must not assume that it does.
    5422
    5423- Variable Pricers:
    5424 - Added parameter `stopearly` to callback method SCIP_DECL_PRICERREDCOST(). This boolean pointer should be used by the pricer
    5425 to state whether early branching should be performed, even if new variables were added in the current pricing round.
    5426
    5427- Branching Rules:
    5428 - new possible return value `SCIP_DIDNOTFIND` for SCIP_DECL_BRANCHEXECLP(), SCIP_DECL_BRANCHEXECPS(), and
    5429 SCIP_DECL_BRANCHEXECEXT() callbacks to state that the branching rule searched, but did not find a branching.
    5430
    5431### Deleted and changed API functions
    5432
    5433- SCIPcalcMIR() takes an additional parameter sidetypes to determine which side of the rows to use
    5434 (relevant for ranged rows)
    5435- SCIPvarParseOriginal() and SCIPvarParseTransformed() now return the end of the parsed string
    5436- SCIPgetConsCopy() now always captures the created constraint
    5437
    5438- Branching:
    5439 - Added parameter `nfracimplvars` to SCIPgetLPBranchCands()
    5440 - SCIPgetLPBranchCands() can be used to retrieve the number of implicit integer variables with fractional LP solution
    5441 value via an additional pointer; the corresponding implicit integer variables can be accessed together with their
    5442 fractionalities and solution values in the same way as binary and integer variables before; the arrays are sorted such
    5443 that binary and integer variables precede the implicit integer variables; the method SCIPbranchcandGetLPCands()
    5444 has been modified in the same way
    5445
    5446- LP and Cutting Planes:
    5447 - Added parameter `sidetypes` to SCIPcalcMIR() to specify the specify row side type to be used.
    5448 - Added parameter `cutrank` to SCIPcalcMIR() and SCIPcalcStrongCG() which stores the rank of the returned cut;
    5449 via SCIProwChgRank() the rank of a cut can be changed (default rank is 0)
    5450 - Added parameter `infeasible` to SCIPaddCut() which is a pointer to store whether the cut is infeasible for the
    5451 local bounds.
    5452 - SCIPgetLPObjval() now returns the LP value of the current (suboptimal) basis if the iteration limit is hit during LP
    5453 solving (instead of -infinity); this value is not necessarily a valid dual bound and must not be used as such, but can
    5454 be used as an objective estimate, e.g., if strong branching is simulated using the probing mode
    5455 - removed parameter `normtype` from function SCIPcomputeLPRelIntPoint()
    5456
    5457- Misc:
    5458 - Added parameter `lazyconss` to SCIPwriteMIP() to swith writing removable rows as lazy constraints.
    5459 - Added parameter `enablepropagation` to SCIPstartStrongbranch(), which can be used to enable strong branching
    5460 with domain propagation.
    5461 - SCIPstartStrongbranch() has a new parameter `propagate` to enable or disable propagation support for strong branching
    5462 - New method SCIPgetVarStrongbranchWithPropagation() which performs strong branching with propagation on a variable.
    5463 - Added parameter `endptr` to SCIPparseVar() which stores the final string position after parsing.
    5464
    5465### New API functions
    5466
    5467- added SCIPdebugCheckConss() to the debugging mechanism and therefore created a `SCIP_SOL` (in original space) in debug.c
    5468- before copying solutions to the original solution candidate storage, infinite solution values can now be removed using SCIPcreateFiniteSolCopy()
    5469- SCIPsortLongPtrRealBool(), SCIPsortLongPtrRealRealBool(), SCIPsortLongPtrRealRealIntBool() and corresponding
    5470 methods for sorting, insertion and deletion
    5471- SCIPstoreSolutionGap() in scip.c, to store the gap when the first and last solution is found
    5472- SCIPwriteCliqueGraph() which allows to write a graph with node weights for fractional variables
    5473
    5474- Separation:
    5475 - SCIPconshdlrIncNCutsFound(), SCIPsepaIncNCutsFound() and SCIPsepaIncNCutsFoundAtNode() to increase the number of found cuts
    5476 - SCIPseparateSolCutpool() to separate a cutpool w.r.t. a given solution
    5477
    5478- Constraint Handlers:
    5479 - New method SCIPconshdlrGetStrongBranchPropTime() which returns the time used for domain propagation methods
    5480 of the constraint handler during strong branching.
    5481 - New method SCIPconsIsMarkedPropagate() which returns whether a constraint is marked for propagation.
    5482 - New methods SCIPconsAddUpgradeLocks() and SCIPconsGetNUpgradeLocks() to increase or get the number of upgrade
    5483 locks of a constraint.
    5484 - New method SCIPgetNCheckConss() which returns the number of checked constraints.
    5485
    5486- Data structures:
    5487 - New methods SCIPsparseSolGetFirstSol() and SCIPsparseSolGetNextSol() to get the first sparse solution
    5488 or iterate over the sparse solutions, respectively.
    5489 - New methods for the `SCIP_QUEUE` data structure in pub_misc.h to handle a (circular) queue, e.g., SCIPqueueCreate(),
    5490 SCIPqueueFree(), SCIPqueueInsert(), SCIPqueueRemove(), SCIPqueueFirst(), SCIPqueueIsEmpty(), SCIPqueueNElems()
    5491 - New method SCIPgmlWriteNodeWeight() to write a node section including weight to a .gml graph file.
    5492 - New methods for hash tables: SCIPhashtableRemoveAll(), SCIPhashtableGetNElements(), SCIPhashtableGetLoad()
    5493 - New methods in pub_misc.h to handle a resource activity, e.g., SCIPactivityCreate(), SCIPactivityFree(),
    5494 SCIPactivityGetVar(), SCIPactivityGetDemand() ...
    5495 - New methods for digraphs: SCIPdigraphResize() to resize the graph and SCIPdigraphSetNodeDatas() and
    5496 SCIPdigraphGetNodeDatas() to set and get the data attached to the nodes.
    5497
    5498- Domain Propagation:
    5499 - New method SCIPpropGetStrongBranchPropTime() which returns the time spent by a domain propagator during strong branching.
    5500 - New methods SCIPmarkConsPropagate() and SCIPunmarkConsPropagate() to (un)mark a constraint for propagation.
    5501
    5502- LP and Cutting Planes:
    5503 - New methods SCIPchgRowLhsDive() and SCIPchgRowRhsDive() to change left and right hand side of a row during diving.
    5504 - Added parameter `cutoff` to SCIPsolveDiveLP(), SCIPsolveProbingLP(), and SCIPsolveProbingLPWithPricing()
    5505 which is a pointer to store whether the diving/probing LP was infeasible or the objective limit was reached.
    5506 - SCIPgetFirstLP{Dual/Lower}boundRoot() which return the value of the first LP solved at the root node
    5507 - SCIPgetNRootFirstLPIterations() which returns the number of LP iterations for the first LP solved at the root node
    5508 - SCIPlpiGetNorms(), SCIPlpiSetNorms() and SCIPlpiFreeNorms() for getting the LP pricing norms from the LP
    5509 solver, loading them back into the solver and freeing the data
    5510 - New method SCIPgetFirstLPTime() and SCIPgetNRootFirstLPIterations() to return time and iterations for the first LP solve
    5511 and SCIPgetFirstLPDualboundRoot() and SCIPgetFirstLPLowerboundRoot() to return the first root LP dual and lower bound.
    5512 - New method SCIPprintDualSol() which prints the dual solution for a pure LP (works only with preprocessing disabled).
    5513 - New method SCIPisCutApplicable() which returns whether a cut is good enough to be applied.
    5514
    5515- Message Handler:
    5516 - the main output routine of message.c (`bufferMessage` now handleMessage) has been rewritten: it now does not need
    5517 a copy of the string to be output anymore, which makes the code much simpler (and also faster); it is passed a
    5518 function pointer to the output function and uses it to directly output the (buffered) messages
    5519 - New generic messagehandler output callback method SCIP_DECL_MESSAGEOUTPUTFUNC().
    5520 - Removed parameter `msglength` from callback method SCIP_DECL_ERRORPRINTING().
    5521 - New method SCIPmessageVPrintError() to print an error message.
    5522 - Removed method SCIPmessagePrintWarningHeader().
    5523
    5524- Parameters:
    5525 - New method SCIPparamGetCharAllowedValues() to get the allowed values for a char parameter.
    5526 - New method SCIPgetParam() to get the parameter with a given name.
    5527
    5528- Variables:
    5529 - SCIPapplyProbingVar() in prop_probing.h
    5530 without deteriorating its objective value
    5531 - SCIPshrinkDisjunctiveVarSet(), which takes an set of variables with corresponding bounds and boundtypes, and
    5532 tries to derive global boundchanges and also to shorten this set of variables by using cliqe, implication and
    5533 variable bound information
    5534 - SCIPselectVarStrongBranching() to get the variable that fullstrongbranching would select
    5535 - New method SCIPvarGetValuehistory() to get the value-based history of a variable.
    5536
    5537- Misc:
    5538 - New method SCIPdoNotMultaggr() which returns whether multi-aggregation was disabled.
    5539 - New method SCIPcreateFiniteSolCopy() to create a copy of a solution with infinite fixings removed.
    5540 - New method SCIPadjustImplicitSolVals() which sets implicit integer variables to an integer value in the given
    5541 solution without deteriorating its objective value.
    5542 - New method SCIPcopyOrig() to copy the original problem. Analoguosly, use SCIPcopyOrigProb(), SCIPcopyOrigVars(),
    5543 and SCIPcopyOrigConss() to copy original problem data, variables, or constraints, respectively.
    5544 - New method SCIPwriteCliqueGraph() to write the clique graph in GML format into a given file
    5545 - New method SCIPaddOrigObjoffset() to add an offset to the objective function.
    5546 in original space and updates all orignal solutions correspondingly
    5547 - New method SCIPcopyImplicationsCliques() to copy implications and cliques to a copied SCIP instance.
    5548 - New method SCIPgetOpenNodesData() which returns all unprocessed nodes.
    5549 - Added parameter `endline` to SCIPprintDisplayLine() to switch printing a newline symbol at the end of the line.
    5550 - New method SCIPgetNLimSolsFound() returning the number of feasible primal solution respecting the objective limit.
    5551
    5552### Command line interface
    5553
    5554- allow dialog option to write clique graph
    5555- dual solution values can now be obtained in the interactive shell after solving a pure
    5556 LP without presolving
    5557
    5558### Interfaces to external software
    5559
    5560- new SoPlex 2.0 interface, can be enabled with `LPS=spx2`
    5561- add support for SOS1 and SOS2 constraints to AMPL interface (see `interfaces/check/testset/SOS/sos?a.mod` for example)
    5562- added copy of GAMS interface from COIN-OR/GAMSlinks project; GAMS-reader in SCIP can now read model instances from .gms files
    5563- beta version of a python interface for the scipoptsuite is now available under interfaces/python
    5564- beta version of a Java native interface is now available under `interfaces/jni`
    5565
    5566### Changed parameters
    5567
    5568- parameter `branching/scorefunction` has new value `q` for for `q`uotient branching score function
    5569- replaced parameter `lp/checkfeas` by two parameters `lp/checkprimfeas` and `lp/checkdualfeas` to decide on primal and dual
    5570 feasibility checks individually
    5571- removed all local parameters `reading/(READER)/dynamic{conss|cols|rows}` and replaced them by global parameters
    5572 `reading/dynamic{conss|cols|rows}`
    5573- changed default value of parameter `numerics/dualfeastol` to 1e-7 for safer dual bounds from LP solver
    5574- new possible values for parameter `heuristics/shiftandpropagate/sortkey` for sorting variables w.r.t. their norm,
    5575 default changed from `u` to `v`, which means sorting downwards by violations
    5576
    5577- Constraints:
    5578 - changed type of parameters `constraints/bivariate/scaling`, `constraints/quadratic/scaling`, `constraints/soc/scaling`
    5579 from boolean to character
    5580 - changed default for `constraints/{abspower,bivariate,nonlinear,quadratic,soc}/scaling` to off
    5581 - changed default max coefficient for big-M constraint to be initial from 1e6 to 1e9
    5582
    5583- Separation:
    5584 - changed default value of gomory cut separation parameter `separating/gomory/maxrank` from 0 to 3, to take also gomory
    5585 cuts that could not be scaled to integral coefficients, with maximal rank 3 into account
    5586 - remove parameter `separating/closecuts/relintnormtype`
    5587
    5588### New parameters
    5589
    5590- `branching/checksol` and `branching/heursbsol` to specify whether the strong branching LP solution
    5591 should be checked for feasibility and whether a simple rounding heuristic should be run on this solution
    5592- `branching/firstsbchild` and `branching/forceall` to specify the first child node to be
    5593 investigated during strong branching (`u`p, `d`down, `a`uto) and whether always both children should be solved (only for
    5594 strong branching with domain propagation, per default, the second child is not looked at when the first is infeasible)
    5595- `conflict/fullshortenconflict` to decide whether we want to stop shortening a conflict set, when no
    5596 global bound changes can be found anymore
    5597- `conflict/maxvarsdetectimpliedbounds` to decide whether the a valid conflict of what maximal length
    5598 will be used to derive global bound changes
    5599- `constraints/{linear,knapsack}/detectcutoffbound` and `constraints/{linear,knapsack}/detectlowerbound`
    5600 to enable/disable detection of constraint parallel to the objective function that will add an cutoffbound or an
    5601 lowerbound respectively and these constraints will be prevented from entering the LP
    5602- `constraints/and/upgraderesultant` to upgrade resultants of and constraints from binary to implicit binary variables, default is TRUE
    5603- `constraints/abspower/scaling` and `constraints/nonlinear/scaling`
    5604- `constraints/indicator/scaleslackvar` for scaling of the slack variable in indicator constraints
    5605- `constraints/indicator/trysolfromcover` for trying to construct a feasible solution from a cover
    5606- `constraints/linear/checkrelmaxabs` for checking linear constraints with a side of 0.0 relative to
    5607- `constraints/linear/detectpartialobjective` to enable/disable the detection of sub-equations of the objective function
    5608- `constraints/logicor/strengthen`, should pairwise constraint comparison try to strengthen constraints by removing superflous non-zeros?
    5609- `constraints/xor/addextendedform` to add an extended formulation in XOR-constraints
    5610- `constraints/xor/addflowextended` to add use the extended flow formulation in XOR-constraints
    5611- `heuristics/<heurname>/lplimfac` for LNS heuristics to limit the number of LPs solved in a subproblem
    5612 the maximum absolute value in the activity instead of 1.0
    5613- `heuristics/shiftandpropagate/fixbinlocks` for fixing binary variables with no locks in one direction to the corresponding bound
    5614- `heuristics/shiftandpropagate/collectstats` which decides whether variable statistics are collected
    5615- `heuristics/shiftandpropagate/impliscontinuous` to decide whether implicit integer variables are treated as continuous variables
    5616- `heuristics/shiftandpropagate/preferbinaries` and `heuristics/shiftandpropagate/stopafterfeasible`,
    5617 which decide whether binaries should be shifted first and the shifting should be stopped when no violations are left
    5618- `lp/disablecutoff` to toggle usage of LP cutoff bound (0: enabled, 1: disabled, 2: auto = disabled if pricers are used)
    5619- `misc/calcintegral` (default TRUE) to trigger calculation of primal-dual integral
    5620- `misc/finitesolutionstore` to switch whether infinite fixings should be removed from solutions before
    5621 copying them to the original solution store
    5622- `misc/permuteconss` and `misc/permutevars` to control whether variables and/or constraints should be permuted, if permutationseed != -1
    5623- `presolving/components/feastolfactor` to increase the feasibility tolerance in all sub-SCIPs, when solving a component
    5624- `propagating/obbt/conditionlimit` to discard instable LP bases
    5625- `reading/(READER)/initialconss` that determines whether model constraints are initial
    5626- `reading/cipreader/writefixedvars` for disabling printing of fixed variables in CIP format
    5627- `reading/lpreader/aggrlinearization-ands` and `reading/mpsreader/aggrlinearization-ands` to enable/disable
    5628 the printing of the weak or strict relaxation of and-constraints in LP and MPS format, respectively
    5629- `reading/lpreader/linearize-and-constraints` and `reading/mpsreader/linearize-and-constraints` to
    5630 allow and-constraints to be linearized when printing in LP and MPS format, respectively
    5631- `separating/feastolfac` to allow dynamic decrease of relaxation feasibility tolerance depending on feasibility to applied cuts,
    5632 i.e., allow relaxation solutions to have a primal infeasibility of at most this factor times the infeasibility of applied cuts
    5633- `separating/gomory/sidetypebasis` to decide whether the sides of ranged rows should be determined from the basis status
    5634- `separating/oddcycle/cutthreshold` to run odd cycle separation if not enough cuts have been found
    5635- `separating/zerohalf/delayedcuts` to use the delayed cutpool for the zerohalf separator
    5636- `write/allconss` to enable that all constraints are written
    5637- `write/genericnamesoffset` when writing a generic problem to define an offset on the variable numbering
    5638
    5639### Data structures
    5640
    5641- New structure to store value-based branching and inference history (see pub_history.h).
    5642- new data structure for (circular) queues (`SCIP_QUEUE`)
    5643- hash tables will now increase dynamically
    5644- Moved LP solver interfaces to subdirectory `src/lpi`.
    5645
    5646Testing
    5647-------
    5648
    5649- added McNemar tests and Wilcoxon signed rank tests to cmpres.awk evaluation scripts
    5650- added passing MEM option of testgams(cluster) target as workspace option to GAMS jobs
    5651- extended test scripts by statistical tests
    5652
    5653Build system
    5654------------
    5655
    5656### Makefile
    5657
    5658- default flag for ZIMPL is now `auto`, which means that it is built if and only if GMP is available (GMP=true)
    5659- fixed make install for older Mac systems where install command does not have option -t
    5660- dropped support for Ipopt < 3.10
    5661
    5662Fixed bugs
    5663----------
    5664
    5665- fixed bug when adding (global) clique, implications or variable bound information in solving stage that lead to
    5666 global bound changes which contradict local bounds and therefore need to be stored as pending bound changes
    5667- unlinking a solution now copies solution values smaller than SCIPepsilon() avoiding some feasible solution in the
    5668 transformed problem to be infeasible in the original problem
    5669- fixed bug when flushing the warning buffer when SCIP is closed
    5670- fixed bug when a bound change contradicts a local bound and is stored as pending, but the contradicting local
    5671 bound becomes global afterwards (--> node where pending bound change is valid can be cut off)
    5672- fixed statistics bug: externally given solutions and new solutions found while transforming existing ones
    5673 are now listed in line `other solutions` of primal heuristics statistics
    5674- fixed bug in random generators SCIPgetRandomInt() and SCIPgetRandomReal() for large intervals
    5675- make sure that bound changes of negated original variables are correct
    5676
    5677- Branching:
    5678 - fixed bug w.r.t. changing the variable branching priority beyond the problem stage
    5679 - allow again branching on continuous variables with huge bounds
    5680
    5681- Separation:
    5682 - fixed bug in sepa_cgmip computeObjWeightSize() w.r.t. equal sized rows
    5683 - fixed wrong bound calculation in sepa_rapidlearning
    5684 - fixed bug in flowcover separator to exclude unconstrained rows in aggregation
    5685
    5686- LP and Interfaces:
    5687 - fixed bug that lead to resolving the LP after diving instead of restoring the buffered solution
    5688 - fixed rare bug with conflict analysis and LP/LPI having different states after diving
    5689 - fixed several bugs in lpi_grb
    5690 - fixed wrong strong branching results in lpi_grb.c and an invalid write
    5691 - fixed bug in handling max-function in ampl interface; added support for min-function
    5692
    5693- Presolving:
    5694 - fixed bug in prop_dualfix w.r.t. to fixing of variables to infinity after presolving
    5695 - fixed wrong presolving finished status which sometimes occurred when the time limit was hit during presolve
    5696 - fixed bug where a limit on presolving rounds was exceeded by 1
    5697 - fixed minor bugs in presolving in cons_setppc.c and cons_logicor.c
    5698 - fixed minor bug in cons_linear w.r.t. disabled presolving
    5699
    5700- Propagators:
    5701 - fixed bug in genvbounds propagator occurring when objective offset or scale changes after a restart
    5702 - fixed bug in genvbounds propagator by replacing non-active variables on right-hand side after presolving
    5703
    5704- Readers:
    5705 - fixed memory bug in reader_mps
    5706 - fixed several minor bugs with handling of memory when writing aggregated variables (reader_lp, reader_mps)
    5707 - fixed bug in reader_lp when writing bilinear terms (product sign was missing)
    5708 - fixed bug in reading indicator constraints in mps-format
    5709 - nonlinear readers now create auxiliary objective variables and constraints always as initial and not removable
    5710 in order to avoid unbounded LPs due to loose variables with infinite best bound
    5711
    5712- Constraints:
    5713 - fixed several bugs where variables or constraints were not freed correctly
    5714 - do not multi-aggregate variables if the constant would be a huge value in order to avoid numerical troubles
    5715 - fixed bug with infinite multi-aggregation constants
    5716 - fixed output of aggregated variables in indicator constraints in lp and mps-format
    5717 - improved handling of initial constraints: constraints which are initial, but added during the search to an already
    5718 treated node are kept and added to the LP at every node where they are active
    5719 - fixed bug in cons_superindicator concerning names of upgraded constraints
    5720 - fixed bug in cons_indicator with trying to create solution in problem stage
    5721 - fixed bug in cons_orbitope with fixing upper right triangle in non-root nodes
    5722
    5723Miscellaneous
    5724-------------
    5725
    5726- new SCIP Optimization Suite homepages
    5727
    5728@page RN3_0 Release notes for SCIP 3.0
    5729
    5730@section RN302 SCIP 3.0.2
    5731*************************
    5732
    5733Features
    5734--------
    5735
    5736- reading erroneous CIP files can now output some indication of syntax errors
    5737- can now run splint on core files
    5738- cons_xor now uses the integral variable in propagation
    5739- allowed to switch on/off the solution debugging
    5740
    5741Performance improvements
    5742------------------------
    5743
    5744- improved SCIPlpiAdd{Cols,Rows}() in SoPlex LPi
    5745
    5746Examples and applications
    5747-------------------------
    5748
    5749Interface changes
    5750-----------------
    5751
    5752### New API functions
    5753
    5754- SCIPmarkColNotRemovableLocal() and SCIPmarkRowNotRemovableLocal() to forbid removal of an column/row
    5755 from the LP in the current node
    5756- SCIPmessageVPrintError()
    5757
    5758### Command line interface
    5759
    5760- can now output the solutions in the solution pool in the interactive shell
    5761
    5762### Interfaces to external software
    5763
    5764- updated Mosek LP interface to compile with Mosek 7
    5765
    5766Fixed bugs
    5767----------
    5768
    5769- fixed bugs in solution counting
    5770- fixed fieldtypes in sorting template
    5771- fixed bug concerning the userinterrupt flag, which was not reset
    5772- fixed solution collection when counting solutions
    5773- fixed bug with storing original solutions
    5774- fixed bug with infinite multi-aggregation constants
    5775- fixed bug that removing reverse implication did not reset closestvblpcount
    5776- fixed bug that duplicate solutions stopped copying of solutions to original solution candidate store
    5777- forbid branching on variables with huge bounds; such huge values cannot be enumerated with fixed precision
    5778 floating point arithmetics
    5779- fixed bug that Ipopt's error message was not fully shown due to exiting before the message handler buffer was emptied
    5780- unlinking a solution now copies solution values smaller than SCIPepsilon() avoiding some feasible solution in the
    5781 transformed problem to be infeasible in the original problem
    5782- allow to add columns (rows) with nonzero indices beyond current number of rows (columns) in SoPlex LPi
    5783- updated get.ASL script to cope with broken ftp access to netlib server
    5784
    5785- Memory:
    5786 - fixed bugs with freeing C++ object data for problem and variables
    5787 - fixed memory leak in lp.c (probably never occurred so far since array was not used)
    5788 - fixed bug in sepa_zerohalf.c where the maxcuts(root) parameters led to an invalid memory allocation call
    5789
    5790- LP:
    5791 - fixed assert in solve.c with branched status and LP reached the objective limit
    5792 - fixed bug in heur_oneopt.c and heur_clique.c which was caused by side-effects when calling SCIPconstructLP(); when
    5793 adding new variables in this method (e.g. adding new variables needed for a relaxation), this changes the variables
    5794 array of SCIP
    5795 - fixed problem that diving did not save status for infeasible LPs
    5796 - fixed bug in SCIPlpComputeRelIntPoint() with wrong iteration limit and with wrong recompution
    5797 - fixed bug that old LP size was not updated for deadend if no LP was solved
    5798
    5799- Expressions:
    5800 - fixed issues with ungraceful termination when encountering unsupported expression operands in AMPL interface
    5801 - fixed bug in backward propagation of linear expressions in expression graph
    5802
    5803- Propagation:
    5804 - fixed potential performance issue with tree depth always assumed to be zero when propagating in probing mode
    5805 - fixed bug in prop_vbound w.r.t. creation of variables during the search
    5806 - fixed several bugs in propagation of cons_xor: need to take integral variables into account
    5807 - fixed bug in cons_abspower.c handling infinity values in propagation
    5808 - fixed bug in cons_and.c when a constraint was not correctly propagated which led to wrong dual-presolve reductions
    5809 - fixed bug in cons_abspower: wrong infinity check when propagating bounds
    5810
    5811- Presolving:
    5812 - fixed bug that the number aggregated variables were not counted in presol_inttobinary.c
    5813 - fixed bug in presol_domcol: locks are now checked to see whether rounding was forbidden for a variable
    5814
    5815- Reader:
    5816 - fixed bug in reader_gms.c w.r.t. writing nonlinear expressions with polynomials with constants
    5817 - fixed bugs in parsing bounds from CIP-files, in reader_gms and AMPL interface
    5818 - fixed bug when reading a mps formated file with a missing bound in the bound section
    5819
    5820- Constraints:
    5821 - fixed bug in cons_bounddisjunction with satisfied literal of multi-aggregated variable
    5822 - fixed bug in upgrade method of cons_soc
    5823 - fixed issue with negated variables in cons_xor.c
    5824 - fixed several asserts in cons_xor presolving
    5825 - fixed bug in cons_xor.c calling method on null pointer row
    5826 - fixed bug using a too hard comparison on the objective-infeasible-decision in constraint enforcement
    5827 - fixed possible cycling in enforcement of nonlinear constraints due to too early removal of newly added cuts from LP
    5828 - fixed bug wrongly removing constraints locally while counting
    5829 - fixed bugs in cons_bivariate.c when the nonlinear function is not differentiable on the boundary of the domain
    5830 - fixed bug in cons_indicator.c:SCIPmakeIndicatorFeasible() with handling fixed variables
    5831 - fixed bug in cons_integral: check integrality of implicit integer variables when a solution is checked for feasibility
    5832 - fixed bug in Undercover with `pseudo-`quadratic constraints
    5833 - fixed bug with quadratic constraints not being upgraded
    5834 - fixed bug in intervalarith.c: bivariate quad. equations may have been solved wrongly if second variable is unbounded
    5835
    5836- Separation:
    5837 - fixed bug in sepa_zerohalf.c not copying the displays to the subscip, but still changing a display parameter there
    5838 - fixed iteration limit determination in sepa_closecuts
    5839 - fixed bug in sepa_closecuts: need to make sure that variable values of separation point satisfy bounds
    5840 - fixed bugs in sepa_oddcylce: number of arcs have to be adjusted, handle implicit binary variables,
    5841 fixed bug in heuristic separation method, fixed asserts
    5842 - fixed wrong bound calculation in sepa_rapidlearning
    5843
    5844@section RN301 SCIP 3.0.1
    5845*************************
    5846
    5847Features
    5848--------
    5849
    5850- added delayed cutpool which only gets separated if the sepastore is empty after a separation round
    5851- sepa_cgmip can now take the objective row into account
    5852- added possibility to run clang compiler
    5853- statistics now include output on number of solutions that respect objective limit
    5854
    5855Performance improvements
    5856------------------------
    5857
    5858- also copying active tight cuts from the delayed cut pool when calling SCIPcopyCuts()
    5859- sort genvbounds only when root node is finished; apply more often
    5860
    5861Examples and applications
    5862-------------------------
    5863
    5864Interface changes
    5865-----------------
    5866
    5867- when using an objective limit, heuristic characters are not displayed any longer for worse solutions
    5868
    5869### Deleted and changed API functions
    5870
    5871- fixed spelling in the method name SCIPgmlWriteClosing()
    5872
    5873### New API functions
    5874
    5875- SCIPgetNLimSolsFound() to get number of solutions that respect the objective limit
    5876
    5877Fixed bugs
    5878----------
    5879
    5880- fixed issue with applying the effective root depth during the search
    5881- fixed bug concerning usage of dualbound and lowerbound
    5882- fixed bug trying to color probing nodes, which are not added to the vbc output anymore
    5883- fixed bug in sorting template
    5884- fixed bug leading to removing a ranged row parallel to the objective function, although one of the sides was still needed
    5885- fixed a bug correcting the binvarssorted flag in cons_linear.c
    5886- fixed bug in cons_varbound.c not resolving multi-aggregated variables
    5887- relaxed assert in SCIPvarCh{Lb,Ub}{Global,Local} that new bound must be tighter to feastol
    5888- fixed contra-intuitive behavior when using SCIP with objective limits and solution limit at the same time;
    5889 SCIP now only stops when sufficiently many solutions better than the objective limit have been found
    5890- fixed bug when adding binary implications with non-vartype binary variables
    5891- fixed bug adding binary implications on binary variables with type != `SCIP_VARTYPE_BINARY`
    5892- fixed bug concerning different tolerances for reached objective limit in case of pricing with fastmip
    5893
    5894- LP:
    5895 - fixed bug which disabled iteration limit in SCIPlpSolveAndEval()
    5896 - ensure consistency of LP bounds during OBBT diving, i.e., that lower <= upper holds exactly
    5897 - set lpsolstat to `SCIP_LPSOLSTAT_NOTSOLVED` in SCIPchg{Lp,Dual}feastol()
    5898 - use tighter dual feasibility tolerance for LPs solved during optimization-based bound tightening
    5899 - fixed bug with unflushed LP arising from global bound changes in strong branching
    5900
    5901- Constraints:
    5902 - fixed issue with deleting varbound constraints in case the bound change was not applied
    5903 - fixed bugs in parsing dis-/conjunctive constraints
    5904 - fixed bug with handling of empty logicor and bounddisjunction constraints
    5905 - fixed issue in cumulative constraint and separation
    5906 - fixed bug when sorting knapsack constraints with the same weights
    5907 - fixed bug resulting in trying to delete an upgraded linear constraint a second time in exitpre callback
    5908 - fixed minor bug in conjunctive constraint handler printing wrong constraint
    5909 - fixed bug in disjunctive constraint handler when enforcing a constraint
    5910 - fixed behaviour change of indicator constraint handler when solving another instance after solving one using the
    5911 interactive shell
    5912 - fixed several issues in cumulative constraint handler
    5913 - fixed bug in cumulative constraint handler w.r.t. getting active variables
    5914 - fixed bug in cumulative constraint handler concerning conflict analysis
    5915
    5916- LPI and Interfaces:
    5917 - fixed bug in CppAD in connection with abspower constraints
    5918 - fixed bug in CppAD when using signpower functions with expression pointers that do not fit into an unsigned int
    5919 - better handling of generalized (Lagrangian) variable bounds that are not in the LPI
    5920 - fixed wrong basis rstat values in CPLEX LPI
    5921 - fixed bug with LP not being flushed after bound changes on columns that are not in the LPI
    5922 - methods SCIPlpiIs{PrimalFeasible,DualFeasible,DualUnbounded}() in SoPlex LPi now check that the LP is not perturbed,
    5923 which may happen when stopping due to iteration or time limit
    5924 - fixed inconsistencies between methods SCIPlpiIs{PrimalFeasible,DualFeasible,Optimal,...} in SoPlex LPi
    5925
    5926- Propagation:
    5927 - fixed bug when adding linear constraints with non active variables in solving process, during propagation this
    5928 resulted in changing the row, which is not possible for unmodifiable constraints/locked rows
    5929 - fixed small issue in pseudo objective propagator w.r.t. propagating the lower bound globally
    5930 - fixed bug in cons_orbitope: in rare cases one cannot repropagate
    5931 - fixed bug of wrong result code in propagation in prop_genvbound.c
    5932
    5933- Presolve:
    5934 - fixed bug in copying nonlinear constraints during presolve (resulted
    5935 in wrongly declaring instances as infeasible when using component presolve)
    5936 - fixed bug in copying nonlinear constraints during presolve (nonlinear part was not copied)
    5937
    5938- Heuristics:
    5939 - fixed wrong solving status (OPTIMAL) in case an unbounded solution was provided or found by heuristic before presolve
    5940 - fixed bug in heur_subnlp running with tightened tolerances: sumepsilon must be tightened like feastol and epsilon
    5941 - fixed bug in nlp diving heuristic for fractional variables with values slightly outside of their domain
    5942
    5943- Numerics:
    5944 - fixed several numeric issues
    5945 - fixed numerical bug in conflict.c relaxing bounds while keeping an infeasibility proof
    5946 - fixed feasibility decision bug when replacing inactive variables by their active counterparts, which might change the
    5947 redundancy status of a bounddisjunction constraint due to numerics
    5948 - fixed numerical bug adding a relaxed bound for conflict analysis in cons_varbound
    5949 - fixed numerical bug in conflict analysis of genvbounds propagator
    5950
    5951@section RN300 SCIP 3.0.0
    5952*************************
    5953
    5954Features
    5955--------
    5956
    5957- SCIPcomputeLPRelIntPoint() with normtype=`s` now uses homogenized LP for computing rel.int. point too and allow to
    5958 set relaxrows = FALSE
    5959- new column showing the pseudo objective value
    5960- digraph structure added to misc.c and pub_misc.h that can be used to handle directed graphs, compute undirected
    5961 components in the graph and sort these components (almost) topologically
    5962- SCIP does now print an info message when the root LP could not be solved or is unbounded
    5963- added counter and clock for SCIPcopy() calls
    5964- correct initialization of steepest edge weights with SoPlex 1.6.0.4
    5965- parameters can now be fixed, which means that their value cannot be changed unless they are unfixed, first;
    5966 the fixing status of a parameter is copied to sub-SCIPs, which allows to ensure that certain parameters
    5967 are also not changed when, e.g., heuristics change emphasis settings or also specific parameters
    5968- automatic transfer of original solutions (e.g., provided by the user, from solution pool, after restart, from heuristic
    5969 adding original solution during solve) to the transformed space (might fail due to, e.g., dual fixings)
    5970- added possibility to use GUBs for lifting knapsack cuts (disabled)
    5971- added pre- and post-conditions in doxygen documentation for all methods of scip.{c,h}
    5972- added zeroobj heuristic that solves a copy of the problem without an objective function and with quite strict limits
    5973 on the number of nodes and LP iterations
    5974- complete reworking of the vbounds propagator: it now takes into account variable bounds, cliques and implications,
    5975 stores bounds of variables which were changed and performs a forward propagation from these bounds, i.e., tries to
    5976 derive new bounds for other variables; during propagation, bound changes are propagated in an (almost) topological order
    5977
    5978- Constraints:
    5979 - full version of cumulative constraint handler
    5980 - new constraint handler `superindicator` for indicator constraints with slack constraints of arbitrary type
    5981 - implemented first clique lifting procedure in cons_setppc.c (by default is off)
    5982 - the conjunction and disjunction constraint handlers are now able to parse their CIP output format
    5983
    5984- Memory:
    5985 - better handling of memory limits, in particular for large problems
    5986 - estimate memory consumption for sub-SCIP and do not copy them if close to memory limit
    5987
    5988- Presolve:
    5989 - time for initpre and exitpre methods is now also measured in presolving time
    5990 - added dual presolving for and-constraints difficult instances (no guarantees)
    5991 - oneopt can now be called before presolving
    5992 - added a presolving step in the disjunctive constraint handler, removing disjunction, where a sub-constraint was
    5993 deleted, which means this sub-constraint is redundant, which again means it is always TRUE or will be enforced by
    5994 another constraint
    5995 - added new presolver convertinttobin, which converts bounded integer variables to their binary representation, e.g.
    5996 for integer variable 0 <= x <= 10 the binary variables y0, y1, y2 and y3 are created, such that
    5997 1 y0 + 2 y1 + 4 y2 + 8 y3 <= 10 and x = 1 y0 + 2 y1 + 4 y2 + 8 y3
    5998 - added new presolver gateextraction, which tries to find and-gates/constraints which are linearized
    5999 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
    6000 constraints e.g. (x + y + z >= 1, x + y <= 1, x + z <= 1 and y + z <= 1 => x + y + z == 1));
    6001 gate-extractor is also able to detect logicor constraints and set-packing/-partitioning constraints with the same
    6002 variables, to upgrade these both constraints to a set-partitioning constraint
    6003 - added new presolver components, that searches for independent components in the problem structure and solves
    6004 these components as sub-SCIPs when they are small enough (per default <= 20 discrete variables, nodelimit of 10000)
    6005 - added new presolver domcol that looks for dominated columns in a MIP and tries to fix them
    6006
    6007- Reader:
    6008 - CNF reader now creates feasibility instances per default, usage of an objective has to be set by a parameter
    6009 - added reader for MI(NL)Ps in OSiL (Optimization Services Instance Language) format
    6010
    6011- Statistic:
    6012 - new statistics and new statistic output messages
    6013 - number of presolving calls of plugins is counted and displayed in the statistics,
    6014 can be accessed via SCIPpresolGetNCalls() and SCIP{prop/conshdlr}getNPresolCalls()
    6015 - the statistics shows for a branching rule the number of calls for LP, extern and pseudo candidates
    6016 - new switch `SCIP_STATISTIC` and new macros SCIPstatisticMessage(), SCIPstatisticPrintf() and SCIPstatistic() to output
    6017 statistic and execute code lines which are only needed therefor. Works as `SCIP_DEBUG` and SCIPdebugXyz()
    6018 - added statistics on the number of cuts/rows that have actually been applied to the lp for each constraint handler and separator;
    6019 use SCIPcreate(Empty)RowCons() and SCIPcreate(Empty)RowSepa() to support the statistics.
    6020
    6021- NLP:
    6022 - new propagators obbt and genvbounds for MINLP
    6023 - new NLPI parameter `SCIP_NLPPAR_FASTFAIL` to enable convergence checks in NLP solver to stop early on seemingly
    6024 - added nlpdiving heuristic that comprises several diving heuristics using an NLP relaxation
    6025
    6026Performance improvements
    6027------------------------
    6028
    6029- improved scaling by choosing the smallest scaler
    6030- if first root lp is solved and the optimality is rejected by SCIP, there won't be an unnecessary solving of the lp
    6031 from scratch again
    6032- several performance improvements for Pseudo-Boolean optimization, pseudo objective propagator
    6033- streamlined initlp functions in cons_indicator, cons_sos1, cons_sos2 (add rows only if needed)
    6034- improved time used for adding implications
    6035- speed up in SCIPboolarrayExtend() in misc.c replacing a for loop with BMSmoveMemoryArray() call
    6036- speed up in var.c changing some recursive calls into iterative calls and reducing the number of VARFIX event that are
    6037 thrown for fixation, aggregation or multi-aggregations
    6038- revised reduced cost propagator
    6039- increased performance in SCIPcliqueAddVar(), adding a variable to a clique
    6040- tighten primal and dual feasibility tolerances independently if they are not reached in LP solving
    6041
    6042- Probing:
    6043 - if probing reached the end of all variables it will restart the probing cycle correctly
    6044 - improved probing by ordering the variables differently and applying the one-branch before the zero-branch
    6045
    6046- Constraints:
    6047 - improved scaling of linear constraints, linear constraints with integral variables will now be scale with
    6048 1e+06/MAX(maximal absolute coefficient, 1.0) instead of 1e+03/MAX(maximal absolute coefficient, 1.0);
    6049 if all coefficients are in absolute value equal they will be scaled by that
    6050 - added clique presolving for and-constraints, which checks if two operands or one operand and the resultant are in a
    6051 clique and then fixes the resultant to 0 and in the former case we can delete the and-constraint too
    6052 - speed up in linear constraint handler replacing aggregated variables
    6053 - when all nonlinearities have been fixed and the number of nonfixed variables is 1 in cons_nonlinear/cons_quadratic/
    6054 cons_bivariate, handle it by a bound change instead of adding a linear constraint
    6055
    6056- Separation:
    6057 - automatically turn off separation in sepa_oddcycle if it was too unsuccessful within the last calls
    6058 - use faster Dijkstra variants in sepa_oddcycle
    6059 - improved tcliquegraphAddImplicsVars() in sepa_clique.c to faster add possible variables
    6060 - changed emphasis settings: knapsack disaggregation is now allowed in fast presolving, CG-MIP separator disabled in
    6061 aggressive separation
    6062
    6063- Reader:
    6064 - improved lp-, mps-, opb-reading time
    6065 - speed up mps reader asking parameters only once
    6066
    6067- Heuristics:
    6068 - added parameters mincoveredrel and mincoveredabs to heur_undercover to only run if problem is sufficiently nonlinear
    6069 - improved intdiving heuristic by activating backtracking to a different fixing value
    6070 - heur_undercover treats indicator constraints as nonlinear and fixes the binary variable for linearization
    6071
    6072Examples and applications
    6073-------------------------
    6074
    6075- new examples for scheduling and usage of the callable library with nonlinear problems
    6076- the error messages are not handled via the message handler anymore; per default the error message a written to stderr
    6077
    6078Interface changes
    6079-----------------
    6080
    6081- introduced basic inclusion and creation methods to simplify usage of the SCIP library
    6082- allowed to start diving mode even if LP is not flushed, not solved, or not solved to optimality
    6083- changed the message handler system within SCIP heavily such that it is thread save
    6084- the resolve propagation methods for the constraint handler and propagator getting a new parameter called relaxedbd;
    6085 explaining/resolving this relaxed bound is sufficient
    6086- default integer comparer SCIPsortCompInt() (see pub_misc.h)
    6087
    6088- LP interface:
    6089 - SoPlex LPI supports setting of `SCIP_LPPAR_DUALFEASTOL` when using SoPlex version 1.6.0.5 and higher.
    6090
    6091- Problem:
    6092 - Forbid problem modifications in `SCIP_STAGE_{INIT,EXIT}PRESOLVE` (see pre-conditions for corresponding methods in scip.h).
    6093
    6094- Miscellaneous:
    6095 - New macro SCIPdebugPrintCons() to print constraint only if `SCIP_DEBUG` flag is set.
    6096 - all objscip *.h file now use the default SCIP interface macros (this should avoid errors when changing the interface)
    6097
    6098### New and changed callbacks
    6099
    6100- Constraint Handler:
    6101 - Added a propagation timing parameter `proptiming` to SCIP_DECL_CONSPROP(), giving the current timing at which
    6102 this method is called (also to the corresponding c++ wrapper classes).
    6103 - New optional callback methods in constraint handlers: `SCIP_DECL_CONSGETVARS` and `SCIP_DECL_CONSGETNVARS`.
    6104 These callbacks, if implemented, should return an array of all variables and the number of all variables used
    6105 by the given constraint, respectively. (This method might, e.g., be called by a presolver)
    6106
    6107- NLP Solver Interface:
    6108 - New NLPI callback SCIP_DECL_NLPISETMESSAGEHDLR() to set message handler in NLP solver interfaces.
    6109
    6110- Propagator:
    6111 - Added a propagation timing parameter `proptiming` to SCIP_DECL_PROPEXEC(), giving the current timing at which this method is
    6112 called (also to the corresponding c++ wrapper classes).
    6113
    6114- Plugin management:
    6115 - added `basic` inclusion methods which have only fundamental data of the plug-ins as arguments; added setter functions
    6116 for all non-fundamental callbacks of the plug-ins; the plug-in types with basic inclusion functions are:
    6117 readers, constraint handlers, conflict handlers, presolvers, propagators, heuristics, separators, relaxation handlers,
    6118 branching rules, node selectors and pricers; these methods should make the usage easier, sparing out optional callbacks and
    6119 parameters: e.g., SCIPincludeConshdlrBasic();
    6120 - To extend the basic functionalities, there are setter method to add
    6121 optional callbacks. For example SCIPsetConshdlrParse(), SCIPsetPropCopy() or SCIPsetHeurInitsol().
    6122
    6123- Constraint Handlers:
    6124 - Added basic creation methods for all constraints types, e.g., SCIPcreateConsBasicLinear(); these methods should make the usage easier,
    6125 sparing out optional callbacks and parameters.
    6126
    6127### Deleted and changed API functions
    6128
    6129- SCIPcomputeCoverUndercover() now has an additional parameter coverbd
    6130- tcliqueMaxClique has an additional parameter to store the number of used branch-and-bound nodes
    6131- the code in `src/dijkstra` and `src/xml` has been changed to (increasingly) conform to the SCIP coding style;
    6132 all function (and variable) names have been changed (do not contain `_` anymore).
    6133- renamed SCIPstairmap*Core() to SCIPstairmap*Stair()
    6134
    6135- Conflict Analysis:
    6136 - Added parameter `relaxedbds` to conflict handler callback method SCIP_DECL_CONFLICTEXEC(). This array contains
    6137 bounds which are sufficient to create a valid conflict
    6138
    6139- Constraint Handler:
    6140 - Added a parameter `restart` to the SCIP_DECL_CONSEXITSOL() callback method, indicating whether this call was
    6141 triggered by a restart.
    6142 - Added a parameter `relaxedbd` to SCIP_DECL_CONSRESPROP() callback method. If explaining a given bound change
    6143 (index), it is sufficient to explain the reason for reaching the `relaxedbd` value, see above
    6144 - Removed parameters `isunbounded`, `isinfeasible` and `result` from SCIP_DECL_CONSINITPRE() and SCIP_DECL_CONSEXITPRE()
    6145 callback methods. It is not allowed to determine unboundedness or infeasibility in these callbacks, anymore.
    6146 - added a `SCIP_CONS*` parameter to SCIPcreateConsDisjunction() which can represent the linear relaxation of the whole
    6147 disjunction constraint as a conjunction constraint, or `NULL`
    6148 - remove problematic function cons_indicator:SCIPsetSlackVarIndicator()
    6149 - Renamed SCIPgetCountedSparseSolutions() to SCIPgetCountedSparseSols() in cons_countsols.{c,h}.
    6150
    6151- Counting:
    6152 - Changed the counting system within SCIP heavily. New method for `SCIP_SPARSESOL` usage, SCIPsparseSolCreate(),
    6153 SCIPsparseSolFree(), SCIPsparseSolGetVars(), SCIPsparseSolGetNVars(), SCIPsparseSolGetLbs(), SCIPsparseSolGetUbs()
    6154 in (pub_)misc.{c,h}.
    6155
    6156- Cuts and Separation:
    6157 - removed `targetscip` parameter from SCIPconvertCutsToConss(), now this function can only convert cuts on one instance,
    6158 otherwise use SCIPcopyCuts()
    6159 - added `ncutsadded` parameter to SCIPcopyCuts() to be able to store the number of copied/converted cuts
    6160 - New functions SCIPcreateEmptyRowCons(), SCIPcreateEmptyRowSepa(), SCIPcreateRowCons(), and SCIPcreateRowSepa() that allow
    6161 to set the originating constraint handler or separator of a row respectively; this is, for instance, needed for statistics
    6162 on the number of applied cuts. If rows are created outside a constraint handler or separator use SCIPcreateRowUnspec() and
    6163 SCIPcreateEmptyRowUnspec(). The use of SCIPcreateEmptyRow() and SCIPcreateRow() is deprecated.
    6164 - New functions SCIProwGetOrigintype(), SCIProwGetOriginCons(), and SCIProwGetOriginSepa() to obtain the originator
    6165 that created a row.
    6166
    6167- LP:
    6168 - new parameter numerics/lpfeastol for primal feasibility tolerance used in LP solver
    6169 - SCIPcomputeLPRelIntPoint() takes two new arguments giving a time and iteration limit
    6170 - SCIPcolGetStrongbranchLPAge(), SCIPgetVarStrongbranchLPAge(), SCIPgetNLPs(), SCIPgetNPrimalLPs(), SCIPgetNDualLPs(),
    6171 SCIPgetNBarrierLPs(), SCIPgetNResolveLPs(), SCIPgetNPrimalResolveLPs(), SCIPgetNDualResolveLPs(), SCIPgetNNodeLPs(),
    6172 SCIPgetNNodeInitLPs(), SCIPgetNDivingLPs(), SCIPgetNStrongbranchs(), SCIPgetNRootStrongbranchs() now return a longint
    6173 instead of an integer
    6174
    6175- Message Handler and Printing:
    6176 - New callback method SCIP_DECL_MESSAGEHDLRFREE() which is called when the message handler is freed.
    6177 - The old callback method SCIP_DECL_MESSAGEERROR() was replaced by the callback method SCIP_DECL_ERRORPRINTING().
    6178 - the follwing methods additionally need the SCIP pointer as parameter to make the output thread save:
    6179 SCIPprintVersion(), SCIPsetMessagehdlr(), SCIPgetMessagehdlr() and SCIPwarningMessage()
    6180 - the error printing method can be replaced using the method SCIPmessageSetErrorPrinting(); the default error message
    6181 printing can be recoverd via SCIPmessageSetErrorPrintingDefault() (see pub_message.h)
    6182 - Changed the message handler system within SCIP heavily such that it is thread-safe. SCIPcreateMessagehdlr() in
    6183 scip.{c,h} was replaced by SCIPmessagehdlrCreate() in pub_message.h/message.c with a changed parameter list;
    6184 see pub_message.h and type_message.h.
    6185 - removed method SCIPcreateMesshdlr(), please use SCIPmessagehdlrCreate() (see pub_message.c)
    6186 - removed method SCIPfreeMesshdlr(), please use SCIPmessagehdlrRelease() (see pub_message.c)
    6187 - Error messages (SCIPerrorMessage()) are not handled via the message handler anymore; per default the error
    6188 message is written to stderr.
    6189 - the following methods need an additional message handler: SCIPdispLongint(), SCIPdispInt(), SCIPdispTime(), all message
    6190 handler methods (see pub_message.h), SCIPhashtablePrintStatistics(), SCIPhashmapPrintStatistics(), SCIPlpiCreate()
    6191 - SCIPprintCons() does not print termination symbol `;\n` anymore; if wanted, use SCIPinfoMessage() to print `;\n` manually
    6192 - remove SCIPcolPrint() and SCIProwPrint(), please use SCIPprintCol() SCIPprintRow() see scip.h
    6193 - method SCIPprintError() does not need the file stream anymore. The error is written via the error message callback.
    6194
    6195- Nonlinear expressions, relaxation, and solver interface:
    6196 - Method SCIPexprtreeRemoveFixedVars() is not public anymore.
    6197 - Renamed SCIPmarkNonlinearitiesPresent() to SCIPenableNLP()
    6198 - Renamed SCIPhasNonlinearitiesPresent() to SCIPisNLPEnabled().
    6199 - removed SCIPmarkContinuousNonlinearitiesPresent(),
    6200 renamed SCIPhasContinuousNonlinearitiesPresent() to SCIPhasNLPContinuousNonlinearity() and allow call only during
    6201 initsolve and solve,
    6202
    6203- Parameters:
    6204 - Replaced SCIPparamSet*() by SCIPchg*Param()
    6205 + replaced SCIPparamSetBool() by SCIPchgBoolParam()
    6206 + replaced SCIPparamSetInt() by SCIPchgIntParam()
    6207 + replaced SCIPparamSetLongint() by SCIPchgLongintParam()
    6208 + replaced SCIPparamSetReal() by SCIPchgRealParam()
    6209 + replaced SCIPparamSetChar() by SCIPchgCharParam()
    6210 + replaced SCIPparamSetString() by SCIPchgStringParam()
    6211
    6212- Presolving:
    6213 - Removed parameters `isunbounded`, `isinfeasible` and `result` from SCIP_DECL_PRESOLINITPRE() and
    6214 SCIP_DECL_PRESOLSEXITPRE(). It is not allowed to determine unboundedness or infeasibility in these callbacks, anymore.
    6215
    6216- Propagator:
    6217 - changed parameters of function SCIPpropagateCutoffboundVar() in prop_pseudoobj.{c,h}
    6218 - Added a parameter `restart` to SCIP_DECL_PROPEXITSOL() callback method, indicating whether this call was triggered
    6219 by a restart.
    6220 - Added a parameter `relaxedbd` to SCIP_DECL_PROPRESPROP() callback method. If explaining a given bound change
    6221 (index), it is sufficient to explain the reason for reaching the `relaxedbd` value.
    6222 - Removed parameters `isunbounded`, `isinfeasible` and `result` from SCIP_DECL_PROPINITPRE() and
    6223 SCIP_DECL_PROPEXITPRE() callback methods. It is not allowed to determined unboundedness or infeasibility in
    6224 these callbacks, anymore.
    6225
    6226- Sort and Copy:
    6227 - The methods SCIPsortedvecInsert*() have an additional parameter which can be used to receive the position where
    6228 the new element was inserted, if this is not of interest a `NULL` pointer can be given
    6229 - new parameter in SCIPcopyPlugins() to indicate whether the message handler from the source SCIP should be passed to the
    6230 target SCIP (only the pointer is copied and the usage counter of the message handler is increased)
    6231 - New parameter in SCIPcopy() to indicate whether the message handler from the source SCIP
    6232 should be passed to the target SCIP (only the pointer is copied and the usage counter of the message handler is
    6233 increased). In multi theaded enviroment this parameter needs to be set to FALSE.
    6234
    6235- Variable usage:
    6236 - rename SCIPvarGetBestBound() to SCIPvarGetBestBoundLocal()
    6237 - rename SCIPvarGetWorstBound() to SCIPvarGetWorstBoundLocal()
    6238 - Method SCIPvarGetProbvarSum() is not public anymore, use SCIPgetProbvarSum() instead.
    6239 - Replaced method SCIPvarGetRootRedcost() by SCIPvarGetBestRootRedcost().
    6240
    6241### New API functions
    6242
    6243- setup timer to all plugins and therefore SCIP<plugin-type>GetSetupTime() methods in all pub_plugin-type.h to ask
    6244 for this time (, e.g. SCIPeventhdlrGetSetupTime() in pub_event.h)
    6245- new GML(Graph Modeling Language) methods SCIPgmlWriteOpening(), SCIPgmlWriteCosing(), SCIPgmlWriteArc(), SCIPgmlWriteEdge(),
    6246 SCIPgmlWriteNode() that write to a given GML file
    6247- new LPI method SCIPlpiGetObjsen() to query objective sense
    6248- SCIPpermuteIntArray() in pub_misc.h and misc.c for permuting an integer array
    6249- SCIPcalcBinomCoef() in pub_misc.h and misc.c which calculates a binomial coefficient up to 33 over 16
    6250- SCIPheurPassSolAddSol() in heur_trysol.c; solution which are passed via this method are just without any feasibility check
    6251- SCIPgetGlobalPseudoObjval() which returns the global pseudo objective value which is all variables
    6252 set to their best (w.r.t. the objective function) global bound
    6253- SCIPhashGetKeyStandard() which returns the element itself as the key, SCIPhashKeyEqPtr(),
    6254 SCIPhashKeyValPtr() which do the hash-comparison/-conversion on a pointer in pub_misc.h
    6255- SCIPhashtableClear() which removes all elements of a hash table
    6256- SCIPisUpdateUnreliable() to check whether an iteratively updated value should be recomputed from scratch
    6257 (e.g., for activities; uses new parameter `misc/num_recompfac`)
    6258- SCIPisHugeValue() to check whether a value is huge and should be handled separately from other values
    6259 (e.g., in activity computations) and SCIPgetHugeValue() to get the smallest value counting as huge
    6260- SCIPfixParam() and SCIPunfixParam() to fix and unfix a parameter, respectively;
    6261 the fixing status of a parameter can be requested by SCIPparamIsFixed();
    6262- SCIPsetBasePointClosecuts() to set the base point for close cut separation
    6263- SCIPchgCutoffboundDive() to change the cutoffbound in diving mode
    6264- SCIPupdateCutoffbound() which can be used to pass a cutoff bound
    6265
    6266- Presolving:
    6267 - SCIPpropIsPresolDelayed() which return if a propagator is delay during presolving
    6268 - Added method SCIPisPresolveFinished() which returns whether the presolving process would be stopped after the
    6269 current presolving round, given no further reductions will be found, can be used to ensure that a presolver is called very late
    6270
    6271- Memory:
    6272 - added forgotten implementation of SCIPfreeMemorySize(), SCIPfreeMemorySizeNull() in scip.h and BMSfreeMemorySize(),
    6273 BMSfreeMemorySizeNull() in memory.h
    6274 - SCIPmemccpy() in pub_misc.h and misc.c which copies either a specified number of charcters of a source
    6275 string to a destination string or until it hits a stoping character
    6276 - BMSmoveMemory(), BMSmoveMemoryArray(), BMSmoveMemorySize() and corresponding BMSmoveMemory_call() in
    6277 memory.{h,c} too move memory elements
    6278
    6279- Conflict Analysis:
    6280 - SCIPisConflictAnalysisApplicable() which return FALSE is the conflict will not runs; can be used
    6281 to avoid unnecessary initialization of the conflict analysis
    6282 - SCIPaddConflictRelaxedLb(), SCIPaddConflictRelaxedUb() and SCIPaddConflictRelaxedBd(); these methods
    6283 can be used to give for a bound change which is part of an explanation a relaxed bound; this means the relaxed bound
    6284 is already efficient to be part of a valid explanation
    6285 - SCIPisConflictVarUsed() returns TRUE if the given bound change is already part of the conflict set;
    6286 that is the bound change is redundant;
    6287 - SCIPgetConflictVarLb() and SCIPgetConflictVarUb() returning the lower/upper bound of the given
    6288 variable within the current active conflict set
    6289
    6290- Variable usage:
    6291 - SCIPvarsGetProbvar() in pub_var.h and var.c, which returns for a given array of variables the active, fixed
    6292 or multiaggregated representation
    6293 - SCIPgetActiveVars() in scip.{h,c}, which returns for a given array of variables the active counterparts
    6294 - SCIPgetNObjVars() which returns the number of variables which have a non-zero objective coefficient
    6295 - SCIPenableVarHistory() and SCIPdisableVarHistory() which can be used to turn off and on the collection
    6296 of variables statistics which is used for example for branching
    6297 - SCIPbranchVarHole() which branches a variable w.r.t. a given domain hole
    6298 - SCIPvarGetAggregatedObj() which computes for a (not active) variable the corresponding objective value
    6299 - SCIPsolIsOriginal() that returns whether a solution is defined on the original variables
    6300 - SCIPgetVarImplRedcost() which returns the implied reduced costs
    6301 - SCIPvarGetBestRootSol(), SCIPvarGetBestRootRedcost(), SCIPvarGetBestRootLPObjval() which return the best
    6302 combination for a variable w.r.t. root solution value, root LP objective value and root reduced cost
    6303 - SCIPhaveVarsCommonClique() in scip.{h,c}, to check for common clique information on two given variables
    6304 - added basic creation methods SCIPcreateVarBasic() and SCIPcreateProbBasic() and setter functions for
    6305 non-fundamental callbacks of variables and problems.
    6306 - added new methods SCIPvarGetBestBoundGlobal() and SCIPvarGetWorstBoundGlobal().
    6307
    6308- Constraint Handler:
    6309 - added public wrapper functions for calling constraint handler callback methods for a single constraint:
    6310 SCIPactiveCons(), SCIPdeactiveCons(), SCIPinitlpCons(), SCIPsepalpCons(), SCIPsepasolCons(), SCIPpropCons(),
    6311 SCIPrespropCons(), SCIPenfopsCons(), SCIPenfolpCons()
    6312 - added basic creation methods for all constraint handlers
    6313 - SCIPchgCapacityKnapsack() which can be used to change the capacity of a knapsack constraint
    6314 - SCIPconsIsAdded() which returns whether a constraint was already to a SCIP instance
    6315 - SCIPconshdlrGetNCutsApplied() in pub_cons.h to get the number of cuts applied to the lp
    6316 - SCIPconshdlrIncNAppliedCuts() in cons.h to increase the number of applied cuts (used by sepastore.c)
    6317 - SCIPchgVarName() and SCIPchgConsName() which can be used to change name of variables and
    6318 constraints in problem creation stage
    6319 - New methods SCIPgetConsVars() and SCIPgetConsNVars() which return for a given constraint the involved variables and
    6320 the number of variables if the corresponding constraint supports this (optional) callbacks
    6321 (corresponding callbacks need to be implemented, see above)
    6322
    6323- Message Handler:
    6324 - SCIPmessagehdlrCapture() which captures a given message handler (increases number of uses)
    6325 - SCIPmessagehdlrRelease() which releases and possibly frees a given message handler (decreases number of uses)
    6326 - SCIPsetMessagehdlrLogfile() which can be used to write into a log file
    6327 - SCIPsetMessagehdlrQuiet() which can be used to turn the screen output on and off
    6328
    6329### Command line interface
    6330
    6331- in the interactive shell, parameters can be fixed and unfixed with `fix` (instead of `set`), e.g., `fix heuristics rens freq TRUE`;
    6332- new shell command `change minuc` to minimize the number of unsatisfied constraints
    6333
    6334### Interfaces to external software
    6335
    6336- beta-version of a MATLAB interface can be found under interfaces/matlab
    6337- beta-version of a AMPL interface can be found under interfaces/ampl
    6338
    6339### Changed parameters
    6340
    6341- `branching/fullstrong/reevalage` changed from an integer to a longint parameter
    6342
    6343- Removed parameters:
    6344 - `separating/closecuts/separootonly`
    6345 - `constraints/quadratic/defaultbound`
    6346 - `separating/cgmip/nodelimit`
    6347
    6348### New parameters
    6349
    6350- `constraints/%s/timingmask` for changing the timingmask for calling the propagtion method of all constraint plugins
    6351- `constraints/and/dualpresolving` by default set to TRUE, enabling dual-presolving on and-constraints
    6352- `constraints/indicator/{sepacouplingcuts,sepacouplinglocal}` to enable separation of (local) cuts
    6353- `constraints/indicator/{maxsepacuts,maxsepacutsroot}` to restrict the number of separated cuts
    6354- `constraints/indicator/dualreductions` to enable dual presolving/propagation steps
    6355- `constraints/setppc/cliquelifting`, `constraints/setppc/addvariablesascliques`,
    6356 `constraints/setppc/cliqueshrinking`, first for enabling/disabling the clique lifting algorithm in cons_setppc.c,
    6357 second parameter is for trying to create extra clique constraints in lifting algorithm, third parameter is for trying
    6358 to decrease the number of variable in a clique constraint in the lifting algorithm
    6359- `limits/totalnodes` that allows to stop at the correct node if a restart occured; therefore the new
    6360 `SCIP_STATUS_TOTALNODELIMIT` is added
    6361- `lp/{rootiterlim,iterlim}` to set a limit on the LP iterations spend in the initial root LP and each
    6362 LP resolve, respectively
    6363- `misc/transorigsols` by default set to TRUE, that switches whether SCIP tries to transfer original
    6364 solutions into the transformed space (in initsol and if a heuristic adds an original solution during solving)
    6365- `numerics/hugeval` that defines the smalles value counting as huge (see new method SCIPisHugeValue())
    6366- `numerics/recompfac` which denotes the factor, by which the absolute of an iteratively updated value has
    6367 to be decreased in order to recompute the value from scratch
    6368- `presolving/convertinttobin/maxdomainsize` by default is set to `SCIP_LONGINT_MAX`, which deternmines
    6369 the domainsize for which integers are converted to their binary representation
    6370- `presolving/convertinttobin/onlypoweroftwo` by default is set to FALSE, that parameter allows you to
    6371 only convert integer variables with a domainsize of 2^p-1 to their binary representation
    6372- `presolving/convertinttobin/samelocksinbothdirections` by default is set to FALSE, that parameter allows
    6373 you to convert only integer variables to their binary representation, which have the same amount of up- and downlocks
    6374- `presolving/gateextraction/sorting` by default is set to 1, that parameter determines if you want to try
    6375 to extract big-gates(-1) or small-gates(1) at first by ordering bigger/smaller logicor constraint up front, or use
    6376 them as they are (0)
    6377- `presolving/gateextraction/onlysetpart` by default is set to FALSE, that parameter allows you to
    6378 only extract set-partitioning and no and-constraints
    6379- `presolving/gateextraction/searchequations` by default is set to TRUE, that parameter allows you to
    6380 search for logicor constraints and set-packing/-partitioning constraints with same variables
    6381- `propagating/%s/timingmask` for changing the timingmask for calling the propagtion method of all propagator plugins
    6382- `propagating/probing/maxdepth` to set the maximal depth until the probing propagation is executed
    6383- `reading/cnfreader/useobj` to state whether an artificial objective, depending on the number of clauses
    6384 a variable appears in, should be used, by default set to FALSE, old default behavior of reader corresponds to TRUE
    6385- `separating/cgmip/{minnodelimit,maxnodelimit}` to determine node limit.
    6386- `separating/closecuts/maxlpiterfactor` for iteration limit in relative interior point computation
    6387- `separating/oddcycle/maxunsucessfull` to automatically turn off separation
    6388- `oncepernode` in Rounding and Simple Rounding heuristic
    6389
    6390### Data structures
    6391
    6392- new data structure for binary trees (`SCIP_BT` and `SCIP_BTNODE` in pub_misc.h)
    6393- renamed data structure `SCIP_STAIRMAP` to `SCIP_PROFILE`
    6394- added new stages `SCIP_STAGE_INITPRESOLVE`, `SCIP_STAGE_EXITPRESOLVE` and `SCIP_STAGE_FREE`; renamed `SCIP_STAGE_FREESOLVE`
    6395 to `SCIP_STAGE_EXITSOLVE`
    6396- Changed the counting system within SCIP heavily. `SPARSESOLUTION` was renamed to `SCIP_SPARSESOL` and moved
    6397 from cons_countsols.h to struct_misc.h
    6398
    6399Testing
    6400-------
    6401
    6402- the check script now recognizes MIQCP and MINLP instances
    6403- make test now also checks instances in wbo, cnf, osil and fzn format
    6404- renamed parameter SCRDIR of `make testgams` to CLIENTTMPDIR and changed its default to `/tmp`
    6405
    6406Build system
    6407------------
    6408
    6409### Makefile
    6410
    6411- CppAD source code is now distributed with SCIP (`src/cppad`), so that `lib/cppad` is not used anymore;
    6412 the default for EXPRINT has changed from none to cppad
    6413
    6414Fixed bugs
    6415----------
    6416
    6417- fixed bug with strong branching with the LP status for conflict analysis
    6418- fixed bug w.r.t. adding a value to the objective offset of the transformed problem
    6419- fixed wrong assert in feasibility pump stage 3
    6420- fixed bug in solve.c, applied bounding for the initial lp was only done if root-lp-solution was valid but another
    6421 solution could also have been added
    6422- primal solutions with infinite objective value are now automatically discarded
    6423- all plugins that solve sub-SCIPs now do not stop the whole solution process if there has been an error
    6424- fixed bug in cip reader, wrong use of SCIPstrtok()
    6425
    6426- Variables:
    6427 - fixed bug in shiftandpropagate w.r.t. SCIPconstructLP() which can have the side effect that variables are created
    6428 - method SCIPvarGetProbvarSum() (and thus also SCIPgetProbvarSum()) returns +/-infinity if the variable resolves to a
    6429 variable fixed to +/-infinity (depending on the sign of the scalar) but does not multiply with the scalar, anymore
    6430 - better handling of infinite solution values for aggregated and negated variables
    6431 - fixed bug that disabled multi-aggregation of two integer or implicit integer variables
    6432 - fixed bug in sol.c with requesting values of transformed variables in original solution; previously this had only
    6433 been handled in SCIPgetSolVal(), now the handling has been moved to SCIPsolGetVal()
    6434 - fixed several bugs writing an mps file in the reader_mps.c, e.g. writing fixed variables which are not (yet) removed
    6435 and writing integer variables even with an objective value of 0, if they only exist in non-linear constraints
    6436
    6437- Separation:
    6438 - fixed minor bugs with respect to counting generated and lifted cuts in sepa_oddcycle
    6439 - fixed bug in sepa_clique.c, could not handle only empty cliques, that were not removed
    6440
    6441- Heuristics:
    6442 - fixed potential bugs in shiftandpropagate heuristic concerning the transformation update of a variable with free status
    6443 - fixed bug in heur_zirounding with computation of up/downslacks
    6444 - fixed bug in mutation heuristic with unnecessary aborts due to a wrong memory limit
    6445 - fixed potential bug in fix-and-infer heuristic with variables being fixed to infinite value
    6446 - fixed bug in diving heuristics with variables being fixed to values outside their domain
    6447 - fixed bug in simple rounding heuristic with column generation for variables with strictly positive lower bound
    6448 - made Octane heuristic numerically more stable to avoid asserts being caused by cancellation
    6449 - fixed bug in mutation heuristic with variables being fixed to infinite values
    6450 - do not run heur_shiftandpropagate if there is no LP
    6451
    6452- LP Interface:
    6453 - fixed bug in Cplex LPI: after running simplex, solisbasic flag was always true, which might be wrong if Cplex hit a
    6454 time limit
    6455 - fixed bug in SCIP probing mode with cleared LPI state but solved LP
    6456 - fixed assert with `LPI=none` (need to count rows/cols in lpi_none)
    6457 - fixed bug in SoPlex LPI where objective sense was not correct after reading LP from file in SCIPlpiReadLP()
    6458
    6459- Constraints:
    6460 - fixed bug in scip.c adding a constraint in SCIPgetConsCopy() to the constraint hashmap
    6461 - fixed bug in cons_linear w.r.t recalculation of unreliable activities
    6462 - fixed bug in cons_linear concerning huge activity values: besides infinite contributions, we now also treat huge
    6463 contributions separately, count their occurences in a constraint and provide a relaxed activity value
    6464 - fixed bug in cons_xor.c parsing a constraint
    6465 - fixed count of propagations in cons_indicator and only try to propagate if variables are not yet fixed
    6466 - fixed some bugs in cons_disjunction.c (wrong assert, forgotten deletion of constraint, wrong SCIPreleaseCons() call)
    6467
    6468Miscellaneous
    6469-------------
    6470
    6471- first release of GCG, a generic branch-cut-and-price solver built on top of SCIP
    6472- first release of UG, a framework for solving mixed integer programs, mixed integer
    6473 nonlinear programs and constraint integer programs in parallel
    6474- new SCIP T-shirts
    6475- renamed ZIB Optimization Suite to SCIP Optimization Suite
    6476
    6477@page RN2_1 Release notes for SCIP 2.1
    6478
    6479@section RN212 SCIP 2.1.2
    6480*************************
    6481
    6482Performance improvements
    6483------------------------
    6484
    6485- fixed performance issue in debug mode, where SCIPvarGetLPSol_rec() calculated a value to often, which in the end lead
    6486 to exponential growth in running time
    6487- force cuts from linearizations of convex constraint in NLP relax solution into LP, thus allowing faster proving of
    6488 optimality for convex NLPs
    6489
    6490Fixed bugs
    6491----------
    6492
    6493- fixed bug in varAddTransitiveImplic() in var.c, when adding implications on special aggregated, namely negated, variables
    6494- fixed issue if a primal solution leads to a cutoff of the current focus node
    6495- fix compilation issues with zlib 1.2.6
    6496- fixed bug in SCIPsolveKnapsackExactly(), trying to allocate too much memory which led to an overflow and later to a segmentation fault
    6497- fixed bug in sepa_rapidlearning, carrying on the optimization process, when already solved
    6498
    6499- Heuristics:
    6500 - fixed bug in heur_undercover.c, where a variable with fixed bounds but not of status `SCIP_VARSTATUS_FIXED` was wrongly handled
    6501 - fixed bug in heur_oneopt.c which forgot to check LP rows if local rows are present
    6502
    6503- Constraints:
    6504 - fixed bug in SCIPsolveKnapsackExactly()
    6505 - fixed bug in cons_quadratic where bounds on activity of quadratic term were not always invalidated when quadratic variables were removed
    6506 - fixed bug in cons.c, where after a restart the arrays for all initial constraints were corrected in the initsol process
    6507 instead of the initpre process, this was to late because you might change the status in presolving which lead to an assert()
    6508 - fixed bug in NLP representation of abspower constraints handling (x+a)^2 with nonzero a
    6509 - fixed bug parsing an and-constraint in cip format
    6510 - fixed bug in cons_setppc, did not handle new constraints with inactive variables
    6511 - fixed bug in cons_xor.c which did not copy the artificial integer variable (used for the lp relaxation)
    6512
    6513@section RN211 SCIP 2.1.1
    6514*************************
    6515
    6516Features
    6517--------
    6518
    6519- the pseudo objective propagator can be forced to propagate if active pricers are present; this can be done
    6520 if for all (known or unknown) variables follows that: they have positive (negative) objective coefficient
    6521 and the global lower (upper) bound is zero.
    6522
    6523Performance improvements
    6524------------------------
    6525
    6526- improvements in undercover heuristic
    6527- improve SCIPintervalSolveBivariateQuadExpressionAllScalar() for ax=0 case if x has 0 in the interval for the linear coef.
    6528- better domain propagation for quadratic constraints that consist of `non-overlapping` bilinear terms only
    6529- ensure that a fixing of a variable in an abspower constraint is propagated to a fixing of the other variable
    6530- improvements in undercover heuristic, e.g., bound disjunction constraints are considered when setting up the covering problem
    6531
    6532Interface changes
    6533-----------------
    6534
    6535### Changed parameters
    6536
    6537- changed parameter `propagating/pseudoobj/maxcands` to `propagating/pseudoobj/minuseless` (see prop_pseudoobj.c)
    6538 due to revision of the pseudo objective propagator
    6539
    6540### New parameters
    6541
    6542- added parameters `heuristics/undercover/coverbd` and `heuristics/undercover/fixingorder`
    6543
    6544Fixed bugs
    6545----------
    6546
    6547- fixed numeric issue in aggregations
    6548- fixed pseudo cost computation
    6549- fixed bug with setting type of slack variables to be implicitly integral
    6550- fixed bug when copying problem data in c++ case returned with the result `SCIP_DIDNOTRUN`
    6551- fixed computation of counter which state the changes since the last call of a presolver
    6552- fixed handling of unbounded solutions, including double-checking their feasibility and that the primal ray is a
    6553 valid unboundedness proof and reoptimizing the LP with modified settings if the solution is not feasible
    6554- fixed compilation issues with negate() function in intervalarith.c on exotic platforms
    6555- fixed bug in SCIPsortedvecDelPos...() templates
    6556- pseudo objective propagator does not propagate it active pricers are present
    6557- fixed bug in heur_shiftandpropagate.c concerning the treatment of unbounded variables
    6558- workaround for trying to add variable bounds with to small coefficients
    6559
    6560- Reading and Writing:
    6561 - gams writer now also substitutes $-sign from variable/equation names
    6562 - fixed bug in reader_mps.c: INTEND marker is now also written, if COLUMNS section ends with non-continous variables
    6563 - fixed bug in flatzinc reader w.r.t. boolean expressions
    6564
    6565- Constraints:
    6566 - fixed constraint flags evaluation within the ZIMPL reader (reader_zpl.c)
    6567 - fixed bug in SCIPmakeIndicatorFeasible() in cons_indicator.c
    6568 - fixed bug with conflict clause modification in cons_indicator
    6569 - fixed bug in cons_bounddisjunction with uninitialized return values
    6570 - fixed bug in cons_orbitope with calling conflict analysis
    6571 - fixed bug in nlpi_oracle w.r.t. changing linear coefs in a NLP constraint
    6572
    6573@section RN210 SCIP 2.1.0
    6574*************************
    6575
    6576Features
    6577--------
    6578
    6579- New original solution storage capability, which allows transfering solutions between SCIP runs
    6580- SCIP-CPX is now threadsafe
    6581- comparison of solutions now also works for original solutions
    6582- can now compute the relative interior point of the current LP
    6583- interval arithmetics for power, log, exp, bivariate quadratic expressions should be rounding safe now
    6584- LP iterations in resolving calls can now be limited w.r.t. the average number of LP iterations in previous calls
    6585 (after the root node); this is currently only done for the initial LP solve at a node and the corresponding parameter
    6586 resolveiterfac is set to -1 (no limit) per default
    6587- it is now possible in `SCIP_STAGE_TRANSFORMED` to call SCIPaddVarLocks() (i.e. to lock variables in initialization methods)
    6588- changed computation of optimality gap which is now done in the same way as described in the MIPLIB 2010 paper: the gap
    6589 is 0, if primalbound (pb) and dualbound (db) are equal (within tolerances), it is infinity if pb and db have opposite
    6590 signs and (this changed), if both have the same sign, the difference between pb and db is devided by the minimum of
    6591 the absolute values of pb and db (instead of always the dual bound)
    6592- functionality to use the bound flipping ratio test of SoPlex is available (requires at least version 1.5.0.7)
    6593- there exists now a solution candidate store for the original problem; during transformation these solutions are tried;
    6594 during free the transformed problem the best feasible solution of the transformed problem are copied to the solution
    6595 candidate store of the original problem; this useful if you solve several problems iteratively, solutions get now
    6596 carried over automatically.
    6597- reworked concept of lazy bounds: they can now also be used for problems where constraints and objective together
    6598 ensure the bounds; to allow this also for diving heuristics that might change the objective and thus destroy this
    6599 property, lazy bounds are explicitly put into the LP during diving and removed afterwards
    6600- `SCIP_HASHMAP` now works also without block memory
    6601- The variable deletion event is now a variable specific event and not global, anymore.
    6602- All timing flags are now defined type_timing.h.
    6603- all C template files are now called <plugintype>_xyz.{c,h} instead of <plugintype>_xxx.{c,h}
    6604
    6605- Separators and Cuts:
    6606 - reorganized computation of scores in cut filtering: instead of the computation at the time of addition, scores are now
    6607 only computed w.r.t. the current LP solution and when cut filtering is performed; one can now fill the cut storage
    6608 with cuts that were separated for different solutions
    6609 - New separator for close cuts and a new function to compute relative interior points of the LP
    6610 - added first version of sepa_closecuts.{c,h} to separate cuts w.r.t. a point that is closer to the integral polyhedron
    6611
    6612- Constraints:
    6613 - implement possibility to force a restart in cons_indicator if enough indicator variables have been fixed
    6614 - the xor constraint handler can now parse its constraints
    6615 - the bounddisjunction constraint handler can now parse its constraints
    6616 - the knapsack, setppc and soc constraint handler can now parse their constraints
    6617 - the varbound constraint handler can now parse its constraints
    6618 - added beta version of variable deletion: for branch-and-price application, variables can now be completely deleted
    6619 from the problem; variables that are deletable have to be marked with SCIPvarMarkDeletable(), constraint handlers can
    6620 implement the new `SCIP_DECL_DELVARS` callback that should remove variables from the constraints; at the moment, only
    6621 the linear, the setppc and the knapsack constraint handler support this callback; furthermore, when using this
    6622 feature, all used plugins have to capture and release variables they store in their data, this is currently only done
    6623 for the aforementioned constraint handlers as well as the and, the varbound and the logicor constraint handler; for
    6624 more details about this feature, see the FAQ
    6625 - added pseudoboolean constraint handler (cons_pseudoboolean.{c,h})
    6626 - added first version of cons_disjunction.{c,h} which allows a disjunction of constraints
    6627 - added constraint handler for (absolute) power constraints (cons_abspower.{c,h}) to handle equations like z = sign(x)abs(x)^n, n > 1
    6628
    6629- Heuristics:
    6630 - new heuristic vbounds which use the variables lower and upper bounds to fix variable and performs a neighborhood search
    6631 - added vbound heuristic (heur_vbounds.{c,h})
    6632 - added clique heuristic (heur_clique.{c,h})
    6633
    6634- Reading and Writing:
    6635 - added writing for wbo files
    6636 - added writing for pip files (linear, quadratic, polynomial nonlinear, polynomial abspower, polynomial bivariate, and
    6637 and constraints)
    6638 - CIP format variable characters defined, e.g. `SCIP_VARTYPE_INTEGER_CHAR`
    6639 - Improved support for wbo format for weighted PBO problems, IBM's xml-solution
    6640 format and pip and zimpl format for polynomial mixed-integer programs
    6641 - New reader for (standard) bounds on variables
    6642 - Extended reader for CIP models to handle various new constraints, including all types of linear constraints
    6643 - flatzinc reader is now capable to read cumulative constraints
    6644 - changed opb(/wbo) reader which now creates pseudoboolean constraints instead of linear- and and-constraints, only a
    6645 non-linear objective will create and-constraints inside the reader and while reading a wbo file the topcost constraint
    6646 is created as well
    6647 - added clock for determine the time for reading
    6648 - added reader for variable bounds (reader_bnd.{c,h})
    6649 - Removed method SCIPreadSol(); call solution reading via SCIPreadProb() which calls the solution reader for .sol files.
    6650
    6651- Nonlinear:
    6652 - Major extensions for nonlinear CIP, new option for n-ary branching on nonlinear variables (within pseudocost branching rule)
    6653 - added BETA version of constraint handler for nonlinear constraints (cons_nonlinear.{c,h}) to handle nonlinear
    6654 equations given by algebraic expressions using operands like addition, multiplication, power, exp, log, bivariate
    6655 nonlinear constraints; currently no trigonometric functions
    6656 - added BETA version of constraint handler for bivariate nonlinear constraints (cons_bivariate.{c,h}) to compute tight
    6657 estimators for 1-convex and convex-concave bivariate nonlinear functions (given as expression tree)
    6658 - the gams writer can now write nonlinear, abspower and bivariate constraints
    6659 - Extended writer for GAMS and pip format to write more types of nonlinear constraints
    6660 - the pip and zimpl reader now create nonlinear constraints for polynomials of degree > 2
    6661
    6662- Presolving:
    6663 - new dual presolving methods in cons_setppc and cons_logicor
    6664 - new presolving step `removeConstraintsDueToNegCliques` in locigor constraint handler which updates logicor constraints
    6665 to setppc constraints if a negated clique inside this constraint exist, by default is off
    6666 - new presolving step in cons_knapsack (detectRedundantVars, deleteRedundantVars) which determines redundant variables
    6667 in knapsack constraint with or without using clique information
    6668 - cons_logicor is now able to replace all aggregated variables in presolving by there active or negation of an active
    6669 variable counterpart
    6670 - prop_pseudoobj is now working in presolving as well
    6671 - implement presolving in exitpre() in cons_orbitope and cons_indicator
    6672
    6673- Propagators:
    6674 - added counter for number calls and timing for resolve propagation calls for constraint handler and propagators
    6675 - Propagators are now also called in node presolving
    6676 - the probing presolver presol_probing.{c.h} is now a propagator prop_probing.{c,h}, all corresponding parameters moved as well
    6677 - the redcost separator sepa_redcost.{c.h} is now a propagator prop_redcost.{c,h}, all corresponding parameters moved as well
    6678 - outsourced propAndSolve() method in solve.c which calls domain propagation and solving of the lp and relaxation
    6679
    6680- Statistic:
    6681 - solutions which are given by the user from the outside are now marked by `#` in the output
    6682 - the `Solving Time` is now spitted into presolving, solving and reading time
    6683 - Presolvers section has new column `AddCons` which states the number of added constraint
    6684 - Constraints section has new column named \#ResProp which show the number of resolve propagation calls of certain
    6685 constraint handler
    6686 - Constraint Timing section has a new column \#ResProp which states the time spend in resolve propagation method of the
    6687 constraint handler
    6688 - improved output of propagators in display statistics
    6689 - new section `Propagator Timing` which shows the time spend in different callbacks of the propagator
    6690 - rearranged first two columns of Propagators section; \#Propagate and \#ResProp stating the number of call for
    6691 propagation and resolve propagation; the Time column is moved into the new section Propagator Timings
    6692 - Constraints section has new column named `MaxNumber` which the maximum number of active constraint of a certain
    6693 constraint handler
    6694 - 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
    6695 solving LPs with zero iterations (only refactorization)
    6696 - The display of statistics for presolvers, propagators, constraints and LP solving has changed.
    6697
    6698Performance improvements
    6699------------------------
    6700
    6701- Reorganized filtering process of separation storage (allows adding cuts for different solutions)
    6702- Improved presolving for various constraint handlers
    6703- Improved propagation methods for variable bound constraints
    6704- Improved performance for quadratic constraints
    6705- performance improvements in prop_vbounds
    6706- child selection rules now get also applied when the relaxation value is equal to the bound changed in branching
    6707- added dual reduction to cons_cumulative.c
    6708- for continuous variables, the pseudo costs update and the pscost branching rule now use the same strategies for
    6709 updating the pseudo costs and estimating the improvement in the LP bound
    6710- only perform probing if the variables are locked
    6711- performance and memory consumption improvements in xmlparse.c
    6712- Improved knapsack cover cuts
    6713- avoid very long separation times of LEWIs in cons_knapsack for very large minimal covers
    6714- used SCIPallocMemoryArray() instead of SCIPallocBlockMemoryArray() which leads to fewer memory consumption in
    6715 getLiftingSequence() in cons_knapsack, also improved cache use bei using an extra array instead blockmemory chunks
    6716- switched FASTMIP from 1 to 2 for CPLEX and changed default pricing rule back to steepest edge pricing instead of
    6717 quickstart steepest edge pricing
    6718- made sorting method more robust
    6719- LNS heuristics now use SCIPcopy() by default
    6720- considering inactive variables in undercover heuristic; limiting effort for solving covering problem
    6721- if during probing mode the LP relaxation is solved from scratch, e.g., when calling the shiftandpropagate heuristic
    6722 before root node solving, then we clear the resulting LP state, since it might be a bad starting basis for the next
    6723 solve of the LP relaxation (controlled by new parameter `lp/clearinitialprobinglp`)
    6724- included LP simplifier into SoPlex LP interface, applied when solving from scratch (lpi_spx.cpp)
    6725- new presolving steps in varbound constraint handler, tightening bounds, coefficients, sides and pairwise presolving
    6726
    6727Interface changes
    6728-----------------
    6729
    6730- Miscellaneous:
    6731 - The emphasis setting types now distinguish between plugin-type specific parameter settings (default, aggressive, fast, off),
    6732 which are changed by SCIPsetHeuristics/Presolving/Separating(), and global emphasis settings (default, cpsolver, easycip,
    6733 feasibility, hardlp, optimality, counter), which can be set using SCIPsetEmphasis().
    6734
    6735### New and changed callbacks
    6736
    6737- added propagator timings `SCIP_PROPTIMING_BEFORELP`, `SCIP_PROPTIMING_DURINGLPLOOP` and `SCIP_PROPTIMING_AFTERLPLOOP` for
    6738 all propagation callbacks (see propagators and constraint handlers) which lead to calling the propagation methods of a
    6739 propagator before the lp is solved, during the lp loop and after the lp solving loop
    6740
    6741- Conflict Analysis:
    6742 - Added parameter `separate` to conflict handler callback method SCIP_DECL_CONFLICTEXEC() that defines whether the conflict
    6743 constraint should be separated or not.
    6744
    6745- Constraint Handler:
    6746 - The new constraint handler callback SCIP_DECL_CONSDELVARS() is called after variables were marked for deletion.
    6747 This method is optional and only of interest if you are using SCIP as a branch-and-price framework. That means,
    6748 you are generating new variables during the search. If you are not doing that just define the function pointer
    6749 to be `NULL`.
    6750 If this method gets implemented you should iterate over all constraints of the constraint handler and delete all
    6751 variables that were marked for deletion by SCIPdelVar().
    6752
    6753- NLP Solver Interface:
    6754 - The callbacks SCIP_DECL_NLPIGETSOLUTION() and SCIP_DECL_NLPISETINITIALGUESS() got new parameters to get/set values of
    6755 dual variables.
    6756 - The callback SCIP_DECL_NLPICOPY() now passes the block memory of the target SCIP as an additional parameter.
    6757
    6758- Presolving:
    6759 - New parameters `isunbounded` and `isinfeasible` for presolving initialization (SCIP_DECL_CONSINITPRE(),
    6760 SCIP_DECL_PRESOLINITPRE(), SCIP_DECL_PROPINITPRE()) and presolving deinitialization (SCIP_DECL_CONSEXITPRE(),
    6761 SCIP_DECL_PRESOLEXITPRE(), SCIP_DECL_PROPEXITPRE()) callbacks of presolvers,
    6762 constraint handlers and propagators, telling the callback whether the problem was already declared to be
    6763 unbounded or infeasible. This allows to avoid expensive steps in these methods in case the problem is already
    6764 solved, anyway.
    6765
    6766 Note, that the C++ methods
    6767 - scip::ObjConshdlr::scip_presol() corresponding to SCIP_DECL_CONSPRESOL()
    6768 - scip::ObjConshdlr::scip_initpre() corresponding to SCIP_DECL_CONSINITPRE()
    6769 - scip::ObjPresol::scip_initpre() corresponding to SCIP_DECL_PRESOLINITPRE()
    6770 - scip::ObjProp::scip_initpre() corresponding to SCIP_DECL_PROPINITPRE()
    6771 - scip::ObjConshdlr::scip_exitpre() corresponding to SCIP_DECL_CONSEXITPRE()
    6772 - scip::ObjPresol::scip_exitpre() corresponding to SCIP_DECL_PRESOLEXITPRE()
    6773 - scip::ObjProp::scip_exitpre() corresponding to and SCIP_DECL_PROPEXITPRE()
    6774 are virtual functions. That means, if you are not adding the new parameters, your code will still compile, but these methods are not executed.
    6775 - Propagators are now also called in during presolving, this is supported by the new callback methods SCIP_DECL_PROPINITPRE(),
    6776 SCIP_DECL_PROPEXITPRE(), and SCIP_DECL_PROPPRESOL().
    6777 - The new parameters `nnewaddconss` and `naddconss` were added to the constraint handler callback method SCIP_DECL_CONSPRESOL()
    6778 and the presolver callback method SCIP_DECL_PRESOLEXEC(). These parameters were also added to corresponding C++ wrapper
    6779 class methods (scip_presol() in objconshdlr.h and scip_exec() in objpresol.h)
    6780
    6781- Problem Data:
    6782 - The callback SCIP_DECL_PROBCOPY() got a new parameter `global` to indicate whether the global problem or a local version is copied.
    6783
    6784### Deleted and changed API functions
    6785
    6786- implemented SCIPlpiGetPrimalRay() in SoPlex interface that has become available with SoPlex version 1.5.0.2
    6787- allowed calling SCIPgetRowSolActivity() in `SCIP_STAGE_SOLVED`, since LP is still available
    6788- various extensions and modifications for expressions and expression trees (too much to state here)
    6789- The result value `SCIP_NEWROUND` has been added, it allows a separator/constraint handler to start a new separation round
    6790 (without previous calls to other separators/conshdlrs).
    6791- SCIPcalcNodeselPriority() got a new parameter `branchdir`, which defines the type of branching that was performed: upwards, downwards, or fixed.
    6792
    6793- Constraint Handlers:
    6794 - Method SCIPincludeQuadconsUpgrade() of quadratic constraint handler got new parameter `active` to indicate whether the upgrading method is active by default.
    6795 - Method SCIPseparateRelaxedKnapsack() in knapsack constraint handler got new parameter `cutoff`, which is a pointer to store whether a cutoff was found.
    6796
    6797- Nonlinear expressions, relaxation, and solver interface:
    6798 - SCIPcreateNLPSol() now creates a `SCIP_SOL` that is linked to the solution of the current NLP relaxation
    6799 - Various types and functions dealing with polynomial expressions have been renamed to use the proper terms `monomial` and
    6800 `polynomial` in nonlinear expressions (nlpi/∗expr*); results in many renamings of types, structs and methods.
    6801 - The methods SCIPnlpGetObjective(), SCIPnlpGetSolVals(), and SCIPnlpGetVarSolVal() have been removed, use SCIPgetNLPObjval(),
    6802 SCIPvarGetNLPSol() and SCIPcreateNLPSol() to retrieve NLP solution values instead.
    6803 SCIPcreateNLPSol() now returns an error if NLP or NLP solution is not available
    6804 - Removed methods SCIPmarkRequireNLP() and SCIPisNLPRequired(), because the NLP is now always constructed if nonlinearities
    6805 are present.
    6806 - SCIPgetNLP() has been removed and NLP-methods from pub_nlp.h have been moved to scip.h, which resulted in some renamings, too.
    6807 - renamed SCIPexprtreeEvalSol() to SCIPevalExprtreeSol() and now located in scip.h.
    6808 - renamed SCIPexprtreeEvalIntLocalBounds() to SCIPevalExprtreeLocalBounds() and now located in scip.h.
    6809 - renamed SCIPexprtreeEvalIntGlobalBounds() to SCIPevalExprtreeGlobalBounds() and now located in scip.h.
    6810 - The functions SCIPnlpiGetSolution() and SCIPnlpiSetInitialGuess() got additional arguments to get/set dual values.
    6811 - The method SCIPgetNLPI() got a new parameter `nlpiproblem`, which is a pointer to store the NLP solver interface problem.
    6812
    6813- Timing:
    6814 - SCIPincludeProp() got additional parameters to set the timing mask of the propagator and the new callbacks and parameters
    6815 related to calling the propagator in presolving.
    6816 - SCIPincludeConshdlr() got additional parameters to set the variable deletion callback function and the timing mask for
    6817 propagation.
    6818 - removed parameters timelimit and memorylimit from SCIPapplyRens()
    6819 - The parameters `timelimit` and `memorylimit` were removed from SCIPapplyRens().
    6820
    6821- Problem Data:
    6822 - The method SCIPcopyProb() got a new parameter `global` to indicate whether the global problem or a local version is copied.
    6823
    6824- Writing and Parsing Constraints:
    6825 - The methods SCIPwriteVarName(), SCIPwriteVarsList(), and SCIPwriteVarsLinearsum() got a new boolean parameter `type`
    6826 that indicates whether the variable type should be written or not.
    6827 - The methods SCIPparseVarName() and SCIPparseVarsList() got a new output parameter `endptr` that is filled with the position
    6828 where the parsing stopped.
    6829 - The method SCIPwriteVarsList() got additionally a new parameter `delimiter` that defines the character which is used for delimitation.
    6830
    6831- Variables:
    6832 - SCIPmarkDoNotMultaggrVar()/SCIPvarMarkDoNotMultaggr() now allow to mark negated and aggregated variables
    6833 - SCIPgetVarCopy() got a new parameter `success` that will be FALSE if method is called after problem creation stage and no hash map is
    6834 given or no image for the given variable is contained in the given hash map.
    6835 - SCIPchgVarType() got an extra boolean parameter to store if infeasibility is recognized while upgrading a variable from continuous
    6836 type to an integer type.
    6837 - SCIPdelVar() got a new parameter `deleted`, which stores whether the variable was successfully marked to be deleted.
    6838
    6839### New API functions
    6840
    6841- information about the quality of the solution of an LP (currently the condition number of the basis matrix) can now be:
    6842 + requested from the LPI (currently only available for CPLEX): methods SCIPlpiGetRealSolQuality() and
    6843 + SCIPprintLPSolutionQuality() command display lpsolquality in interactive shell display column lpcond to show
    6844 + estimate on condition number, if available
    6845- SCIPround() and SCIPfeasRound() to round to nearest integer
    6846- SCIPsortRealRealIntInt() and corresponding sorting/inserting/deleting methods in pub_misc.h and necessary defines in misc.c
    6847- SCIPsortRealIntLong(), SCIPsortPtrPtrRealInt() and corresponding sorting/inserting/deleting methods in
    6848 pub_misc.h and necessary defines in misc.c
    6849- SCIPcomputeLPRelIntPoint() to compute relative interior point of the current LP
    6850- SCIPstartSolvingTime() and SCIPstopSolvingTime() which can be used to start or stop the solving time clock
    6851- SCIPstrToRealValue() and SCIPstrCopySection() in pub_misc.h; these methods can be used to convert a string
    6852 into a `SCIP_Real` value and to copy a substring.
    6853- SCIPgetBinvarRepresentatives() which gets binary variables that are equal to some given binary variables,
    6854 and which are either active, fixed, or multi-aggregated, or the negated variables of active, fixed, or multi-aggregated variables
    6855- SCIPhasPrimalRay() and SCIPgetPrimalRayVal() that return whether a primal ray is stored and which value a
    6856 given variable has in the primal ray, respectively
    6857- SCIPsetConsModifiable()
    6858- SCIPsetParam() which is a generic parameter setter method, independent of the parameter type
    6859- SCIPpropInitpre(), SCIPpropExitpre(), SCIPpropPresol() which initializes, exists and executes the presolving phase
    6860- SCIProwGetAge() to access the age of a row (pub_lp.h/lp.c)
    6861- SCIPsolGetOrigObj() in pub_sol.h which returns for a solution in the original problem space the objective value
    6862- SCIPretransformSol() in scip.h that allows to retransform a solution to the original space
    6863- SCIPlpiClearState() to LP interfaces for clearing basis information in the LP solver
    6864- SCIPgetSubscipDepth() to access the depth of the current SCIP as a copied subproblem
    6865- SCIPdebugAddSolVal() and SCIPdebugGetSolVal() to add/get values to/from a debug solution
    6866- SCIPsepastoreRemoveInefficaciousCuts() to remove non-efficious cuts from the separation storage
    6867
    6868- Nodes:
    6869 - SCIPnodeGetParent() to get parent node of a node
    6870 - SCIPnodesSharePath() in pub_tree.h that determines whether two nodes are on the same leaf-root path
    6871 - SCIPnodesGetCommonAncestor() in pub_tree.h that finds the common ancestor node for two given nodes
    6872
    6873- Read and Write:
    6874 - SCIPgetReadingTime() which returns the time for reading in seconds
    6875 - SCIPparseVarsLinearsum(), SCIPparseVarsPolynomial() and SCIPwriteVarsPolynomial() and for writing and
    6876 parsing polynomials in constraint handler writing/parsing methods
    6877
    6878- Memory:
    6879 - SCIPcreateMesshdlrPThreads() and SCIPfreeMesshdlrPThreads() for allocating and deleting necessary memory
    6880 for message handlers for parallel pthread version
    6881 - SCIPallocClearMemoryArray() and BMSallocClearMemoryArray() for allocating cleared memory arrays in scip.h and memory.h
    6882
    6883- Intervals:
    6884 - SCIPintervalPowerScalarInverse() to solve an equation y = x^p for given bounds on y and scalar exponent p
    6885 - SCIPintervalQuadBivar() to compute tight bounds on a bivariate quadratic form
    6886 - SCIPintervalSolveBivariateQuadExpressionAllScalar() to compute tight bounds on the solutions of a bivariate quadratic equation
    6887
    6888- Variables:
    6889 - SCIPcomputeVarCurrent{L,U}b{Local,Global}() to compute local or global lower or upper bounds of a
    6890 multiaggregated variable from the bounds of the aggregation variables
    6891 - SCIPbranchVarValNary() for n-ary variable branching
    6892 - SCIPgetNegatedVars() which returns all negated variables for a given array of variables, if the negated
    6893 variables are not existing yet, they will be created
    6894 - SCIPgetNTotalVars() that returns the total number of created vars, icluding variables that were deleted in the meantime
    6895 - SCIPvarGetHashkey(), SCIPvarIsHashkeyEq(), SCIPvarGetHashkeyVal() in pub_var.h which can be used for `SCIP_HASHTABLE` of variables
    6896 - SCIPvarGetNBdchgInfosLb() and SCIPvarGetNBdchgInfosUb() in pub_var.h returning the number of lower or upper bound changes on the active path
    6897 - SCIPvarGetBdchgInfoLb() and SCIPvarGetBdchgInfoUb() returning the bound change information at the given position
    6898 - SCIPvarMarkDeletable() to mark a variable to be deletable completely from the problem (for
    6899 branch-and-price); can only be called before the variable is added to the problem
    6900 - SCIPvarMarkNotDeletable() that marks a variable to be non-deleteable (used within SCIP for forbidding
    6901 deletion of variables contained in solution, LP bases, (multi)aggregation, ...)
    6902 - SCIPvarIsDeletable() that returns whether a variable is marked to be deletable (each variable is per default non-deletable)
    6903
    6904- NLP:
    6905 - SCIPgetNLPVarsNonlinearity() to get for each variable in the NLP the number of NLP rows in which this variable appears in a nonlinear way
    6906 - SCIPnlrowGetDualsol(), SCIPgetNLPVarsLbDualsol(), SCIPgetNLPVarsUbDualsol() to retrieve dual values from an NLP solution
    6907 - SCIPgetNLPFracVars() to get the fractional variables in an NLP solution
    6908
    6909- Propagator:
    6910 - SCIPpropSetPresolPriority() which changes the presolving priority of a given propagator
    6911 - SCIPpropGetPresolPriority(), SCIPpropGetPresolTime(), SCIPpropWasPresolDelayed(), SCIPpropGetNFixedVars(),
    6912 SCIPpropGetNAggrVars(), SCIPpropGetNChgVarTypes(), SCIPpropGetNChgBds(), SCIPpropGetNAddHoles(), SCIPpropGetNDelConss(),
    6913 SCIPpropGetNAddConss(), SCIPpropGetNUpgdConss(), SCIPpropGetNChgCoefs(), SCIPpropGetNChgSides(), SCIPpropGetTimingmask(),
    6914 SCIPpropDoesPresolve() which return corresponding presolving information
    6915 - SCIPpropGetNRespropCalls() and SCIPconshdlrGetNRespropCalls() which return the number of times a
    6916 propagator or a constraint handler was called for resolving a propagation
    6917 - SCIPpropGetRespropTime() and SCIPconshdlrGetRespropTime() which return time spent for resolving a
    6918 propagation within a propagator or a constraint handler
    6919 - SCIPcheckCumulativeCondition(), SCIPpropCumulativeCondition() and SCIPrespropCumulativeCondition() in
    6920 cons_cumulative.h; these methods can be used to check, propagate, or resolve the propagation of a cumulative condition
    6921 - SCIPpropagateCutoffboundVar() in prop_pseudoobj.h which can be used to propagate the cutoff bound for the given variables
    6922
    6923- Constraints:
    6924 - added to linear constraint handler SCIPsetUpgradeConsLinear(), which (de-)activates the possibility to
    6925 upgrade a linear constraint to a specialized linear constraint (e.g. knapsack)
    6926 - SCIPconvertCutsToConss() and SCIPcopyCuts() to scip.{c,h} for copying cuts to linear constraints
    6927 - SCIPaddCoefLogicor() to add a variable to a logic or constraint
    6928 - SCIPfindOrigCons() which return a original constraint with the given name or `NULL`
    6929 - SCIPconshdlrGetNAddConss() which returns the number of added constraints during presolving by a given constraint handler
    6930 - SCIPpresolGetNAddConss() which returns the number of added constraints during presolving by a given presolver
    6931
    6932### Command line interface
    6933
    6934- New funtionalities in the interactive shell (modify current CIP instance, write NLP relaxation)
    6935- added dialog `write nlp` to write current NLP relaxation to a file
    6936- new dialog `change freetransproblem` to free transformed problem in the interactive shell before changing the problem
    6937- it is possible to change bounds of a variable in the interactive shell
    6938- it is possible to add a constraint to a problem in the interactive shell
    6939
    6940### Interfaces to external software
    6941
    6942- Improved SOPLEX interface (LP simplifier)
    6943- Improved CPLEX interface, including measures for numerical stability
    6944
    6945### Changed parameters
    6946
    6947- change default value of parameter `nodeselection/restartdfs/selectbestfreq` 100
    6948- moved parameters for pseudoboolean constraints from opb-reader to pseudoboolean constraint handler
    6949- changed possible parameter values of `branching/pscost/strategy` from `bri` to `cdsu`: default is now `u`, i.e., to
    6950 estimate the LP gain by a branching for external branching candidates (esp. continuous variables) the same way as
    6951 their pseudo costs are updated
    6952- added possible value `d` for `constraints/soc/nlpform` to choose a convex division form for SOC constraint
    6953 representation in NLP
    6954- renamed parameter `constraints/quadratic/linearizenlpsol` to `constraints/quadratic/linearizeheursol` and do
    6955 linearizations in every solution found by some heuristic
    6956- renamed parameter `constraints/quadratic/mincutefficacyenfo` to `constraints/quadratic/mincutefficacyenfofac` and
    6957 interpret it as a factor of the feasibility tolerance
    6958- removed fastmip setting 2, which means the dualsolution would not be calculated but because SCIP always asks for the
    6959 dual solution, the lp would be reoptimized to calculate them; so it had no real effect
    6960- all parameters in cons_indicator and cons_sos1 have been converted to lower case!
    6961- changed default value of parameter `separating/gomory/maxroundsroot` to 10
    6962- changed default value of parameter `separating/gomory/maxsepacutsroot` to 50
    6963- removed parameter `heuristics/subnlp/nlpsolver`, use `nlp/solver` instead
    6964
    6965### New parameters
    6966
    6967- `branching/delaypscostupdate` to delay the update of pseudo costs for continuous variables behind the separation round: default is TRUE
    6968- `branching/lpgainnormalize` to set the strategy how the LP gain for a continuous variable is normalized when updating the
    6969 variables pseudocosts: default is to divide LP gain by reduction of variable's domain in sibling node
    6970- `branching/pscost/nchildren` and `branching/pscost/nary*` to enable and customize n-ary branching on
    6971 external branching candidates (e.g., in spatial branching for MINLP)
    6972- `conflict/bounddisjunction/continuousfrac` which defines the maximum percantage of continuous variables
    6973 within a conflict create by the bounddisjunction conflict handler
    6974- `conflict/separate` which enables or disables the separation of conflict constraints
    6975- `constraints/{nonlinear,quadratic,soc,abspower}/sepanlpmincont` to specify minimal required fraction
    6976 of continuous variables in problem to enable linearization of convex constraints in NLP relaxation solution in root
    6977- `constraints/indicator/forcerestart` and `constraints/indicator/restartfrac` to control forced restart in cons_indicator
    6978- `constraints/indicator/generatebilinear` to generate bilinear (quadratic) constraints instead of indicator constraints
    6979- `constraints/indicator/maxconditionaltlp` to enable a quality check for the solution of the alternative LP
    6980- `constraints/indicator/removeindicators` to remove indicator constraints if corresponding vub has been added
    6981- `constraints/linear/nmincomparisons` and `constraints/linear/mingainpernmincomparisons` to influence
    6982 stopping criterium for pairwise comparison of linear constraints
    6983- `constraints/pseudoboolean/decompose`, for pseudoboolean constraints to transform pseudoboolean constraints into linear- and and-constraints
    6984- `constraints/quadratic/binreforminitial` to indicate whether linear (non-varbound) constraints added due to reformulation of products with
    6985 binary variables in a quadratic constraints should be initial (if the quadratic constraint is initial), default is FALSE
    6986- `constraints/quadratic/checkfactorable` to disable check for factorable quadratic functions (xAx = (ax+b)*(cx+d)) in quadratic constraints
    6987 and not to use of this information in separation (generates lifted tangent inequalities according to Belotti/Miller/Namazifar if also
    6988 linear vars are present)
    6989- `constraints/quadratic/disaggregate` to split a block-separable quadratic constraint into several quadratic constraint
    6990- `constraints/quadratic/maxproprounds` and `constraints/quadratic/maxproproundspresolve` to limit the
    6991 number of propagations rounds for quadratic constraints within one propagation round of SCIP solve or during SCIP presolve
    6992- `constraints/varbound/presolpairwise` that allows pairwise presolving of varbound constraints, default is TRUE
    6993- `heuristics/shiftandpropagate/onlywithoutsol` to switch whether the heuristic should be called in case a primal solution is already present
    6994- `limit/maxorigsol` which defines the size of the solution candidate store (default value is 10)
    6995- `lp/resolverestore` controlling how LP solution is restored after diving: if TRUE by resolving them,
    6996 if FALSE by buffering them; if `lp/freesolvalbuffers` is TRUE, we free the buffer memory each time (FALSE by default)
    6997- `lp/clearinitialprobinglp` to clear LP state at end of probing mode, if LP was initially unsolved
    6998- `lp/resolveitermin` and `lp/resolveiterfac` to limit the number of LP iterations in resolving calls:
    6999 resolveiterfac is a factor by which the average number of iterations per call is multiplied to get the limit, but the
    7000 limit is at least resolveitermin; default is -1 (no limit) for resolveiterfac and 1000 for resolveitermin
    7001- `lp/resolverestore` and `lp/freesolvalbuffers` possibility to buffer and restore LP solution after diving without
    7002 having to resolve the LP; currently turned off, because performance impact is unclear;
    7003- `misc/improvingsols` which states whether only solutions which have a better (or equal) primal bound
    7004 as the best known are checked; this is of interest if the check of a solution is expensive; default value is FALSE
    7005- `misc/resetstat` which state if the statistics should be reseted if the transformed problem is freed
    7006 (in case of a benders decomposition this parameter should be set to FALSE) default value is TRUE
    7007- `nodeselection/restartdfs/countonlyleafs` in node selector restart dfs which can be used to select the counting process of processed nodes
    7008- `presolving/donotaggr` to deactivate aggregation of variables globally
    7009- `pricing/delvars` and `pricing/delvarsroot` that define, whether variables created at a node / the
    7010 root node should be deleted when the node is solved in case they are not present in the LP anymore
    7011- `propagating/%s/maxprerounds` for all propagators which allows to change to maximal number of rounds
    7012 of presolving where this propagator participates in
    7013- `propagating/%s/presoldelay` for all propagators which allows to change if the presolving call of the given propagator should be delayed
    7014- `propagating/%s/presolpriority` for all propagators which allows to change the priority of calling the given propagator
    7015- `propagating/pseudoobj/propfullinroot` for allowing to propagate all variables in the root node,
    7016 instead of stopping after `maxcands` which is set by a parameter as well
    7017- `reading/gmsreader/bigmdefault` and `reading/gmsreader/indicatorreform` reader_gms is now able to write indicator
    7018 constraints (reformulated either via big-M or sos1)
    7019- `reading/gmsreader/signpower` to enable writing sign(x)abs(x)^n as the rarely used gams function signpower(x,n)
    7020- `separating/closecuts/maxunsucessful` to turn off separation if we can not find cuts
    7021- `timing/reading` to add reading time to solving time
    7022
    7023### Data structures
    7024
    7025- split off `PARAMEMPHASIS` from `PARAMSETTING` (in pub_paramset.c/paramset.c)
    7026- new data structure `SCIP_STAIRMAP`
    7027- add expression graph data structures and methods for reformulation, domain propagation, simple convexity check on
    7028 nonlinear expressions and simplification for expression trees and graphs
    7029
    7030Testing
    7031-------
    7032
    7033- New scripts for running tests with GAMS
    7034- added scripts check_gams.sh, evalcheck_gams.sh and check_gams.awk and target `testgams` in Makefile
    7035- adjusted all test scripts to use the same new optimality gap computation as in SCIP
    7036- added Makefile option `VALGRIND=true` to enable running the SCIP checks (make test) through valgrind; valgrind errors
    7037 and memory leaks are reported as fails
    7038- moved *.test and *.solu files to subdirectory testset in check directory and adjusted test scripts
    7039
    7040Build system
    7041------------
    7042
    7043### Makefile
    7044
    7045- Variables:
    7046 - via `PARASCIP=true` as a `Makefile` option it is possible to compile SCIP threadsafe in DEBUG-mode, (in OPT-mode it's
    7047 only necessary if non-default messagehandler or CppAD is used)
    7048 - the `make` parameter `PARASCIP=true` leads to threadsafe message handlers where you need to call
    7049 SCIPcreateMesshdlrPThreads() and SCIPmessageSetHandler()/SCIPmessageSetDefaultHandler() and SCIPfreeMesshdlrPThreads();
    7050 therefore we need to link with pthread library
    7051 - new variable $(INSTALLDIR) in Makefile which define installation directory for the libraries, $(INSTALLDIR)/lib/,
    7052 binary, $(INSTALLDIR)/bin and include headers, $(INSTALLDIR)/include, the default value is the empty string
    7053
    7054- Linking:
    7055 - Linking against Clp and Ipopt has been simplified. Only the directory where the
    7056 package has been installed need to be provided now. For details see the INSTALL file.
    7057 - to link against IPOPT, only the base directory of an Ipopt installation need to be specified now; additionally, if
    7058 building with gnu compilers, the Ipopt libraries directory is stored in the SCIP binary, which should make it easier
    7059 to run with Ipopt shared libraries
    7060 - to link against Clp, only the base directory of an Clp installation needs to be specified now
    7061
    7062- Targets:
    7063 - New targets `(un)install` in Makefile, support for valgrind in testing environment
    7064 - new target `make libs` which compiles only the libraries
    7065 - new target in Makefile `install` performs `make` and copies using the install command the include headers, binary, and
    7066 libraries
    7067 - new target in Makefile `uninstall` removes libraries, binary and include headers form `INSTALLDIR`
    7068 - removed target `lintfiles`, this target is now imitated by the `lint` target and a none empty variable `FILES`
    7069
    7070Fixed bugs
    7071----------
    7072
    7073- 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
    7074- fixed bug trying to print big messages bigger than `SCIP_MAXSTRLEN`
    7075- fixed bug w.r.t. counting feasible solutions and turned of sparse solution test
    7076- LP solution status is now checked when checking root LP solution. Otherwise, due to different time measurements, it
    7077 might happen that the LP solving was stopped due to the time limit, but SCIP did not reach the limit, yet.
    7078- fixed bug trying to tighten multiaggregated variables, which have only one active representation and this variable is already tightened
    7079- fixed possible buffer overrun in tclique_graph.c
    7080- fixed issue with interactive shell in case (user) plugins are included after the default plugins
    7081- fixed bug where mutiaggregating leads to an aggregation and both variables were of implicit or integral type
    7082- fixed bug in conflict.c, where LPi was manipulated, but not marked as not solved
    7083
    7084- Tree:
    7085 - fixed assertion in tree.c w.r.t. node estimation
    7086 - 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
    7087
    7088- Bounds:
    7089 - fixed bug which occured when changing a bound in the solving stage when this variables got upgraded from continuous to
    7090 a integer type, where the bounds of this variable were still not integral; due to that SCIPchgVarType() has changed (see above)
    7091 - fixed bug in handling of lazy bounds that resulted in putting the bounds explicitly into the LP
    7092
    7093- Separation:
    7094 - fixed assert in sepa_clique.c which is currently not valid because implicit binary variables in cliques are ignored
    7095 - fixed bug in sepa_zerohalf.c concerning inconsistent construction of solution array of variables and fixed wrong assert about variable bounds
    7096
    7097- Constraints:
    7098 - fixed not correct merging of variable in logicor constraint handler and changed the name of the method to a common
    7099 name used by other constraint handlers too(findPairsAndSets->mergeMultiples)
    7100 - fixed bugs in changing the initial and checked flags for constraints in original problem
    7101 - fixed bug in cons_linear.c, when scaling a constraint maxabscoef was not set correctly, furthermore the correction of
    7102 maxabscoef was not handled correctly
    7103 - fixed bug in cons_indicator.c trying to copy a constraint where the pointer to the linear constraint did not point to
    7104 the already transformed linear constraint (, happend when SCIPcopy() is used after transforming before presolving)
    7105 - fixed numerical bug in linear constraint handler: polishing of coefficients after fixing variables led to wrong
    7106 results for continuous variables fixed to a close-to-zero value.
    7107 - fixed bug in cons_bounddisjunction where branching on multiaggregated variables was tried while all aggregation variables are fixed
    7108 - fixed bug in presolving of cons_logicor.c: adding variable implications can lead to further reductions; added call to applyFixings()
    7109 - fixed bug in cons_countsols.c w.r.t. none active variables
    7110 - fixed bug in cons_linear.c, scaling could have led to wrong values
    7111
    7112- Reader:
    7113 - fixed bug in reader_fzn.c w.r.t. cumulative constraints
    7114 - fixed bug in reader_mps.c: if a variables first occurence is in the bounds section, then the corresponding variable bound was lost
    7115 - fixed several issues in flatzinc reader
    7116 - deactived checking of zero solution in Zimpl reader when no starting values are provided
    7117 - reader_lp is now able to read lines longer than 65534 characters
    7118
    7119- Memory:
    7120 - fixed bug in copying NLPI interfaces that use block-memory (NLPI copy used block memory from source SCIP)
    7121 - fixed memory leak in reader_pip.c
    7122 - fixed memory leak in coloring part of maximum clique algorithm (tclique_coloring.c)
    7123 - fixed memory leak in coloring part of maximum clique algorithm (tclique_coloring.c) in a better way
    7124
    7125- Numerics:
    7126 - fixed bug which occured when the dual farkas multipliers were not available in the lpi because the LP could only be
    7127 solved with the primal simplex due to numerical problems
    7128 - fixed bug in ZI round heuristic that led to infeasible shiftings for numerically slightly infeasible rows with close-to-zero coefficients
    7129 - fixed numerical issue in octane heuristic: close-to-zero values for ray direction could have led to bad computations
    7130
    7131- Propagation:
    7132 - fixed bug in propagation of indicator constraints: cannot fix slack variable to 0 if linear constraint is disabled/not active
    7133 - fixed bug in cons_linear.c while sorting the eventdatas during the binary variable sorting for propagation
    7134 - fixed bug and wrong assert in heur_shiftandpropagate.c when relaxing continuous variables from the problem
    7135 - fixed bug in cons_orbitope:resprop() for the packing case
    7136 - fixed wrong changing of wasdelayed flag for propagators
    7137 - fixed bug using wrong sign in infinity check in prop_pseudoobj
    7138 - fixed bug in redcost propagator: can only be called if the current node has an LP
    7139 - fixed bug w.r.t. infinity loop during propagation
    7140
    7141Miscellaneous
    7142-------------
    7143
    7144- The interface contains several additional callback functions and parameters for plugins. Some effort may be required to compile your old
    7145 projects with SCIP 2.1. For details see section `Changes between version 2.0 and 2.1` in the doxygen documentation.
    7146
    7147@page RN2_0 Release notes for SCIP 2.0
    7148
    7149@section RN202 SCIP 2.0.2
    7150*************************
    7151
    7152Performance improvements
    7153------------------------
    7154
    7155- improved twoopt-heuristic by considering larger search domains
    7156- 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)
    7157- calculation of node priority now also works when variable's relaxation value is equal to a bound
    7158- fixed issue w.r.t. calling primal heuristics after presolving detected infeasibility
    7159
    7160- Constraints:
    7161 - fasten propagation in cons_knapsack.c due to negated clique partitions
    7162 - recalculating only needed partitions in cons_knapsack.c, not always both
    7163
    7164- Memory:
    7165 - reduced memory usage of shift-and-propagate heuristic
    7166 - knapsack constraints are now separated faster; SCIPsolveKnapsackExactly() now works faster and requires less memory
    7167 - fasten knapsack separation by replacing SCIPallocBuffer(Array) through SCIPallocBlockMemory(Array)
    7168 - improved runtime and memory consumption in SCIPsolveKnapsackExactly() in cons_knapsack.c
    7169
    7170Fixed bugs:
    7171----------
    7172
    7173- fixed `make/make.project`
    7174- fixed wrong assert in plugins that use SCIPcopy()
    7175- fixed bug in DINS w.r.t. column generation
    7176- fixed bug in var.c where a possible multiaggregation was resolved to an aggregation but the variables types were not
    7177 checked to prefer more general types for aggregating; possible memory loss removed
    7178- fixed bug in prop_vbounds.c w.r.t. infinity lower and upper bound of variable bound variables
    7179- fixed bug w.r.t. setting wall clocks
    7180- fixed wrong assert in var.c (replaced `==` through SCIPsetIsEQ()), real values do not have to be exactly the same when
    7181 computed in different function
    7182- fixed bug in SCIPsolveIsStopped() where it could happen that TRUE was reported if a nodelimit was reached but
    7183 checknodelimits had been set to FALSE
    7184- fixed three bugs when writing in fzn format (wrongly splitted writing buffer, wrong variables was used, floats were printed to short)
    7185- fixed bug in conflict.c, infeasibility analysis with big values led to wrong result
    7186
    7187- Heuristics:
    7188 - fixed bug in DINS heuristic that occured when the incumbent solution value is outside the variable's current domain
    7189 - fixed behavior of LNS heuristics when the subproblem aborts: continue in optimized mode, stop in debug mode
    7190 - fixed segmentation fault in heur_subnlp.c which occured if resolving the NLP with a tighter feasibility tolerance
    7191 failed with a solver error
    7192 - fixed bug in heur_subnlp.c where constraints forbidding variable fixations where added if a cutoff was used in the subproblem
    7193 - fixed bug in heur_subnlp.c where wrong constraints forbidding variable fixations where added in case of general integers
    7194
    7195- NLP:
    7196 - fixed bug in changing quadratic coefficients of a row in the NLP
    7197 - fixed various small bugs in nonlinear expressions code
    7198 - fixed removal of fixed linear variables from a nonlinear row: a fixed variable may have not been removed if there was
    7199 also a multiaggregated variable
    7200
    7201- LP:
    7202 - implemented SCIPlpiGetPrimalRay() in SoPlex interface that has become available with SoPlex version 1.5.0.2
    7203 - fixed two bugs at nodes with unbounded LP relaxation: don't check lp rows of infinite solution; don't analyze conflict
    7204 due to primal cutoff bound of -infinity
    7205 - fixed wrong assumption that an optimal LP solution in the root is optimal for the problem if there are no active
    7206 pricers, need to check also whether all variables are in the LP
    7207
    7208- Constraints:
    7209 - fixed bug in reader_cip regarding reading of very long constraints
    7210 - fixed bug while after restarting possible the aggregted variables were not removed in setppc constraints
    7211 - fixed bug in cons_knapsack: in seldom circumstances the relaxation of a linear constraint can detect infeasibility,
    7212 which was not handled properly
    7213 - fixed bug w.r.t. to pricing variables in case new initial constraints come in during the price and cut loop
    7214 - fixed bug in cons_soc.c w.r.t. upgrading from quadratic constraints with finite left-hand-side
    7215 - fixed bug caused by not (correctly) counting boundchanges in cons_varbound.c
    7216 - fixed bug in sorting mechanism in cons_xor.c
    7217 - fixed wrong (neg)cliquepartition check in cons_knapsack.c when deleting a coefficient
    7218 - fixed bug in cons_quadratic: in seldom cases, fixed variables may have been substituted out wrongly in presolve
    7219 - fixed bugs in cons_countsols.c w.r.t. collecting feasible solutions and forbidding a found solution
    7220 - fixed bug in cons_linear.c: multiaggregated variables were not removed when adding during solve, leading to a failing
    7221 assert in tightenBounds due to an unsuccessful bound tightening
    7222
    7223- Memory:
    7224 - fixed bug concerning overflow in memsize calculation in set.c
    7225 - fixed memory leak in SoPlex LP interface when requesting an unbounded solution
    7226 - fixed memory leak in SoPlex LP interface when solving with LP scaling
    7227 - fixed memory leaks in reader of TSP example
    7228
    7229@section RN201 SCIP 2.0.1
    7230*************************
    7231
    7232Performance improvements
    7233------------------------
    7234
    7235- SCIP with SoPlex as LP solver now uses auto pricing by default (start with devex, switch to steepest
    7236 edge after some iterations); this fixes timeouts on instances where devex converges very slowly
    7237- fixing lifting of new knapsack items which are negated items of already included items, this could lead to very long presolving
    7238- fixed performance issue in presolving w.r.t. to computing the number of new fixings, aggregated,
    7239 and so on before a constraint handler presolver is called
    7240- in case of adding constraints during pricing with initial flag set to
    7241 TRUE, we add now these constraints after the pricing round to the LP
    7242- changed parameter values in clique separator in order to avoid very large branch-and-bound trees
    7243
    7244Interface changes
    7245-----------------
    7246
    7247### New and changed callbacks
    7248
    7249- allow access of transformed constraints in `SCIP_STAGE_TRANSFORMED`
    7250
    7251### Changed parameters
    7252
    7253- replaced parameter `constraints/quadratic/minefficacy` by `constraints/quadratic/minefficacysepa` and `constraints/quadratic/minefficacyenfo`
    7254- added possible values `a` and `e` for `constraints/soc/nlpform` to enable automatic choice and convex exponential-sqrt
    7255 form for SOC constraint representation in NLP
    7256
    7257Fixed bugs
    7258----------
    7259
    7260- fixed bug w.r.t. looseobjval; the counting of number of loose variables in the LP data structure was incorrect in case
    7261 a variable got aggregated or multi-aggregated
    7262- fixed bug in copy method of objvardata which should only create a new `SCIP_VARDATA` if the implemented subclass create
    7263 a copy of the given objvardata object
    7264- fixed bug in lp.c where in case of objlimit reached and fastmip not all variables where priced because of an incorrect
    7265 dual solution
    7266- fixed bugs in binpacking example w.r.t. empty struct and not initializing an array
    7267- fixed bugs in sepa_clique.c concerning incorrect way to ignore implicit binary variables in cliques and non-active
    7268 variables in implications
    7269- fixed some bugs w.r.t. to casting pointer arrays
    7270- fixed bug in vars.c which handled arrays with parts of original variables during resolving to active variables (using
    7271 SCIPvarsGetProbvarBinary) wrong
    7272- fixed bug in nlp.c: nlrowSearchQuadElem was using SCIPquadelemSortedFind() incorrectly
    7273
    7274- Branching:
    7275 - fixed assertion w.r.t. to probing during the propagation round of a branch-and-bound node
    7276 - fixed computation of node's objective value estimate when branching on continuous variables (see
    7277 SCIPtreeCalcChildEstimate(), SCIPtreeBranchVar())
    7278 - fixed bug in statistic w.r.t. number of calls for external branching candidates
    7279 - fixes to branching on continuous variables
    7280
    7281- Reader:
    7282 - fixed bug in reader_gms.c: linear coefficients for quadratic variables were not printed if they had no
    7283 square-coefficient
    7284 - fixed bug in reader_mps: indicator constraints do not output the slack variables anymore
    7285
    7286- Constraints:
    7287 - fixed bugs in SCIPcopyConss: copy all active constraints (including disabled ones), *valid was not initialized to TRUE
    7288 - fixed bug in debug.c w.r.t. checking of constraints and continuous variables
    7289 - fixed bug in cons.c which didn't allow the changing of the separation and enforcement flag of a constraint in the
    7290 problem stage
    7291 - corrected behavior of the copy function in cons_indicator.c: create artificial linear constraint if linear constraint
    7292 was deleted
    7293 - fixed bug in cons_indicator.c: presolving cannot delete linear constraints; several other minor bugfixes
    7294 - fixed bugs in cons_bounddisjunction where the branching during the constraint enforcement was done incorrectly
    7295 - fixed bugs in cons_orbitope.c: orbitopal fixing for the packing case had two bugs; also fixed one wrong assert
    7296 - fixed bugs in cons_sos?.c: take average of objestimate
    7297 - fixed bug in cons_logicor, implications on none `SCIP_VARTYPE_BINARY` variable were handled wrong
    7298 - fixed bug in cons_linear while trying to add a conflict without any variables
    7299 - fixed bug in cons_indicator.c: creating constraints in transformed stage is now possible
    7300
    7301- LP Interface:
    7302 - fixed bug w.r.t. memory allocation for all values of a column in lpi_cpx.c
    7303 - fixed bugs in SCIPnlpiOracleChgLinearCoefs() and SCIPnlpiOracleChgQuadCoefs() for the case where new coefficients where
    7304 added
    7305 - fixed bugs in lpi_none.c w.r.t. debug and opt mode
    7306 - fixed bug in lpi_cpx.c w.r.t. to wrong handling in case the crossover did not succeed
    7307
    7308- Heuristics:
    7309 - fixed bug in heur_subnlp when initialized starting values of a fixed variable in the NLP of the subscip
    7310 - fixed bug in heur_undercover: removed option globalbounds, since we are not allowed to relax bounds at a probing node
    7311 - fixed bug in heur_shiftandpropagate where some variables were initialized too late
    7312 - fixed numerical issue in some heuristics: nearly-integral values that are between the feasibility and the integrality
    7313 tolerance might not have been rounded correctly
    7314 - fixed bug in heur_guideddiving: best solution is now copied to avoid deletion in case of many new solutions
    7315 - fixed bug in DINS heuristic, information storage for binary variables could lead to bad memory access in column
    7316 generation applications
    7317 - fixed bug in heur_shiftandpropagate.c: Now, the heuristic checks rows for global infeasibility at the beginning. This
    7318 check is only relevant if presolving is disabled.
    7319 - fixed bug in heur_subnlp when forbidding a particular combination of integer variables in the main problem
    7320
    7321@section RN200 SCIP 2.0.0
    7322*************************
    7323
    7324Features
    7325--------
    7326
    7327- added relaxation structure to SCIP, it represents global relaxation information independent from a specific relaxator;
    7328 at the moment, it contains information about the relaxation solution stored in the variables: objective value and
    7329 validness
    7330- SCIP may now be manually restarted
    7331- SCIPsolveKnapsackExactly() got a new 12. parameter `SCIP_Bool* success` which stores if an error occured during
    7332 solving(normally a memory problem)
    7333- SCIP can now handle problems with continuous variables w.r.t. to counting (the projection to the integral variables
    7334 are counted)
    7335- an XML-parser is available in the src/xml subdirectory
    7336- We do not distinguish between block memory for the original and the transformed problem anymore. The same
    7337 block memory is now used in both problem stages.
    7338- added new sorting method SCIPsortLongPtr(), SCIPsortDownLongPtr() and all corresponding methods
    7339- added new sorting method SCIPsortRealIntPtr(), SCIPsortDownRealIntPtr() and all corresponding methods
    7340
    7341- Heuristics:
    7342 - SCIP can now copy instances (e.g. for heuristics)
    7343 - new undercover heuristic for MINLPs: fixes variables such as to obtain a linear or convex subproblem and solves this
    7344 - primal heuristics may now already be called before presolving, using the new timing point
    7345 `SCIP_HEURTIMING_BEFOREPRESOL`. Note that solutions that are added before/during presolving, will be retransformed to
    7346 the original space.
    7347 - primal heuristics may now be called during presolving, using the new timing point `SCIP_HEURTIMING_DURINGPRESOLLOOP`
    7348 - added heuristic zirounding (heur_zirounding.{c,h})
    7349 - added heuristic twoopt (heur_twoopt.{c,h})
    7350 - added new NLP heuristic (heur_subnlp.{c,h}) which solves the sub-NLP that is obtained by fixing all discrete variables
    7351 in the CIP and applying SCIP's presolving
    7352 - feasibility pump heuristic now implements all functionality for feasibility pump 2.0
    7353
    7354- Reader:
    7355 - can now read XML-solution files as used by CPLEX
    7356 - the MPS reader can now read MIQPs and MIQCPs where a quadratic objective function can be specified by a QMATRIX or
    7357 QUADOBJ section and the quadratic part of a quadratic constraint by a QCMATRIX
    7358 - the MPS reader can now write quadratic and SOC constraints
    7359 - the GAMS reader can now write SOC constraints
    7360 - added support for bool_gt, bool_lt, bool_ge, bool_le, bool_ne, bool_not, int_times, int_minus, int_plus, int_negate,
    7361 float_times, float_minus, float_plus, float_negate constraints to flatzinc reader
    7362 - the LP reader (.lp files) can now read MIQPs and MIQCPs and write quadratic and SOC constraints
    7363 - the LP reader (.lp files) and MPS reader can now read semicontinuous variables, they are handled by creating bound
    7364 disjunction constraints
    7365 - added new reader for polynomial mixed-integer programs (reader_pip.{c,h}) as used in the POLIP
    7366
    7367- Indicator constraints:
    7368 - SCIP can now handle indicator constraints (reading (from LP, ZIMPL), writing, solving, ...) see \ref cons_indicator.h.
    7369 - the indicator constraint can now decompose the problem, i.e., not add the linear constraint to the problem if all of
    7370 its variables are continuous
    7371 - can now read and write indicator constraints in the (extended) MPS format
    7372 - cons_indicator tries to adapt solutions to get feasible during check
    7373 - cons_indicator allows to store information on other linear constraints that might help to separate cuts
    7374
    7375- Constraint handlers:
    7376 - Solution counting extended to constraint integer programs, this also
    7377 includes constraint integer programs which contain continuous variables
    7378 - The solution behavior of SCIP can be diversified by randomly permuting constraints and variables or randomly
    7379 determining a set of branching variables with a unique high priority
    7380 - `negated cliques` (1<=i<=n : sum (x_i) >= n-1) were added and we are using them now inside the knapsack constraint
    7381 handler, the cliquepartitioning which is returned by SCIPcalcCliquePartition() contains now integer != 0, negatives ones
    7382 indicates a negated clique and positive ones indicates a normal clique
    7383 - SCIP is now able to detect in DEBUG-mode whether a constraint or variables which will be added, was also created in
    7384 the same scip instance, if not an error is thrown
    7385 - cons_knapsack is now able to detect negated cliques due to negated cliques on knapsack constraints
    7386 - SCIP is now able to write non-linear opb-files(linear instances with and-constraints)
    7387 - New constraint handlers for linking constraints (only Beta), cumulative constraints, and for breaking orbitopal symmetries
    7388 - `negated cliques` handling in knapsack constraint handler got changed due to the new method
    7389 SCIPcalcNegatedCliquePartition() resulting in new consdata members `negcliquepartition`, `negcliquepartitioned` and
    7390 `nnegcliques`; changed SCIPcalcCliquePartition() so all cliquepartitions (calculated by SCIPcalcCliquePartition() or
    7391 SCIPcalcNegatedCliquePartition(), which uses the first one) contain again not negative integers
    7392 - `and`, `knapsack`, `linear`, `logic`, `or`, `quadratic`, `setpp`, `varbound`, `xor` and `clique` constraint handlers
    7393 can handle implicit binary variables
    7394 - knapsack constraint handler is now able to pairwise presolving constraints
    7395 - constraint handlers `logicor`, `and`, `or` can parse their output
    7396 - constraint handler `or` can copy its constraints
    7397 - added packing/partitioning orbitope constraint handler for symmetry handling (cons_orbitope.{c,h})
    7398 - added constraint handler for second order cone constraints (cons_soc.(c|h))
    7399 - added constraint handler cons_linking.{c,h} (see cons_linking.c for more details)
    7400 - cons_quadratic can make solutions in CONSCHECK feasible for the quadratic constraints by moving values of linear
    7401 variables and passing the modified solution to the trysol heuristic
    7402 - constraint handler can now register their upgrade functions for quadratic constraints to cons_quadratic (similar to
    7403 LINCONSUPGD)
    7404
    7405- Separation:
    7406 - New separators for oddcycle cuts and Chvatal-Gomory cuts using sub-MIPs
    7407 - modified implementation of separation algorithms in cons_knapsack.c according to results of diploma thesis; including
    7408 super-additive lifting (disabled)
    7409 - uncommented decomposeProblem() in sepa_zerohalf.c (in default settings, not used anyway): was not adapted to the case
    7410 that contiuous variables are allowed in a row
    7411 - new separator rapid learning (sepa_rapidlearning.{c,h}) that produces conflicts, global bound changes, primal
    7412 solutions and initializes inference values for branching
    7413 - added Chvatal-Gomory cuts separated with a sub-MIP (sepa_cgmip.{c|h})
    7414 - added reader for 'Weigted Boolean Optimization': problems (reader_wbo.{c,h}), this reader needs the reader_opb files
    7415 - new separator oddcycle (sepa_oddcycle.{c,h}) separates oddcycle inequalities using the implication/conflict graph and
    7416 dijkstra-algorithm based on binary heaps (dijkstra/dijkstra_bh.{c,h})
    7417
    7418- Branching:
    7419 - Branching on externally given candidates, the \ref BRANCH 'branching rules' have a second new callback method
    7420 (see type_branch.h for more details): SCIP_DECL_BRANCHEXECEXT(x) can be used to branch on external branching candidates,
    7421 which can be added by a user's `relaxation handler` or `constraint handler` plugin, calling SCIPaddExternBranchCand().
    7422 - added branchcands for relaxator solution, that can be added by the relaxator and used by branching rules
    7423 - added relaxsol to variables, s.t. a relaxator can store a solution on which branching or separation can be done
    7424 - SCIP can now branch on relaxation solutions that are either installed to the relaxsol field of the variables or added
    7425 to the list of relaxation candidates, e.g., by constraint handlers. Branching on relaxation solutions is performed if
    7426 the enforcement resulted in an unresolved infeasibility and there are no LP branching candidates, but before pseudo
    7427 solution branching. The branching rules leastinf, mostinf, random and pscost implement the callback for branching on
    7428 relaxation candidates.
    7429 - SCIP can branch on continuous variables. The branching value x' must not be one of the bounds. Two children (x <= x',
    7430 x >= x') will be created.
    7431 - the vbc visualization adds the branching type (lower or upper bound change) and the new bound to the node information
    7432 - the vbc visualization adds the new bound of the branched variable to the node information
    7433
    7434- Statistic:
    7435 - added statistic information about the first primal solution to SCIP statistic; in the statistic output a new line
    7436 appears with this information
    7437 - now the statistic displays the number of calls of the feasibility checking method of each constraint handler and the
    7438 running time of it
    7439
    7440- Propagation:
    7441 - New rounding and propagation heuristics
    7442 - New propagator for variable bounds
    7443 - primal heuristics may now be called directly after the node's propagation loop, using the new timing point
    7444 `SCIP_HEURTIMING_AFTERPROPLOOP`
    7445 - following methods SCIPinferVarUbProp(), SCIPinferVarLbProp(), SCIPinferVarLbCons(), SCIPinferVarUbCons() have a new 6th
    7446 parameter `SCIP_Bool force` which allows bound tightening even if the difference to the newbound is below bound
    7447 strengthening tolerance
    7448 - added propagator for variable lower and upper bounds (prop_vbounds.{c,h}); adjusted cons_varbound.c, var.c, and,
    7449 implics.c to work correctly with the new propagator
    7450
    7451- Nonlinear CIPs:
    7452 + Improved constraint handler for quadratic constraints
    7453 + New constraint handler for second order cone constraints
    7454 + New MINLP heuristics (undercover, subnlp)
    7455 + Preliminary support for non-linear relaxations (via expression trees)
    7456 + Automatic branching on solutions from arbitrary relaxations and on continuous variables
    7457
    7458Performance improvements
    7459------------------------
    7460
    7461- improved `settings/emphasis/cpsolver.set` to decrease time per node
    7462- reworked access to pseudo solution and inference value of variables in order to reduce function calls
    7463- changed default value of parameter `nodeselection/restartdfs/selectbestfreq` to 0; this means if the current node has
    7464 no children the node with the best bound is selected (SCIPgetBestboundNode())
    7465- added a dual reduction step in cons_knapsack.c
    7466- fasten check for common cliques in SCIPcliquelistsHaveCommonClique
    7467- SCIP with CPLEX as LP solver now uses quickstart steepest edge pricing as default instead of steepest edge pricing
    7468- avoid unnecessary domain propagation and LP resolve at nodes with infeasible LP relaxation
    7469- improved zerohalf cut separator: more than one delta is tested for MIR cuts, better handling of dense base
    7470 inequalities, faster scaling of fractional coefficients in rows (now enabled), improved parameter settings (presolving)
    7471
    7472- LP solution:
    7473 - in root node, first LP solution is checked for feasibility to avoid expensive setup
    7474 - avoided restarting if LP solution is feasible
    7475 - separators are not called any longer for an integral initial LP solution
    7476
    7477Examples and applications
    7478-------------------------
    7479
    7480- New branch-and-price example which includes Ryan/Foster branching (binpacking example)
    7481- New example illustrating the use of an event handler (`example/Eventhdlr`)
    7482
    7483Interface changes
    7484-----------------
    7485
    7486- Enhanced user interface for callable library: manual restarts, predefined settings and many other features
    7487- Support of wbo format for weighted PBO problems, IBM's xml-solution format and pip format for polynomial mixed-integer programs
    7488- Extended reader for Flatzinc models
    7489- new API for 'expressions interpreter': code that evaluates expression trees, including first and second derivatives
    7490- NLP solver interface (NLPI) now independent of SCIP like LPI
    7491- SCIP can now maintain a central NLP relaxation of the problem (similar to LP)
    7492- SCIP can now manage a list of external codes (e.g., LP or NLP solver, ZIMPL)
    7493- lp.h/lp.c and the lpi's were changed according to the changes mentioned below.
    7494- adding and deletion of rows to the separation storage and to the LP can now be catched by events
    7495 (`SCIP_EVENTTYPE_ROWADDEDSEPA`, `SCIP_EVENTTYPE_ROWDELETEDSEPA`, `SCIP_EVENTTYPE_ROWADDEDLP`, `SCIP_EVENTTYPE_ROWDELETEDLP`)
    7496
    7497### New and changed callbacks
    7498
    7499- new callback SCIP_DECL_BRANCHEXECRELAX(), together with new parameter in SCIPincludeBranchrule() for branching on a
    7500 relaxation solution
    7501
    7502- Copying a SCIP instance:
    7503 - Constraint handlers have two new callback methods. One for copying the constraint handler plugins
    7504 SCIP_DECL_CONSHDLRCOPY() and the other for copying a constraint itself, SCIP_DECL_CONSCOPY().
    7505 - All plugins, like \ref BRANCH `branching rules` and \ref HEUR `primal heuristics`, have a new callback method (see, e.g.,
    7506 type_branch.h and type_heur.h for more details):
    7507 - SCIP_DECL_BRANCHCOPY(x), SCIP_DECL_HEURCOPY(x) etc.
    7508 - When copying a SCIP instance, these methods are called to copy the plugins.
    7509 - The main problem has a new callback method (see type_prob.h for more details) SCIP_DECL_PROBCOPY(x) when copying a
    7510 SCIP instance, this method is called to copy the problem's data.
    7511 - Variables have a new callback method (see type_var.h for more details) SCIP_DECL_VARCOPY(x) when copying a SCIP
    7512 instance, this method is called to copy the variables' data.
    7513
    7514- Restarts:
    7515 - The callback SCIP_DECL_PROBEXITSOL(x) in the main problem has one new parameter (see type_prob.h for more details):
    7516 - The parameter `restart` is `TRUE` if the callback method was triggered by a restart.
    7517
    7518### Deleted and changed API functions
    7519
    7520- All C++ objects and constructors have a SCIP pointer, now.
    7521- added parameter scip to ObjCloneable::clone()
    7522- changes in a row can now be catched via row events (SCIPcatchRowEvent(), SCIPdropRowEvent(),
    7523 `SCIP_EVENTTYPE_ROWCOEFCHANGED`, `SCIP_EVENTTYPE_ROWCONSTCHANGED`, `SCIP_EVENTTYPE_ROWSIDECHANGED`)
    7524- added new parameter `varcopy` to SCIPcreateVar() to add the function for copying variable data
    7525- in case of using SCIPwriteTransProblem() the currently (locally) valid problem is written this now also includes the
    7526 local constraints
    7527
    7528- Settings:
    7529 - The predefined setting files like `settings/cuts/off.set,aggressive.set,fast.set` have been replaced by
    7530 interface methods like SCIPsetHeuristics(), SCIPsetPresolving(), SCIPsetSeparating(), and SCIPsetEmphasis() in
    7531 \ref scip.h and by user dialogs in the interactive shell like
    7532 `SCIP> set {heuristics|presolving|separating} emphasis {aggressive|fast|off}` or
    7533 `SCIP> set emphasis {counter|cpsolver|easycip|feasibility|hardlp|optimality}`
    7534 - All functions for setting user parameters of different types like SCIPparamSetBool(), SCIPparamSetChar(),
    7535 SCIPparamSetInt(), SCIPparamSetLongint(), and SCIPparamSetString() in pub_paramset.h have a new parameter
    7536 `quiet` it prevents any output during the assign to a new value.
    7537
    7538- NLP:
    7539 - NLPIs can now be used without generating a SCIP instance (i.e., do not require a SCIP pointer), code moved into src/nlpi
    7540 - NLPIs can now be managed like other SCIP plugins, i.e., they can be included into the SCIP core and accessed by
    7541 methods SCIPincludeNlpi(), SCIPfindNlpi(), SCIPgetNNlpis(), SCIPgetNlpis(), SCIPsetNlpiPriority()
    7542
    7543- Intervalarithmetic:
    7544 - method SCIPgetVarPseudocostCurrentRun() now returns the pseudocost value of one branching direction, scaled to a unit
    7545 interval, old method now called SCIPgetVarPseudocostValCurrentRun()
    7546 - renamed SCIPintervalScalarProductRealsIntervals()/SCIPintervalScalarProduct() by
    7547 SCIPintervalScalprodScalars()/SCIPintervalScalprod() and redesigned them in intervalarith.c including new methods
    7548 SCIPintervalScalprodScalarsInf/Sup()
    7549
    7550- Branching:
    7551 - The usage of strong branching changed. Now, SCIPstartStrongbranch() and SCIPendStrongbranch() must be
    7552 called before and after strong branching, respectively.
    7553 - The methods SCIPgetVarPseudocost() and SCIPgetVarPseudocostCurrentRun() in \ref scip.h now return the pseudocost value of
    7554 one branching direction, scaled to a unit interval. The former versions of SCIPgetVarPseudocost() and
    7555 SCIPgetVarPseudocostCurrentRun() are now called SCIPgetVarPseudocostVal() and SCIPgetVarPseudocostValCurrentRun(), respectively.
    7556 - The methods SCIPgetVarConflictScore() and SCIPgetVarConflictScoreCurrentRun() in \ref scip.h are now called
    7557 SCIPgetVarVSIDS() and SCIPgetVarVSIDSCurrentRun(), respectively.
    7558 - The methods SCIPvarGetNInferences(), SCIPvarGetNInferencesCurrentRun(), SCIPvarGetNCutoffs(), and
    7559 SCIPvarGetNCutoffsCurrentRun() are now called SCIPvarGetInferenceSum(), SCIPvarGetInferenceSumCurrentRun(),
    7560 SCIPvarGetCutoffSum(), and SCIPvarGetCutoffSumCurrentRun(), respectively. Furthermore, they now return
    7561 `SCIP_Real` instead of `SCIP_Longint` values.
    7562 - The method SCIPgetVarStrongbranch() has been replaced by two methods SCIPgetVarStrongbranchFrac() and
    7563 SCIPgetVarStrongbranchInt().
    7564
    7565- Copying a SCIP instance:
    7566 - Every new callback method resulted in a new parameter of the include function for the corresponding plugin,
    7567 e.g., SCIPincludeBranchrule() has two new parameters `SCIP_DECL_BRANCHCOPY((*branchcopy))` and
    7568 `SCIP_DECL_BRANCHEXECREL((*branchexecrel))`. In the same fashion, the new callbacks
    7569 `SCIP_DECL_VARCOPY` and `SCIP_DECL_PROBCOPY` led to new parameters in SCIPcreateVar() and SCIPcreateProb() in
    7570 scip.c, respectively.
    7571 - W.r.t. to copy and the C++ wrapper classes there are two new classes. These are `ObjCloneable` and `ObjProbCloneable`.
    7572 The constraint handlers and variables pricers are derived from `ObjProbCloneable` and all other plugin are derived from `ObjCloneable`.
    7573 Both classes implement the function `iscloneable()` which return whether a plugin is clone able or not. Besides that each class has a
    7574 function named `clone()` which differ in their signature. See objcloneable.h, objprobcloneable.h, and the TSP example for more details.
    7575 - SCIPincludeHeur() and SCIPincludeSepa() in \ref scip.h, as well as scip::ObjSepa() and scip::ObjHeur(), have a new parameter:
    7576 `usessubscip`: It can be used to inform SCIP that the heuristic/separator to be included uses a secondary SCIP instance.
    7577 - The argument success in `SCIP_DECL_CONSCOPY` has been renamed to valid.
    7578
    7579- Heuristics:
    7580 - SCIPcutGenerationHeuristicCmir() in sepa_cmir.h has three new parameters:
    7581 - `maxmksetcoefs`: If the mixed knapsack constraint obtained after aggregating LP rows contains more
    7582 than `maxmksetcoefs` nonzero coefficients the generation of the c-MIR cut is aborted.
    7583 - `delta`: It can be used to obtain the scaling factor which leads to the best c-MIR cut found within
    7584 the cut generation heuristic. If a `NULL` pointer is passed, the corresponding c-MIR cut will already be
    7585 added to SCIP by SCIPcutGenerationHeuristicCmir(). Otherwise, the user can generate the cut and add it to SCIP
    7586 on demand afterwards.
    7587 - `deltavalid`: In case, the user wants to know the best scaling factor, i.e., `delta` passed is not `NULL`,
    7588 `deltavalid` will be `TRUE` if the stored scaling factor `delta` will lead to a violated c-MIR cut.
    7589
    7590### New API functions
    7591
    7592- added SCIPcalcNegatedCliquePartition() to scip.c to calculate a clique partition on negations of all given binary
    7593 variables
    7594- SCIPpermuteArray() that randomly shuffles an array using the Fisher-Yates algorithm
    7595- SCIPgetRandomSubset() that draws a random subset of disjoint elements from a given set of disjoint elements
    7596- SCIPswapPointers()
    7597- SCIPlpiGetSolverDesc() to get a descriptive string of an LP solver (developer, webpage, ...)
    7598- SCIPholelistGetNext() to get the next hole of the hole list
    7599- SCIPlpRecalculateObjSqrNorm() which is used when the old calculated square norm was unreliable
    7600- SCIPpricerIsDelayed() which returns if the pricer is delayed (see pub_pricer.h)
    7601
    7602- Variables:
    7603 - SCIPvarIsBinary() which checks if a variable is (implicit) binary (see var.c for more details)
    7604 - SCIPvarGetHolelistOriginal(), SCIPvarGetHolelistGlobal(), SCIPvarGetHolelistLocal() to get the original, global and local holes, respectively
    7605 - SCIPvarGetProbvarHole() to tranform a given domain hole to the corresponding active, fixed, or multi-aggregated variable
    7606
    7607- Restart:
    7608 - allow user to trigger a restart during presolving SCIPrestartSolve()
    7609 - SCIPrestartSolve() that allows the user to manually restart the solving process
    7610 - SCIPisInRestart() to detect whether we are currently restarting
    7611
    7612- Heuristics:
    7613 - for heuristics SCIPheurSetFreq() to change the frequency of the heuristic (pub_heur.h, heur.c)
    7614 - SCIPsepaUsesSubscip(), SCIPheurUsesSubscip()
    7615
    7616- Intervalarithmetic:
    7617 - SCIPeventGetHoleLeft() and SCIPeventGetHoleRight() for accessing the left right interval bound of a domain hole added or removed event
    7618 - SCIPholelistGetLeft() and SCIPholelistGetRight()to get the left and right interval bounds of the open hole interval
    7619 - SCIPintervalAddInf/Sup/Vectors(), SCIPintervalMulInf/Sup() in intervalarith.c
    7620
    7621- Sorting:
    7622 - added SCIPsortPtrPtrLongIntInt(), SCIPsortLongPtrPtrIntInt() and corresponding sorting/inserting/deleting methods in
    7623 pub_misc.h and necessary defines in misc.c
    7624 - added SCIPsortLongPtrInt() and corresponding sorting/inserting/deleting methods in pub_misc.h and necessary defines in misc.c
    7625 - added SCIPsortPtrPtrInt() (and various other) and corresponding sorting/inserting/deleting methods in pub_misc.h and
    7626 necessary defines in misc.c
    7627 - SCIPsortPtrBool() and corresponding sorting/inserting/deleting methods in pub_misc.h and necessary defines in misc.c
    7628
    7629- Constraint Handlers:
    7630 - SCIPconshdlrGetEnfoConss(), SCIPconshdlrGetNEnfoConss()
    7631 - can now forbid upgrading of individual linear constraints (SCIPmarkDoNotUpgradeConsLinear())
    7632 - SCIPpermuteProb() that randomly permutes constraints and variables
    7633 - SCIPgetResultantOr() which returns the resultant of an `or` constraint
    7634 - SCIPmarkDoNotUpgradeConsLinear() in cons_linear.?, which allows to forbid upgrading of linear constraints
    7635 - SCIPgetNUpgrConss() which returns the number of upgraded constraints
    7636 - SCIPconshdlrGetCheckTime() and SCIPconshdlrGetNCheckCalls() which returns the running time in the feasibility checking of the
    7637 corresponding constraint handler respectively the number of calls of the checking method (implemented in cons.c)
    7638
    7639- Copy:
    7640 - SCIPcopy() to clone a SCIP instance
    7641 - SCIPcopyPlugins(), SCIPcopyParamSettings(), SCIPcopyVars(), SCIPcopyConss(), SCIPgetVarCopy() to copy
    7642 individual parts of a SCIP instance separately.
    7643 - SCIPcopyProbData() and SCIPprobCopyProbData() which copies the probdata from a sourcescip to a targetscip
    7644
    7645- Branching:
    7646 - two new functions SCIPgetVarsStrongbranchesFrac()/SCIPgetVarsStrongbranchesInt() for computing strong branching
    7647 information for several variables
    7648 - SCIPbranchruleGetNRelaxCalls() to get the total number of times, a particular branching rule was called on a relaxation solutions
    7649 - SCIPbranchRelax() to branch on a relaxation solution
    7650 - SCIPbranchVarVal() to branch on an arbitrary value within the variable's bounds
    7651 - SCIPbranchGetBranchingPoint() and SCIPgetBranchingPoint() to select branching point for a variable, e.g.,
    7652 ensure branching point is inside the interval for a continuous variable
    7653 - SCIPexecRelpscostBranching() in branch_relpscost.{c,h}; this method allows of calling the reliability
    7654 pseudo cost branching algorithm for given set of branching candidates from the outside
    7655 - SCIPinitVarBranchStats() to initialize the branching statistics (such as pseudo costs, VSIDS, inference values) of a variable
    7656 - SCIPselectBranchVarPscost() in branch_pscost.{c,h}; this method selects from a given candidate array a
    7657 branching variable w.r.t. pseudo cost branching for relax candidates
    7658
    7659- Reading, Writing and Parsing:
    7660 - SCIPparseVarName() which parses a string in cip-format as a variable name
    7661 - SCIPparseVarList() which parses a string as a variable list in cip-format
    7662 - the Flatzinc reader can now handle the output annotations of the Flatzinc format; the method SCIPprintSolReaderFzn()
    7663 outputs the given solution in Flatzinc format w.r.t. the output annotations
    7664 - SCIPprintSolReaderFzn() which prints the best solution in Flatzinc format w.r.t. to the output annotations
    7665 in the input file of the flatzinc model
    7666 - SCIPwriteVarName() which writes a variable in cip-format to given stream
    7667 - SCIPwriteVarsList() which writes an array of variables in cip-Format to given stream
    7668 - SCIPwriteVarsLinearsum() which writes an array of variables and coefficients as linear sum in cip-Format to given stream
    7669
    7670- Copying a SCIP instance:
    7671 - SCIPapplyRens() in \ref heur_rens.h has a new parameter `uselprows`. It can be used to switch from LP rows
    7672 to SCIP constraints as basis of the sub-SCIP constructed in the RENS heuristic.
    7673
    7674- Parameters:
    7675 - SCIPsetParamsCountsols() which sets the parameter for a valid counting process
    7676 - SCIPsetEmphasis() which sets parameter to detect feasibility fast, handle hard LP, solves easy CIPs fast, behaves like a
    7677 CP solver, set parameter for a valid counting process; the desired behavior is triggered via a parameter of the function
    7678 - SCIPresetParam() to reset the value of a single parameter to its default value
    7679
    7680- Settings:
    7681 - added SCIPsortRealRealRealPtr() and corresponding sorting/inserting/deleting methods in pub_misc.h and necessary defines in misc.c
    7682 as basis for the subSCIP, setting ist to TRUE (uses LP rows) will lead to same version as before
    7683 - SCIPsetHeuristics(), SCIPsetSeparating(), SCIPsetPresolving() which set the heuristics to aggressive, fast, off, or
    7684 default settings, depending on the `SCIP_PARAMSET` parameter
    7685 - SCIPsetSubscipsOff() which disables all plugins that uses subscips
    7686 - SCIPsepaSetFreq() to set the calling frequency of a separator
    7687
    7688### Command line interface
    7689
    7690- added new dialog for setting the SCIP parameters for hardlp, optimality, easy CIP, CP like search
    7691- added new dialog for setting the SCIP parameters for feasibility problems `SCIP> set emphasis feasibility`
    7692- added new dialog for setting the SCIP parameters for counting `SCIP> set emphasis counting`
    7693- added new dialog for setting presolving to aggressive, fast, or off in interactive shell
    7694- added new dialog for setting separation to aggressive, fast, or off in interactive shell
    7695- added new dialog for writing all solutions which are collected during the counting process (see cons_countsols.{c,h})
    7696- added new dialog for setting heuristics to aggressive, fast, or off in interactive shell
    7697- added new dialog `display pricers` which displays all included pricers
    7698
    7699### Interfaces to external software
    7700
    7701- added interface to CppAD (nlpi/exprinterpret_cppad.cpp)
    7702- Improved Xpress, CPLEX, SoPlex interfaces
    7703- the SoPlex interface now includes equilibrium scaling on lp's solved from scratch without starting basis
    7704- the SoPlex interface can now double check each SoPlex result against CPLEX (lpi_spx.cpp)
    7705- the SoPlex interface has the option to restore basis only after entire strong branching phase instead of after each
    7706 strong branch (off, because it mostly appears to increase strong branching time and iterations) (lpi_spx.cpp)
    7707
    7708### Changed parameters
    7709
    7710- removed parameter `constraints/knapsack/maxnumcardlift` and adapted setting files
    7711- changed parameter `lp/fastmip` from boolean to integer, possible values are 0 (off), 1 (medium, default), 2 (full,
    7712 must not be used with branch-and-price).
    7713
    7714### New parameters
    7715
    7716- `branching/clamp` to set the minimal fractional distance of a branching point to a continuous variable' bounds
    7717- `branching/random/seed` to change the initial seed value of the branching rule random
    7718- `constraints/indicator/addCouplingCons` that allows to add variable upper bounds if addCoupling is true
    7719- `constraints/indicator/enforceCuts` that allows to check for violated cust in enforcement
    7720- `constraints/indicator/maxCouplingValue` for the maximal value of the coefficient in a coupling inequality/constraint
    7721- `constraints/indicator/noLinconsCon` which controls whether the linear constraint is not explicitly
    7722 added to the problem. default is FALSE
    7723- `constraints/knapsack/dualpresolving` to switch dualpresolving on/off inside the knapsack constraint handler, default is TRUE
    7724- `constraints/knapsack/presolpairwise` that allows pairwise presolving of knapsack constraints, default is TRUE
    7725- `constraints/knapsack/presolusehashing` that allows fast pairwise presolving of knapsack constraints, default is TRUE
    7726- `heuristics/crossover/dontwaitatroot` that allows to call crossover at root node independently from nwaitingnodes
    7727- `heuristics/rens/uselprows` that allows to switch between LP row and SCIP constraints as basis for the
    7728 subSCIP, default is TRUE (uses LP rows)
    7729- `lp/rowrepswitch` telling simplex solver to switch to row representation of the basis (if possible),
    7730 if number of rows divided by number of columns exceeds this value (default value infinity, i.e. never switch)
    7731- `lp/threads` to change the number of threads used to solve the LP relaxation (default is 0: automatic)
    7732- `misc/lexdualstalling` that turns on the lex dual algorithm if the separation process is stalling
    7733- `misc/usevartable` and `misc/useconstable` which turns on/off the usage of hashtables mapping from
    7734 variable/constraint names to the variables/constraints; when turned off, SCIPfindVar() and SCIPfindCons() may not be
    7735 used; the hashtables can be turned off for subMIPs to improve the performance, default value TRUE
    7736- `misc/usesmalltables` which results in using smaller tables for names, cliques and cuts and improves
    7737 the performace for smaller instances, default value FALSE
    7738- `misc/permutationseed` to change the permutation seed value for permuting the problem after the
    7739 problem is transformed (-1 means no permutation)
    7740- `reading/zplreader/usestartsol` which allows to switch ZIMPL start solutions off, default value TRUE
    7741- `vbc/dispsols` to propose if the nodes where solutions are found should be visualized in the branch and bound tree
    7742
    7743### Data structures
    7744
    7745- implemented the data structure and events for global and local domain holes added and removed
    7746- new data structures and methods to handle nonlinear expressions in NLPI ({type_, struct_, pub_}expression.{h,c}):
    7747 nlpioracle can store and evaluate general NLPs now, nlpi_ipopt can solve general NLPs now
    7748
    7749Testing
    7750-------
    7751
    7752- minor changes on several evaluation scripts (new statuses: better, solved, sollimit, gaplimit) and short-mode for cmpres.awk
    7753- support for FreeBSD (32- and 64-bit) including minor changes in several scripts in the check-directory
    7754
    7755Build system
    7756------------
    7757
    7758### Makefile
    7759
    7760- added scripts check_*.sh, evalcheck_*.sh and check_*.awk for blis, glkp, gurobi and symphony (including targets in
    7761 Makefile) and slightly modified scripts for cplex, cbc and mosek and cmpres-script
    7762- added target `lintfiles` which allows to call flexelint with a list of file, for example, make lintfiles
    7763 `FILES=src/scip/prop_vbounds.c`
    7764- the NLP solver interfaces and expression interpreter are located in a separate library (libnlpi.*; similar to the lpi
    7765 library) and is required to link against the SCIP library also projects that use SCIP via `make/make.project` need to
    7766 change their Makefile (!!!): in the $(MAINFILE) target, add $(NLPILIBFILE) behind $(LPILIBFILE) in the dependencies
    7767 and add $(LINKCXX_l)$(NLPILIB)$(LINKLIBSUFFIX) to the linker flags
    7768- The additional NLPI library requires a change in the Makefile of SCIP's project:
    7769 The $(MAINFILE) target now has $(NLPILIBFILE) as additional dependency and the linking
    7770 command requires $(LINKCXX_l)$(NLPILIB)$(LINKLIBSUFFIX) as additional argument.
    7771- A bug in the Makefiles of older versions of the SCIP examples may cause
    7772 data loss. If you have a custom Makefile, please ensure that the target
    7773 `clean` is changed as described here:
    7774 http://scipopt.org/download/bugfixes/scip-1.2.0/make.txt.
    7775
    7776Fixed bugs
    7777----------
    7778
    7779- fixed bug in conflict.c in the method conflictsetAddBound()
    7780- fixed `bug` in projects Makefiles w.r.t. `make clean`
    7781- fixed bug in rapid learning with wrong ordering of dual and primal bound update, primal bound is now updated inside
    7782 rapid learning
    7783- fixed potential bug in rapid learning with dual reductions
    7784- fixed potential bug where SCIPselectSimpleValue() returns a value slightly outside of the given bounds due to rounding
    7785 errors (probably cancelation in subtraction in SCIPfindSimpleRational), now use rounding control and check result
    7786- fixed bug that SCIP could not be continued after it has been stopped due to a limit
    7787- fixed bug in var.c: SCIPvarChgLbOriginal() and SCIPvarChgUbOriginal() cannot access original bounds if the variable is
    7788 negated
    7789- fixed potential bug with pseudo solution branching on free variables
    7790- fixed bug with multiaggregations whose infimum and supremum are both infinite: in such a case multiaggregation is now
    7791 forbidden
    7792- fixed numerical issue with multiaggregations which are infinite in one direction: value of multiaggregated variable
    7793 could have been larger then inifinity
    7794- fixed bug w.r.t. of adding a variable bound variable to its self
    7795- fixed bug concering the incorrect assumption that every solution computed in SCIPlpGetUnboundedSol() is integral (we
    7796 will not branch but return `infeasible or unbounded` like in presolving)
    7797- fixed bug while breaking an clique down to their impications (in SCIPcliquetableCleanup() in implics.c) where the
    7798 variable was not of vartype `SCIP_VARTYPE_BINARY`, instead of adding an implication we add a variable bound
    7799- fixed bug with debugging a solution: during restarts erroneously it was claimed that the primal solution is cut off
    7800
    7801- Interface:
    7802 - fixed bug w.r.t. ObjDialog and displaying the description of the dialog
    7803 - fixed bug when aborting pricing with Ctrl-C
    7804
    7805- LP:
    7806 - fixed bug in scip.c w.r.t. to call of conflict analysis for LPs which reached the objective limit in case of diving
    7807 - fixed bug with resolving LPs at infeasible root node
    7808 - fixed bug in lp.c: in sumMIRRow() rowtoolong was not set correctly
    7809 - fixed bug in lp.c w.r.t. objective limit reached and the chosen comparison (fixed buglist entry 40)
    7810 - fixed bug in lp.c: if in SCIPlpSolveAndEval() the LP has to be solved from scratch due to numerical troubles, reset
    7811 `SCIP_LPPARAM_FROMSCRATCH` to `FALSE` afterwards
    7812 - fixed bug in lp.c SCIProwGetObjParallelism() due to a wrong parallelism value which arised from cancellations during
    7813 calculation of squared euclidean norm of objective function vector of column variables
    7814 - fixed bug in lp.c: SCIPlpGetUnboundedSol() did not ensure that unbounded solution lies withing the bounds of the
    7815 variables
    7816 - fixed bug in lp.c w.r.t. to the number of `active` pricer
    7817
    7818- Solve:
    7819 - fixed bug in solve.c where relaxation branching candidates were cleared, but the relaxation was still marked solved
    7820 and not called again, furthermore, adjusted criterions for solving a relaxation again
    7821 - fixed bugs in solve.c: even with LP solving disabled, the root LP was solved in case continous variables are
    7822 contained; setting pricing/maxvars(root) to 1 resulted in not calling the pricers
    7823 - fixed bug in solve.c: make sure SCIP terminates correctly also when a user interrupt or gap limit is reached, i.e.,
    7824 avoid error `pricing was aborted, but no branching could be created!`
    7825
    7826- Tree:
    7827 - fixed bug in tree.c: if an explicit branching point is given, we may not recompute a better centering point
    7828 - fixed bug in tree.c: propagate implications on multi-aggregated should not be performed
    7829
    7830- Constraints:
    7831 - corrected several asserts in linear and quadratic constraint handler concerning parsing of CIP format
    7832 - fixed bug while deleting redundant variables, which have no influence on changing the feasibility of the linear
    7833 constraints, we need to update the sides of the constraint at each step, bug number 51 in bugzilla
    7834 - fixed bug in copy procedure of AND constraint handler, negated variables have been copied to their originals
    7835 - fixed bug when deleting a constraint where the update was delayed and not processed yet (in cons.c)
    7836 - fixed bug in cons_linear.c: binary variables should not be multi-aggregated
    7837 - fixed bug in cons_quadratic.c: curvature of bivariate quadratic constraints was not detected correctly
    7838 - fixed bug in cons_sos2.c: the branching position was sometimes mistakenly increased
    7839 - fixed bug in propagation of cons_sos2.c: the node can be cut off at more places: the previous version was not
    7840 sucessfull in this respect
    7841 - fixed bug in cons_linear.c:applyFixings() which could lead to lhs/rhs smaller/larger than -/+infinity
    7842 - fixed bug in cons_linear.c in detectRedundantConstraints() and corrected old bug fix in SCIProwCreate(): we want lhs
    7843 <= rhs to be satisfied without numerical tolerances in order to avoid numerical problems in the LP solver
    7844
    7845- Knapsack Constraint Handler:
    7846 - fixed bug in cons_knapsack.c: mergeMultiples() now detects whether a node can be cut off
    7847 - fixed bug in cons_knapsack.c w.r.t. to items with zero weight
    7848 - fixed bug in cons_knapsack.c: In SCIPseparateRelaxedKnapsack() not all variables need to be active in deeper regions
    7849 of the tree
    7850 - fixed bug in cons_knapsack.c and sepa_clique.c: the assumption that implications are always nonredundant and contain
    7851 only active variables is not correct anymore as the corresponing vbound might be missing because of numerics
    7852
    7853- Separation and Cuts:
    7854 - fixed bug in cutpool.c: the hashkey computation was not constant over time
    7855 - fixed bug in cutpool.c: hashkey of a row changed during the solving process (if a row is made integral after creation,
    7856 maxabsval can be invalid when adding it to the pool, but might be recomputed later on)
    7857 - fixed bug in sepa_rapidlearning.c, stop processing if there are no binary variables left
    7858 - fixed bug in sepa_rapidlearning.c, corrected computation of right dualbound
    7859 - fixed bugs in sepa_zerohalf.c, e.g., handling of intscaling and substitution of variable bounds
    7860 - fixed bug in sepastore.c in sepastoreApplyLb/Ub being to hard on feasibility decisions
    7861 - fixed bug in sepa_flowcover.c: numerical issues while computing candidate set for lambda
    7862
    7863- LP Interfaces:
    7864 - fixed bug in SoPlex autopricing due to which autopricing had behaved like steepest edge pricing so far
    7865 - fixed bug in lpi_clp.cpp: SCIPlpiChgBounds() checks if the column status exists in Clp before using it
    7866 - fixed wrong assert in Cplex LPI: Due to numerical inaccuracies, a few pivots might be performed after refactorization
    7867 - fixed bug concerning assert(!SCIPlpDivingObjChanged(lp)) which was caused by wrong infinity double parameters for
    7868 cplex
    7869 - fixed makefile system for `OSTYPE=darwin` w.r.t. to CPLEX as LP solver
    7870
    7871- Presolving:
    7872 - fixed bug in cons_setppc: aggregated variables were not correctly removed in presolving
    7873 - fixed bug in presolving of linear constraint handler: in redundancy detection, two different numerical epsilons were used
    7874 - fixed bug in presolving while not applying a bound change on a variable in a single-variable constraint (e.g. x1 =
    7875 0.03) in cons_linear which is too small, that lead to another bound change in presol_trivial which is not allowed, so
    7876 now this bound change will be forced
    7877 - fixed SCIPvarIsTransformedOrigvar() in var.c (variables generated by presol_inttobinary returned false)
    7878 - fixed bug w.r.t. an assert in presol_inttobinary.c; it was assumed that the aggregation which is performed there will
    7879 never lead to an infeasibility, this is not true, see comment in presol_inttobinary.c
    7880 - fixed bug in presol_trivial.c trying to fix continuous variables, now uses a less stricter comparison to fix variables
    7881 - fixed bug in cons_bounddisjunction.c: presolve may have tried to tighten bounds on a multiaggregated variable (now
    7882 upgrades to linear constraint)
    7883
    7884- Reading, Writing and Messages:
    7885 - fixed bug while trying to write a MIP where SCIP needs to flush the lp changes first
    7886 - fixed potential resource leak when running out of memory while writing files
    7887 - fixed bug in reader_zpl.c which appeared using the parameter `reading/zplreader/parameters`
    7888 - fixed bugs in flatzinc readers with constraints that exclusively consist of constants
    7889 - fixed bug in reader_gms: correct handling of nonstandard bounds on general integer variables
    7890 - fixed buglist entry 35, which was caused by a wrong read in correction when the reading buffer was full in
    7891 reader_opb.c
    7892 - fixed bugs in reader_fzn.c w.r.t. parsing and solution output in Flatzinc format
    7893 - fixed bug in reader_fzn.c w.r.t. comment lines
    7894 - fixed bug in reader_opb.c w.r.t. comment lines
    7895 - fixed bug in message handler w.r.t. to messages which are longer then `SCIP_MAXSTRLEN`
    7896
    7897- Heuristics:
    7898 - fixed bugs do to `HEUR_TIMING SCIP_HEURTIMING_AFTERPROPLOOP` which appeared during repropagation
    7899 - fixed bug in trivial heuristic: the locking solution might have falsely initialized some values to zero
    7900 - fixed bug in heur_oneopt.c w.r.t. to SCIPtrySol(); it is necessary that the bound of the solution is check otherwise,
    7901 infeasible solution could be accepted as feasible
    7902 - fixed bug in heur_trivial.c w.r.t. to debug messages after a solution was freed
    7903 - fixed bug for `HEUR_TIMING SCIP_HEURTIMING_BEFOREPRESOL` and modifiable constraints
    7904 - corrected wrong assert in DINS heuristic when called for an empty problem
    7905 - fixed potential bug in OCTANE heuristic with nonbasic solutions
    7906 - fixed bug in sub-MIP heuristics with parameter change if some default plugins are not included
    7907 - fixed bug in trivial heuristic with bounds that are greater than the heuristic's infinity value
    7908
    7909Miscellaneous
    7910-------------
    7911
    7912- As the interface contains several additional callback functions and
    7913 parameters for plugins, some effort may be required to compile your
    7914 own projects with SCIP 2.0. See also `Changes between version 1.2 and 2.0` in the doxygen
    7915 documentation for additional information.
    7916
    7917@page RN1_2 Release notes for SCIP 1.2
    7918
    7919@section RN120 SCIP 1.2.0
    7920*************************
    7921
    7922Features
    7923--------
    7924
    7925- adjusted hard memory limit to (soft memory limit)*1.1 + 100mb in check.sh, checkcount.sh, check_cplex.sh,
    7926 check_cluster.sh and check_cbc.sh
    7927- new presolving step in cons_knapsack.c, same like `simplifyinequalities` in cons_linear.c
    7928- now it's possible to write strings with more than `SCIP_MAXSTRLEN` amount of characters in all message.c functions
    7929- the current/root lp can be marked to be no relaxation of the current/root problem
    7930- added new preprocessing step (mergeMultiples) in cons_setppc.c where equal variables are merged
    7931- Black-box lexicographic dual simplex algorithm; can now run lexicographical dual algorithm (parameter `lp/lexdualalgo`)
    7932
    7933- Bounds:
    7934 - SCIP now has `lazy bounds`, which are useful for column generation: see @ref PRICER_REMARKS `pricer remarks` for an explanation.
    7935 Each variable has now two additional `SCIP_Real` parameter which define a lazy lower and upper bound; lazy means that
    7936 there exists constraints which implies these (lazy) bounds. If the lazy lower or upper bound is greater or less than
    7937 the local lower or upper bound, respectively, then the corresponding bound is not put into the LP. The bounds are set
    7938 to minus and plus infinity per default which yields the same behavior as before. With the methods SCIPchgVarLbLazy()
    7939 and SCIPchgVarUbLazy() these bounds can be set. This is of interest if SCIP gets used as a branch-and-price
    7940 framework. Attention! The lazy bounds need to be valid for each feasible LP solution. If the objective function
    7941 implies bounds on the variables for each optimal LP solution, but these bounds may be violated for arbitrary LP
    7942 solutions, these bounds must not be declared lazy!
    7943 - interval arithmetic functions can work with unbounded intervals added new functions to allow more operations on
    7944 intervals, including solving quadratic interval equations
    7945
    7946- Branching:
    7947 - extended hybrid relpscost branching rule by usage of the average length of conflicts a variable appears in
    7948 - `early branching`-functionality added: in a branch-and-price code, the user can stop pricing at a node although there
    7949 may exist variables with negative reduced costs. In this case, the lp-lowerbound will not be used. The pricer has,
    7950 however, the option to return a lower bound. This can be useful for column generation.
    7951
    7952- Constraints:
    7953 - Copy constructors and i/o functionality for constraints: all linear type constraint handlers are able to copy
    7954 constraints using the function SCIPgetConsCopy() in scip.h
    7955 - the linear constraint handler is able to parse a string in CIP format and create a corresponding linear constraint
    7956 - Constraint handler for indicator constraints and parsing them from *.lp and *.zpl files
    7957 - the indicator constraint can now try to produce a feasible solution (via heur_trysol)
    7958 - one can now write indicator constraints in LP-format
    7959 - added constraint handler for quadratic constraints
    7960
    7961- Cuts:
    7962 - added new version of zerohalf cuts from Manuel Kutschka
    7963 - added multi-commodity-flow cut separator
    7964
    7965- Heuristics:
    7966 - Heuristics which are applied before root LP
    7967 - added heuristic that performs a local search in an NLP (takes only linear and quadratic constraints into account so far)
    7968 - added heuristic that gets a solution from other components and tries it (heur_trysol.?)
    7969 - new trivial heuristic: tries zero solution, lower and upper bound solution and some variable lock based fixing
    7970 - added new timing point, `SCIP_HEURTIMING_DURINGPRICINGLOOP`, for calling heuristics; If this timing point is used the
    7971 corresponding heuristics is called during the pricing loop of variables; we also added this timing point to
    7972 heur_simplerounding.{h,c} which has the effect that a LP solution which satisfies all integrality conditions during
    7973 the pricing loop is detected
    7974
    7975- Interfaces:
    7976 - 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)
    7977 - Preliminary support of non-convex MIQCPs: Constraint handler for quadratic constraints, NLP heuristic and
    7978 Ipopt interface, see \ref cons_quadratic.h.
    7979 - There are LP-interfaces to QSopt and Gurobi (rudimentary).
    7980
    7981- Reader and Writer:
    7982 - added reader and writer for FlatZinc models (reader_fzn.{c,h})
    7983 - added writer for GAMS models (reader_gms.{c,h})
    7984
    7985Performance improvements
    7986------------------------
    7987
    7988- Enhanced MCF cuts: stable version, used by default
    7989- replaced some function calls in loop conditions
    7990- in sepa_cmir.c, if mksetcoefs is invalid for delta=1 no other values of delta are tested anymore
    7991- changed the timing of the feasibility pump in case of pricing
    7992- removed changing of update rule to `ETA` from standard soplex update `Forrest-Tomlin` in lpi_spx.cpp
    7993- improved memory usage in heur_octane.c
    7994- improved reading time of opb-files, due to using a hashtable for all `and`-constraints
    7995- improved performance of merging variables in mergeMultiples() in cons_knapsack.c
    7996- improved performance in tightenWeightsLift() and SCIPseparateRelaxedKnapsack() in cons_knapsack.c, due to now
    7997 sparse-cleaning `global` arrays instead of using BMSclearMemory... functions for cleaning local arrays each time
    7998- improved performance in SCIPcliquelistRemoveFromCliques()
    7999- improved performance in SCIPcalcCliquePartition()
    8000- improved performance in SCIPvarGetActiveRepresentatives() in var.c
    8001
    8002- Presolving:
    8003 - improved pairwise presolving in cons_and.c due to using a hashtable
    8004 - improved pairwise presolving in cons_xor.c due to using a hashtable
    8005
    8006Interface changes
    8007-----------------
    8008
    8009- A significant change for C++ users is that all include files of SCIP
    8010 automatically detect C++ mode, i.e., no `extern `C`` is needed anymore.
    8011- Reader for Flatzinc and GAMS models
    8012
    8013### New and changed callbacks
    8014
    8015- The callback SCIP_DECL_PRICERREDCOST(x) in the \ref PRICER `pricers` has two new parameters:
    8016 + A `result` pointer determines whether the pricer guarantees that there exist no more variables. This allows for early branching.
    8017 + A pointer for providing a lower bound.
    8018
    8019- The \ref CONS `constraint handlers` have two new callback methods (see type_cons.h for more details):
    8020 + SCIP_DECL_CONSCOPY(x): this method can be used to copy a constraint.
    8021 + SCIP_DECL_CONSPARSE(x): this method can be used to parse a constraint in CIP format.
    8022
    8023### Deleted and changed API functions
    8024
    8025- SCIPcalcMIR() in scip.h has two new parameter `mksetcoefsvalid` and `sol`. The parameter `mksetcoefsvalid` stores
    8026 whether the coefficients of the mixed knapsack set (`mksetcoefs`) computed in SCIPlpCalcMIR() are valid. If the mixed
    8027 knapsack constraint obtained after aggregating LP rows is empty or contains too many nonzero elements the generation of the
    8028 c-MIR cut is aborted in SCIPlpCalcMIR() and `mksetcoefs` is not valid. The input parameter `sol` can be used to separate a
    8029 solution different from the LP solution.
    8030- new parameter `set` in SCIPconsSetInitial().
    8031- some interval arithmetic method take an additional argument to denote which value stands for infinity in an interval
    8032
    8033- Variables:
    8034 - SCIPgetVarClosestVlb() and SCIPgetVarClosestVub() in scip.h have a new parameter `sol`. It can be used to obtain the closest
    8035 variable bound w.r.t. a solution different from the LP solution.
    8036 - new parameters `lowerbound` and `result` in type_pricer.h: lowerbound can save a lower bound computed by the pricer,
    8037 result indicates whether the pricer guarantees that there exist no more variables if no variable was found
    8038
    8039### New API functions
    8040
    8041- new methods to deactivate a pricer SCIPdeactivatePricer() in scip.c
    8042- 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
    8043- SCIPsetProbName() to set problem name in scip.h/c (SCIPprobSetName() in prob.h/c)
    8044
    8045- Objective:
    8046 - SCIPgetTransObjscale() and SCIPgetTransObjoffset() in scip.c
    8047 - SCIPaddObjoffset() in scip.h; sets offset of objective function
    8048 - SCIPgetOrigObjoffset() in scip.h; returns the objective offset of the original problem
    8049 - SCIPgetOrigObjscale() in scip.h; returns the objective scale of the original problem
    8050
    8051- Constraints:
    8052 - detectRedundantConstraints() in cons_xor.c and necessary hash-functions for fast pairwise presolving
    8053 - SCIPparseCons() in scip.h; parses constraint information (in cip format) out of a string
    8054 - SCIPgetConsCopy() in scip.h; which copies a constraint of the source SCIP
    8055
    8056- Relaxation:
    8057 - SCIPisLPRelax() and SCIPisRootLPRelax() in scip.c and scip.h returning whether the current/root LP is a
    8058 relaxation of the current/root problem and thus defines a valid lower bound
    8059 - SCIPlpSetIsRelax() and SCIPlpSetRootLPIsRelax() in lp.c and lp.h to set the information, whether the lp is a valid relaxation;
    8060 this information is per default set to true and constraint be used. The aggregated version has only 2 linear constraints the
    8061 default linearization has nvars + 1
    8062
    8063- Sort:
    8064 - extended the sort template functions in sorttpl.c with a `five` array; now it possible to used this template to sort
    8065 up to five arrays
    8066 - new interface methods SCIPcolSort(), SCIProwSort(), SCIPcolGetIndex()
    8067 - added SCIPsortPtrPtrLongInt() and corresponding sorting/inserting/deleting methods in pub_misc.h and necessary defines
    8068 in misc.c
    8069
    8070- Variables:
    8071 - SCIPprintNodeRootPath() in scip.h This method prints all branching decisions on variables from the root to the given node
    8072 - SCIPnodeGetParentBranchings(), SCIPnodeGetAncestorBranchings(), SCIPnodeGetAncestorBranchingPath(); These methods return
    8073 the set of variable branchings that were performed in the parent node / all ancestor nodes to create a given node
    8074 - SCIPchgVarLbLazy() and SCIPchgVarUbLazy() in scip.h; These methods can be used to change the lazy lower or
    8075 upper bound of a variable; This might has the consequences that the bounds of the corresponding variable is not in
    8076 LP. This is the case if the lazy lower or upper bound is greater or less than the local lower or upper bound, respectively
    8077 - SCIPvarGetLbLazy() and SCIPvarGetUbLazy() in pub_var.h; These methods return the lazy lower or upper bound, respectively
    8078 - SCIPvarCompareActiveAndNegated() and SCIPvarCompActiveAndNegated() in pub_var.h for comparing variables
    8079 negated, active or fixed the same way
    8080 - SCIPparseVars() in scip.h; parses variable information (in cip format) out of a string
    8081 - SCIPgetNFixedonesSetppc() and SCIPgetNFixedzerosSetppc() in cons_setppc.{h,c}; these methods returns
    8082 current (local) number of variables fixed to one/zero in the given setppc constraint
    8083 - SCIPgetVarConflictlengthScore(), SCIPgetVarAvgConflictlength(), SCIPgetAvgConflictlengthScore() and their pendants for the current run
    8084 - added function SCIPvarsGetProbvarBinary() in pub_var.h; gets active, fixed, or multi-aggregated problem variables of
    8085 binary variables and corresponding negated status
    8086
    8087### Interfaces to external software
    8088
    8089- LP Interfaces:
    8090 - heavily revised Mosek interface
    8091 - new interface to QSopt due to Daniel Espinoza
    8092 - First version of LP interfaces to Gurobi and QSopt
    8093 - Major performance improvements in LP interfaces to Clp, Mosek and SoPlex
    8094
    8095- External Software:
    8096 - adjusted interface to ZIMPL (reader_zpl.{c,h} for ZIMPL version 2.10; this interface should also work with older ZIMPL versions
    8097 - Adjusted interface to Zimpl version 3.0.0
    8098 - added first version of an interface to Ipopt (only QCP, no deletion of vars/cons allowed; nlpi_ipopt.(h|c))
    8099
    8100- SCIP Interfaces:
    8101 - On http://code.google.com/p/python-zibopt/source/checkout you find a beta
    8102 version of a python interface to SCIP implemented by Ryan J. O'Neil.
    8103
    8104### Changed parameters
    8105
    8106- removed parameter `constraints/and/initiallp` since it is not needed anymore;
    8107- set parameter `constraints/and/sepafreq` default value to 1
    8108- display character of oneopt heuristic changed to `b`
    8109
    8110### New parameters
    8111
    8112- `branching/relpscost/advanced/conflenscore`, default value 0.001
    8113- `constraints/and/aggrlinearization` in cons_and.c, aggregated version of the linearization
    8114- `constraints/and/enforcecuts` in cons_and.c, should cuts be separated during LP enforcing?
    8115- `constraints/and/presolusehashing` in cons_and.c, should pairwise presolving use hashing?, default TRUE
    8116- `constraints/countsols/sollimit` in cons_countsols.c, counting stops, if the given number of solutions were found (-1: no limit)
    8117- `constraints/xor/presolusehashing` in cons_xor.c, should pairwise presolving use hashing?, default TRUE
    8118- `heuristics/oneopt/duringroot`, default value TRUE
    8119
    8120Build system
    8121------------
    8122
    8123### Makefile
    8124
    8125- extend Makefile to link against Ipopt if `IPOPT=true` is set
    8126
    8127Fixed bugs
    8128----------
    8129
    8130- fixed wrong use of pointer in lp.c
    8131- fixed bug with array dimension not reset to zero when array is freed in pseudoobj propagator
    8132- fixed bug with enforcement of pseudo solutions: if pseudo solution is choosen because LP hit a limit, it has to be
    8133 enforced in any case
    8134- fixed potential bug in coloring example: SCIPcreateChild() is now given an estimate in terms of the transformed
    8135 problem by SCIPgetLocalTransEstimate(), no longer the estimated original problem value. Also clarified this in the
    8136 comments for SCIPcreateChild()
    8137- fixed compiler warning `warning: dereferencing type-punned pointer will break strict-aliasing rules` which resuts in
    8138 scip-crashes with gcc version 4.4.0
    8139- adjusted assert in var.c
    8140- fixed bug in SCIPvarGetActiveRepresentatives() in var.c
    8141- fixed bug with objective limit in lp.c: previously the infinity value of SCIP was used as default - now the value of
    8142 LPI is used. In the earlier version in many cases the problems where never infeasible.
    8143- added and adjusted some asserts, initialized some values
    8144- increased the numerical stability of coefficient tightening for Big M formulations
    8145- fixed bug with incorrect pseudo activities when objective of a variable switches sign in linear constraint handler
    8146- fixed bug with empty constraints in several writing routines
    8147- fixed `GGT-Kaibel-Bug` in var.c, prop_pseudoobj.c and cons_varbound.c that occured while computing new values using
    8148 infinity values
    8149
    8150- Bounds:
    8151 - fixed bug in coefficient tightening with infinite bounds
    8152 - fixed bug in solve.c: in case lowerbound >= upperbound, SCIPsolveIsStopped() returned `SCIP_STATUS_GAPLIMIT`
    8153
    8154- Nodes:
    8155 - fixed bug in SCIPsolveNode() concerning the case that the time limit was hit while solving the LP relaxation of a
    8156 subproblem which is already an LP (branching on pseudo solution is not possible)
    8157 - fixed bug in vbc tools concerning of marking probing nodes
    8158 - fixed bug in solve.c with nodes which are marked to be repropagated while enforcement
    8159
    8160- Variables:
    8161 - fixed possible infinite loop while multiaggregating a variable in var.c
    8162 - fixed bug in SCIPgetSolVals() similar to SCIPgetSolVal(): try to get original variables of transformed ones if the
    8163 solution lives in original space
    8164
    8165- Pricing:
    8166 - fixed potential bug: restarts are now only done if no active pricers exist
    8167 - fixed bug in SCIPlpSolveAndEval(): if fastmip and pricers enabled and objlimit was reached but CPLEX did not perform
    8168 the final pivot step in order to exceed the objlimit, do one additional simplex step with pricing strategy steepest
    8169 edge, if this doesn't suffice, turn off fastmip temporarily and solve again. Also consider solstat of the new
    8170 solution.
    8171 - fixed bug with invalid pseudo solution (lower bound was always >= 0) when using pricing.
    8172 - fixed bug in SCIPfreeProb() in scip.c: all pricers are deactivated now
    8173
    8174- Memory:
    8175 - now frees debug memory
    8176 - fixed bug with exponential complexity for reallocating memory in SCIPvarGetActiveRepresentatives() in var.c
    8177 - fixed casting of void* pointers in memory.h for C++, adjusted the same for C in memory.h and due to that adjusted all
    8178 header files(set whole files in extern `C`) and cpp-files(removed unnecessary extern `C` lines)
    8179 - removed memory leak in connection with freeing branch and bound nodes: focusnode was not freed if both children could
    8180 be cut off due to bounding
    8181
    8182- Reading and Writing:
    8183 - corrected bug in reader_lp.c: earlier read bounds were thrown away (implementation was not conforming to standard)
    8184 - fixed bug in reader_lp.c with respect to constraint and variable names which start with two or more dots `..`
    8185 - fixed bug in all readers w.r.t. SCIPgetProbvarLinearSum()
    8186 - fixed bug in reader_mps.c with respect to corrupted files
    8187 - fixed bug in reader_mps.c with respect to writing transformed problems
    8188 - changed wrong writing of mps files due to constraints without any name
    8189 - fixed a bug during reading debug solution file
    8190 - fixed bug in case of reading an objective function in opb format with multiple occurrences of the same variable
    8191 - fixed bug in case of reading an objective function in lp format with multiple occurrences of the same variable
    8192 - fixed a wrong fix of a reading bug, which was in reality a writing bug in MPS format; integer variables in mps format
    8193 without bounds are binary variables, if the bound of an integer variable is infinity you have to write this bound
    8194
    8195- Separation:
    8196 - fixed bug in sepa_cmir.c, sepa_mcf.c and sepa_flowcover.c: sol different to LP solution is now separated
    8197 - corrected two asserts in sepa_redcost.c (reduced costs can be negative for fixed variables: qsopt uses this)
    8198 - fixed bug in sepa_zerohalf.c; replacement of own sorting functions by template functions was incorrect
    8199 - fixed bug in var.c, cons_knapsack.c and sepa_flowcover.c: variable bounds corresponding to implication are not
    8200 generated if coefficient is large, variable bounds with large coefficients are ignored for construction of knapsack
    8201 and snf relaxations
    8202 - fixed bug in sepa_impliedbound.c concerning redundant implications
    8203
    8204- Cuts:
    8205 - fixed bug in sepa_cmir.c concerning uninitialized mksetcoefs (if MIR-cut generation is aborted because the aggregated
    8206 constraint is empty or contains too many nonzero elements mksetcoefs is invalid)
    8207 - interrupts optimization process if a node will be cutoff, which allows the solution
    8208 - fixed bug in sepa_impliedbounds.c and sepa_intobj.c: if separating a sol, this sol is now also given to SCIPaddCut()
    8209 so that the efficacy of the cut is now computed correctly
    8210 - fixed bug in solve.c caused by integer overflow due to setting the number of cuts to INT_MAX
    8211
    8212- Presolving:
    8213 - fixed wrong result in check.awk, if infeasible problems are stopped in presolving
    8214 - fixed exponential calculation of solution values during check of original solution, therefore changed
    8215 SCIPvarGetActiveRepresentatives() in var.c and flattened all multiaggregated vars at the end of presolving in
    8216 exitPresolve()
    8217 - fixed bug with wrong abort criterion in presolving
    8218 - fixed bug in presol.c caused by not reseting presolver-wasdelayed status
    8219 - fixed bug in SCIPconsSetInitial() that occurred in pairwise presolving: add or delete constraint in initconss when
    8220 changing the initial flag
    8221
    8222- Constraints:
    8223 - fixed bug in cons.c caused by not resetting conshdlr data after restart
    8224 - fixed memory error in cons_countsols.c
    8225 - fixed assert in cons_and.c method SCIP_DECL_CONSINITSOL(consInitsolAnd)
    8226 - fixed bug in cons_countsols.c we respect to warning message that `The current parameter setting might cause ...`
    8227
    8228- Knapsack Constraint Handler:
    8229 - fixed wrong assert in cons_knapsack.c and handled a special this case in simplifyInequalities()
    8230 - fixed some bugs in simplifyInequalities() in cons_knapsack.c
    8231 - fixed bug in mergeMultiples() in cons_knapsack.c
    8232 - adjusted ConsData and ConsHdlrData in cons_knapsack.c
    8233 - fixed compiler warning caused by no initialization of two integer in cons_knapsack.c
    8234 - fixed bug in cons_knapsack.c caused by having a multi-aggregated variable in a knapsack constraint, now applyFixing is
    8235 able to resolve a binary multi-aggregation with integral values
    8236
    8237- Linear Constraint Handler:
    8238 - fixed infinity loop in simplify inequalities in cons_linear.c
    8239 - fixed bug in cons_linear.c: do not select variable as slack variable for multiaggregation in convertLongEquality if it
    8240 has been marked as not-multiaggregable
    8241 - fixed bug in cons_linear.c: also do not multiaggregate variables in dual preproccessing if it has been marked as
    8242 not-multiaggregable
    8243 - fixed bug in cons_linear.c: slight decrease of epsilon in order to make sure that scaled coefficients are really
    8244 integral
    8245 - fixed bug in chgRhs() and chgLhs() of cons_linear.c: after changing lhs or rhs of a constraints lhs <= rhs has to be
    8246 satisfied without numerical tolerances
    8247
    8248- Heuristics:
    8249 - added and changed some SCIPisStopped() calls in several heuristics
    8250 - fixed bug in oneopt heuritic with start solution which has become infeasible due to global bound changes
    8251
    8252- Interfaces:
    8253 - corrected several bugs in the Clp-interface concerning return values
    8254 - fixed potential interface bug: time limits of 0.0 are not anymore passed to the LP solver, which may have caused
    8255 errors
    8256
    8257@page RN1_1 Release notes for SCIP 1.1
    8258
    8259@section RN110 SCIP 1.1.0
    8260*************************
    8261
    8262Features
    8263--------
    8264
    8265- SCIP can now count integer feasible solutions for IPs/CIPs (without continuous variables) (see SCIPcount())
    8266- check.awk now uses TeX package supertabular which supports automatic pagebreak
    8267- struct `SCIP_Stat` has now two additional variables: `nprobboundchgs`, `nprobholechgs`; these are used to fix the domain
    8268 reduction counts in sepa.c, cons.c, branch.c and prop.c; this means, that now the domain reduction counts are reduced
    8269 by those domain reduceds which are preformed during probing
    8270- added capabilities to flatten the (multi)-aggregation graph of variables
    8271- pseudoobj propagator now also propagates the global lower (dual) bound
    8272- new heuristic DINS (distance induced neighborhood search by Ghosh)
    8273
    8274- Output:
    8275 - SCIP can now output a picture of the constraint matrix in PPM format.
    8276 - output of real values is now done with 15 digits after the decimal point
    8277 - Extended the capabilities of SCIP to output problems in different formats (LP, MPS, CIP, ...). You can output the original and
    8278 transformed problem. Furthermore, generic names can be given to the variables and constraints.
    8279 - The feasibility test for solutions at the end of the execution now outputs more useful information.
    8280 This made some changes in the interface of constraint handlers necessary.
    8281
    8282- Presolving:
    8283 - added predefined settings file presolving/aggressive.set
    8284 - new presolver boundshift (presol_boundshift.{c,h}); this presolver is currently turned off with default parameter setting
    8285
    8286- Constraints:
    8287 - linear constraint handler now detects continuous variables that are implicit integer in dual presolve
    8288 - replaced some old sorting methods in cons_knapsack.c, heur_octane.c, sepa_flowcover.c and presol_probing.c through
    8289 SCIPsort...() interfaces, adjusted misc.{c,h} and pub_misc.h for these changes
    8290 - cons_countsols.c is now able to store the collected solution if required
    8291 - added first version of SOS type 1 constraint handler (cons_sos1.{c,h})
    8292 - added first version of SOS type 2 constraint handler (cons_sos2.{c,h})
    8293 - less aggressive scaling in linear constraint handler presolve to improve numerics
    8294 - added first version of constraint handler cons_countsols.{c,h}
    8295
    8296- Reader:
    8297 - added ccg-reader (weighted column connectivity graph)
    8298 - added reader for pseudo-Boolean problems (reader_opb.{c,h})
    8299 - the ZPL reader is now able to pass a starting solution to SCIP
    8300 - the MPS reader is now able to write a problem in MPS format
    8301 - the ZIMPL reader now understands SOS type 1 and 2 constraints
    8302 - the LP reader reads SOS constraints of type 1 and 2
    8303 - the MPS reader reads the SOS section (but cannot yet handle `MARKERS`)
    8304
    8305- LPI:
    8306 - The SoPlex LPI can now write basis files.
    8307 - revised lpi_clp.cpp (many small changes, in particular writing and reading of bases)
    8308 - added FASTMIP settings in lpi_clp.cpp that try to improve the performance of Clp as much as possible
    8309
    8310- Cuts and Separation:
    8311 - the c-MIR separator now also tries to get rid of implicit integer variables by aggregation
    8312 - allow cut selection based on support of inequality in orthogonality computation
    8313 - disabled zerohalf cuts by default
    8314 - adjusted all predefined settings files, e.g., `settings/cuts/fast.set`, such that they are consistent wrt removed,
    8315 added and changed parameter values of scip.
    8316 - New cutting plane separator MCF (beta version).
    8317 - new separator sepa_zerohalf.{c,h}; separates {0,1/2}-Cuts according to Caprara and Fischetti
    8318
    8319Performance improvements
    8320------------------------
    8321
    8322- heavily decreased the usage of SCIPisStopped(), which costs system time
    8323- small performance improvement of c-MIR aggregation heuristic
    8324- reworked strong branching in lpi_clp.cpp (scaling works now, bounds can be trusted)
    8325
    8326- Constraints:
    8327 - The preprocessing has been revised. It now applies bound computations in a numerically more stable way. The pairwise
    8328 comparison of linear, logicor, and setppc constraints has been improved.
    8329 - better branching in SOS1/SOS2 constraints
    8330 - fixed performance bug with large number of unnamed constraints that will kill the name hash table (now, unnamed
    8331 constraints are not put into the hash table)
    8332
    8333- Cuts and Separation:
    8334 - improved the performance of SCIPcalcMIR() and SCIPcalcStrongCG() by exploiting sparsity
    8335 - improved performance of SCIPvarGetLPSol(), which affects many parts of the code, in particular Gomory and strong CG cuts
    8336 - do not calculate MIR and StrongCG cut aggregations if number of nonzeros in aggregated row is too large
    8337
    8338- Presolving:
    8339 - improved pairwise presolving in cons_linear.c: reduced cache misses, reduced number of SCIPisStopped() calls and
    8340 included detecting of redundant constraints with hash table in advance
    8341 - tighter memory limits in knapsack presolve lifting procedure to avoid overly expensive presolving
    8342 - included detecting of redundant constraints with hash table in advance in cons_logicor.c and limit other pairwise
    8343 presolving
    8344 - included detecting of redundant constraints with hash table in advance in cons_setppc.c and limit other pairwise
    8345 presolving
    8346 - limit pairwise presolving in cons_linear.c
    8347
    8348Examples and applications
    8349-------------------------
    8350
    8351- Added an example for the graph coloring problem in `examples/Coloring`, showing the usage of column generation.
    8352- added SOS2 example
    8353- extended TSP example
    8354
    8355Interface changes
    8356-----------------
    8357
    8358### New and changed callbacks
    8359
    8360- New callback method SCIP_DECL_READERWRITE(x) in type_reader.h; this method is called to write a problem to file
    8361 stream in the format the reader stands for; useful for writing the transformed problem in LP or MPS format. Hence,
    8362 also SCIPincludeReader() has changed.
    8363- The callback \ref CONSCHECK (SCIP_DECL_CONSCHECK()) in the constraint handlers now has a new parameter `printreason` that tells
    8364 a constraint handler to output the reason for a possible infeasibility of the solution to be checked using
    8365 SCIPinfoMessage(). Have a look at one of the constraint handlers implemented in SCIP to see how it works. This
    8366 methodology makes it possible to output the reason of a violation in human readable form, for instance, for the check
    8367 at the end of a SCIP run, where the obtained best solution is checked against the original formulation.\n This change
    8368 often has little effect on C-implementations, since this parameter can be safely ignored with respect to the
    8369 correctness of the code. The corresponding C++ method scip::ObjConshdlr::scip_check(), however, has to be extended
    8370 and will not compile otherwise.
    8371- added new LPI pricing option `SCIP_PRICING_LPIDEFAULT`, such that every LP interface can set the default pricing
    8372 strategy on its own (`auto` is not useful for this, because for CPLEX, for example, SCIP seems to be worse with `auto`
    8373 then with `steepest edge`)
    8374- Added user pointer to callback methods of hash table, see pub_misc.h.
    8375
    8376### Deleted and changed API functions
    8377
    8378- SCIPgetVarRedcost() now returns 0 for variables that have been aggregated out or removed in presolving.
    8379 reduced cost in case of infeasible LPs)
    8380- new parameter `maxfrac` for SCIPcalcStrongCG()
    8381- new parameter `maxmksetcoefs` for SCIPcalcMIR() and SCIPcalcStrongCG() methods
    8382- new parameter `conshdlrname` in SCIPincludeLinconsUpgrade()
    8383
    8384- Problem:
    8385 - new parameters `extension` in SCIPreadProb() defining a desired file format or `NULL` if file extension should be use
    8386 - New parameters `extension` and `genericnames` in SCIPprintTransProblem(), SCIPprintOrigProblem(),
    8387 SCIPwriteOrigProblem(), and SCIPwriteTransProblem() defining the requested format or `NULL` for default CIP format
    8388 and using generic names for the variables and constraints. Examples are
    8389 - SCIPprintTransProblem(scip, NULL, NULL, TRUE) displays the transformed problem in CIP format with
    8390 generic variables and constraint names
    8391 - SCIPprintOrigProblem(scip, NULL, `lp`, FALSE) displays the original problem in LP format with
    8392 original variables and constraint names.
    8393
    8394- Sorting:
    8395 - expand sorttpl.c by some parameters
    8396 - changed some names for sorting methods
    8397 - replaced sorting methods SCIPbsort...() by faster (quicksort/shellsort) algorithms SCIPsort...() Note that the order
    8398 of the parameters has been changed to simplify the template code in sorttpl.c!
    8399
    8400- Checking:
    8401 - SCIPcheckSolOrig() is restructured. The last two parameters have changed. They are now bools indicating
    8402 whether the reason for the violation should be printed to the standard output and whether all violations should be
    8403 printed. This reflects the changes in the constraint handlers above, which allow the automation of the feasibility
    8404 test. The pointers to store the constraint handler or constraint are not needed anymore.
    8405 - the parameter list of the method SCIPcheckCons() (scip.h) has changed; the new advatage is, that SCIP can print the
    8406 reason for the violation of a constraint as for as the constraint handler supports that
    8407 - the parameter list of the method scip_check() (objconshdlr.h) has an additional parameter `printreason` see for
    8408 explanation the previous point
    8409
    8410### New API functions
    8411
    8412- LPI now has a function SCIPlpiGetSolverPointer() that returns a solver dependent pointer. This can be used to directly
    8413 access the LP solver. This should, of course, only be used by people that know exactly what they are doing.
    8414- added capabilities to avoid multi-aggregation of a single variable by setting a corresponding flag (SCIPmarkDoNotMultaggrVar())
    8415- SCIPgetProbvarLinearSum()
    8416- SCIPgetResultantAnd() which returns the resultant variable of an `and` constraint
    8417- SCIPchgChildPrio() to change the node selection priority of the given child
    8418- SCIPconsGetPos()
    8419- SCIPrepropagateNode() to mark a node for repropagation
    8420- SCIPcount() (in cons_countsols.h) for counting all feasible solution of a given CIP
    8421- SCIPcreateRootDialog() (in dialog_default.h) which creates a root dialog
    8422- SCIPgetVectorEfficacyNorm()
    8423- SCIPseparateRelaxedKnapsack() in cons_knapsack.h
    8424- SCIPgetCutoffdepth() which returns the depth of first node in active path that is marked being cutoff
    8425- SCIPflattenVarAggregationGraph()
    8426- SCIPclockGetLastTime()
    8427- SCIPcalcHashtableSize() to get a reasonable hash table size
    8428- SCIPgetVarFarkasCoef() and SCIPgetColFarkasCoef() to get the farkas coefficient of a variable (analogon of
    8429- SCIPgetRepropdepth() to get the depth of first node in active path that has to be propagated again
    8430- SCIPmajorVersion(), SCIPminorVersion() and SCIPtechVersion() returning the corresponding version
    8431
    8432- Read, Write and Print:
    8433 - SCIPprintSysError() which encapsulates the strerror_r calls, the NO_STRERROR_R flag switches between the use
    8434 of strerror_r and strerror inside
    8435 - SCIPsnprintf() safe version of snprintf (and sprintf)
    8436 - SCIPreaderCanRead() and SCIPreaderCanWrite() in pub_reader.h, these return TRUE if the corresponding
    8437 reader is capable to read or write, respectively
    8438 - SCIPwriteOrigProblem(), e.g., SCIPwriteOrigProblem(scip, `orig.lp`, NULL, FALSE) prints the original
    8439 problem in LP format in the file `orig.lp`
    8440 - SCIPwriteTransProblem(), e.g., SCIPwriteTransProblem(scip, NULL, NULL, FALSE) displays the transformed problem in CIP format
    8441
    8442- Heuristics:
    8443 - SCIPcutGenerationHeuristicCmir() in sepa_cmir.h
    8444 - SCIPheurGetTimingmask() and SCIPheurSetTimingmask()
    8445
    8446- Sorting:
    8447 - added some downwards-sorting methods
    8448 - SCIPbsortInd()
    8449 - SCIPsortedvecInsert...(), SCIPsortedvecInsertDown...(), SCIPsortedvecDelPos...(),
    8450 SCIPsortedvecDelPosDown...(), SCIPsortedvecFind...() and SCIPsortedvecFindDown...() to manage sorted vectors or
    8451 groups of vectors of various data types that are sorted w.r.t. the first vector
    8452
    8453### Command line interface
    8454
    8455- advanced reading and writing dialog in interactive shell
    8456
    8457### Interfaces to external software
    8458
    8459- Many changes in the SoPlex interface: The current one is tailored towards SoPlex 1.4 (aka 1.3.3). All SoPlex functions
    8460 (where applicable) should now have an exception handling. The Bugfix for adding columns has been moved to SoPlex. One
    8461 can use ROW representation. Reading/writing of a basis has been implemented.
    8462
    8463### Changed parameters
    8464
    8465- changed default frequency parameters for RINS, Local Branching, Crossover and Mutation heuristic This should not
    8466 change the performance but happened just for consistency reasons
    8467- changed parameter default values for the priority of presolver `dualfix` and `inttobinary`
    8468- removed parameter `separating/cmir/maxtestdeltaroot`
    8469- new value `l` for parameter `lp/pricing`, which is the new default
    8470
    8471### New parameters
    8472
    8473- `constraints/and/linearize` to enable linearization of all <and> constraints (in presolving),
    8474- `constraints/and/initiallp` to turn on, off, or `auto` that the LP relaxation of the AND constraints are in the initial LP;
    8475- `constraints/countsols/collect` to enable the storing of the solutions; default value FALSE;
    8476- `constraints/indicator/addCoupling` to enable generation of relaxation
    8477- `constraints/indicator/branchIndicators` to decide whether it is branched on indicator constraints in enforcing
    8478- `constraints/indicator/genLogicor` to decide whether logicor constraints instead of cuts are generated
    8479- `constraints/indicator/sepaAlternativeLP` to decide whether separation takes place using the alternative LP
    8480- `constraints/linear/aggregatevariables` to search for aggregations in equations in the presolving step
    8481- `constraints/linear/dualpresolving` to disable dual presolving step in the linear constraint handler; default value is TRUE
    8482- `constraints/linear/simplifyinequalities` to enable a simplification step for inequalities; default value is set to FALSE = disabled
    8483- `constraints/linear/upgrade/binpack` to enable or disable the linear upgrading process
    8484- `constraints/linear/upgrade/eqknapsack` to enable or disable the linear upgrading process
    8485- `constraints/linear/upgrade/invarknapsack` to enable or disable the linear upgrading process
    8486- `constraints/linear/upgrade/knapsack` to enable or disable the linear upgrading process
    8487- `constraints/linear/upgrade/logicor` to enable or disable the linear upgrading process
    8488- `constraints/linear/upgrade/setppc` to enable or disable the linear upgrading process
    8489- `constraints/linear/upgrade/varbound` to enable or disable the linear upgrading process
    8490- `constraints/linear/presolusehashing` to use hashing comparison in cons_linear.c; default value is TRUE
    8491- `constraints/logicor/presolusehashing` to use hashing comparison in cons_logicor.c; default value is TRUE
    8492- `constraints/setppc/presolusehashing` to use hashing comparison in cons_setppc.c; default value is TRUE
    8493- `constraints/SOS1/branchNonzeros` to decide whether SOS1 constraint with largest number of nonzero variables is picked for branching
    8494- `constraints/SOS1/branchSOS` to enable or disable branching on SOS1 constraints
    8495- `heuristics/feaspump/beforecuts` to allow the feaspump to be called before cut separation
    8496- `heuristics/mutation/minimprove`
    8497- `presol/donotmultaggr` which disables multiaggregation for all variables of the problem
    8498- `separating/cmir/densityoffset` to allow for more c-MIR cuts on small models
    8499- `separating/orthofunc` to choose function for scalar product computation in orthogonality test
    8500
    8501Testing
    8502-------
    8503
    8504- updated mmm.{test,solu}, mittelmann.{test,solu}, miplib3.solu, miplib.solu, shortmiplib.test and added
    8505 mittelmann_current.test, mittelmann_old.test
    8506- added test scripts for testing counting (make testcount)
    8507- removed tag make testpre (useless without corresponding scripts)
    8508- added tag testcount (make testcount); this allows for testing counting problem
    8509- replaced tcsh by bash and gawk by awk in all check scripts to achieve higher compatibility
    8510
    8511Build system
    8512------------
    8513
    8514### Makefile
    8515
    8516- added `make/make.project` as default make include for external projects using SCIP
    8517- added possibility to compile shared libraries in makefiles (and added `make/make.linux.x86.gnu.opt-shared`)
    8518- replaced <string> by <cstring> in all C++-interfaces to get `strlen()` included (gcc-4.3 gave an error)
    8519- Moved -rpath option for ld to linux-specific Makefiles.
    8520- Re-activated readline library on darwin/ppc.
    8521
    8522- Flags:
    8523 - added in all `make/make.*` `GMP_FLAGS` and `GMP_LDFLAGS`
    8524 - new flag GMP with values (`auto`, `true and `false`); in case of `auto` the library gmp is linked if ZIMPL is
    8525 included
    8526 - adapted all makefiles of the examples accordingly
    8527
    8528- LP:
    8529 - modified makefiles to accept ZIMPLOPT and LPSOPT flags (with values `opt` or `dbg` and default being `opt`), and
    8530 removed `LPS=spxdbg` and `LPS=clpdbg`
    8531 - added target spx132 for SoPlex version 1.3.2
    8532
    8533Fixed bugs
    8534----------
    8535
    8536- fixed CTRL-C if NO_SIGACTION is set (e.g., for MinGW)
    8537- added checks whether a plugin (handler) has already been included to avoid later complications e.g. with parameters.
    8538- fixed bug with wrong `tightened` return value of some of the change bounds methods
    8539- forced full propagation in presolving -> this fixes a bug that implied that variable locks became inconsistent
    8540- replaced calls to perror() by SCIP error message using strerror(errno); this avoids problems with the error output
    8541 stream
    8542- fixed bug in method SCIPgetProbvarLinearSum()
    8543- fixed bug with errors occurring in sub-MIPs. Search is only aborted in dbg mode, in opt mode a warning will be printed
    8544- fixed bug in tclique-graph datastructure concerning insertion of edges into nonempty graph
    8545- corrected bug in SCIPtreeBranchVar() (tree.c): several comparison functions needed a `feas`.
    8546- fixed bug in SCIPtightenVarLb/Ub() in scip.c concering forcing a bound change (bound improvement is checked now)
    8547- improved stage checking for bound computation
    8548- fixed usage of command test for string comparison in check-scripts (now compatible with ubuntu)
    8549- replaced sprintf and snprintf by SCIPsnprintf() fixed potential bug with overlong strings
    8550- corrected bug in the case when soplex threw an exception in autopricing
    8551- fixed bug in SCIPvarGetOrigvarSum() concerning the corner case the a negated variable has no parent variable in
    8552 original problem
    8553
    8554- Aggregation:
    8555 - avoid aggregation of implicit integers with fractional aggregation scalars
    8556 - fixed bug in aggregateActiveIntVars(): If a < 0, multiply a*x + b*y == c by -1 (algo for finding initial solution does
    8557 only work for a > 0).
    8558 - avoiding aggregation that removes information about implicitly integer variables (removes bug)
    8559 - fixed bug with exponential running times due to complicated recursive multi-aggregation
    8560 - corrected bug in var.c occuring during applying boundchanges in varUpdateAggregationBounds method
    8561
    8562- Constraints:
    8563 - fixed bug that a missing CONSTRANS in constraint handler leads to `NULL` pointer as constraint data for the copied
    8564 constraints instead of pointer copies of the consdata (as explained in the constraint handler `HowTo`)
    8565 - fixed bugs in second part of consdataTightenCoefs(): Removed min/maxleftactisinfinity (definition was not correct),
    8566 fixed calculation of min/maxleftactivity and removed asserts concerning whether all redundant vars were deleted (led
    8567 to different behavior in debug and opt mod).
    8568 - fixed typo in documentation: default value for `dynamic` parameter is FALSE for all constraint handlers!
    8569 - fixed bug in preprocessing of SOS2 constraints (cons_sos2.c)
    8570 - fixed bug in cons_countsols.c concerning variable locking
    8571 - fixed bug in cons_varbounds.c, concerning SCIPaddVarVlb() and SCIPaddVarVub()
    8572 - fixed bug in applyFixings() in cons_varbound.c concerning tightening the bound of a variable left in a redundant
    8573 constraint (bound change is forced now)
    8574
    8575- Heuristics:
    8576 - fixed bug with useless objective cutoff in LNS heuristics
    8577 - removed bug for values greater than (-)infinity, heur_shifting.c, heur_intshifting.c, heur_rounding.c, heur_oneopt.c
    8578 - fixed bug with errors occurring in heuristic LPs. In opt mode a warning will be printed, abort in dbg mode
    8579
    8580- Linear Constraints:
    8581 - fixed bug with wrong update of activities in linear constraints after global upper bound changes
    8582 - fixed bug in preprocessConstraintPairs() in cons_linear.c concerning updating the flags of the constraint that stayes
    8583 in the problem (nonredundant information were lost before)
    8584 - fixed bug in cons_linear.c caused by comparing two infinity values during checking of using variable as slackvariable
    8585 - removed bug for rhs/lhs greater than (-)infinity, cons_linear.c
    8586 - removed bug caused by hashcomparison for non-sorted constraints, cons_linear.c
    8587 - fixed bugs with wrong presolving due to cancellation in (res-)activities in cons_linear.c
    8588 - removed BOUNDSCALETOL adjustment in cons_linear.c. This fixes bug with slightly infeasible variable fixings in
    8589 presolving; reliable resactivities should make the BOUNDSCALETOL relaxation redundant.
    8590 - removed `epsilontic` bug in cons_linear.c due to adjusting left/right hand side in applyfixing
    8591 - fixed bug with multi-aggregated variables in cons_logicor: instead of fixing them, a linear constraint will be created
    8592 - corrected bug in cons_linear.c:applyFixings() [if variable was fixed to infinity the rhs/lhs were wrong]
    8593 - fixed bugs in pairwise presolving of cons_linear.c concerning deletion of upgraded constraints and inconsistent update
    8594 of nchgsides in case of coefsequal and coefsnegated
    8595 - fixed false assert and corrected a bug caused by deleting a constraint on `firstchanged` position in pairwise
    8596 presolving with hashing in cons_linear.c
    8597
    8598- LP:
    8599 - fixed handling of unbounded variables with 0 objective in SCIPlpGetModifiedPseudo[Proved]Objval() (lp.c)
    8600 - fixed bug with uncatched LPSOLSTAT after hitting a time or iteration limit
    8601 - corrected bug in SCIPlpGetState() if the LP is empty
    8602 - fixed bug in SCIPlpSolveAndEval(): added extra simplex step if objlimit reached, fastmip and pricers enabled in order
    8603 to get dual solution for pricing.
    8604 - weakened two too strong asserts in lp.c concerning the LP result OBJLIMIT
    8605 - fixed bug in SCIPlpSolveAndEval(): allow more than one extra simplex step for getting an objlimit exceeding solution
    8606 with fastmip
    8607
    8608- Memory:
    8609 - corrected invalid memory access in tcliqueIsEdge: added check whether node1 has no neighbors (tclique_graph.c)
    8610 - removed memory leak detected with the help of coverity in dialog.c
    8611 - fixed bug with memory reallocation in SCIPgetProbvarLinearSum()
    8612 - tried to fix memory leak in dialog.c occuring from different versions of the readline/history libraries
    8613 - removed possible memory leak in objdialog.cpp
    8614
    8615- Numerical:
    8616 - fixed numerical issue in linear constraint propagation: need slightly more aggressive tightening such that probing
    8617 does not choose a wrong value for fixing inside an epsilon interval
    8618 - fixed numerical bug in dual presolving of linear constraint handler
    8619 - avoid fixing variables to infinity in order to get rid of numerical inconsistencies in the original model
    8620
    8621- Objective:
    8622 - added handling of the case of roundable variables with 0 objective in presol_dualfix.c
    8623 - fixed bug with writing the MIP relaxation to a file concerning the objective function; in case the original objective
    8624 function is requested, the transformed objective function gets re-transformed (scaling, offset)
    8625 - fixed bug with wrong objective sense output for transformed problem. The transformed problem is always a minimization
    8626 problem!
    8627 - fixed bug with objective scaling after restart
    8628
    8629- Reading:
    8630 - fixed bug with reading empty lines in TSP example
    8631 - fixed bug with non-conformal parameter name in reader_ppm
    8632 - fixed infinite loop in LP file reader if a line exceeds the character limit
    8633 - fixed bug in reader_ppm while appending strings for output file
    8634 - fixed some `SCIP_RETCODE` bugs in reader_fix.c, reader_sol.c, reader_sos.c and reader_zpl.c
    8635 - fixed docu in type_reader.h
    8636 - fixed bug with multi-aggregated variables which are de facto aggregated or fixed after flattening the aggregation tree
    8637 - fixed bug with bound changes of variables in modifiable constraints during full dual presolving of linear conshdlr
    8638 - increased compiler compatibility for C++ wrapper classed by adding extern `C` in obj*.cpp files and changing strlen
    8639 calls to std::strlen
    8640
    8641- Separation:
    8642 - corrected bug in priceAndCutLoop(): separation was aborted if domain reduction was applied
    8643 - fixed bug in sepa_mir.c: size of testeddeltas-array was too small
    8644 - corrected imlementation of SCIPlpiGetBasisInd() in lpi_clp.cpp (this fixes the bug that almost no Gomory cuts are
    8645 found with Clp).
    8646
    8647- Sorting:
    8648 - fixed bugs in sorttpl.c: fixed wrong arraysize in shellsort; in case an has at most one element, then no sorting is
    8649 applied
    8650 - fixed wrong if condition for function call in sorttpl.c
    8651 - fixed obvious bug in linear constraint data sorting. Most part of the code assumed pure index sorting, but in fact, it
    8652 was sorted by variable type as first criterion and index as second criterion.
    8653
    8654@page RN1_0 Release notes for SCIP 1.0
    8655
    8656@section RN100 SCIP 1.0.0
    8657*************************
    8658
    8659Features
    8660--------
    8661
    8662- SCIP now has a couple of specialized settings, all called scip_*.set
    8663- SCIP is now compatible to the Exception branch of SoPlex
    8664- if possible, objective function is scaled to make objective value integral with gcd 1
    8665- slightly modified automatic constraint aging strategy
    8666- new C templates disp_xxx.h and dialog_xxx.h and C++ wrapper classes objdisp.h and objdialog.h, respectively
    8667- modified reader `sol`, st. files which where created via typing the order of commands `set log *.sol`,
    8668 `disp sol var -`, `set log cplex.log` in Cplex can now be read
    8669- new dummy LP interface `lpi_none.c`; useful for running SCIP without a LP solver
    8670
    8671- Presolver:
    8672 - modified probing presolver to do multiple cycles if called in subsequent runs
    8673 - changed sort algorithm in probing presolver
    8674
    8675- Node selection:
    8676 - new node selection rule `estimate` (best estimate search)
    8677 - new node selection rule `hybridestim`
    8678
    8679- Documentation:
    8680 - the doxygen documentation now has HowTo's for all plugin types
    8681 - the doxygen documentation now contains a FAQ
    8682 - the documentation has now a TAB Modules; there you can find list of available constraint handles, presolvers,
    8683 propagators, lpi interfaces, file readers and so on
    8684
    8685- Time:
    8686 - time limit is now forwarded to lp solving algorithm
    8687 - presolving, cut separation, primal heuristics and strong branching now better respect time limit
    8688
    8689- Heuristics:
    8690 - best estimate search is now used in all large neighborhood search heuristics
    8691 - new improvement heuristic `oneopt`
    8692 - new heuristic `actconsdiving` following an idea of John Chinneck
    8693
    8694- Separation and Cuts:
    8695 - modified cut selection code
    8696 - cut conversion into linear constraints after a restart now works better
    8697 - added flow cover separator
    8698 - gomory cuts are now also separated for integral slack variables
    8699 - less aggressive in Gomory cut separation
    8700 - strong CG cuts are now also separated for integral slack variables
    8701
    8702Performance improvements
    8703------------------------
    8704
    8705- greatly improved performance of LP file reader by replacing string copies with pointer copies
    8706- removed performance bottleneck with non-bfs based node selectors and large leaf queues at the cost of a small memory
    8707 overhead (2 ints per node in the leaf queue); this improves performance quite a bit on instances that take a large
    8708 number of branching nodes
    8709- improved performance of linear constraint propagation by delaying some floor/ceil calculations
    8710- improved performance of clique cut separator
    8711
    8712Interface changes
    8713-----------------
    8714
    8715### New and changed callbacks
    8716
    8717- new callback method SCIPdialogFree()
    8718
    8719### Deleted and changed API functions
    8720
    8721- slightly modified bound substitution heuristic in SCIPcalcMIR() and SCIPcalcStrongCG()
    8722- slightly less conservative in numerics for SCIPmakeRowIntegral()
    8723- linear and knapsack constraint handler may now deal with coefficients of value zero
    8724- new parameter `maxbounddist` for SCIPincludeSepa() and constructor ObjSepa()
    8725- new parameter `restart` for method SCIPfreeSolve()
    8726- calling SCIPwriteLP() is now possible in Solved Stage
    8727- SCIPwrite{LP,MIP} may no longer be called after solving, since the LP data structures may not be valid
    8728- All functions SCIP<datatype>Param() got a new parameter `isadvanced`.
    8729 This does not influence the performance of SCIP, but the position of the parameter in the settings menu.
    8730 Hence, if you do not care about this, you can assign any value to it.
    8731 You should add the corresponding flag to the SCIP<datatype>Param() calls in your own source code.
    8732
    8733- Version:
    8734 - modified `SCIP_SUBVERSION` to be a number instead of a string (to be able to use `SCIP_SUBVERSION >= ...`)
    8735 - SCIPsubversion() now returns an int instead of a const char*
    8736
    8737- Tree and Nodes:
    8738 - new parameter `estimate` for SCIPcreateChild() giving an estimate for value of best feasible solution in the subtree to
    8739 be created. One possibility is to use SCIPgetLocalOrigEstimate() for this value.
    8740 - removed method SCIPnodeGetPriority()
    8741 - removed parameter `lowestboundfirst` from SCIPincludeNodesel()
    8742
    8743- Branching:
    8744 - removed parameter `branchdir` from SCIPbranchVar()
    8745 - new parameters `leftchild`, `eqchild` and `downchild` for SCIPbranchVar()
    8746 - SCIPgetVarStrongbranch() now also returns lperror == TRUE if the solving process should be stopped, e.g., because of a
    8747 time limit
    8748
    8749- Variable tightening:
    8750 - replaced methods SCIPvarGetClosestVlb() and SCIPvarGetClosestVub() from pub_var.h by new methods
    8751 SCIPgetVarClosestVlb() and SCIPgetVarClosestVlb() in scip.h
    8752 - new parameter `force` for SCIPtightenVarLb() and SCIPtightenVarUb()
    8753
    8754### New API functions
    8755
    8756- SCIPreadSol()
    8757- SCIPwriteMIP()
    8758- SCIPgetLocalOrigEstimate() and SCIPgetLocalTransEstimate()
    8759- SCIPisStopped()
    8760- SCIProwIsInGlobalCutpool()
    8761- SCIPresetParams()
    8762- SCIPgetVarRedcost()
    8763- SCIPtightenVarLbGlobal() and SCIPtightenVarUbGlobal()
    8764- SCIPsepaGetMaxbounddist()
    8765- SCIPboundchgGetNewbound(), SCIPboundchgGetVar(), SCIPboundchgGetBoundchgtype(),
    8766 SCIPboundchgGetBoundtype(), SCIPboundchgIsRedundant(), SCIPdomchgGetNBoundchgs(), SCIPdomchgGetBoundchg()
    8767- SCIPnodeUpdateLowerboundLP()
    8768- SCIPcalcNodeselPriority()
    8769- SCIPnodeGetEstimate()
    8770- SCIPnodeGetDomchg()
    8771- SCIPgetRootNode() (in combination with SCIPcutoffNode(), this allows the immediate finishing of the optimization)
    8772
    8773### Command line interface
    8774
    8775- default dialog menu now includes the commands `set default` and `display parameters`
    8776- added option to write node LP and MIP relaxations to LP file from interactive shell
    8777
    8778### Changed parameters
    8779
    8780- parameters are now separated into basic and advanced, the latter ones have been moved to extra submenus
    8781- priority parameters are now restricted to be in [INT_MIN/4,INT_MAX/4] to avoid overflow errors in comparison methods
    8782- increased priority of `estimate` node selector, such that this is the new default node selector
    8783- changed meaning of parameter setting `nodeselection/childsel = l`; old meaning is now called `r`
    8784- changed default value of `conflict/maxvarsfac` to 0.1
    8785- changed default value of `conflict/useprop` to TRUE
    8786- changed default value of `conflict/useinflp` to TRUE
    8787- changed default value of `conflict/usepseudo` to TRUE
    8788- changed default value of `conflict/maxlploops` to 2
    8789- changed default value of `conflict/lpiterations` to 10
    8790- changed default value of `conflict/interconss` to -1
    8791- changed default value of `conflict/reconvlevels` to -1
    8792- changed default value of `conflict/settlelocal` to FALSE
    8793- changed default value of `constraints/linear/propfreq` to 1
    8794- changed default values of `heuristics/∗diving/backtrack` to TRUE
    8795- changed default value of `nodeselection/restartdfs/stdpriority` to 10000
    8796- changed default value of `numerics/boundstreps` to 0.05 in order to avoid very long propagation loops on continuous variables
    8797- changed default value of `presolving/restartfac` to 0.05
    8798- changed default value of `presolving/restartminred` to 0.10
    8799- changed default value of `separating/objparalfac` to 0.01 for performance reasons
    8800- changed default value of global `separating/maxbounddist` to 1.0
    8801- changed default value of `separating/objparalfac` to 0.0001
    8802
    8803### New parameters
    8804
    8805- `conflict/enable` to globally enable or disable conflict analysis
    8806- `constraints/linear/maxcardbounddist` and `constraints/knapsack/maxcardbounddist`
    8807- `heuristics/∗diving/backtrack` to activate 1-level backtracking for most of the diving heuristics
    8808- `heuristics/feaspump/maxstallloops`
    8809- `nodeselection/childsel` to control the child selection
    8810- `presolving/immrestartfac`
    8811- `separating/∗/maxbounddist` to have individual maxbounddist parameters per separator
    8812- `separating/clique/backtrackfreq` to speed up clique cut separation in heuristic fashion
    8813- `separating/redcost/continuous`
    8814
    8815Build system
    8816------------
    8817
    8818### Makefile
    8819
    8820- added version numbers to library files (There will be a softlink generated in the lib/ and bin/ directories without
    8821 version number that point to the latest compiled version.)
    8822- added .exe extension to binaries of MinGW
    8823- removed the `.static` extension associated to the LINK variable from the Makefile system (If you want to build
    8824 makefiles for shared library generation, use the OPT variable. For example, you could create a makefile
    8825 `make/make.linux.x86.gnu.opt-shared` and compile it with `make OPT=opt-shared`.)
    8826
    8827- Defaults and Options:
    8828 - modified the default LP solver to be SoPlex instead of CPLEX
    8829 - added `LPS=none` for compiling SCIP without a LP solver
    8830 - made `ZIMPL=true` the default; if you do not want to include ZIMPL support, call `make ZIMPL=false`
    8831
    8832Fixed bugs
    8833----------
    8834
    8835- fixed bug in rowScale() concerning deletion of almost zero coefficients
    8836- weakened assert in primal.c in order to avoid numerical troubles
    8837- fixed bug with too long variable names
    8838- fixed bug with strange user descriptions of plugins
    8839- changed position of some asserts to prevent segmentation faults
    8840- SCIPgetAvgPseudocostCount() and SCIPgetAvgPseudocostCountCurrentRun() now return the average over all integer
    8841 variables instead of all variables, since pseudo costs are not recorded for continuous variables
    8842- fixed wrong sorting of plugins with priorities close to INT_MIN or INT_MAX
    8843- replaced `line` by `read` in Makefile, since `line` is non-standard
    8844- fixed bug with branching rules that produce only one child with no changes to the problem
    8845- fixed bug that external relaxator is not reset appropriately for a new problem instance
    8846- removed wrong assert in function paramWrite()
    8847- fixed bug with uninitialized in check.awk
    8848- fixed bug in ZIMPL file reader for multiple occurrences of a single variable in the objective function
    8849- fixed bug with deleting variables from the transformed problem that are contained in the implication graph
    8850- fixed bug in root reduced cost fixing propagator that leads to an empty domain for a variable as a proof of optimality
    8851 of the current incumbent
    8852- fixed bug with fractional coefficients of binary variables in cont --> impl int upgrading
    8853
    8854- Solution:
    8855 - fixed bug with aggregated variables in debug solution test
    8856 - now it is possible to add original solutions
    8857 - fixed bugs with SCIPgetBestsol() returning `NULL` after a restart with user objective limit
    8858 - fixed wrong status code in presence of user objective limit and a feasible solution that is not better than the limit
    8859
    8860- Bounds:
    8861 - fixed bug with wrong bound changes of loose variables
    8862 - changed wrong assert in SCIPnodeAddBoundinfer()
    8863 - fixed bug in variable bounds search and insertion method
    8864 - fixed bug regarding modifying bounds in original problem if negated original variables exist
    8865 - fixed bug with multiple pending bound changes on some variable
    8866
    8867- Separator:
    8868 - fixed bug in integer objective separator with restarts
    8869 - fixed bug in integer objective separator with dynamic columns
    8870
    8871- Cuts:
    8872 - fixed bug that cut age was not reset to zero for violated cuts
    8873 - fixed bug in SCIPcutpoolAddNewRow() concerning update of minidx and maxidx of added row
    8874 - fixed numerical bug in rowScaling of lp.c, which possibly cut off feasible solutions
    8875 - significantly improved performance of c-MIR and Gomory cuts by caching closest VLB and VUB info
    8876
    8877- LP:
    8878 - fixed numerical buf with slightly different LP optimum after resolving due to probing/diving
    8879 - fixed bug in cmir and flowcover separator with variables which are currently not in the LP
    8880 - fixed bug with LP size management in probing if column generation is used
    8881 - fixed bug in LP file reader with row names identical to section keywords
    8882 - fixed potential bugs due to errors in resolving the LP after diving or probing
    8883 - fixed potential bugs in SCIPpriceLoop() and priceAndCutLoop(), st. now all LP solution stati are handled appropriately
    8884 - fixed potential bug with non-existent LP in SCIPwrite{LP,MIP}
    8885
    8886- Constraint handler:
    8887 - removed wrong assert in bounddisjunction constraint enforcement
    8888 - fixed numerical bug in propagator of varbound constraint handler
    8889 - fixed bug in variable bound constraint handler with changing bounds on multi-aggregated variables
    8890 - fixed bug in linear constraint handler: only tight cuts are transformed into linear constraints after restart
    8891 - fixed bug in bounddisjunction constraint handler with propagation of multi-aggregated variables
    8892 - fixed bug with numerics in linear constraint handler due to non-representable `BOUNDSCALETOL`
    8893 - fixed bug with almost integral multi-aggregation in dual presolve of linear constraint handler
    8894 - fixed bug with numerics in update of min/maxactivity in linear constraint handler
    8895
    8896- Heuristics:
    8897 - fixed bug in intshifting and oneopt heuristic with variables which are currently not in the LP
    8898 - fixed bug with primal heuristics reducing the cutoff bound such that the current node is cut off
    8899 - fixed bug in oneopt heuristic: must not be called on pseudo nodes if continuous variables are present
    8900
    8901@page RN0_9 Release notes for SCIP 0.9
    8902
    8903@section RN090 SCIP 0.9.0
    8904*************************
    8905
    8906Features
    8907--------
    8908
    8909- the EXITSOL callback of the plugins is now called before the LP and the global cut pool are freed
    8910
    8911- Primal Heuristics:
    8912 - new primal heuristics `rens`, `mutation` and `veclendiving`
    8913 - primal heuristics that run before the node is solved now know already whether the LP will be solved at the current
    8914 node or not
    8915
    8916- Heuristics:
    8917 - new heuristic `intshifting` (ID character `i`)
    8918 - in the root node of the very first run, heuristics with timing `AFTERNODELPNODE`, `AFTERLPPLUNGE`, `AFTERPSEUDONODE`, and
    8919 `AFTERPSEUDOPLUNGE` are now called before the enforcement of the constraint handlers, in particular before the branching
    8920 rules; in this way, the branching rule can already benefit from a tighter primal bound
    8921 - if a heuristic found a better solution after the LP loop (and in particular the `AFTERNODE` heuristics in the root node
    8922 of the very first run, see above), domain propagation and LP solving is triggered again; this allows for additional
    8923 reduced cost tightening and other dual propagations
    8924 - slightly modified `crossover` and `rins` heuristics
    8925 - improved performance of intdiving heuristic
    8926 - improved heuristic `octane` and `shifting`
    8927 - slightly modified rens and localbranching heuristics
    8928 - modified guided diving heuristic such that it equals the original version of the heuristic (i.e., round in direction of the
    8929 current incumbent solution instead of the average of all primal feasible solutions)
    8930 - ID character for intdiving heuristic is now `I`
    8931
    8932- Separation and Cuts:
    8933 - c-MIR cuts try now to scale the cut to integral values; however, cuts are still generated if this fails
    8934 - hard-coded relative objective gain to consider a separation loop to be stalling is now changed from 1e-3 to 1e-4,
    8935 which means that separation is not aborted as early as before
    8936 - modified c-MIR cut separator to more closely resemble the original version of Marchand and Wolsey
    8937
    8938- Constraint:
    8939 - possibility of SAT-like restarts after a number of conflict constraints have been found
    8940 - improved presolving of and, or and xor constraints
    8941 - implemented additional dual presolving in linear constraint handler
    8942 - slightly modified presolving of varbound constraint handler
    8943
    8944Interface changes
    8945-----------------
    8946
    8947### New and changed callbacks
    8948
    8949- new parameter `solinfeasible` for constraint handler callback methods `ENFOLP` and `ENFOPS`
    8950- replaced callback parameter `inlploop` and `inplunging` by `heurtiming` in `SCIP_DECL_HEUREXEC`
    8951- slightly changed the meaning of the result codes returned by external relaxators: if they modify the LP or tighten
    8952 bounds of variables, they are not automatically be called again (it is assumed that they already made use of these
    8953 changes). They are only called again, if they returned `SCIP_SUSPENDED` or if some other plugin modified the LP.
    8954
    8955### Deleted and changed API functions
    8956
    8957- new parameter `escapecommand` for SCIPdialoghdlrAddHistory()
    8958- removed method SCIPgetVarData(); use SCIPvarGetData() from pub_var.h instead
    8959- new calls SCIPgetLPBInvCol() and SCIPgetLPBInvACol() to access the basis inverse and simplex tableau columnwise
    8960- new parameter `ndomredsfound` of SCIPpropagateProbing()
    8961- new parameters `fixintegralrhs`, `maxfrac`, `mksetcoefs` and `fracnotinrange` in SCIPcalcMIR()
    8962- modified SCIPfixVar() such that in problem creation stage it will change the bounds as requested even if the fixing
    8963 value is outside of the current bounds
    8964- replaced parameters `pseudonodes`, `duringplunging`, `duringlploop` and `afternode` by `timingmask` in
    8965 SCIPincludeHeur() and constructor of ObjHeur() class use the following table to translate old settings into the new
    8966 timingmask:
    8967
    8968| PSEUDONODES | DURINGPLUNGING | DURINGLPLOOP | AFTERNODE | timingmask |
    8969|-------------|----------------|--------------|-----------|---------------------------------------------------------------|
    8970| FALSE | FALSE | FALSE | FALSE | SCIP_HEURTIMING_BEFORENODE |
    8971| TRUE | FALSE | FALSE | FALSE | SCIP_HEURTIMING_BEFORENODE |
    8972| FALSE | TRUE | FALSE | FALSE | SCIP_HEURTIMING_BEFORENODE |
    8973| TRUE | TRUE | FALSE | FALSE | SCIP_HEURTIMING_BEFORENODE |
    8974| FALSE | FALSE | TRUE | FALSE | SCIP_HEURTIMING_BEFORENODE \| SCIP_HEURTIMING_DURINGLPLOOP |
    8975| TRUE | FALSE | TRUE | FALSE | SCIP_HEURTIMING_BEFORENODE \| SCIP_HEURTIMING_DURINGLPLOOP |
    8976| FALSE | TRUE | TRUE | FALSE | SCIP_HEURTIMING_BEFORENODE \| SCIP_HEURTIMING_DURINGLPLOOP |
    8977| TRUE | TRUE | TRUE | FALSE | SCIP_HEURTIMING_BEFORENODE \| SCIP_HEURTIMING_DURINGLPLOOP |
    8978| FALSE | FALSE | FALSE | TRUE | SCIP_HEURTIMING_AFTERLPPLUNGE |
    8979| TRUE | FALSE | FALSE | TRUE | SCIP_HEURTIMING_AFTERPLUNGE |
    8980| FALSE | TRUE | FALSE | TRUE | SCIP_HEURTIMING_AFTERLPNODE |
    8981| TRUE | TRUE | FALSE | TRUE | SCIP_HEURTIMING_AFTERNODE |
    8982| FALSE | FALSE | TRUE | TRUE | SCIP_HEURTIMING_AFTERLPPLUNGE \| SCIP_HEURTIMING_DURINGLPLOOP |
    8983| TRUE | FALSE | TRUE | TRUE | SCIP_HEURTIMING_AFTERPLUNGE \| SCIP_HEURTIMING_DURINGLPLOOP |
    8984| FALSE | TRUE | TRUE | TRUE | SCIP_HEURTIMING_AFTERLPNODE \| SCIP_HEURTIMING_DURINGLPLOOP |
    8985| TRUE | TRUE | TRUE | TRUE | SCIP_HEURTIMING_AFTERNODE \| SCIP_HEURTIMING_DURINGLPLOOP |
    8986
    8987- Constraints:
    8988 - renamed all occurences of `removeable` by the correct English word `removable`: SCIPconsIsRemovable(),
    8989 SCIPsetConsRemovable(), SCIPvarIsRemovable(), SCIPcolIsRemovable(), SCIProwIsRemovable()
    8990 - new parameter `sticktonode` in SCIPcreateCons(), SCIPcreateConsAnd(), SCIPcreateConsBounddisjunction(),
    8991 SCIPcreateConsKnapsack(), SCIPcreateConsLinear(), SCIPcreateConsLogicor(), SCIPcreateConsOr(),
    8992 SCIPcreateConsVarbound(), SCIPcreateConsXor(), SCIPcreateConsSetpart(), SCIPcreateConsSetpack(),
    8993 SCIPcreateConsSetcover(): usually, you should set this to FALSE; if you want to add constraints as node markers with
    8994 node data and, e.g., use the `activate` and `deactivate` callbacks to get informed about the activation and
    8995 deactivation of the node, you should set this flag to TRUE in order to make sure, that the constraint will always be
    8996 associated to the node and not moved to a more global node if this would be possible
    8997 - slightly changed semantics of SCIPaddConsNode() and SCIPaddConsLocal(), such that a constraint which is added to the
    8998 root node now enters the global problem (and is still existing after a restart)
    8999
    9000### New API functions
    9001
    9002- SCIPgetVerbLevel()
    9003- SCIPescapeString()
    9004- SCIPgetGlobalCutpool(), SCIPgetPoolCuts(), SCIPcutpoolGetCuts(), SCIPcutGetRow() and SCIPcutGetAge()
    9005- SCIPconsGetNLocksPos() and SCIPconsGetNLocksNeg()
    9006
    9007### Command line interface
    9008
    9009- command shell now understands escape characters `\``,`'` and `\` which makes it possible to read in files with spaces in the
    9010 name
    9011
    9012### Interfaces to external software
    9013
    9014- updated XPress interface to XPress-MP 17 (contributed by Michael Perregaard)
    9015
    9016### Changed parameters
    9017
    9018- changed default value of `heuristics/octane/usediffray` to FALSE
    9019- removed parameter `heuristics/octane/usediffbwray`
    9020- renamed parameter `heuristics/octane/useavgray` to `heuristics/octane/useavgnbray`
    9021- changed default value of `heuristics/rens/binarybounds` to TRUE
    9022- changed default value of `heuristics/octane/freq` to -1 in order to deactivate Octane
    9023- parameter `heuristics/feaspump/maxsols` is now strict, i.e., if n solutions were already found, the feasibility pump
    9024 starts to work only if `maxsols <= n`, instead of `maxsols < n`
    9025
    9026### New parameters
    9027
    9028- `conflict/restartnum` and `conflict/restartfac`
    9029- `heuristics/octane/useavgray`
    9030- `heuristics/octane/useavgwgtray`
    9031- `limits/absgap` to define an absolute gap limit
    9032- `separating/cmir/aggrtol`
    9033- `separating/cmir/densityscore`
    9034- `separating/cmir/fixintegralrhs`
    9035- `separating/maxruns`
    9036- `presolving/restartminred` which forbids another restart if the last one was not successful enough
    9037- `propagating/abortoncutoff`
    9038- `reading/zplreader/changedir` to control behavior of path switching of ZIMPL file reader
    9039- `reading/zplreader/parameters` to pass additional parameters to ZIMPL
    9040
    9041Build system
    9042------------
    9043
    9044### Makefile
    9045
    9046- added ncurses to the readline entries in the `make/make.*` files
    9047- added quotes to sed expressions in Makefile (needed under Windows)
    9048- modified makefiles for Windows/Intel
    9049- added automatic query script in the Makefile for soft-link names
    9050
    9051Fixed bugs
    9052----------
    9053
    9054- fixed bug with string pointer copy instead of string content duplication in constructors of C++ wrapper classes
    9055- fixed bug in CPLEX interface with basis access methods that dualopt has to be called for more error status codes
    9056- fixed bug with inserting two variable bounds of the same type on the same variable with the same bounding variable but
    9057 with different sign of coefficient (e.g., `x <= 10*z + 5` and `x <= -5*z + 10`); in previous version, one of the two was
    9058 removed, although both have a useful meaning; now, we keep both and detect a stronger global bound in the implication graph presolving
    9059- objective function is now also checked for integrality after problem transformation (fixed a bug that a solution which
    9060 was generated between transformation and presolving for an integral objective function did not reduce the cutoff bound by one)
    9061- fixed a bug with cmir cut efficacy calculation (however, on my first tests, the performance reduced slightly!)
    9062- fixed bug that SCIPvarGetAvgSol() always returned the upper bound (affected guided diving heuristic)
    9063- fixed bug in RENS, RINS, Local Branching, Crossover and Mutation heuristics with wrong variable-subvariable assignments
    9064- fixed bug in infeasible/bound-exceeding LP conflict analysis if the bounds were relaxed in diving (happens in intshifting heuristic)
    9065
    9066- Separation:
    9067 - fixed bug with adding constraints with `INITIAL=true` and separating them afterwards, which lead to a second addition of
    9068 the constraint's relaxation in the child node
    9069 - separation LPs are now immediately resolved after a bound change was generated by a cut separator; before, the
    9070 separation round was prematurely aborted, which means that a separation round limit was sometimes reached very quickly
    9071 and some of the separators were not even called a single time
    9072
    9073- Cmir Cut Separator:
    9074 - too large deltas are now also rejected in c-MIR cut separation
    9075 - fixed bug in cmir cut separator, that 8*delta was not tried
    9076 - fixed bug in cmir cut separator with wrong sign of slack in row score function
    9077 - fixed bug in cmir cut separator with weights fixed to zero, thus making the current aggregation invalid
    9078 - fixed bug in cmir cut separator with wrong calculation of cut efficacies
    9079
    9080@page RN0_8 Release notes for SCIP 0.8
    9081
    9082@section RN082 SCIP 0.8.2
    9083*************************
    9084
    9085Features
    9086--------
    9087
    9088- additional flag `delay` for pricers
    9089- new propagator `rootredcost` which applies reduced cost fixing at the root node whenever a best new primal solution was found
    9090- new separator `redcost` which replaces the internal reduced cost strengthening
    9091
    9092- LP:
    9093 - 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
    9094 numerically instable, the extensions of the current node are still discarded
    9095 - added removal of bound-redundant rows from the LP during root node LP solving loop
    9096 - new display column `lpobj`
    9097
    9098- Constraints:
    9099 - slightly changed priorities of constraint handlers
    9100 - now, conflict constraints are also created if they were generated in strong branching or diving with insertion depth
    9101 equal to the current depth
    9102 - new constraint handler `bounddisjunction`
    9103
    9104- Readers:
    9105 - renamed `sol` file reader to `fix` file reader (reads partial solution files and fixes variables to the given values)
    9106 - added `sol` file reader which reads complete solution files and adds the solutions to the solution pool
    9107 - LP and MPS file readers are now able to parse lazy constraints and user cuts sections
    9108
    9109- Presolver:
    9110 - knapsack presolver now generates cliques in the clique table (this essentially solves `neos1.mps`)
    9111 - new presolver `inttobinary`
    9112
    9113- Heuristics:
    9114 - new primal heuristic `shifting`
    9115 - diving heuristics abort earlier (did not come back in reasonable time on `fast0507`)
    9116
    9117Interface changes
    9118-----------------
    9119
    9120- new solution status code `SCIP_STATUS_STALLNODELIMIT`
    9121
    9122### New and changed callbacks
    9123
    9124- slightly modified semantics of the `CONSINITLP` callback in the constraint handlers
    9125
    9126### Deleted and changed API functions
    9127
    9128- methods SCIPisLbBetter() and SCIPisUbBetter() have an additional parameter and slightly different meaning (they now
    9129 compare the bound improvement *relatively* to the width of the domain and the bound itself)
    9130- SCIPgetNSols() now returns an int instead of `SCIP_Longint`
    9131- method SCIPreadProb() does not call SCIPfreeTransform() anymore; file readers that want to extend the existing problem
    9132 must now call SCIPfreeTransform() themselves before modifying the original problem
    9133- method SCIPgetBinvarRepresentative() can now also be called in problem creation stage
    9134- additional parameter `maxpricerounds` in method SCIPsolveProbingLPWithPricing()
    9135- changed name of method SCIPpresolGetNVarTypes() to SCIPpresolGetNChgVarTypes()
    9136- method SCIPsplitFilenames() now treats both versions of slashes, `/` and `\`, as directory delimiters (under MinGW and
    9137 CygWin, both are valid; so, we cannot treat file names anymore where the other slash is used as a regular character)
    9138
    9139- Constraints:
    9140 - marking a constraint to be `initial` now means in addition, that if the constraint is added to a local node it will
    9141 enter the LP at the time the node is first processed, even if parameters forbid separation at this node
    9142 - changed name of method SCIPconshdlrGetNVarTypes() to SCIPconshdlrGetNChgVarTypes()
    9143
    9144- Conflicts:
    9145 - method SCIPgetNConflictClausesFound() renamed to SCIPgetNConflictConssFound()
    9146 - method SCIPgetNConflictClausesFoundNode() renamed to SCIPgetNConflictConssFoundNode()
    9147 - method SCIPgetNConflictClausesApplied() renamed to SCIPgetNConflictConssApplied()
    9148
    9149### New API functions
    9150
    9151- SCIPsolveProbingLPWithPricing()
    9152- SCIPchgVarLbRoot() and SCIPchgVarUbRoot()
    9153- SCIPinRepropagation()
    9154- SCIPaddDialogInputLine() and SCIPaddDialogHistoryLine()
    9155- SCIPtransformProb() to create the transformed problem; enables the user, e.g., to add primal solutions before the presolving begins
    9156- SCIPcreateSolCopy()
    9157- SCIPareSolsEqual()
    9158
    9159- Getters:
    9160 - SCIPgetRowKnapsack(), SCIPgetRowLinear(), SCIPgetRowLogicor(), SCIPgetRowSetppc(), and
    9161 SCIPgetRowVarbound() for obtaining the linear relaxation of a corresponding constraint
    9162 - SCIPgetLhsVarbound(), SCIPgetRhsVarbound(), SCIPgetVarVarbound(), SCIPgetVbdvarVarbound(), and
    9163 SCIPgetVbdcoefVarbound()
    9164 - SCIPgetLPRootObjval(), SCIPgetLPRootColumnObjval() and SCIPgetLPRootLooseObjval()
    9165 - SCIPcolGetMinPrimsol() and SCIPcolGetMaxPrimsol()
    9166 - SCIPgetFocusDepth()
    9167
    9168- Score:
    9169 - SCIPgetAvgPseudocostScore()
    9170 - SCIPgetAvgPseudocostScoreCurrentRun()
    9171 - SCIPgetAvgConflictScore()
    9172 - SCIPgetAvgConflictScoreCurrentRun()
    9173 - SCIPgetAvgInferenceScore()
    9174 - SCIPgetAvgInferenceScoreCurrentRun()
    9175 - SCIPgetAvgCutoffScore()
    9176 - SCIPgetAvgCutoffScoreCurrentRun()
    9177
    9178- Reduced Cost:
    9179 - SCIPgetColRedcost()
    9180 - SCIPvarGetRootRedcost()
    9181
    9182- Variables:
    9183 - SCIPgetNVarsAnd() and SCIPgetVarsAnd()
    9184 - SCIPgetWeightsKnapsack(), SCIPgetNVarsKnapsack(), SCIPgetVarsKnapsack() and SCIPgetWeightsKnapsack()
    9185 - SCIPgetNVarsLinear(), SCIPgetVarsLinear() and SCIPgetValsLinear()
    9186 - SCIPgetNVarsOr() and SCIPgetVarsOr()
    9187 - SCIPgetNVarsXor() and SCIPgetVarsXor()
    9188
    9189### Command line interface
    9190
    9191- command line syntax changed to support batch modus without piping stdin with `<` or `|` operators
    9192- advanced command line syntax:
    9193 - `-l <logfile> `: copy output into log file
    9194 - `-q `: suppress screen messages
    9195 - `-s <settings> `: load parameter settings (.set) file
    9196 - `-f <problem> `: load and solve problem file
    9197 - `-b <batchfile>`: load and execute dialog command batch file (can be used multiple times)
    9198 - `-c <command> `: execute single line of dialog commands (can be used multiple times)
    9199
    9200### Interfaces to external software
    9201
    9202### Changed parameters
    9203
    9204- removed parameter `propagating/redcostfreq`, because reduced cost strengthening is now an external separator plugin
    9205- removed parameter `conflict/maxunfixed`
    9206- parameter `conflict/maxclauses` renamed to `conflict/maxconss`
    9207- parameter `conflict/interclauses` renamed to `conflict/interconss`
    9208- parameter `conflict/reconvclauses` replaced by `conflict/reconvlevels`
    9209- parameter `conflict/uselp` replaced by `conflict/useinflp` and `conflict/useboundlp`
    9210- changed default value of `constraints/obsoleteage` to -1
    9211- changed default value of `branching/relpscost/conflictweight` to 0.01
    9212- changed default value of `branching/relpscost/inferenceweight` to 0.0001
    9213- changed default value of `branching/relpscost/cutoffweight` to 0.0001
    9214- in bfs node selector, parameter `minplungedepth` is now stronger than `maxplungedepth` if they conflict
    9215
    9216### New parameters
    9217
    9218- `constraints/linear/separateall`
    9219- `conflict/lpiterations`
    9220- `conflict/keepreprop`
    9221- `branching/relpscost/conflictweight`, `branching/relpscost/inferenceweight`,
    9222 `branching/relpscost/cutoffweight` and `branching/relpscost/pscostweight`
    9223- `conflict/settlelocal`
    9224- `conflict/depthscorefac`
    9225- `limits/stallnodes`
    9226
    9227Build system
    9228------------
    9229
    9230### Makefile
    9231
    9232- removed ncurses and pthread libraries from the Makefile; pthread is now only linked if CPLEX is used
    9233
    9234Fixed bugs
    9235----------
    9236
    9237- fixed numerical bug in SCIPrealToRational() [thanks to Anders Schack-Nielsen]
    9238- fixed bug in crossover heuristic with negative timelimit
    9239- removed bug in conflict analysis with wrong redundancy check
    9240- fixed bug that unexpected end of stdin (Ctrl-D or piped-in file without `quit` command) gives a segmentation fault
    9241- fixed bug with inconsistent data structures after a global bound was changed at a local subproblem and the local
    9242 bounds are not contained anymore in the new global bounds
    9243- fixed dependency generation in example Makefiles
    9244
    9245- Knapsack:
    9246 - fixed bug in knapsack presolving with redundancy check after applyFixings() [thanks to Anders Schack-Nielsen]
    9247 - fixed bug in knapsack separator with empty initial covers
    9248 - fixed bug in knapsack constraint disaggregation that may lead to acceptance of infeasible solutions
    9249 - fixed bug in knapsack constraint handler where a modifiable constraint may be declared redundant
    9250
    9251- LP:
    9252 - fixed bug with missing LP size updates after pricing or cut separation in probing [thanks to Marc Nuenkesser]
    9253 - fixed bug in CPLEX interface with getting basis information after the LP was modified and restored
    9254 - fixed bug with updating LP size in probing
    9255 - fixed bug that SCIPgetLPSolstat() returns a valid status code even if the LP was not yet constructed for the current node
    9256
    9257- Variables:
    9258 - fixed bug with invalid lazy updates after a restart where the LP is not solved again (e.g., due to all variables being fixed)
    9259 - fixed bugs resulting from inactive general integer variables being member of the variable bounds array of a variable
    9260 - fixed bug in updatePseudocost() with wrong lpgain distribution on multiple branching variables [thanks to Anders Schack-Nielsen]
    9261 - fixed bug in objconshdlr.h where member variable scip_maxprerounds_ was declared as an `SCIP_Bool` instead of an int
    9262 - branching on nearly-integral variables is now avoided in relpscost branching, which lead to a numerical assertion
    9263
    9264- Implication:
    9265 - fixed bug with adding implications that fix the implication variable to the opposite value (due to the bug, it was
    9266 returned that the whole problem is infeasible)
    9267 - removed wrong assert in varRemoveImplicsVbs()
    9268
    9269- Cliques:
    9270 - fixed bug in SCIPcliqueSearchVar() [thanks to Anders Schack-Nielsen]
    9271 - fixed bug in SCIPcliqueAddVar() [thanks to Anders Schack-Nielsen]
    9272
    9273- Readers:
    9274 - fixed bug in MPS file reader with `OBJSENSE`
    9275 - fixed bug in LP reader with potentially uninitialized pointers [thanks to Martin Mueller]
    9276
    9277- Constraints:
    9278 - it is now possible to branch on constraints without the risk of going into an infinite loop, because constraints marked as `initial`
    9279 will be put to the LP relaxation (of the child nodes) even if separation is prohibited by the parameter settings
    9280 - fixed bug that locally valid varbound constraints produce VLB/VUB entries [thanks to Anders Schack-Nielsen]
    9281
    9282@section RN081 SCIP 0.8.1
    9283*************************
    9284
    9285Features
    9286--------
    9287
    9288- improved performance of the priority queue in conflict analysis
    9289- slightly modified restartdfs node selector
    9290
    9291- Presolving:
    9292 - new presolver `implics` to find bound changes and aggregations out of the implication graph
    9293 - modified probing order in probing presolver
    9294
    9295- Constraints:
    9296 - changed handling of added constraints in separation calls
    9297 - modified bookkeeping of locally added and disabled constraints such that the order of enabling and disabling constraints stays the same
    9298 - logic or constraint handler now adds implications on clauses with 2 literals to the implication graph
    9299 - and/or constraint handlers now add implications to the implication graph
    9300 - xor constraint handler now uses stronger LP relaxation without auxiliary variable for xor constraint with 2 operands
    9301
    9302- Heuristics:
    9303 - added preliminary version of `intdiving` heuristic (disabled in default settings)
    9304 - added crossover heuristic
    9305
    9306- Readers:
    9307 - LP file reader now accepts the keyword `Integer` for defining the start of the integer variables section
    9308 - new file reader for (partial) solutions
    9309
    9310Examples and applications
    9311-------------------------
    9312
    9313- added two small pricer examples (for C and C++)
    9314- updated example code (s.t. it compiles again)
    9315
    9316Interface changes
    9317-----------------
    9318
    9319### New and changed callbacks
    9320
    9321- callback method `CONSSEPA` of constraint handler was split into two methods `CONSSEPALP` and `CONSSEPASOL`
    9322- callback method `SEPAEXEC` of separator was split into two methods `SEPAEXECLP` and `SEPAEXECSOL`
    9323
    9324### Deleted and changed API functions
    9325
    9326- replaced method SCIPsepaWasDelayed() by SCIPsepaWasLPDelayed() and SCIPsepaWasSolDelayed()
    9327- additional parameter `sol` for methods SCIPaddCut(), SCIPgetCutEfficacy() and SCIPisCutEfficacious()
    9328- additional parameter `sol` for method SCIPseparateKnapsackCover()
    9329- primal solutions may now contain values marked to be unknown (value is `SCIP_UNKNOWN`); unknown values don't contribute
    9330 to the objective value of the solution; an unknown solution value should be treated as an arbitrary value in the
    9331 variable's bounds, e.g., in the calculation of the feasibility of a constraint, a value inside the variable's bounds
    9332 should be selected that makes the constraint as feasible as possible
    9333- new parameter `printzeros` for methods SCIPprintSol(), SCIPprintTransSol(), SCIPprintBestSol() and SCIPprintBestTransSol()
    9334
    9335- Constraints:
    9336 - replaced method SCIPconshdlrWasSeparationDelayed() by two methods SCIPconshdlrWasLPSeparationDelayed() and
    9337 SCIPconshdlrWasSolSeparationDelayed()
    9338 - renamed method SCIPgetNGlobalConss() to SCIPgetNConss()
    9339
    9340### New API functions
    9341
    9342- SCIPgetCuts()
    9343- SCIPgetVarConflictScore() and SCIPgetVarConflictScoreCurrentRun()
    9344- SCIPvarSetData()
    9345- SCIPcreateUnknownSol()
    9346- SCIPgetNConflictClausesFoundNode()
    9347- SCIPvarSetDelorigData(), SCIPvarSetTransData() and SCIPvarSetDeltransData()
    9348- SCIPvarHasBinaryImplic()
    9349- SCIPgetFixedVars() and SCIPgetNFixedVars()
    9350- SCIPgetConss(), SCIPgetNOrigConss() and SCIPgetOrigConss()
    9351- SCIPsepaGetNConssFound() and SCIPsepaGetNDomredsFound()
    9352- SCIPconstructLP() to force constructing the LP of the current node
    9353- SCIPisLPConstructed()
    9354
    9355### Command line interface
    9356
    9357- added `write statistics` command to default user dialogs
    9358
    9359### Changed parameters
    9360
    9361- modified meaning of parameter `presolving/probing/maxtotaluseless`
    9362- heuristics with `freq = 0` and `freqofs > 0` are now called in depth level freqofs instead of being called in the root
    9363 node
    9364- added some parameters in local branching and RINS heuristic
    9365- new parameter values `p`rimal simplex and `d`ual simplex in `lp/initalgorithm` and `lp/resolvealgorithm`
    9366
    9367### New parameters
    9368
    9369- `branching/inference/conflictweight`
    9370
    9371Build system
    9372------------
    9373
    9374### Makefile
    9375
    9376- included version number in binary file name
    9377- tried to make the code Windows compatible
    9378
    9379Fixed bugs
    9380----------
    9381
    9382- also removed history_length, if `NO_REMOVE_HISTORY` is defined to support older versions of the readline library
    9383- hopefully fixed bug with wrong path slash `/` under Windows
    9384- fixed bug with aggregating fixed variables
    9385
    9386- Implications:
    9387 - fixed bug in transitive implication addition
    9388 - fixed wrong assert with implications that imply a fixed variable
    9389 - removed bug in implication addition
    9390
    9391- Readers:
    9392 - fixed bug in ZIMPL model reader with wrong chdir, if .zpl file is in current directory
    9393 - fixed bug in LP file reader with signed values without space between sign and value (e.g. `+2x` instead of `+ 2x`)
    9394 - fixed various bugs in LP file reader
    9395 - fixed bug in LP file reader with explicit zero coefficients
    9396
    9397- Numerics:
    9398 - fixed numerics in probing and linear constraint handler (rentacar was detected to be infeasible in presolving)
    9399 - fixed numerics in check method of linear constraint handler
    9400 - fixed bug with numerical error in LP resolve after probing or diving
    9401
    9402- Heuristics:
    9403 - fixed bug with calling heuristics in depths smaller than their frequency offset
    9404 - fixed bugs in local branching and RINS heuristic
    9405
    9406Known bugs
    9407----------
    9408
    9409- if one uses column generation and restarts, a solution that contains variables that are only present in the
    9410 transformed problem (i.e., variables that were generated by a pricer) is not pulled back into the original space
    9411 correctly, since the priced variables have no original counterpart
    9412
    9413@section RN080 SCIP 0.8.0
    9414*************************
    9415
    9416Features
    9417--------
    9418
    9419- adding variable bounds automatically adds the corresponding implication
    9420- changed restart dfs nodeselector to sort leaves by node number instead of node depth to aviod jumping around in the
    9421 search tree after a restart was applied and the current dive ended due to infeasibility
    9422- new Message Handler plugin
    9423- added file reader for LP format
    9424- introduced subversion string
    9425- replaced all abort() calls by SCIPABORT(); this is defined in def.h to be `assert(FALSE)`
    9426- added possibility to disable certain features by using `make USRFLAGS=-DNO_REMOVE_HISTORY`, `make
    9427 USRFLAGS=-DNO_SIGACTION`, `make USRFLAGS=-DNO_RAND_R`, or `make USRFLAGS=-DNO_STRTOK_R`
    9428- improved preprocessing abort criteria
    9429- added zlib support
    9430
    9431- Conflict Analysis:
    9432 - conflict clauses are now collected in a conflict store, redundant clauses are eliminated and only the best `conflict/maxclauses`
    9433 clauses are added permanently to the problem; the remaining clauses are only added temporarily, if they can be used for repropagation
    9434 - modified the influence of the depth level in conflict analysis
    9435 - slightly changed LP resolving loop in conflict analysis
    9436 - if CPLEX returns that the LP exceeds the bound and if no additional LP solves are allowed in conflict analysis, we
    9437 have to perform one additional simplex iteration to get the dual solution that actually violates the objective limit
    9438
    9439- Constraints:
    9440 - reactivated multiaggregation in cons_linear.c on binary variables again (possible due to bug fix below)
    9441 - improved preprocessing of variable bounds constraints
    9442 - linear constraint handler now catches events of variables after the problem was completely transformed in order to
    9443 avoid the whole bunch of `LOCKSCHANGED` events that are generated at problem transformation stage
    9444 - added redundancy detection for pairs of constraints in setppc constraint handler
    9445
    9446- Presolving and Cliques:
    9447 - changed linear constraint presolving s.t. redundant sides are not removed if constraint is an equality
    9448 - new event type `SCIP_EVENTTYPE_PRESOLVEROUND`
    9449 - modified probing presolver to not add implications that are already included in the implication graph and clique table
    9450 - incorporated clique and implication information in knapsack constraint presolving
    9451 - removed transitive clique generation, because this produces way too many cliques
    9452
    9453- Heuristics:
    9454 - diving heuristics now apply propagation at each step
    9455 - removed `objfeaspump` heuristic, because the functionality can be achieved by using the `feaspump` heuristic
    9456 - diving heuristics are now applying propagation after each bound change
    9457 - new primal heuristic `octane`
    9458 - slightly changed feaspump heuristic, s.t. after finding a new best solution the target integral solution is modified randomly
    9459
    9460- Separation and Cuts:
    9461 - improved debugging for infeasible cuts and propagations, given a primal feasible solution
    9462 - improved knapsack cover separation
    9463 - improved performance of c-MIR separator
    9464 - cut pool is now also separated in root node (to find cuts again that were removed from the LP due to aging)
    9465
    9466Interface changes
    9467-----------------
    9468
    9469- new event type `SCIP_EVENTTYPE_VARDELETED`
    9470- new event `SCIP_EVENTTYPE_IMPLADDED`
    9471- new event types `SCIP_EVENTTYPE_GLBCHANGED` and `SCIP_EVENTTYPE_GUBCHANGED`
    9472
    9473### New and changed callbacks
    9474
    9475- new callback parameter `validnode` for the `CONFLICTEXEC` method of conflict handlers, which should be passed to
    9476 SCIPaddConsNode()
    9477
    9478### Deleted and changed API functions
    9479
    9480- additional parameter `validnode` for SCIPaddConsLocal() and SCIPaddConsNode()
    9481- SCIPhashtableRemove() can now also be called, if the element does not exist in the table
    9482- SCIPhashmapRemove() can now also be called, if the element does not exist in the map
    9483- additional parameter `branchdir` for SCIPbranchVar()
    9484- replaced method SCIPmessage() by SCIPverbMessage() with additional parameter `file`
    9485- put block memory shell and tclique algorithm into separate subdirectories
    9486- new parameter `duringlploop` of SCIPincludeHeur(): heuristics can now run during the price-and-cut loop at a node
    9487
    9488### New API functions
    9489
    9490- SCIPgetNConflictClausesApplied()
    9491- SCIPgetNConflictClausesApplied()
    9492- SCIPhashtableExists()
    9493- SCIPhashmapExists()
    9494- SCIPnodeGetNumber()
    9495- SCIPsolveProbingLP() to solve the LP in a probing node (enables mixing of propagation and LP solving for diving heuristics)
    9496- SCIProwGetDualfarkas()
    9497- SCIPgetCurrentNode()
    9498- SCIPinterruptSolve()
    9499- SCIPpropagateProbingImplications()
    9500- SCIPgetLPI() which makes all methods in scip/lpi.h available to the user
    9501- SCIPgetRandomInt() and SCIPgetRandomReal()
    9502- SCIPstrtok()
    9503- SCIPheurGetNBestSolsFound()
    9504
    9505- Variables:
    9506 - SCIPdelVar()
    9507 - SCIPgetVarStrongbranchLPAge()
    9508 - SCIPvarIsTransformedOrigvar()
    9509 - SCIPvarIsDeleted()
    9510
    9511- Messages and IO:
    9512 - SCIPerrorMessage()
    9513 - SCIPwarningMessage()
    9514 - SCIPdialogMessage()
    9515 - SCIPinfoMessage()
    9516 - SCIPsetMessagehdlr()
    9517 - SCIPsetDefaultMessagehdlr()
    9518 - SCIPgetMessagehdlr()
    9519 - new file i/o methods SCIPfopen(), SCIPfclose(), SCIPfprintf(), ... that operate on the data type `SCIPFILE`; these
    9520 methods automatically use zlib methods if the zlib is enabled
    9521
    9522- Cliques:
    9523 - SCIPvarGetNCliques()
    9524 - SCIPvarGetCliques()
    9525 - SCIPvarsHaveCommonClique()
    9526 - SCIPvarHasImplic()
    9527 - SCIPcliqueGetNVars()
    9528 - SCIPcliqueGetVars()
    9529 - SCIPcliqueGetValues()
    9530 - SCIPcliqueGetId()
    9531 - SCIPaddClique()
    9532 - SCIPcalcCliquePartition()
    9533
    9534- Constraint handler:
    9535 - SCIPgetDualfarkasLinear() of linear constraint handler
    9536 - SCIPgetDualfarkasLogicor() of logicor constraint handler
    9537 - SCIPgetDualfarkasSetppc() of setppc constraint handler
    9538 - SCIPgetDualsolKnapsack() of knapsack constraint handler
    9539 - SCIPgetDualfarkasKnapsack() of knapsack constraint handler
    9540 - SCIPgetDualsolVarbound() of varbound constraint handler
    9541 - SCIPgetDualfarkasVarbound() of varbound constraint handler
    9542 - SCIPconsGetValidDepth()
    9543 - SCIPsetConsInitial()
    9544 - SCIPsetConsSeparated()
    9545 - SCIPsetConsEnforced()
    9546 - SCIPsetConsChecked()
    9547 - SCIPsetConsPropagated()
    9548 - SCIPsetConsLocal()
    9549 - SCIPsetConsDynamic()
    9550 - SCIPsetConsRemoveable()
    9551
    9552### Command line interface
    9553
    9554- added command `write solution` to default dialog
    9555- added commands `write problem` and `write transproblem` to default dialog
    9556
    9557### Changed parameters
    9558
    9559- additional setting `SCIP_VERBLEVEL_DIALOG` in `display/verblevel` parameter
    9560- additional LP pricing setting `partial`
    9561- replaced parameter `presolving/restartbdchgs` with parameters `presolving/maxrestarts` and `presolving/restartfac`
    9562- replaced parameter `constraints/linear/maxpresolaggrrounds` with `constraints/linear/maxpresolpairrounds`
    9563- parameters `constraints/agelimit` and `constraints/obsoleteage` now iterprete the value 0 as a dynamic setting
    9564- number of fractional variables included in parameter `separating/maxstallrounds`
    9565
    9566- Changed default values:
    9567 - changed default values of `heuristics/∗/maxdiveavgquot` and `heuristics/∗/maxdiveavgquotnosol` to 0
    9568 - changed default values of `constraints/agelimit` and `constraints/obsoleteage` to 0
    9569 - changed default values of `heuristics/objpscostdiving/maxsols` and `heuristics/rootsoldiving/maxsols` to -1
    9570 - changed default value of `separating/strongcg/maxroundsroot` to 20
    9571 - changed default value of `separating/cmir/maxroundsroot` to 10
    9572 - changed default value of `constraints/linear/maxaggrnormscale` to 0.0, which means to not apply aggregation
    9573 - changed default value of `separating/maxstallrounds` to 5
    9574 - changed default value of `presolving/probing/maxfixings` to 50
    9575 - changed default parameter values to MIP settings:
    9576 + `conflict/useprop` = FALSE
    9577 + `conflict/usepseudo` = FALSE
    9578 + `display/verblevel` = 4
    9579 + `separating/poolfreq` = 0
    9580 + `constraints/linear/sepafreq` = 0
    9581 + `constraints/and/sepafreq` = 0
    9582 + `constraints/conjunction/sepafreq` = 0
    9583 + `constraints/knapsack/sepafreq` = 0
    9584 + `constraints/knapsack/sepacardfreq` = 0
    9585 + `constraints/logicor/sepafreq` = 0
    9586 + `constraints/or/sepafreq` = 0
    9587 + `constraints/setppc/sepafreq` = 0
    9588 + `constraints/varbound/sepafreq` = 0
    9589 + `constraints/xor/sepafreq` = 0
    9590 + `separating/clique/freq` = 0
    9591 + `separating/cmir/freq` = 0
    9592 + `separating/gomory/freq` = 0
    9593 + `separating/impliedbounds/freq` = 0
    9594 + `separating/strongcg/freq` = 0
    9595
    9596### New parameters
    9597
    9598- `branching/fullstrong/reevalage`
    9599- `conflict/maxclauses`
    9600- `conflict/allowlocal`
    9601- `constraints/knapsack/disaggregation`
    9602- `presolving/probing/maxtotaluseless`
    9603- `separating/cmir/maxfails`, `separating/cmir/maxfailsroot` and `separating/cmir/trynegscaling`
    9604
    9605### Data structures
    9606
    9607- MAJOR CHANGE: preceeded all data types with `SCIP_`: you may use shell script reptypes_scip.sh to rename the SCIP
    9608 data types in your own source code (But use with care! Create a backup copy of your source first!)
    9609
    9610Build system
    9611------------
    9612
    9613### Makefile
    9614
    9615- modified the Makefile to accept an additional parameter `VERBOSE={true,false}`
    9616- added flags `READLINE=true/false`, `ZLIB=true/false`, `ZIMPL=true/false` to Makefile
    9617
    9618Fixed bugs
    9619----------
    9620
    9621- fixed minor bugs in debug code of primal.c and sol.c
    9622- variables that are being multiaggregated are now automatically removed from all other variables' variable bound and
    9623 implication arrays; this fixes bugs with methods, that rely on the fact, that the entries in the variable bound and
    9624 implication arrays are active variables only
    9625- aggregations are now always performed in a way, such that the variable of more general type is aggregated (with type
    9626 generality being cont > implint > int > bin); in this way, a binary variable's representant is always binary (which
    9627 was not the case before and resulted in a bug in SCIPgetBinvarRepresentative())
    9628- removed bug in presol_probing.c: the vars of the sorted variables array have to be captured
    9629- fixed bug in the output of solutions with priced variables
    9630- fixed bug in propagation with parameters prop_maxrounds and prop_maxroundsroot
    9631- conflict analysis can now handle errors in LP solving calls
    9632- removed bug in SCIPvarAddVlb() and SCIPvarAddVub() with fractional vlb/vubcoefs
    9633- fixed bug that primal or dual rays might not be available because the wrong solver was used
    9634- included message.o in LPI library, s.t. one can link this library indepentent of SCIP
    9635- fixed bug that if diving heuristic that changes the objective values finds a solution, the cutoff is reinstalled in
    9636 the LP solver (although the objective value has no meaning due to the objective function modification)
    9637
    9638- Feasibiltiy:
    9639 - 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),
    9640 that an LP with an integral variable fixed to a large value yields an accepted solution with that variable slightly different than the fixed
    9641 value; the integrality feasibility condition is measured with absolute differences, which leads to the fixed integer variable being fractional;
    9642 this leads to an error if branching is performed on this variable
    9643 - fixed bug with redundant self implications that wrongly lead to the detection of infeasibility
    9644 - fixed bug with potential infinite loop if a separator is delayed and the LP is infeasible
    9645
    9646- Asserts:
    9647 - removed wrong asserts from lpi_cpx.c
    9648 - removed wrong assertion in varAddImplic()
    9649
    9650- Numerics:
    9651 - locally fixed variables are no longer used as branching candidates even if their LP solution value is fractional (due
    9652 to numerical reasons, see above)
    9653 - fixed numerical bug in pseudo objective propagator with only slightly tightened bounds
    9654 - removed bug that an LP might be declared to be solved even if it was marked erroneous due to numerical problems
    9655
    9656- Constraint Handlers:
    9657 - fixed bug in linear constraint handler with variables fixed to infinity
    9658 - fixed bug with constraint handlers that can only enforce their constraints by adding cuts, but the maximal number of
    9659 cuts to separate is set to 0; now, cuts that are generated in the constraint enforcement are used in any case
    9660 - fixed bug in knapsack constraint presolving with tightening coefficients and capacity
    9661 - fixed bug with modifiable constraints in linear constraint handler preprocessing
    9662 - fixed bug in linear constraint handler that global activities are not updated after global bound changes
    9663
    9664- Separation and Cuts:
    9665 - global bound changes now lead to the removal of redundant implications (such that the asserts in sepa_implbounds.c are now correct)
    9666 - due to usage of variable bounds, SCIPcalcMIR() may return LOOSE variables in the cut -> modified sepa_cmir.c, sepa_gomory.c and
    9667 sepa_strongcg.c to use SCIPcreateEmptyRow() and SCIPaddVarsToRow() instead of SCIPcreateRow() which only works for COLs
    9668 - fixed bug in clique separator that reduced performance
    9669 - increased performance of clique separator by allowing only a certain number of zero-weighted fill ins
    9670
    9671@page RN0_7 Release notes for SCIP 0.7
    9672
    9673@section RN079 SCIP 0.7.9
    9674*************************
    9675
    9676Features
    9677--------
    9678
    9679- aging and cleanup now only remove non-basic columns and basic rows, s.t. resolving can be applied with 0 simplex iterations
    9680- it is now possible to create subnodes in probing and use backtracking to undo probing changes
    9681- bounds of variables are included in the feasibility checks for solutions
    9682- support for barrier algorithm
    9683- changed implementation of automatic minplungedepth and maxplungedepth calculation in bfs node selector
    9684
    9685- Presolving:
    9686 - new plugin: probing presolver
    9687 - probing is now also possible in presolving stage
    9688 - it is now possible to interrupt and continue presolving
    9689
    9690- Separation and Cuts:
    9691 - new plugin: clique separator for clique cuts with at least 3 elements
    9692 - new plugin: implied bound cuts separator
    9693 - included debugging module to check whether cutting planes cut off the optimal solution
    9694
    9695- Branching:
    9696 - changed implementation of reliability value calculation in reliability branching; slightly modified influence of
    9697 maximal total number of strong branching LP iterations in reliability branching
    9698 - changed implementation of maximal strong branching iterations calculation in reliability branching
    9699
    9700- Constraints:
    9701 - if verblevel is at least `NORMAL`, an automatical check of the best solution is performed in the original problem, and
    9702 an error message is displayed, if it violates an original constraint
    9703 - due to the new constraint handler `cons_cumulative.{c,h}` SCIP can resource-constraint scheduling problem
    9704 - during probing, propagation of bounds is now always performed in linear constraint handler, ignoring the parameter `tightenboundsfreq`
    9705 - new implementation of the clique graph construction method in clique separator
    9706 - new constraint handler `cons_cumulative.{c,h}`
    9707
    9708- Heuristics:
    9709 - new implementation of the feasibility pump heuristic by Timo Berthold (replaces old implementation); old
    9710 implementation is now called `objfeaspump`; parameter names have been changed accordingly
    9711 - diving heuristics now compare their number of LP iterations with the number of node LP iterations instead of the total
    9712 number (including their own) LP iterations
    9713 - modified the automatic objfactor setting of feaspump heuristic to let the objective function have stronger influence
    9714
    9715Examples and applications
    9716-------------------------
    9717
    9718- added TSP example in `examples/TSP`
    9719
    9720Interface changes
    9721-----------------
    9722
    9723### New and changed callbacks
    9724
    9725- new callback methods `INITSOL` and `EXITSOL` for variable pricers, primal heuristics, conflict handlers, relaxators,
    9726 separators, propagators, event handlers, node selectors and display columns
    9727- callback method `CONFLICTEXEC` of conflict handlers receive additional parameters `dynamic` and `removeable`
    9728- constraint handler callback methods `CONSLOCK` and `CONSUNLOCK` are replaced by a single method `CONSLOCK` with the number
    9729 of locks being positive or negative
    9730
    9731### Deleted and changed API functions
    9732
    9733- calling SCIPaddCut() with `forcecut=TRUE` will add the cut to the LP even if it is redundant
    9734- SCIPreadProb() does not free the current problem, this is done in SCIPcreateProb() now, which is usually
    9735 called by a problem reader; in this way, a reader can generate `extra information` for the current problem, s.t. the
    9736 full problem information can be distributed to different files read by different readers
    9737- SCIPgetVarStrongbranch() and SCIPgetVarStrongbranchLast() now have two additional parameters that can be used
    9738 to check, whether the returned values are correct dual bounds
    9739- SCIPgetBinvarRepresentative() now returns the fixed or multi-aggregated variable instead of returning `NULL` or
    9740 aborting with an error message
    9741- SCIPdispDecimal() is replaced by SCIPdispInt() and SCIPdispLongint()
    9742- additional parameter `maxproprounds` in SCIPpropagateProbing()
    9743- changed memory interface (see memory.h), `MEMHDR` is now called `BLKMEM`
    9744- source code was moved into subdirectories: replace includes `scip.h` by `scip/scip.h` and
    9745 `objscip.h` by `objscip/objscip.h`; This should allow a user to have include files of the same name as the ones
    9746 of SCIP, e.g. `tree.h` or `var.h`.
    9747- event handlers are now available as C++ wrapper class
    9748- new flag `afterrelaxation` for primal heuristics
    9749
    9750- Solution:
    9751 - removed method SCIPsolGetObj(), use SCIPgetSolOrigObj() or SCIPgetSolTransObj() instead
    9752 - additional parameter `checkbounds` for SCIPtrySol(), SCIPtrySolFree(), SCIPcheckSol()
    9753
    9754- Variables:
    9755 - SCIPvarLock(), SCIPvarLockDown(), SCIPvarLockUp(), SCIPvarLockBoth(), SCIPvarUnlock(), SCIPvarUnlockDown(),
    9756 SCIPvarUnlockUp() and SCIPvarUnlockBoth() are replaced by SCIPaddVarLocks() which returns a `RETCODE`
    9757 - SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), SCIPvarGetLbLocal() and SCIPvarGetUbLocal() now return the
    9758 corresponding values of the transformed problem or current subproblem even for original problem variables
    9759 - SCIPvarGetProbvar(), SCIPvarGetProbvarBinary() now return the fixed or multi-aggregated variable instead of
    9760 returning `NULL` or aborting with an error message; in SCIPvarGetProbvarBinary(), the fixing of a fixed variable does
    9761 not influence the negation status anymore
    9762 - SCIPvarGetProbvarBound() returns the multi-aggregated variable instead of aborting with an error message
    9763 - SCIPvarGetProbvarSum() does not set *var to `NULL` for fixed variables anymore; it may also return a
    9764 multi-aggregated variable instead of aborting with an error message
    9765 - SCIPaddVarImplication() now also adds variable lower and upper bounds, if the implied variable is non-binary
    9766 - additional parameter `aggregated` in SCIPmultiaggregateVars()
    9767
    9768- Constraints:
    9769 - SCIPvarLockDownCons(), SCIPvarLockUpCons(), SCIPvarUnlockDownCons() and SCIPvarUnlockUpCons() are replaced by
    9770 SCIPlockVarCons() and SCIPunlockVarCons() which return a `RETCODE`
    9771 - SCIPlockConsVars() and SCIPunlockConsVars() replaced with method SCIPaddConsLocks()
    9772 - SCIPconshdlrGetNConss() is replaced by SCIPconshdlrGetNActiveConss() (returning the number of active
    9773 constraints); method SCIPconshdlrGetNConss() does now return the total number of existing constraints, active and inactive
    9774 - SCIPconshdlrGetStartNConss() is now called SCIPconshdlrGetStartNActiveConss()
    9775 - SCIPconshdlrGetMaxNConss() is now called SCIPconshdlrGetMaxNActiveConss()
    9776 - SCIPdisableConsNode() is replaced by SCIPdelConsNode()
    9777 - SCIPdisableConsLocal() is replaced by SCIPdelConsLocal()
    9778 - added new parameter `dynamic` to SCIPcreateCons() and all plugin methods SCIPcreateCons...()
    9779
    9780### New API functions
    9781
    9782- SCIPgetObjNorm()
    9783- SCIPcreateOrigSol()
    9784- SCIPwriteImplicationConflictGraph()
    9785- SCIPinProbing()
    9786- SCIPgetProbName()
    9787- SCIPgetVarNStrongbranchs()
    9788- SCIPcolGetNStrongbranchs()
    9789- SCIPfindSimpleRational()
    9790- SCIPselectSimpleValue()
    9791
    9792- Variables:
    9793 - SCIPvarGetLbOriginal()
    9794 - SCIPvarGetUbOriginal()
    9795 - SCIPvarGetImplIds()
    9796 - SCIPvarGetOrigvarSum()
    9797
    9798- Constraints:
    9799 - SCIPenableCons()
    9800 - SCIPdisableCons()
    9801 - SCIPenableConsSeparation()
    9802 - SCIPdisableConsSeparation()
    9803 - SCIPconsIsSeparationEnabled()
    9804
    9805- Averages:
    9806 - SCIPgetAvgPseudocost()
    9807 - SCIPgetAvgPseudocostCurrentRun()
    9808 - SCIPgetAvgPseudocostCount()
    9809 - SCIPgetAvgPseudocostCountCurrentRun()
    9810 - SCIPgetAvgInferences()
    9811 - SCIPgetAvgInferencesCurrentRun()
    9812 - SCIPgetAvgCutoffs()
    9813 - SCIPgetAvgCutoffsCurrentRun()
    9814
    9815- LPs:
    9816 - SCIPisLPSolBasic() to check, whether the current LP solution is basic (i.e. due to a simplex algorithm or barrier with crossover)
    9817 - SCIPgetNPrimalLPs()
    9818 - SCIPgetNPrimalLPIterations()
    9819 - SCIPgetNDualLPs()
    9820 - SCIPgetNDualLPIterations()
    9821 - SCIPgetNBarrierLPs()
    9822 - SCIPgetNBarrierLPIterations()
    9823 - SCIPgetNPrimalResolveLPs()
    9824 - SCIPgetNPrimalResolveLPIterations()
    9825 - SCIPgetNDualResolveLPs()
    9826 - SCIPgetNDualResolveLPIterations()
    9827
    9828- Delayed:
    9829 - SCIPsepaIsDelayed()
    9830 - SCIPsepaWasDelayed()
    9831 - SCIPpropIsDelayed()
    9832 - SCIPpropWasDelayed()
    9833 - SCIPpresolIsDelayed()
    9834 - SCIPpresolWasDelayed()
    9835 - SCIPconshdlrIsSeparationDelayed()
    9836 - SCIPconshdlrIsPropagationDelayed()
    9837 - SCIPconshdlrIsPresolvingDelayed()
    9838 - SCIPconshdlrWasSeparationDelayed()
    9839 - SCIPconshdlrWasPropagationDelayed()
    9840 - SCIPconshdlrWasPresolvingDelayed()
    9841
    9842### Command line interface
    9843
    9844- command line history in interactive shell now only stores useful commands
    9845
    9846### Interfaces to external software
    9847
    9848- removed storing of dual norms in LPI state of CPLEX interface (too memory consuming)
    9849
    9850### Changed parameters
    9851
    9852- default frequency offset of fracdiving heuristic changed to 3
    9853- default frequency offset of (new) feaspump heuristic changed to 0
    9854- default frequency offset of objfeaspump heuristic changed to 8
    9855- changed default priority of primal heuristics
    9856- renamed parameter `limits/sol` to `limits/solutions`
    9857- changed default check priority of knapsack constraint handler to -600000
    9858- changed default priority of Gomory cut separator to -1000 (will now be called after constraint handlers!)
    9859- changed default priority of strong CG cut separator to -2000
    9860- changed default priority of cmir cut separator to -3000
    9861- changed default of parameter `lp/pricing` to `s`teepest edge pricing
    9862- default parameter `branching/relpscost/minreliable` changed to 1.0
    9863- default parameter `branching/relpscost/maxlookahead` changed to 8
    9864- default parameter `branching/relpscost/sbiterofs` changed to 100000
    9865- default parameter `heuristics/coefdiving/maxlpiterquot` changed to 0.05
    9866- default parameter `heuristics/fracdiving/maxlpiterquot` changed to 0.05
    9867- default parameter `heuristics/guideddiving/maxlpiterquot` changed to 0.05
    9868- default parameter `heuristics/linesearchdiving/maxlpiterquot` changed to 0.05
    9869- default parameter `heuristics/pscostdiving/maxlpiterquot` changed to 0.05
    9870- default parameter `heuristics/feaspump/freq` changed to 20
    9871- default parameter `heuristics/objfeaspump/freq` changed to 20
    9872- default parameter `heuristics/objpscostdiving/freq` changed to 20
    9873- default parameter `heuristics/rootsoldiving/freq` changed to 20
    9874- default parameter `separating/clique/maxtreenodes` changed to -1
    9875
    9876### New parameters
    9877
    9878- new parameter delay for presolvers
    9879- new parameter delaypresol for constraint handlers
    9880- `branching/scorefunc`
    9881- `constraints/.../delaypresol`
    9882- `constraints/.../delayprop`
    9883- `constraints/.../delaysepa`
    9884- `conflict/dynamic`
    9885- `conflict/removeable`
    9886- `heuristics/coefdiving/maxlpiterofs`
    9887- `heuristics/feaspump/maxlpiterofs`
    9888- `heuristics/feaspump/maxsols`
    9889- `heuristics/fracdiving/maxlpiterofs`
    9890- `heuristics/guideddiving/maxlpiterofs`
    9891- `heuristics/linesearchdiving/maxlpiterofs`
    9892- `heuristics/objfeaspump/maxlpiterofs`
    9893- `heuristics/objfeaspump/maxsols`
    9894- `heuristics/objpscostdiving/maxlpiterofs`
    9895- `heuristics/objpscostdiving/maxsols`
    9896- `heuristics/pscostdiving/maxlpiterofs`
    9897- `heuristics/rootsoldiving/maxlpiterofs`
    9898- `heuristics/rootsoldiving/maxsols`
    9899- `heuristics/fixandinfer/proprounds` and `heuristics/fixandinfer/minfixings`
    9900- `lp/cleanupcolsroot` and `lp/cleanuprowsroot` to distinguish cleanup settings between root node and other nodes
    9901- `lp/checkstability` to disable stability check of LP solver's result code
    9902- `lp/initalgorithm` and `lp/resolvealgorithm` for switching between simplex and barrier algorithm
    9903- `lp/pricing` to set the pricing strategy used in the LP solver
    9904- `numerics/barrierconvtol` to set the convergence tolerance in the barrier algorithm
    9905- `presolving/.../delay`
    9906- `propagating/.../delay`
    9907- `reading/cnfreader/dynamicconss`
    9908- `reading/mpsreader/dynamicconss`
    9909- `separating/.../delay`
    9910
    9911### Data structures
    9912
    9913- new possible result `SCIP_DELAYED` for `EXEC` method of separators, presolvers and propagators and `SEPA`, `PROP` and
    9914 `PRESOL` methods of constraint handlers
    9915
    9916Fixed bugs
    9917----------
    9918
    9919- fixed bug in MPS file reader
    9920- removed bug with applying reduced cost strengthening before pricing in all necessary variables
    9921- negated variables must also be reset in SCIPvarInitSolve()
    9922- fixed documentation of `CONSLOCK`-method (missing parameter `scip` in SCIPaddVarLocks())
    9923- included missing `objrelax.h` in includes of objscip.h
    9924- fixed bug that after a resolve and further preprocessing, existing primal solutions may get corrupted due to
    9925 aggregations or fixings that are possible due to the primal bound (given by the best solution)
    9926- fixed bug with primal bound becoming wrong, if in a prior run the optimal solution was found and the cutoff bound was
    9927 thereby reduced due to further domain propagation w.r.t. the objective function
    9928- fixed bug in SCIPisObjIntegral()
    9929- fixed bug in SCIPprintError() with `file == NULL`
    9930- heuristic's display character is now only shown the first time, the new solution was found
    9931- fixed bug that SCIPreadProb() doesn't discard the transformed problem
    9932- fixed bug with wrong euclidean norm calculation of row, if multiple coefficients for the same variable are added and
    9933 the sorting of the row was delayed with SCIProwDelaySort()
    9934- fixed bug with adding implications: wrong insertion position, if only the lower bound change was present but not the
    9935 upper bound change
    9936- fixed bug in SCIPvarAddImplics() with wrong variable used in varAdjustBd()
    9937- fixed bug in method reduced() of tclique_branch.c with sorting nodes in V
    9938
    9939- LP:
    9940 - removed bug with objective norm calculation and column variables not in the LP (pricing)
    9941 - LP error on forced LP resolve (due to 0 unfixed integers) now leads to an error (instead of accepting the pseudo
    9942 solution as feasible)
    9943 - fixed bug in CPLEX LP interface with dual norms
    9944
    9945- Presolving:
    9946 - fixed bug that presolving time is not counted to solving time, if presolving is called explicitly with SCIPpresolve()
    9947 - fixed bug where presolving fixings are counted even if the variable was already fixed
    9948 - removed bug with dual presolver, that declared a problem to be unbounded or infeasible, if it could fix a variable to
    9949 infinity even if its objective value is zero
    9950 - fixed bug in knapsack constraint handler that fixed variables are sometimes not removed in presolving
    9951
    9952- Numerics:
    9953 - fixed bug with unresolved numerical troubles in LP that don't render the LP useless at the current node
    9954 - fixed numerical bugs in rounding heuristic and rootsoldiving heuristic
    9955
    9956- Separator:
    9957 - fixed bugs in separation store with single coefficient cuts that are converted into bound changes
    9958 - at least one cut per separation round is added to the LP to avoid cycling, even if the cut is redundant
    9959 - fixed bug in SCIProwCalcIntegralScalar() with rows consisting of only continuous variables (appeared in gomory cut
    9960 separator on miplib/dcmulti.mps)
    9961 - fixed bug in linear constraint handler's knapsack relaxation separator
    9962 - fixed bugs in intobj separator
    9963 - fixed bug in cmir separator with empty rows
    9964 - fixed bug in implied bound cut separator: only implications between binary variables were generated before
    9965
    9966- Constraint Handlers:
    9967 - removed bug in knapsack constraint handler with merging multiple items if more than two items of the same variable
    9968 appear in the constraint
    9969 - removed bug in knapsack constraint handler with merging negated variables of equal weight at the end of the variables' array
    9970 - fixed bug in linear constraint handler with eventdatas, if the original constraint has no variables
    9971 - fixed bug that `CONSLOCK` method of constraint handlers that don't need constraints is not called
    9972 - fixeg bug in setppc constraint handler with pairs of aggregated variables in the same constraint
    9973 - fixed bug with globally deleting constraints, that have attached rows which are therefore not released in exitsol methods
    9974
    9975- Conflict analysis:
    9976 - removed conflict analysis of infeasible diving LP if pricing is activated
    9977 - made conflict analysis available in presolving stage (for probing conflicts)
    9978
    9979@section RN078 SCIP 0.7.8
    9980*************************
    9981
    9982Features
    9983--------
    9984
    9985- changed SCIProwCalcIntegralScalar() to a slightly different algorithm
    9986- improved knapsack relaxation in linear constraint handler separator to scale the constraint in order to get integral
    9987 coefficients instead of just rounding down all coefficients
    9988- improved presolving of linear constraint handler: aggregation of two constraints with equal coefficient vector into
    9989 single constraint
    9990- improved presolving of knapsack constraint handler: aggregation of equal or negated variables in same constraint
    9991
    9992- Plugins:
    9993 + priority of separators, propagators and presolvers decide whether the plugin is called before the corresponding
    9994 constraint handler methods or after: plugins with nonnegative priorities are called before, plugins with negative
    9995 priorities are called after the constraint handlers
    9996 + new plugin class for relaxators (external relaxations, that can be used in parallel with LP relaxations)
    9997 + if more than one result code applies to a plugin's execution, it should return the one that is higher in the call's
    9998 documentation list
    9999
    10000Interface changes
    10001-----------------
    10002
    10003- even in optimized mode, the simple functions that are implemented as defines in the include files exist in the
    10004 library, s.t. one can include the include files without `NDEBUG` and use the optimized library
    10005
    10006### New and changed callbacks
    10007
    10008- new branching rule plugin methods `INITSOL` and `EXITSOL`
    10009
    10010### Deleted and changed API functions
    10011
    10012- removed SCIPisFeasible(); use !SCIPisFeasNegative() instead
    10013- SCIPisIntegral(), SCIPisFracIntegral(), SCIPfloor(), SCIPceil() and SCIPfrac() don't use the feasibility
    10014 tolerance anymore (default: 1e-06); instead, they are using epsilon (default: 1e-09); instead, for handling
    10015 integrality of a variable `in feasibility tolerances`, new methods SCIPisFeasIntegral(), SCIPisFeasFracIntegral(),
    10016 SCIPfeasFloor(), SCIPfeasCeil() and SCIPfeasFrac() should be used
    10017- in LPI, the semantics of SCIPlpiHasPrimalRay() and SCIPlpiHasDualRay() changed: methods return TRUE, if a ray exists
    10018 and the solver can return it; new methods SCIPlpiExistsPrimalRay() and SCIPlpiExistsDualRay() check whether a ray
    10019 exists without checking, if the solver knows and can return the ray
    10020
    10021### New API functions
    10022
    10023- SCIPvarIsInLP()
    10024- SCIPgetLPColumnObjval() and SCIPgetLPLooseObjval()
    10025- SCIPcalcIntegralScalar() with arbitrary array of Real values
    10026- SCIPaddCoefKnapsack() in knapsack constraint handler
    10027- SCIPisScalingIntegral() to check, whether the scaling of a value would lead to an integral value, measured
    10028 against epsilon which is also scaled by the same scalar
    10029- SCIPgetRealarrayMinIdx(), SCIPgetRealarrayMaxIdx(), SCIPgetIntarrayMinIdx(), SCIPgetIntarrayMaxIdx(),
    10030 SCIPgetBoolarrayMinIdx(), SCIPgetBoolarrayMaxIdx(), SCIPgetPtrarrayMinIdx() and SCIPgetPtrarrayMaxIdx()
    10031- SCIPbsortPtrInt() and SCIPbsortPtrIntInt()
    10032- SCIPvarWasFixedAtIndex()
    10033- SCIPaddConflictBd()
    10034- SCIPprintMemoryDiagnostic()
    10035- SCIPfindObj...() and SCIPgetObj...() in C++ wrapper interface to get the corresponding plugin object
    10036
    10037### Changed parameters
    10038
    10039- slightly changed the meaning of parameter `presolving/abortfac` a value of 0 now means to abort presolving only after
    10040 no more change has been found
    10041
    10042Fixed bugs
    10043----------
    10044
    10045- assigning a value to a fixed variable in a solution with SCIPsetSolVal() does not return an error anymore, if the
    10046 value is equal to the fixed value of the variable
    10047- removed bug in SCIPisScalingIntegral()
    10048- removed bugs with calling SCIPtightenVarLb(), SCIPtightenVarUb(), SCIPinferVarLbCons(), SCIPinferVarUbCons(),
    10049 SCIPinferVarLbProp() and SCIPinferVarUbProp() in `PROBLEM` stage
    10050
    10051- (Re)solving:
    10052 - solving loop is now immediately aborted, if a node on the active path is marked to be cut off
    10053 - removed bug in resolving an interrupted problem, after the last solved node was cut off
    10054 - removed bug with infinite solving loop if LP solving is turned off
    10055 - removed bug with aborted solving in root node (e.g. due to time limit) that is tagged to be restarted
    10056
    10057- Branching:
    10058 - fixed bug in all-fullstrong branching with getting strong branching information for columns not in current LP
    10059 - implemented missing case in solve.c with branching rules that add constraints
    10060
    10061- Numerics:
    10062 - changed numerics for integrality check of coefficients (fixed bug with accumulated errors in rows s.t. the row's
    10063 activity is no longer integral although the row is marked being integer)
    10064 - slightly changed numerics in linear constraint handler presolving to fix a bug with coefficients detected to be scaled
    10065 to an integral value, that are not integral after scaling due to a large scalar that increased the integrality gap to
    10066 a value larger than epsilon
    10067
    10068- Constraint handlers:
    10069 - fixed bugs in consdataSwitchWatchedVars() of `or` and `and` constraint handlers
    10070 - fixed wrong assertion in xor constraint handler with switching both watched variables to unwatched
    10071 - fixed bugs in constraint handlers (and, logicor, or, setppc, xor) with calling conflict analysis during presolving
    10072 - removed bug in knapsack constraint handler that appears if a variable is fixed to zero in knapsack presolving, which
    10073 triggers a variable of the same knapsack to be fixed to one due to aggregation
    10074
    10075- Presolving:
    10076 - removed bug in knapsack presolver
    10077 - fixed bug in presolving with wrong number of newly fixed/aggregated/... variables/bounds/... after a restart
    10078
    10079@section RN077 SCIP 0.7.7
    10080*************************
    10081
    10082Features
    10083--------
    10084
    10085- infeasible LPs in diving now produce conflict clauses (if LP conflict analysis is enabled)
    10086- conflict analysis was slightly modified
    10087- slightly changed aging strategy of logic or constraint handler
    10088
    10089Interface changes
    10090-----------------
    10091
    10092### Deleted and changed API functions
    10093
    10094- method SCIPgetGap() and SCIPgetTransGap() now return infinity, if primal and dual bound have opposite sign (this
    10095 removes the oddness with the gap increasing while the dual bound approaches zero)
    10096
    10097### New API functions
    10098
    10099- added methods SCIPgetVarsLogicor() and SCIPgetNVarsLogicor() in logic or constraint handler
    10100
    10101### Changed parameters
    10102
    10103- `lp/colagelimit` and `lp/rowagelimit` may now be set to -1 to disable deletion of columns/rows due to aging
    10104
    10105Build system
    10106------------
    10107
    10108### Makefile
    10109
    10110- the file names in the archive file are now preceeded with a directory `scip-<version>/`
    10111- the compiler is now also represented in the LP solver library names (e.g. you have to rename the softlink
    10112 `libcplex.linux.x86.a` to `libcplex.linux.x86.gnu.a`)
    10113
    10114Fixed bugs
    10115----------
    10116
    10117- removed bug in conflict analysis that appears if the conflict is only active at the current depth level
    10118- missing SCIPlpiIsPrimalFeasible() and SCIPlpiIsDualFeasible() implemented in lpi_spx.cpp and lpi_spx121.cpp
    10119- removed preprocessing of linear constraint pairs with modifiable constraints
    10120
    10121- Asserts:
    10122 - removed wrong assert `assert(eventfilter->len == 0 || eventfilter->eventmask != 0x00000000)` from event.c
    10123 - removed wrong assert in conflict analysis (appeared on analyzing diving LP conflicts with both bounds of a non-binary variable changed)
    10124
    10125@section RN076 SCIP 0.7.6
    10126*************************
    10127
    10128Features
    10129--------
    10130
    10131- creation of reconvergence clauses in conflict analysis
    10132- first node of each plunging is not treated as plunging node w.r.t. calling primal heuristics
    10133- improved performance of logic or constraint handler due to better watched variables handling
    10134
    10135Interface changes
    10136-----------------
    10137
    10138### Deleted and changed API functions
    10139
    10140- changed SCIPcatchVarEvent() and SCIPdropVarEvent()
    10141- SCIPstage() is now called SCIPgetStage()
    10142- SCIPprintStatus() is now called SCIPprintStage()
    10143
    10144### New API functions
    10145
    10146- SCIPgetActivityLinear() in linear constraint handler
    10147- SCIPgetFeasibilityLinear() in linear constraint handler
    10148- SCIPchgVarBranchDirection()
    10149- SCIPvarGetBranchDirection()
    10150- SCIPgetStatus() returns the solution status
    10151- SCIPprintStatus() outputs the solution status (beware, that the old SCIPprintStatus() method is now called SCIPprintStage())
    10152
    10153### Changed parameters
    10154
    10155- changed default frequency offset of pscostdiving `heuristics/pscostdiving/freqofs` to 2 and frequency offset of fracdiving
    10156 `heuristics/feaspump/freqofs` to 0 in order to not call pscostdiving in root node, where nearly all pseudo costs are uninitialized.
    10157
    10158### New parameters
    10159
    10160- new parameter `separating/efficacynorm` to choose between Euclidean, maximum, sum and discrete norm in efficacy
    10161 calculation
    10162
    10163### Data structures
    10164
    10165- new possible result code `SCIP_DELAYED` for primal heuristics
    10166
    10167Fixed bugs
    10168----------
    10169
    10170- removed bugs in CLP Solver interface
    10171- SCIP returned `gap limit reached` even if the problem was solved to optimality, if the optimal solution was found at a
    10172 node with lower bound equal to the global lower bound
    10173- after conversion of the focus node into a junction (e.g. in case of numerical troubles while solving the node's LP), the child
    10174 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)
    10175
    10176- Variables:
    10177 - bug reconvergence clauses in conflict analysis if bounds on non-binary variables were the reason for the fixing of the
    10178 uip to create a reconvergence clause for
    10179 - wrong sub calls in SCIPvarGet...CurrentRun() for aggregated variables
    10180 - variables' conflict set counter was not reset when the problem was resolved again
    10181
    10182Known bugs
    10183----------
    10184
    10185- unbounded models lead to an error
    10186- air04 and air05 return wrong optimal value (1 too large): possibly due to strong branching or setppc propagation?
    10187
    10188@section RN075 SCIP 0.7.5
    10189*************************
    10190
    10191Miscellaneous
    10192-------------
    10193
    10194- started change log*/