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 RN1000 SCIP 10.0.0
    4***************************
    5
    6Features and Performance Improvements
    7-------------------------------------
    8
    9### Exact Solving
    10- added numerically exact solving mode for mixed-integer linear programs to the core framework including certification of branch-and-bound phase
    11- core extensions:
    12 - new wrapper struct SCIP_RATIONAL for rational arithmetic currently based on Boost, GMP, and MPFR
    13 - new data structure SCIP_LPEXACT for handling rational LP relaxation and computing safe dual bounds
    14 - new interfaces to exact LP solvers SoPlex and QSopt_ex
    15 - safe dualproof version of conflict analysis
    16 - new data structure SCIP_CERTIFICATE for certificate printing/proof logging
    17- new plugins:
    18 - new constraint handler "exactlinear" for handling linear constraints with rational data
    19 - new constraint handler "exactsol" to post-process and repair solutions from floating-point heuristics
    20- plugins revised for numerically exact solving mode:
    21 - adjusted readers for MPS, LP, CIP, OPB/WBO, and ZIMPL files
    22 - extended presolver "milp" to perform rational presolving with PaPILO
    23 - adjusted constraint handler "integral" and default reliability pseudo-cost branching rule "relpscost"
    24 - extended Gomory cut separator to separate and certify numerically safe MIR cuts
    25 - adjusted all primal heuristics (except for five dedicated MINLP heuristics)
    26- new interfaces to exact LP solvers SoPlex and QSopt_ex
    27
    28### Symmetry Handling
    29- 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
    30- Dejavu can be used to compute symmetries; the source code is shipped with SCIP and incorporates sassy
    31- implemented symmetry detection callbacks for disjunction and superindicator constraint handlers
    32- detailed information about applied symmetry handling techniques can be printed to the terminal
    33- improve memory usage by introducing different constraint handlers for full orbitopes and packing/partitioning orbitopes
    34- symmetry detection no longer treats implicit integer variables separately, but computes symmetries based on the variable type inferred from variable bounds and implied integrality
    35- extended the statistics to also include information about the number of variables (per type) affected by symmetry
    36- implemented method to compute new permutations from a given list of symmetry group generators
    37- 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;
    38 this should reduce the size of copies of the presolved problem
    39- simplified symmetry detection graphs in case all edges have the same color
    40
    41### Presolve
    42- 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
    43- 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
    44- added support for (transposed) network matrix detection
    45- allow multi-aggregation of unbounded slack variables, which may enable more bound tightening due to a reduction in the number of unbounded variables
    46- resolve all fixings in xor constraints also for an available integer variable
    47
    48### Conflict Analysis
    49- added generalized resolution conflict analysis that operates directly on linear constraints instead of conflict graphs
    50- disabled dualsol and dualray conflict upgrades to maintain conflict store
    51- apply general conflict upgrades in conflict store
    52
    53### Cutting Planes
    54- added a new separator "flower" to generate flower cuts from AND constraints and nonlinear product expressions
    55- added functionality to deal with hypergraphs by means of efficient access to vertices, edges, and intersections edges
    56
    57### Primal Heuristics
    58- added decomposition kernel search (DKS) heuristic (disabled by default), which implements a kernel search framework;
    59 it can be used both as a construction heuristic as well as an improvement heuristic; existing decomposition information can be utilized
    60- reduced maximal fraction of diving LP iterations relative to total node LP iterations
    61
    62### Branching
    63- added a dynamic max-lookahead criterion for strong branching; a probability distribution is fitted to the observed candidate gains and
    64 evaluating further candidates stops when the expected tree-size reduction no longer justifies the LP evaluation cost
    65- added new fields in history to store ancestral pseudo cost updates, used in the pseudo costs branching rule to compute discounted pseudo costs
    66
    67### Nonlinearity
    68- added an interface to the NLP solver CONOPT
    69- implemented columnwise Jacobian sparsity computation in the NLP oracle
    70- extended SOC detection to simple bilinear constraints, e.g., x*y >= 1
    71
    72### Infeasibility Analysis
    73- added the possibility to search for irreducible infeasible subsystems (IIS)
    74- added new plugin type for finding irreducible infeasible subsystems (IIS)
    75- new iisfinder plugin "greedy", which implements a greedy addition and deletion based algorithm with dynamic batch sizing
    76
    77### Benders' Decomposition
    78- when solving a problem with additional decomposition information (for example, when reading a DEC file) and enabling decomposition/applybenders,
    79 the problem is now solved in a Benders' decomposition relaxator; instead of decomposing the original SCIP instance, the relaxator builds the decomposed problem in
    80 sub-SCIPs and solves it via default Benders' Decomposition; a solution to the original (undecomposed) problem is now made available by the relaxator;
    81 the SCIP shell dialog "display statistics" now also prints the statistics from solving the Benders' decomposition in the relaxator
    82- 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
    83- 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
    84
    85### Reading and Writing
    86- added a new data structure SCIP_DATATREE that holds serializable data and a function to export to a JSON file
    87- added ability to collect statistics from tables in a SCIP_DATATREE and write out as JSON file;
    88 dialog write statistics now writes a JSON file if name of file to write ends with .json
    89- added writing support for AMPL NL writer: currently only general and specialized linear and nonlinear constraints can be written
    90- added support for AND-constraints to GAMS writer
    91- simplify expressions of nonlinear constraints in MPS and LP writing to increase chance that they are recognized as quadratic
    92
    93### Applications
    94- New application "PBSolver" to solve pseudoboolean instances in OPB and WBO format while complying with PB competition rules
    95- Coloring: new parameter branching/coloring/strategy to choose the least/most fractional variable for branching
    96
    97### Miscellaneous
    98- do not allow non-root restarts when no global fixings were found
    99- reimplemented SCIPvarGetActiveRepresentatives() by using dense arrays to avoid repeated resorting
    100- avoid unnecessary calls of constraint handlers components, benders, benderslp, propagator genvbounds, and heuristics ofins, subnlp, nlpdiving, indicator
    101- inlined SCIPgetStatus() to reduce computational overhead
    102- variable data pointer are now copied if no copy routine was supplied
    103- add check that parameter value pointers are unique, i.e., no two are the same
    104
    105Interface changes
    106-----------------
    107
    108### Deprecations
    109
    110- The variable type \ref SCIP_VARTYPE_IMPLINT is deprecated in favor of a new enum \ref SCIP_IMPLINTTYPE that indicates if a
    111 variable is implied integral, independent of the variable type.
    112 The problem variable arrays is still sorted as:
    113 ```
    114 (0) | binary | integer | implied integral | continuous | (nvars),
    115 ```
    116 where the implied integral subsection is now subdivided into 3 parts (left to right):
    117 ```
    118 | binary implied integral | integer implied integral | continuous implied integral |
    119 ```
    120 SCIP 10 still supports using `SCIP_VARTYPE_IMPLINT` for backward compatibility, see SCIPcreateVar() and SCIPchgVarType() for more details.
    121 SCIP 11 will remove `SCIP_VARTYPE_IMPLINT`.
    122- SCIPsubversion() is deprecated and will be removed
    123
    124### New and changed callbacks
    125
    126- added SCIP_DECL_IISFINDERCOPY(), SCIP_DECL_IISFINDERFREE(), and SCIP_DECL_IISFINDEREXEC() for iisfinder implementations
    127- 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
    128- 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;
    129 if SCIP_DECL_TABLEOUTPUT() is omitted, then SCIP tries to print a table from the data given by SCIP_DECL_TABLECOLLECT()
    130- 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,
    131 that is, an implied integral type of an auxiliary variable if the expression were assigned to it
    132- added argument `filename` to the SCIP_DECL_READERWRITE() callback in the 4th position
    133- 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
    134
    135### Deleted and changed API functions
    136
    137- SCIPgetProbvarLinearSum(): remove parameter `mergemultiples`, which is now automatically true with the new implementation of SCIPvarGetActiveRepresentatives()
    138- `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
    139- SCIPcreateConsPseudobooleanWithConss(), SCIPcreateConsPseudoboolean(), and SCIPcreateConsBasicPseudoboolean(): removed `intvar` from arguments because the non-linear objective reformulation with pseudoboolean constraints did not work
    140- SCIPcleanupConssLinear() and SCIPcleanupConssKnapsack(): added argument `ndelconss` to directly delete empty redundant constraints before creating problem matrix
    141- SCIPcopyPlugins(): added argument `copyiisfinders` (16th position)
    142- SCIPcreateConsOrbitope(): deleted two arguments and changed position of another argument
    143- SCIPvarCalcDistributionParameters(): argument `impltype` added (5th position)
    144- SCIPpermuteProb(): argument `permuteimplvars` has been replaced by new arguments `permutebinimplvars`, `permuteintimplvars`, and `permutecontimplvars`
    145- SCIPgetLPBranchCands(): implied integral variables with integrality constraints are included in `nlpcands` count and stored at the end of `lpcands`
    146- SCIPgetNLPBranchCands(): implied integral variables with integrality constraints are included
    147- SCIPgetSolVarsData(): argument `nimplvars` has been replaced by new arguments `nbinimplvars`, `nintimplvars`, and `ncontimplvars`
    148- SCIPexprSetIntegrality(): replaced argument `SCIP_Bool integral` by `SCIP_IMPLINTTYPE integrality` (4th position)
    149- 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
    150- 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
    151- `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
    152- SCIPcalcMIR(), SCIPcutGenerationHeuristicCMIR(), SCIPcalcStrongCG(): replaced boolean argument `usevbds` by an integer argument `vartypeusevbds`, which indicates for which variables variable bound substitution should be performed
    153- `SCIPchgAndConsCheckFlagWhenUpgr()`, `SCIPchgAndConsRemovableFlagWhenUpgr()`: removed to keep upgrade flags consistent; use SCIPconsAddUpgradeLocks() to control upgrades instead
    154- SCIPaddConflict(): argument `cons` changed to type `SCIP_CONS**` to release the conflict constraint in a clean way
    155- SCIPprintOrigProblem() and SCIPprintTransProblem(): moved declaration moved from scip_solvingstats.h to scip_prob.h
    156- `SCIPnlpiOracleGetJacobianSparsity()`: renamed to SCIPnlpiOracleGetJacobianRowSparsity() and added arguments `colnlflags` and `nnlnz`
    157- SCIPnlpiOracleGetHessianLagSparsity(), SCIPnlpiOracleEvalHessianLag(): added argument `colwise`
    158- 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
    159- `SCIPhashtableClear()`, `SCIPcomputeArraysIntersection()`, `SCIPcomputeArraysSetminus()`,
    160 `SCIPgetRandomInt()`, `SCIPgetRandomReal()`, `SCIPgetRandomSubset()`, `SCIPpermuteIntArray()`, `SCIPpermuteArray()`,
    161 `SCIPvarGetLbAtIndex()`, `SCIPvarGetUbAtIndex()`, `SCIPvarGetBdAtIndex()`, `SCIPvarWasFixedAtIndex()`,
    162 `SCIPaddCut()`, `SCIPcreateRow()`, `SCIPcreateEmptyRow()`, `SCIPlpfeastol()`, `SCIPchgLpfeastol()`,
    163 `SCIPsolveParallel()`, `SCIPwriteImplicationConflictGraph()`, `SCIPallowDualReds()`, `SCIPallowObjProp()`,
    164 `SCIPcreateConsQuadratic()`, `SCIPcreateConsBasicQuadratic()`, `SCIPaddConstantQuadratic()`, `SCIPaddLinearVarQuadratic()`, `SCIPaddQuadVarQuadratic()`, `SCIPaddQuadVarLinearCoefQuadratic()`, `SCIPaddSquareCoefQuadratic()`, `SCIPaddBilinTermQuadratic()`, `SCIPgetNlRowQuadratic()`, `SCIPchgLhsQuadratic()`, `SCIPchgRhsQuadratic()`,
    165 `SCIPcreateConsAbspower()`, `SCIPcreateConsBasicAbspower()`, `SCIPgetNlRowAbspower()`,
    166 `SCIPcreateConsSOC()`, `SCIPcreateConsBasicSOC()`, `SCIPgetNlRowSOC()`: removed, previously deprecated
    167- `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
    168- `SCIPselectPtrRealReal()`, `SCIPselectWeightedPtrRealReal()`, `SCIPsortPtrRealReal()`, `SCIPreoptAddGlbCons()`, `SCIPreoptnodeGetSplitCons()`, `SCIPcomprInitsol()`, `SCIPcomprExitsol()`,
    169 `SCIPcertificatePrintSolExact()`, `SCIPincludeExLinconsUpgrade()`, `SCIPupgradeConsExactLinear()`, `SCIPgetRunningErrorStatsExactLinear()`, `SCIPcolExactGetMinPrimsol()`, `SCIPrationalarrayClear()`, `SCIPgetRowActivityExact()`, `SCIPgetRowFeasibilityExact()`, `SCIPvalsExactFree()`,
    170 `SCIPbendersApplyDecomposition()`, `SCIPgetExprsdataBilinear()`, `SCIPgetVarCoefChg()`, `SCIPvarGetOrigIndex()`, `SCIPallocateSymgraphConsnodeperm()`, `SCIPwriteSto()`: removed the declaration because there was no implementation
    171
    172### New API functions
    173
    174Exact Solving:
    175- SCIPenableExactSolving(): enable and disable exact solving mode; see below for a list of many new API functions added to support exact solving
    176- `SCIPrational*()`: create and compute with rational numbers
    177- SCIPintervalSetRational(): compute interval of rational number
    178- SCIPstrToRationalValue(), SCIPrationalStrLen(), SCIPrationalToString(): handle string conversion of a rational number
    179- SCIPrationalChgInfinity(), SCIPrationalGetInfinity(): handle infinity threshold of rational numbers
    180- `SCIPrationalarray*()`: create and handle rational arrays
    181- SCIPisExact(): query whether exact solving is enabled
    182- SCIPisCertified(): query whether certification is enabled
    183- `SCIPcertify*()`, `SCIP*Certificate()`: support proof logging/certificate generation
    184- `SCIP*MarkExact()`: mark plugins as safe to use in exact solving mode
    185- `SCIP*IsExact()` : query whether objects are ready for exact solving
    186- SCIPincludeConshdlrExactLinear(): include the constraint handler for exact linear constraints
    187- `SCIP*ExactLinear()`: create, query, and modify an exact linear constraint
    188- SCIPconsGetLhsExact()`, SCIPconsGetRhsExact(), SCIPgetConsValsExact(): query exact sides and coefficients of a linear constraint
    189- `SCIPmatrix*Exact()`: query matrix information in rational arithmetic
    190- SCIPaddVarExactData(): add exact data to an existing variable
    191- `SCIPvarGet*Exact()`: query variable information in rational arithmetic
    192- `SCIP*Var*Exact*()`: handle variables exactly
    193- SCIPchgVarLbExactDive(), SCIPchgVarUbExactDive(), SCIPisExactDivePossible(), SCIPinExactDive(), SCIPstartExactDive(), SCIPendExactDive(), SCIPsolveExactDiveLP(): handle exact LP diving
    194- SCIPlpExactDiving(): query whether exact LP is in diving mode
    195- SCIPlpExactIsSolved(): query whether the exact LP is solved
    196- SCIPwriteLPexact(): write the exact LP
    197- `SCIPcolExact*()`, `SCIProwExact*()`: handle the exact LP columns and rows
    198- `SCIPlpiExact*()`: handle the exact LP interface
    199- SCIPgetNExactLPs(): query the number of exact LP solves
    200- SCIPgetLPExactSolstat(), SCIPgetLPExactObjval(): query solution status and objective value of the exact LP
    201- SCIPaddOrigObjoffsetExact(), SCIPgetOrigObjoffsetExact(): add and query exact objective offset of the original problem
    202- `SCIP*Sol*Exact()`: create and handle exact solutions
    203- SCIPsolOrigAddObjvalExact(): add to exact objective of original solution
    204- SCIPincludeConshdlrExactSol(): include the exact post-processing for solutions
    205- `SCIP*Row*Exact*()`: create and handle exact LP rows
    206- `SCIPaggrRow*Safely()`: compute safe real row aggregation
    207- SCIPallowNegSlack(): query whether negative slacks are allowed
    208- SCIPbranchLPExact(): branch exactly on the LP solution
    209- SCIPeventGetOldboundExact(): query exact old bound for a bound change event
    210- SCIPcalcIntegralScalarExact(): compute a scalar so that all given values become exactly integral
    211- SCIPnodeGetLowerboundExact(): query the exact lower bound of a node
    212- SCIPgetCutoffboundExact(), SCIPgetLowerboundExact(), SCIPgetUpperboundExact(), SCIPgetDualboundExact(), SCIPgetPrimalboundExact(): query exact best bounds on optimal value
    213- SCIPvalidateSolveExact(): validate the exact solve
    214
    215Implicit Integrality:
    216- SCIPincludePresolImplint(): include the new implied integral presolver
    217- SCIPcreateVarImpl(), SCIPcreateObjVarImpl(): behave identically to SCIPcreateVar() and SCIPcreateObjVar(), respectively, but have an additional argument for the new implied integral type flag (8th position)
    218- SCIPchgVarImplType(), SCIPvarGetImplType(), SCIPvarIsImpliedIntegral(), SCIPcolIsImpliedIntegral(): control and query implied integrality
    219- SCIPvarIsNonimpliedIntegral(): query whether a variable is integral but not implied integral
    220- SCIPgetNOrigBinImplVars(), SCIPgetNOrigIntImplVars(), SCIPgetNOrigContImplVars(): query the number of implied integral variables of each type in original problem;
    221 note that SCIPgetNOrigBinVars(), SCIPgetNOrigIntVars(), and SCIPgetNOrigContVars() no longer include the implied integral variables in their counts
    222- SCIPgetNBinImplVars(), SCIPgetNIntImplVars(), SCIPgetNContImplVars(): query the number of implied integral variables of each type in current problem;
    223 note that SCIPgetNBinVars(), SCIPgetNIntVars(), and SCIPgetNContVars() no longer include the implied integral variables in their counts
    224- SCIProwGetNumImpliedIntCols(): query number of implied integer columns in a row
    225- SCIPvarsCountTypes(): determine the variable type count distribution for an array of variables
    226- SCIPeventGetOldImplType(), SCIPeventGetNewImplType(): query implication type change for the new event \ref SCIP_EVENTTYPE_IMPLTYPECHANGED
    227- SCIPexprGetIntegrality(): provides information about the presence of weakly implied integral variables, in addition to the existing function SCIPexprIsIntegral()
    228
    229Symmetry Handling:
    230- SCIPincludeConshdlrOrbitopePP(), SCIPcreateConsOrbitopePP(), SCIPcreateConsBasicOrbitopePP(), SCIPincludeConshdlrOrbitopeFull(), SCIPcreateConsOrbitopeFull(), SCIPcreateConsBasicOrbitopeFull()
    231- SCIPdisplaySymmetryGenerators(), SCIPdialogExecDisplaySymmetry(): display generators of symmetry group
    232- SCIPclearSymgraph(), SCIPcopySymgraphAsSubgraph(): clear and copy a symmetry detection graph, respectively
    233
    234Conflict Analysis:
    235- SCIPgetNResConflictConssApplied(): return the number of generalized resolution conflict constraints added to the problem
    236- SCIPaddConsUpgrade(): add constraint upgrades while informing the conflict store
    237
    238Branching:
    239- SCIPhistoryUpdateAncPseudocost(), SCIPvarUpdateAncPseudocost(): update the ancestral pseudo cost fields in variable history
    240- SCIPhistoryGetAncPseudocost(), SCIPhistoryGetAncPseudocostCount(), SCIPhistoryIsAncPseudocostEmpty(), SCIPgetVarAncPseudocostVal(), SCIPvarGetAncPseudocost(): retrieve values related to ancestral pseudo cost fields in variable history
    241- SCIPgetAvgDPseudocostScore(), SCIPgetVarDPseudocostScore(): compute discounted pseudo cost scores using ancestral pseudo costs
    242- SCIPboundchgGetLPSolVal(): access LP solution value in the branching data of a bound change
    243
    244Cutting Planes:
    245- SCIPincludeSepaFlower(): include the new flower cut separator
    246- SCIPconsCreateRow(): to create and return the row of a linearly representable constraint
    247- SCIPcreateRowKnapsack(), SCIPcreateRowLinear(), SCIPcreateRowLogicor(), SCIPcreateRowSetppc(), SCIPcreateRowVarbound(): create and get the row of linearly representable constraints
    248
    249Benders' Decomposition:
    250- SCIPincludeRelaxBenders(): include the Benders' decomposition relaxator
    251- SCIPgetMasterProblemRelaxBenders(): retrieve master problem SCIP instance from the Benders' decomposition relaxator
    252- SCIPbendersGetSubproblemMasterVars(), SCIPbendersGetNSubproblemMasterVars(), SCIPbendersGetSubproblemMasterVarsData(): get the linking master variables for each subproblem and details about the number of binary and integer variables
    253- SCIPsetBendersObjectiveType(), SCIPbendersGetObjectiveType(): set and get the objective type for the aggregation of the Benders' decompostion subproblems
    254- SCIPbenderGetMasterAuxiliaryVar(): get master auxiliary variable
    255- SCIPfreeReaderdataCor(), SCIPfreeReaderdataTim(), SCIPfreeReaderdataSto(): free the data for the COR, TIM, and STO readers, respectively; these readers are all used when reading an SMPS instance
    256
    257IIS:
    258- SCIPincludeIISfinder(), SCIPincludeIISfinderBasic(), SCIPsetIISfinderCopy(), SCIPsetIISfinderFree(), SCIPgenerateIIS(), SCIPfindIISfinder(), SCIPgetIISfinders(), SCIPgetNIISfinders(), SCIPsetIISfinderPriority(), SCIPgetIIS()
    259- SCIPiisfinderGetName(), SCIPiisfinderGetData(), SCIPiisfinderGetDesc(), SCIPiisfinderGetPriority(), SCIPiisfinderSetData(), SCIPiisfinderGetTime(), SCIPiisfinderInfoMessage(), SCIPiisGetTime(), SCIPiisIsSubscipInfeasible(), SCIPiisIsSubscipIrreducible(), SCIPiisGetNNodes(), SCIPiisSetSubscipInfeasible(), SCIPiisSetSubscipIrreducible(), SCIPiisAddNNodes(), SCIPiisGetRandnumgen(), SCIPiisGetSubscip(), SCIPiisGreedyMakeIrreducible()
    260
    261Hypergraphs:
    262- SCIPhypergraphCreate(), SCIPhypergraphClear(), SCIPhypergraphFree(), SCIPhypergraphAddVertex(), SCIPhypergraphAddEdge(), SCIPhypergraphIsValid(), SCIPhypergraphComputeVerticesEdges(): build and delete hypergraphs
    263- SCIPhypergraphComputeOverlaps(), SCIPhypergraphOverlapFind(), SCIPhypergraphIntersectEdges(), SCIPhypergraphComputeOverlapsEdges(), SCIPhypergraphComputeVerticesOverlaps(), SCIPhypergraphOverlapsDisjoint(): handle pair-wise intersections of hyperedges
    264- SCIPhypergraphIterInit(), SCIPhypergraphIterClear(), SCIPhypergraphIterStart(), SCIPhypergraphIterValid(), SCIPhypergraphIterNext(), SCIPhypergraphIterBase(), SCIPhypergraphIterAdjacent(), SCIPhypergraphIterMinVertex(), SCIPhypergraphIterOverlap(): iterate over adjacent edges
    265- SCIPhypergraphHasVertexEdges(), SCIPhypergraphHasOverlaps(), SCIPhypergraphHasOverlapsEdges(), SCIPhypergraphHasVertexOverlaps(), SCIPhypergraphGetNVertices(), SCIPhypergraphGetNEdges(), SCIPhypergraphBlkmem(), SCIPhypergraphGetNOverlaps(),
    266 SCIPhypergraphVertexData(), SCIPhypergraphEdgeData(), SCIPhypergraphEdgeSize(), SCIPhypergraphEdgeVertices(), SCIPhypergraphVertexEdgesFirst(), SCIPhypergraphVertexEdgesBeyond(), SCIPhypergraphVertexEdgesGetAtIndex(), SCIPhypergraphOverlapData(),
    267 SCIPhypergraphOverlapSize(), SCIPhypergraphOverlapVertices(), SCIPhypergraphEdgesOverlapsFirst(), SCIPhypergraphEdgesOverlapsBeyond(), SCIPhypergraphEdgesOverlapsGetAtIndex(), SCIPhypergraphOverlapsEdgesFirst(), SCIPhypergraphOverlapsEdgesBeyond(),
    268 SCIPhypergraphOverlapsEdgesGetAtIndex(), SCIPhypergraphVertexOverlapsFirst(), SCIPhypergraphVertexOverlapsBeyond(), SCIPhypergraphVertexOverlapsGetAtIndex(): query information about vertices, edges, and overlaps as well as their incidences
    269
    270Network Matrix:
    271- SCIPnetmatdecCreate(), SCIPnetmatdecFree(): create and delete a network matrix decomposition
    272- SCIPnetmatdecTryAddCol(), SCIPnetmatdecTryAddRow(): add columns and rows to a matrix decomposition
    273- SCIPnetmatdecContainsRow(), SCIPnetmatdecContainsColumn(): check if a matrix decomposition contains the given row or columns
    274- SCIPnetmatdecRemoveComponent(): remove connected components from a matrix decomposition
    275- SCIPnetmatdecCreateDiGraph(): expose underlying digraph of matrix decomposition
    276- SCIPnetmatdecIsMinimal(), SCIPnetmatdecVerifyCycle(): check whether certain invariants of a matrix decomposition are satisfied and used in tests
    277
    278Solve Statistics:
    279- functions to create, modify, and free SCIP_DATATREE objects and to print as JSON or table (see pub_datatree.h and scip_datatree.h)
    280- `SCIPcollect*Statistics()`: for every `SCIPprint*Statistics()` in scip_solvingstats.h
    281- SCIPprintStatisticsJson(): output a JSON string of the table statistics data
    282
    283Nonlinearity:
    284- SCIPincludeNlpSolverConopt(), SCIPsetLicenseConopt(), SCIPgetSolverNameConopt(), SCIPgetSolverDescConopt(), SCIPisConoptAvailableConopt(): interact with the new CONOPT interface
    285- SCIPnlpiOracleGetConstraintLinearCoef(): get a linear coefficient of a variable in a given constraint in the NLP oracle
    286- SCIPnlpiOracleGetJacobianColSparsity(): get the column-wise sparsity pattern of the Jacobian from the NLP oracle
    287- SCIPnlpiOracleGetObjGradientNnz(): get indices of nonzeroes in the objective gradient
    288- `src/objscip/objexprhdlr.h`: C++ interface for expression handlers
    289
    290Miscellaneous:
    291- SCIPsortRealPtrPtr(), ..., SCIPsortDownIntIntIntReal(): new sorting functions
    292- `SCIPdebugClearSol()`: clear the debug solution
    293- SCIPdialogIsHidden(), SCIPdialogSetHidden(): determine whether a dialog should be hidden in help list
    294- SCIPstatusName() to get a string representation of SCIP_STATUS
    295- SCIPconshdlrSetNeedsCons(): set whether constraint handler callbacks should also be called if there are no constraints
    296- SCIPpropSetTimingmask(): set timing mask of a propagator
    297- SCIPhashmapInsertLong(), SCIPhashmapGetImageLong()
    298- SCIPvarGetMinAggrCoef(), SCIPvarGetMaxAggrCoef(): get bounds on absolute aggregation coefficients for a loose variable
    299- SCIPisVarAggrCoefAcceptable(): check whether bounds on aggregation coefficients would exceed thresholds when using a loose variable in another aggregation
    300- SCIPgetNRootIntFixings(): retrieve the number of integer fixings at the root node
    301- SCIPcollectMemoryGarbage(): explicitly trigger garbage collection on block memory; before SCIP 10, this was done in SCIPtransformProb()
    302
    303### Data Structures
    304
    305- added struct \ref SCIP_RATIONAL for rational number arithmetic
    306- added struct \ref SCIP_LPEXACT and many further data structures to support exact solving mode
    307- added structs \ref SCIP_IISFINDER, \ref SCIP_IISFINDERDATA, \ref SCIP_IIS
    308- added struct \ref SCIP_DATATREE to model generic serializable data; new enum \ref SCIP_DATATREE_VALUETYPE
    309
    310### Changes in Preprocessor Macros
    311
    312- `SCIP_EVENTTYPE_TYPECHANGED`: no longer generated if a variable becomes implied integral
    313- `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
    314- `SCIP_EVENTTYPE_DUALBOUNDIMPROVED`: new event that is generated whenever the global dual bound is improved
    315- `SCIP_EVENTTYPE_GAPUPDATED`: new event mask for catching updates in primal or dual bound
    316- `SCIP_PROPTIMING_NONE`: new propagator timing for never calling a propagator
    317- `SCIP_HEURTIMING_NONE`: new heuristic timing for never call a primal heuristic
    318- `strcasecmp`, `strncasecmp` (Windows builds): removed `#define` from scip/def.h; use SCIPstrcasecmp() and SCIPstrncasecmp() instead
    319- \ref SCIP_VERSION_SUB, `SCIP_SUBVERSION`: deprecated
    320- `SCIP_VARTYPE_IMPLINT_CHAR`: removed
    321- `NO_RAND_R`: removed its use
    322
    323### SCIP Shell
    324
    325- `help <command>` now allows to display information on specific command
    326- allow to hide certain commands in the help list
    327- added the (hidden) command "exit" to exit the shell
    328- added command `iis` to create an infeasible subsystem
    329- added `write/iis` dialog to write out the infeasible subsystem to file
    330- added `display/iis` dialog to write out the infeasible subsystem to console
    331
    332### Changed parameters
    333
    334- `heuristics/scheduler/heurtimelimit` removed to avoid indeterministic behavior of scheduler heuristic, uses main time limit instead
    335- removed parameters `constraints/orbitope/checkpporbitope`, `constraints/orbitope/sepafullorbitope`, `constraints/orbitope/forceconscopy`, which became superfluous
    336- removed `reading/gmsreader/signpower`
    337- removed `benders/default/numthreads`: multi-threading support for Benders' decomposition has been temporarily disabled
    338- restricted range of parameter `propagating/symmetry/sstleadervartype` to [1,7]; its new default value is 6
    339- `propagating/∗/timingmask` extended by setting 0 to disable propagators completely
    340- changed defaults of `constraints/components/propfreq` and `constraints/components/maxdepth` to -1 and 2147483647, respectively, to avoid unnecessary calls of components propagator by default
    341- changed frequencies for the following heuristics: shifting, gins, crossover, rins, randrounding
    342- changed default `maxlpiterquot` to 0.05 for all LP diving heuristics and feaspump, whereas adaptivediving uses 0.15 and rootsoldiving remains at 0.01
    343- changed default of `presolving/restartminred` to 0.05
    344- changed default of `presolving/immrestartfac` to 0.05
    345- removed parameters `propagating/symmetry/{nautymaxncells,nautymaxnnodes}`
    346- updated description of parameter `misc/usesymmetry`
    347
    348### New parameters
    349
    350- `exact/enable`: enable exact solving mode
    351- `exact/improvingsols`: whether only improving exact solutions should be considered
    352- `exact/safedbmethod`: method of safe dual bounding
    353- `exact/interleavedbstrat`: interleaving strategy between safe dual bounding and exact LP solving
    354- `exact/psdualcolselection`: project-and-shift strategy of dual column selection
    355- `exact/cutapproxmaxboundval`: maximal absolute bound for which coefficients in exact cuts should be approximated
    356- `exact/cutmaxdenom`: maximal denominator of coefficients in approximating exact cuts
    357- `exact/allownegslack`: whether negative slack variables in exact Gomory cuts should be used
    358- `exact/lpinfo`: whether the exact LP solver should display status messages
    359- `constraints/exact{linear,sol}/{sepafreq,propfreq,proptiming,eagerfreq,maxprerounds,delaysepa,delayprop,presoltiming}`: functionality of constraint handlers exactlinear and exactsol
    360- `constraints/exactlinear/sortvars`: whether binary variable coefficients should be sorted with decreasing absolute value in exactlinear constraints
    361- `constraints/exactlinear/{tightenboundsfreq,propcont,limitdenom,boundmaxdenom}`: propagation of exactlinear constraints
    362- `constraints/exactlinear/{maxrounds,maxroundsroot,maxsepacuts,maxsepacutsroot}`: separation of exactlinear constraints
    363- `constraints/exactsol/solbufsize`: size of solution buffer in exactsol handler
    364- `constraints/exactsol/{minimprove,checkfpfeasibility,checkcontimplint,abortfrac,unfixfrac}`: solution processing in exactsol handler
    365- `constraints/exactsol/maxstalls`: maximal number of consecutive unsuccessful reparations in exactsol handler
    366- `certificate/filename`, `certificate/maxfilesize`: certificate file
    367- `branching/pscost/discountfactor`, `branching/relpscost/discountfactor`: discount factor for ancestral pseudo costs in pscost and relpscost branching rules
    368- `branching/collectancpscost`: enable/disable recording of ancestral pseudo costs
    369- `branching/relpscost/dynamiclookahead`, `branching/relpscost/dynamiclookaheadquot`, `branching/relpscost/dynamiclookdistribution`, `branching/relpscost/minsamplesize`:
    370 configure the dynamic max-lookahead criterion for strong branching: enable flag, fraction threshold, distribution choice, and minimum sample size
    371- `constraints/cumulative/maxtime`: limit the time horizon and avoid integer overflow for unbounded variables
    372- `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
    373- `propagating/symmetry/handlesignedorbitopes`: whether to apply special symmetry handling techniques for orbitopes whose columns can be (partially) reflected
    374- `propagating/symmetry/usesimplesgncomp:` whether symmetry components all of whose variables are simultaneously reflected by a symmetry shall be handled by a special inequality
    375- `propagating/symmetry/dispsyminfo`: whether to print information about applied symmetry handling methods
    376- `propagating/symmetry/nautymaxlevel`: limit on depth level of Nauty's search tree
    377- `presolving/implint/convertintegers`: whether implied integrality should also be detected for enforced integral variables
    378- `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
    379- `presolving/implint/numericslimit`: limit for absolute integral coefficients beyond which the corresponding rows and variables are excluded from implied integrality detection
    380- `write/implintlevel`: whether integrality constraints should be written for implied integral variables (regarded by cip, mps, lp, rlp, pip, fzn, and gms writers)
    381- `iis/∗`
    382- `presolving/milp/enablecliquemerging`: whether to enable clique merging in PaPILO
    383- `presolving/milp/maxedgesparallel`: maximal number of edges in the parallel clique merging graph
    384- `presolving/milp/maxedgessequential`: maximal number of edges in the sequential clique merging graph
    385- `presolving/milp/maxcliquesize`: maximal size of cliques considered for clique merging
    386- `presolving/milp/maxgreedycalls`: maximal number of greedy max clique calls in a single thread
    387- `heuristics/dks/∗`: heuristic decomposition kernel search
    388- `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
    389- `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
    390- `conflict/usegenres`, `conflict/reduction`, `conflict/mbreduction`, `conflict/maxvarsfracres`, `conflict/resfuiplevels`, `conflict/fixandcontinue`, `conflict/maxcoefquot`: control generalized resolution conflict analysis
    391- `lp/minsolvedepth`: lower bound on the depth at which LPs are solved
    392- `reading/opbreader/maxintsize`: maximal intsize above which an OPB instance is rejected
    393- `reading/nlreader/binary`, `reading/nlreader/comments`: adjust writing of `nl` files
    394- `nlpi/conopt/priority`: priority of the CONOPT NLP solver
    395- `randomization/randomseedshiftmultiplier`: multiplier for the shift set by ``randomization/randomseedshift`;
    396 the shift is multiplied by (6*`randomseedshiftmultiplier`+1), with the default value for `randomseedshiftmultiplier` set to 10 now;
    397 this default value is expected to change with every major release; setting the parameter to 0 restores SCIP 9 behavior
    398
    399### Other Changes
    400
    401- removed LP solver interface `lpi_spx1`, which used the old SoPlex interface; renamed `lpi_spx2` to `lpi_spx`
    402- removed `cons_abspower.{h,c}`, `cons_quadratic.{h,c}`, and `cons_soc.{h,c}`
    403
    404Build system
    405------------
    406
    407- new option `SYM=dejavu` to choose Dejavu for computing symmetries
    408- changed the default for `TPI` to `tny`
    409- added build flag `CHECKSTAGE=auto` to control stage checks in API function calls
    410- removed `LPS` options `spx1` and `spx2`, only `LPS=spx` is available to select SoPlex now
    411- removed previously deprecated `PARASCIP` option, use `THREADSAFE=false` instead to disable thread-safety
    412
    413### Makefile
    414
    415- added build flag `EXACTSOLVE=<true|false|auto>` to turn exact solving mode on, off, or turn it on if all necessary dependencies are available
    416- 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
    417- added build flag `CONOPT` (default: false) to link to the CONOPT NLP solver
    418- link-time-optimization can be enabled on Linux and macOS with gcc and clang by setting `LTO=true`, default is false
    419- 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;
    420 changed default to `SANITIZE=false`
    421- default settings for makefile variables in `make.project` are now only used if variable hasn't been set already
    422- 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
    423- 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)
    424- `LPS=spx` is no longer mapped to `LPS=spx2`, which changes the name of the generated LPI libraries and binaries when using SoPlex
    425- removed `OPENSOURCE` flag
    426
    427### Cmake
    428
    429- added build flag `EXACTSOLVE=<on|off|auto>` to turn exact solving mode on, off, or turn it on if all necessary dependencies are available
    430- added build flag CONOPT (default: off) to link to the CONOPT NLP solver and variable `CONOPT_DIR` to specify the path to CONOPT
    431- link-time-optimization can be enabled if supported by compiler by using `-DLTO=on`, default is `off`
    432- replaced `SANITIZE_XYZ=(on|off)` options by `SANITIZE=(on|off|thread|address|memory)`;
    433 undefined behavior sanitizer is always enabled if not `SANITIZE=off` (the default)
    434- increased minimal required cmake version to 3.11
    435- scip-config.cmake now defines a variable `SCIP_COMPILE_FLAGS`, which could be used to compile code that builds against SCIP via cmake;
    436 currently, this only passes on the sanitizer flags that were used to build `libscip`
    437- removed automatic download and build of Bliss during cmake configuration when `-DSYM=(s)bliss`;
    438 a Bliss installation from https://github.com/scipopt/bliss can be specified with `-DBLISS_DIR`
    439- removed option `LEGACY`
    440
    441Fixed bugs
    442----------
    443
    444- fixed bug related to unreleased data for the Benders' decomposition framework; when reading an SMPS file and applying
    445 Benders' decomposition, data is created that was not correctly released; also, data within the Benders' decomposition
    446 framework was not appropriately reset; the data is now released/reset as expected
    447- to fix a bug where duplicate cuts from different constraint handlers were not recognized, `SCIPrealHash()` was changed
    448 to be stable around shortly representable numbers, and a numerical tolerance for comparing cutting plane efficacy for the aggregation
    449 separator is introduced
    450- accept fractional continuous implied integral variables in heuristic "completesol"
    451- invalidate activity with contradicting infinity contributions
    452- avoid integer overflow in cumulative constraints triggered by unbounded variables, see new parameter `constraints/cumulative/maxtime`
    453- allow negative update in SCIPconsAddUpgradeLocks() to unlock constraint upgrade
    454- fixed memory leaks when LP, MPS, and OPB/WBO readers abort unsuccessfully
    455- removed erroneous catching of objective-changed events in intobj separator; instead, the separator no longer executes within probing with changed objective function
    456- propagator dualfix no longer fixes variables to infinity to avoid issues when transferring the solution to the original problem
    457- track and check bounds on the coefficients that is used for a variable in aggregations of other variables to improve numerical stability
    458- 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
    459- aggregate integer variable to not in clique variable in cliquePresolve() of xor constraints to avoid infeasible solutions
    460- fixed memory leak in dynamic partition search primal heuristic
    461- fixed issue with file existence check in XML parser when SCIP was build with ZLIB support on Windows
    462- fixed thread-safety issue when using CppAD and user-defined expression handler
    463- fixed typo in `#pragma` directive of redistributed nauty.h
    464
    465Miscellaneous
    466-------------
    467
    468- removed 4th number in SCIP version; the new format is major.minor.patch
    469- changed sassy to the version included in Dejavu
    470- updated ampl/mp to v4.0.3
    471- the CIP reader now sets an objective offset instead of adding a variable fixed to the objective offset
    472- the solchecker tool has been extended for rational values
    473- SCIPclassifyConstraintTypesLinear() classify a varbound only when a binary variable is present
    474- the internal limit `MAXGENNUMERATOR` has been increased to allow more generators of symmetry groups, especially for problems with many variables
    475
    476@page RN9 Release notes for SCIP 9
    477
    478@section RN924 SCIP 9.2.4
    479*************************
    480
    481Fixed bugs
    482----------
    483
    484- fixed bugs with counting changes in presolving of nonlinear and setppc constraints, which resulted in negative values
    485- cut off dead end node to correctly track dual bound update during solving
    486- no longer construct and flush the LP in SCIPwriteLP() and SCIPwriteMIP() to avoid unexpected side effects
    487- apply multi-aggregations before detecting redundancy in propagation of varbound constraints to keep bound implications
    488- skip bound changes when cutting off a branch-and-bound subtree
    489- correct detection of doublelex matrices and their handling via orbitope constraints
    490- skip attempting to free transformed problem if SCIPtransformProb() failed with an error in SCIPpresolve(), since freeing
    491 the transformed problem is likely to fail as well
    492- fixed memory leak in primal heuristic "scheduler" when there is a restart
    493- fixed stopping when there is a candidate with a change in the LP bound for both children in strong branching of branch_fullstrong
    494- fixed detection of sinks in varbound detection from cumulative constraints
    495- fixed memory allocation when adding strong SBCs for enclosing orbit of symmetric subgroups (disabled by default)
    496- free paths of branch-and-bound tree iteratively instead of recursively to avoid stack overflow
    497- fixed rare invalid memory access when collecting symmetry information for indicator constraints
    498- recompute activity bounds before checking infeasibility and redundancy in linear constraint presolving
    499- skip integer variables with fractional value in reference solution when finding additional variable fixings in ALNS heuristic
    500- fix call of SCIPaddExprsViolScoreNonlinear() with constant expressions (no variables)
    501- fixed bug with concurrent solve w.r.t. variable indices that led to segmentation faults and fix termination test
    502- adjust further bounds before checking feasibility in SCIPvarAddVlb() and SCIPvarAddVub() to detect integrality cutoff
    503- fixed that the last fixed binary variable was not set after binary variables were created for linking constraints
    504- fixed that when a linking constraint with only one binary variable was added during solving, it was not disabled
    505- fixed set_search_limits call when using SYM=sbliss with an old patched Bliss version
    506
    507Build system
    508------------
    509
    510### CMake
    511
    512- added workaround for recent ctest versions rejecting -R -default as arguments
    513
    514### Makefile
    515
    516- added experimental target to run cppcheck
    517
    518
    519@section RN923 SCIP 9.2.3
    520*************************
    521
    522Fixed bugs
    523----------
    524
    525- avoid hashmap key error in removal of doubletons and singletons in dual presolve of setppc constraints by skipping tripleton locks
    526- when upgrading to xor constraint require parity variable to be enforced integral
    527- provide the depth of the applied effective root with SCIPtreeGetEffectiveRootDepth() to avert invalid globalization of constraint set changes
    528- disable objective limit during lexicographic dual minimization to preserve feasibility status
    529- declare infinite bound inference infeasible in SCIPinferVarLbCons() and SCIPinferVarUbCons() to maintain correct loose LP values
    530- fixed update of consssorted flags in a variable expressions data when adding an additional constraint using this variable
    531- corrected computation of number of variables affected by symmetry
    532- fixed computation of symmetry group size
    533- correct comparison conditions in checkRedundancySide() of cons_varbound.c to ensure pair redundancy
    534- 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
    535- avoid overwriting the cutoff flag in tightenCoefs(), preprocessConstraintPairs(), and applyFixings() of cons_varbound.c to reject infeasible solutions
    536- fix memory leak in CppAD interface w.r.t. user expressions
    537- adjust bound before checking feasibility in SCIPvarAddVlb() and SCIPvarAddVub() to detect integrality cutoff
    538- choose incumbent solution as reference in varFixingsRins() and varFixingsDins() of ALNS heuristic to ensure integrality
    539- consider variable type in selectInitialVariableRandomly() of GINS heuristic to count integral variables
    540- correct fractionality sign when standardizing bounds in simplifyInequalities() of cons_linear.c
    541
    542Build system
    543------------
    544
    545### CMake
    546
    547- disable setting the boolean variable MACOSX_RPATH to a string value to actually enable @rpath usage
    548- define SOPLEX_NEEDED and ZIMPL_NEEDED to avoid syntax error in configuration file
    549
    550Miscellaneous
    551-------------
    552
    553- when writing a problem with non-generic names, warnings are printed if variable or constraint names are not unique
    554
    555@section RN922 SCIP 9.2.2
    556*************************
    557
    558Fixed bugs
    559----------
    560
    561- fixed definition of slack variables of >= constraints and ranged rows in LP interface to Gurobi
    562- free memory leaking singleton arrays for ignored variables in SCIPapplyHeurDualval()
    563- use epsilon tolerance for bound implications of dual substitutions in dualPresolve() of cons_linear
    564- fixed timeouts due to race conditions when using TPI=omp
    565- 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
    566- respect fixing if variable is declared binary in bounds section of mps file
    567- fixed reading mps files with short row and column names and some fixed-form mps files with spaces in row names
    568- force local bounds to adjusted value when fixing variable
    569- adds missing NULL check for Benders' subproblems in feasalt cut
    570- apply objective scale to pseudoboolean non-linear terms
    571- impose pseudoboolean cost bound without intermediate casting
    572- flatten aggregation graph before finishing presolve to accelerate evaluating an empty solution
    573- respect fixed resultants in binvarGetActiveProbindex() of branch_relpscost
    574- drop fixed resultants when copying pseudoboolean constraint
    575- correct matrix entry when resolving aggregated variables in checkSystemGF2() of cons_xor
    576- corrected symmetry detection graph of cons_and, cons_or, cons_xor, and cons_indicator
    577- correct redundancy filter in consdataCreateRedundant() of cons_bounddisjunction
    578- replaced unreliable comparison of node pointers by node numbers in prop_genvbounds
    579- allocate memory for all integral variables in applyCliqueFixings() of heur_clique
    580- fix conflict resolution for one particular case in cons_indicator
    581- make interface to nauty thread safe
    582- use relative epsilon tolerance to check Farkas row in SCIPlpGetDualfarkas() to avoid invalid cutoff
    583- fixed bug with SOS2 constraints of size that avoided a correct enforcing
    584
    585Build system
    586------------
    587
    588### Cmake
    589
    590- allow to set HIGHS_DIR via -D flag as well
    591- reenable building and testing of SCFLP example
    592- fixed that compiler flags for sanitizers were not used for compiling objects of SCIP library
    593- prioritize local includes for unittests, examples, and applications to link the intended SCIP version
    594- fix detection of Gurobi 11 and 12 libs on Linux
    595
    596### Makefile
    597
    598- fix use of SANITIZE=full for debug builds with GCC on Linux: removed -fsanitize=leak because it cannot be used together with -fsanitize=address
    599- fix that make install SHARED=true missed to install libscipbase
    600
    601@section RN921 SCIP 9.2.1
    602*************************
    603
    604Fixed bugs
    605----------
    606
    607- apply same feasibility definition in PaPILO as in SCIP to avoid numerical inconsistencies
    608- check variable cancellation in SCIPvarAddVlb() and SCIPvarAddVub() to avert wrong infeasibility
    609- SCIPfreeReoptSolve() now also clears partial solutions
    610- fixed bug in calculation of "fractionality score" for spatial branching candidates in cons_nonlinear
    611- fixed bug with installing symmetry dialog in sub-SCIPs
    612- 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
    613- respect maximal separation rounds setting by running remaining delayed separators in last round
    614- replace terms consistently in applyFixings() of cons_linear to handle infinite aggregations
    615
    616Build system
    617------------
    618
    619### Cmake
    620
    621- fix SCIP Optimization Suite build with -DSYM=(s)bliss and bliss being downloaded and built during configuration by cmake
    622- fix use of a bliss cmake installation (from https://github.com/scipopt/bliss) specified via BLISS_DIR if -DSYM=(s)bliss
    623
    624### Makefile
    625
    626- the check/solchecker build can now use also GMP installations by Homebrew on macOS/arm64
    627
    628Miscellaneous
    629-------------
    630
    631- the output precision for writing CIP/OPB files has been increased at several places for nonlinear constraints
    632- the solchecker tool now also supports SCIP solutions without unknown or infinite values
    633- generate an error if the same linear constraint is used by several indicator constraints
    634
    635@section RN920 SCIP 9.2.0
    636*************************
    637
    638Features
    639--------
    640
    641- added check for absolute and relative gap limits at end of synchronization in concurrent solving mode, in order to terminate earlier;
    642 note that if the concurrent solve is stopped due to a gap limit, the "winner" solver will have an interrupted solution status and
    643 its primal and dual bounds may not be the best possible ones (use SCIPgetConcurrentPrimalbound() and SCIPgetConcurrentDualbound() instead)
    644- parse pseudoboolean constraint from CIP format (and add linear-"and"-reformulation)
    645
    646
    647Performance improvements
    648------------------------
    649
    650- reoptimization now also stores propagations from propagators if reoptimization/saveconsprop is enabled;
    651 the parameter will be renamed to reoptimization/saveprop in a next major release
    652- imposed stricter limits on the size of disconnected components which may be solved separately during presolve
    653- use individual slack variables also for constraints indicated by a common binary variable to use tighter formulation by default
    654- when computing symmetries using Nauty, iteration limits are now available to terminate Nauty early
    655
    656Fixed bugs
    657----------
    658
    659- Benders' decomposition subproblems that are always infeasible are correctly handled and the complete problem is declared infeasible
    660- skip linear constraint propagation if the residual activity bound cancels the side precision
    661- correct bound tracking to make the evaluation of primal-dual-integrals work
    662- skip aggregations on fixed variables in milp presolver to avoid errors for earlier versions of PaPILO
    663- use indices of negation counterparts and accept fixings when ordering and-resultants of pseudoboolean constraints
    664- update locks on model variables before removing pseudoboolean constraints in presolve
    665- reformulate soft pseudoboolean constraints with linear constraints if the indicator decomposition is disabled
    666- add workaround for recent HiGHS versions resetting the model status when changing the presolve option after a solve
    667- 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
    668
    669Interface changes
    670-----------------
    671
    672### New API functions
    673
    674- added SCIPtpiIsAvailable() to check whether a working task processing interface is available (TPI != none)
    675- added SCIPtpiGetLibraryName() and SCIPtpiGetLibraryDesc()
    676- SCIPdelCons() can now also be called in SCIP_STAGE_TRANSFORMED
    677- added SCIPstrcasecmp() and SCIPstrncasecmp() for case-insensitive string comparison
    678- added SCIPbendersSubproblemsAreInfeasible() to return if at least one subproblem has been identified as being
    679 infeasible prior to performing any variable fixing
    680
    681### New parameters
    682
    683- presolving/milp/abortfacexhaustive to control the abort threshold for exhaustive presolving in PAPILO
    684- presolving/milp/abortfacmedium to control the abort threshold for medium presolving in PAPILO
    685- presolving/milp/abortfacfast to control the abort threshold for fast presolving in PAPILO
    686- constraints/components/maxcompweight to determine the maximum weight for a disconnected component that is solved during presolve
    687- constraints/components/contfactor counts the contributing factor of a single continuous variables with respect to the weight limit specified by constraints/components/maxcompweight
    688- constraints/indicator/usesameslackvar to decide whether the same slack variable should be used for indicators constraints with common binary variable
    689- propagating/symmetry/nautymaxncells and propagating/symmetry/nautymaxnnodes to set iteration limits in Nauty (only available if build with SYM=nauty or SYM=snauty)
    690
    691### Changed parameters
    692
    693- presolving/milp/threads is now only available if PaPILO is built with TBB
    694- changed default of numerics/recomputefac to 1e+6 to aim at relative epsilon precision
    695
    696Build system
    697------------
    698
    699### Cmake
    700
    701- attempted to fix detection of CPLEX library on macOS and Windows systems
    702
    703Testing
    704-------
    705
    706- added parameter FILTER for tests/Makefile to run only tests with a specific pattern (ctest with -R FILTER)
    707
    708Miscellaneous
    709-------------
    710
    711- adjusted Gurobi interface for Gurobi 12
    712- reordered events: BESTSOLFOUND/NODE_FEASIBLE are now processed before the nodes are cut off and before NODE_DELETE events are processed
    713- removed `#define` of `getcwd` (in case of Windows builds) in scip/def.h
    714- the `#define` of `strcasecmp` and `strncasecmp` (in case of Windows builds) in scip/def.h will be removed with SCIP 10;
    715 use `SCIPstr(n)casecmp()` (scip/pub_misc.h) instead
    716
    717@section RN911 SCIP 9.1.1
    718*************************
    719
    720Fixed bugs
    721----------
    722
    723- fix bug in separator aggregation that caused incorrect terminations when for an integral objective the objective limit was set to a fractional value
    724- fix bug in memory management of doublelex matrices where indices were set beyond array bounds
    725- store relevance flags in consdataTightenCoefs() of cons_linear.c to avoid dropping variables unintentionally due to numerical changes
    726- fix possible segmentation fault when resetting local and global bounds of original variables after abnormal termination
    727- compare coefficient scales to detect parallelism to avoid integral relaxations in detectRedundantConstraints() of cons_linear.c
    728- remove coefficient information from linear constraint hashes in order to compare keys with tolerances
    729- fixed NULL pointer dereference in SCIPtpiGetNumThreads() of TinyCThread interface if called before SCIPtpiInit(); now returns 0 in this case
    730- calling SCIPsolveConcurrent() when SCIP was compiled without a TPI now results in a plugin-not-found error
    731- fixed LPI status functions of lpi_cpx if the barrier is called
    732- check cuts for redundancy after scaling in cutTightenCoefs() and cutTightenCoefsQuad() of cuts.c
    733- maintain definition of artificial integral variables in xor constraints to avoid invalidation of conflict constraints
    734- free childless nodes only after the deactivation of the old focus path in treeSwitchPath() of tree.c
    735- only normalize rows for column norm evaluations in shift-and-propagate heuristic to avoid unscaled violations
    736- 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
    737- check for more data to be freed before modifying nonlinear constraints in SCIPaddExprNonlinear()
    738- allow for terms with zero coefficients when checking sum in SCIPexprCheckQuadratic()
    739- do not abort writing of constraints to lp/pip files (and forget to free buffer memory) when encountering unsupported nonlinear constraint
    740- fixed that strings with names and descriptions of the LPI's were not null-terminated
    741- fixed decision on when to enforce nonlinear constraints on relaxation solutions if integer variables are present
    742- fixed reading of very long lines (>78000 characters) in FlatZinc reader
    743- 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)
    744- keep epsilon coefficients in applyFixings() of cons_linear.c until multiples are merged to avoid loss of relevant contributions
    745- fixed that some variable type changes were not accounted correctly in presolve of linear constraints
    746- fix constraint sorting in setpp-orbitope upgrade in symmetry code
    747- fixed that SCIPnodeGetConsProps() also counted bound changes from propagators
    748- use original and-constraints of an untransformed pseudoboolean constraint when copying original problems to avert segmentation faults
    749- sort and-constraints of a pseudoboolean constraint with respect to the resultant problem indices to avoid shuffled copies
    750- treat pseudoboolean constraints as nonlinear constraints in OPB reader to prevent duplication mistakes
    751
    752Examples and applications
    753-------------------------
    754
    755- in example Binpacking implement Farkas pricing for packings because branching can actually lead to infeasible restricted master LPs
    756
    757Testing
    758-------
    759
    760- allow unknown parameters to let tests pass if only optional dependencies are missing
    761
    762Build system
    763------------
    764
    765### Cmake
    766
    767- 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`
    768- extended identification of Ipopt library on Windows to also look for ipopt.dll.lib, as this is used since Ipopt 3.13.0 (2019)
    769
    770
    771@section RN910 SCIP 9.1.0
    772*************************
    773
    774Features
    775--------
    776
    777- added constraint handler that checks and enforces bounds on original variables which have been fixed or aggregated in the transformed problem
    778- allow for implicit integer variables in xor constraints
    779- implemented symmetry detection callbacks for pseudoboolean constraints
    780- added option to consider enforcement of nonlinear constraints (including spatial branching) before integrality has been enforced
    781
    782Fixed bugs
    783----------
    784
    785- make sure that, in dual proof analysis, upgraded constraints can report their number of variables
    786- check knapsack constraints as linear constraints to avoid violations based on implicit integrality
    787- make sure that symmetry detection callbacks report success
    788- make arithmetics in cuts.c more robust to avoid invalid scg cuts due to numerical rounding sensitivity
    789- allow to copy pseudoboolean constraints even if no AND constraints are present in order to avoid a warning
    790- set value for variable that is introduced to reformulate nonlinear objective function when reading .nl files with initial solution
    791- fixed that multi-aggregations from PaPILO were accepted without ensuring that their bounds hold
    792
    793Examples and applications
    794-------------------------
    795
    796- TSP: removed `gzstream.h/hpp` and parse gzipped files differently
    797
    798Interface changes
    799-----------------
    800
    801### New callbacks
    802
    803- SCIP_DECL_NLHDLRENFO takes additional parameter branchcandonly to indicate whether only branching candidates should be registered,
    804 without looking for cuts or boundchanges
    805
    806### New API functions
    807
    808- new function SCIPgetExprActivityNonlinear() to get activity of nonlinear constraint
    809- new function SCIPincludeConshdlrFixedvar() to include new constraint handler that checks bounds on fixed original variables
    810
    811### New parameters
    812
    813- 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)
    814- limits/dual to terminate the solve as soon as the dual bound is at least as good as this value
    815- presolving/milp/internalmaxrounds to control the maximal rounds for each call of the milp presolver (PaPILO)
    816- constraints/fixedvar/∗ to control the new constraint handler that checks bounds on fixed original variables
    817- constraints/nonlinear/branching/mixfractional to specify minimal average pseudo cost count for discrete variables
    818 at which to start considering spatial branching before branching on fractional integer variables
    819 (default infinity means that integrality is always enforced before nonlinear constraints)
    820- constraints/nonlinear/branching/fracweight to specify weight of fractionality of integer variables in spatial branching
    821
    822### New data structures
    823
    824- enum SCIP_Status has been extended by SCIP_STATUS_PRIMALLIMIT and SCIP_STATUS_DUALLIMIT to indicate termination at limits/primal and limits/dual respectively
    825
    826Build system
    827------------
    828- changed the default symmetry computation package from sassy+bliss to sassy+nauty
    829- bliss source is no longer included in the source tree, but can be linked as external library (https://github.com/ds4dm/Bliss)
    830- cmake now automatically downloads and installs the latest release version of SoPlex from GitHub if it is not found directly
    831
    832Miscellaneous
    833-------------
    834
    835- updated nauty to version 2.8.8
    836
    837
    838@section RN901 SCIP 9.0.1
    839*************************
    840
    841Fixed bugs
    842----------
    843
    844- fixed bug in detection of double lex matrices due to wrong memory allocation
    845- fixed bug where parameter `limits/objectivestop` was copied to subscips in plugins which have different objectives
    846- in count mode respect empty solution when problem is solved in presolving
    847- fixed that SCIP may have tried to pass a negative random seed to an LP solver
    848- fixed bug where conflict analysis in strong branching tried to analyze an unsuccessful LP solve
    849- enable parameter limits/restarts by allowing to reach the restart limit in restartAllowed()
    850- handle normalizing linear constraints in presolving with more caution to avoid numerical difficulties for integer variables with large coefficients
    851- use quad precision to calculate residual activity bounds to reduce numerical errors for large variable bounds in cons_linear.c
    852- in SCIPsolveProbingLP() when objective has been changed do not return cutoff due to exceeding the cutoff bound
    853- set probing LP to be a relaxation only when objective has not been changed
    854- declare contradicting infinities in getMinActivity() and getMaxActivity() as non-tight
    855- reject farkas solution with large values to bound magnification of errors in SCIPgetFarkasProof()
    856- if all variables are fixed, apply relative feasibility tolerance to avoid invalid infeasibility in applyFixings() of cons_linear.c
    857- delete empty redundant knapsack and linear constraints after cleanup in SCIPmatrixCreate()
    858- cleanup first constraints in SCIPcleanupConssVarbound(), SCIPcleanupConssSetppc(), and SCIPcleanupConssLogicor()
    859- symmetry handling methods have not been added immediately after computing symmetries, which has been fixed
    860- delay checking node limits after presolving to correctly continue up to the exceeding main node
    861- simplified the objective sense assumption for the subproblems in the Lagromory separator
    862- update effective root depth iteratively to avoid trapping it at a single child node
    863- fixed that dualsparsify presolver did not always check do-not-multiaggregate variable flag
    864- fixed bug in computing elements of orbits in orbital reduction
    865
    866Miscellaneous
    867-------------
    868
    869- redefine isrelax to istight in cons_linear.c
    870
    871Build system
    872------------
    873
    874### Cmake
    875
    876- A file cmake.log containing the changed options is written to the cmake build directory.
    877- removed replacement of the settings of RelWithDebInfo
    878- add compile option -ffp-contract=off or /fp:precise to enhance reproducibility across different systems
    879
    880### Makefile
    881
    882- add flags -ffp-contract=off and /fp:precise to enhance reproducibility across different systems
    883
    884Interface changes
    885-----------------
    886
    887### New parameters
    888
    889- added parameter "propagating/symmetry/symtiming" to determine when symmetries are computed and handled
    890
    891### Changed parameters
    892
    893- Disabled "propagating/symmetry/addconsstiming" since it is not used anymore.
    894- Disabled "propagating/symmetry/ofsymcomptiming" since it is not used anymore.
    895
    896@section RN900 SCIP 9.0.0
    897*************************
    898
    899Features
    900--------
    901
    902- added simplification of abs(x)^n to x^n when n is even (simplify rule POW12)
    903- in expression simplification, added possibility to expand power of sum with exponents larger than 2 (simplify rule POW7)
    904- in expression simplification, added possibility to expand products with sums as factor when there are more than two factors (simplify rule SP12b)
    905- in expression simplification, added possibility to allow expanding power of products with fractional exponent (simplify rule POW5a)
    906- can now build with Lapack (used for solving nonlinear problems) explicitly; if IPOPT is used, then Lapack is accessed through it;
    907 an interface to Lapack is available in lapack_calls.h
    908- added support for logical constraints in binary variables and basic logical operators (and, or, not, equal) to AMPL .nl reader
    909- indicator constraints now use the same slack variable for the linear constraints if binary variables are used multiple times
    910 for indicator constraints
    911- new diving heuristic indicatordiving that focuses on indicator variables which control semicontinuous variables
    912- updated statistics on NLP relaxation; information on convexity of NLP has been added
    913- added new bandit method (EXP.3-IX) that is the new default of the ALNS heuristic
    914- added dialog to display recognized permutation symmetries ("display symmetry")
    915- The symmetry detection code has been completely restructured. Instead of completely encoding symmetry information in
    916 prop_symmetry.c, there is a new callback for constraint handlers, which returns symmetry relevant information by
    917 encoding a constraint as a node and edge colored graph. This way, also custom constraint handlers can provide
    918 symmetry information.
    919- added special presolving step for logicor and set covering/packing for constraints with two variables and one independent variable
    920- 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
    921- added new cut selector plugin called cutsel_ensemble. Performs a superset of hybrid cutsel. Implements new filtering methods and scoring options.
    922- added new branching rule based on Gomory mixed-integer cuts
    923- added new branching score to the reliability pseudo-cost branching rule
    924- added new cut selector plugin called cutsel_dynamic. Performs a superset of hybrid cutsel. Implements new filtering methods and scoring options.
    925- added monoidal strengthening to intersection cut generation of nlhdlr_quadratic
    926- extended heuristic dps to run after processing the node and to use strict limits for the reoptimization step
    927- extended obbt propagator to handle variables of the linear constraints corresponding to indicator constraints
    928- added new heuristic heur_scheduler that models the selection of LNS and diving heuristics as a multi-armed bandit problem
    929- added nonlinear handler for signomial expressions: adds cuts based on a difference of convex functions representation
    930- 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.
    931- added a new separator sepa_lagromory to generate Lagromory cuts in a relax-and-cut framework, i.e., GMI cuts generated
    932 at different bases that are explored in the process of solving the Lagrangian dual problem at a node. This separator
    933 is OFF by default.
    934- when parsing nonlinear constraints from CIP files, the * after the number in a term is now optional if followed by a variable,
    935 i.e., instead of 3*<x>*<y>, now also 3<x>*<y> can be read, but 3<x><y> is not supported;
    936 this allows to read some CIP files that were written with SCIP < 8
    937- when running bliss, we now limit the number of actually created generators and not the ones considered by bliss
    938
    939Performance improvements
    940------------------------
    941
    942- Variable conflict-based addition of Schreier-Sims cuts for symmetry handling in prop_symmetry.c does no longer use
    943 an expensive explicit conflict graph construction.
    944- Only run propagation of indicator constraints if relevant variables have changed.
    945- Propagation of indicator constraints propagates maximal activity of linear constraint to upper bound of slack variable.
    946- Added initialization of LP relaxation for SOC constraints.
    947- Avoided some numerical issues when separating SOC constraints.
    948- If differentation of convex expression fails in convex nlhdlr, then a perturbed point is tried.
    949- Use sassy/bliss as default symmetry computation package.
    950- No longer linearize indicator constraints in undercover heuristic by default.
    951- Deactivate pre-root heuristic zeroobj in undercover heuristic.
    952- Added new branching score tiebreaker for reliability pseudo-cost branching rule
    953- Try nearest bound if zero solution value is out of bounds in heuristic trivial.
    954
    955Interface changes
    956-----------------
    957
    958### New and changed callbacks
    959
    960- Added solution linearization callback for nonlinear handlers.
    961 The nonlinear handler may use this callback to add tight cuts that use the given solution as reference point to the cutpool.
    962 The callback is called if option constraints/nonlinear/linearizeheursol is enabled.
    963- The callback for copying problem data SCIP_DECL_PROBCOPY() now has a parameter "original" indicating whether the original
    964 or transformed problem should be copied. Similarly, SCIPprobCopy() in prob.h/c has such a parameter.
    965- Added CONSGETPERMSYMGRAPH and CONSGETSIGNEDPERMSYMGRAPH callback for constraint handlers, which provides symmetry information about constraints to SCIP.
    966
    967### Deleted and changed API functions
    968
    969- SCIPtpiInitLock(), SCIPtpiDestroyLock(), SCIPtpiInitCondition(), SCIPtpiDestroyCondition() now take a double
    970 pointer to SCIP_LOCK/SCIP_CONDITION, respectively.
    971- Renamed SCIPtpiSumbitJob() to SCIPtpiSubmitJob().
    972- SCIPcreateConsIndicatorLinCons(), SCIPcreateConsIndicatorGenericLinCons() do not allow binvar to be NULL anymore
    973- Replaced SCIPnlrowSetCurvature() by SCIPsetNlRowCurvature().
    974- SCIPsnprintf() now returns the required string length in case reallocation is necessary.
    975- SCIPcomputeCoverUndercover() receives three more arguments which nonlinearities to cover
    976- removed definition of SQRT
    977- SCIPincludeObjConshdlr(), SCIPincludeConshdlr(), SCIPconshdlrCreate() receive two more arguments for the
    978 conshdlr callbacks CONSGETPERMSYMGRAPH and CONSGETSIGNEDPERMSYMGRAPH
    979- removed SYM_VARTYPE, SYM_OPTYPE, SYM_CONSTTYPE, SYM_RHSTYPE, SYM_MATRIXDATA
    980- new parameter issigned for SCIPcomputeOrbitsSym()
    981- new parameter symtype for SCIPcomputeComponentsSym()
    982- new parameter symtype and permvardomaincenter for SCIPlexicographicReductionAddPermutation()
    983- replaced parameters matrixdata and exprdata of SYMcomputeSymmetryGenerators() by graph
    984
    985### New API functions
    986
    987- new functions for interfacing with Lapack: SCIPlapackIsAvailable(), SCIPlapackIsAvailable(), SCIPlapackComputeEigenvalues(), and SCIPlapackSolveLinearEquations
    988 These functions should be used instead of SCIPisIpoptAvailableIpopt(), SCIPcallLapackDsyevIpopt(), and
    989 SCIPsolveLinearEquationsIpopt() in the context of computing eigenvalues or solving linear equations.
    990 If IPOPT is available, the calls will be passed on to Ipopt's interface to Lapack.
    991- SCIPmultiplyBySumExprSum(), SCIPpowerExprSum()
    992- SCIPsetParam()
    993- SCIPgetPrimalDualIntegral() returns the primal dual integral stored in the statistics
    994- new functions SCIPcreateConsIndicatorLinConsPure() and SCIPcreateConsIndicatorGenericLinConsPure() that
    995 create indicator constraints from a linear constraint without a slack variable
    996- SCIPgetNLPNlRowsStat() to retrieve counts on linear, convex, and nonconvex rows in NLP
    997- SCIPnlhdlrSetSollinearize(), SCIPnlhdlrHasSollinearize()
    998- SCIPbendersGetNLPParam()
    999- new API functions SCIPlexicographicReductionGetStatistics(), SCIPlexicographicReductionPrintStatistics(),
    1000 SCIPlexicographicReductionPropagate(), SCIPlexicographicReductionAddPermutation(), SCIPlexicographicReductionReset(),
    1001 SCIPlexicographicReductionFree(), SCIPincludeLexicographicReduction(), for lexicographic reduction.
    1002- new API functions SCIPorbitopalReductionGetStatistics(), SCIPorbitopalReductionPrintStatistics(),
    1003 SCIPorbitopalReductionPropagate(), SCIPorbitopalReductionAddOrbitope(), SCIPorbitopalReductionReset(),
    1004 SCIPorbitopalReductionFree(), SCIPincludeOrbitopalReduction(), SCIPorbitopalReductionGetDefaultColumnOrdering(),
    1005 for orbitopal fixing.
    1006- new API functions SCIPorbitalReductionGetStatistics(), SCIPorbitalReductionPrintStatistics(),
    1007 SCIPorbitalReductionPropagate(), SCIPorbitalReductionAddComponent(), SCIPorbitalReductionReset(),
    1008 SCIPorbitalReductionFree(), SCIPincludeOrbitalReduction(), for orbital fixing.
    1009- new API functions SCIPgetShadowTreeEventHandlerExecutionTime(), SCIPshadowTreeGetShadowNodeFromNodeNumber(),
    1010 SCIPshadowTreeGetShadowNode(), SCIPgetShadowTree(), SCIPactivateShadowTree(), SCIPincludeEventHdlrShadowTree(),
    1011 for managing a copy of the branch-and-bound tree for symmetry handling purposes.
    1012- SCIPdotWriteOpening(), SCIPdotWriteNode(), SCIPdotWriteArc(), SCIPdotWriteClosing()
    1013- SCIPincludeCutselEnsemble(), SCIPselectCutsEnsemble() to include cutsel_ensemble or use the selection algorithm
    1014- SCIPincludeBranchruleGomory() includes new gomory cut based branching rule
    1015- SCIPgetVarAvgGMIScore(), SCIPincVarGMISumScore(), SCIPgetVarLastGMIScore(), SCIPsetVarLastGMIScore() set historical values used by SCIP's default branching rule
    1016- SCIPincludeNlhdlrSignomial() includes the signomial nonlinear handler
    1017- SCIPgetExprMonomialData() returns a monomial representation of a product expression
    1018- SCIPestimateRoot() computes estimators for roots with exponent in [0,1]
    1019- SCIPincludeCutselDynamic(), SCIPselectCutsDynamic() to include cutsel_dynamic or use the selection algorithm
    1020- SCIPincludeSepaLagromory() to include the new Lagromory separator
    1021- SCIPconsCompCheck() to compare two constraints based on their check priority
    1022- SCIPgetConsPermsymGraph() and SCIPgetConsSignedPermsymGraph() to access the (signed) permutation symmetry detection graph of a constraint
    1023- SCIPsetConshdlrGetPermsymGraph() and SCIPsetConshdlrGetSignedPermsymGraph() to set the (signed) permutation symmetry detection graph of a constraint
    1024- SCIPconshdlrSupportsPermsymDetection() and SCIPconshdlrSupportsSignedPermsymDetection() to access whether a conshdlr supports detection of (signed) permutation symmetries
    1025- new API functions for creating and manipulating a symmetry detection graph: SCIPcreateSymgraph(), SCIPfreeSymgraph(), SCIPcopySymgraph(), SCIPextendPermsymDetectionGraphLinear(),
    1026 SCIPaddSymgraphVarAggregation(), SCIPaddSymgraphOpnode(), SCIPaddSymgraphValnode(), SCIPaddSymgraphConsnode(), SCIPgetSymgraphVarnodeidx(), SCIPgetSymgraphNegatedVarnodeidx(),
    1027 SCIPupdateSymgraphLhs(), SCIPupdateSymgraphRhs(), SCIPfixSymgraphVarnode(), SCIPaddSymgraphEdge(), SCIPcomputeSymgraphColors(), SCIPgetSymgraphSymtype(), SCIPgetSymgraphVars(),
    1028 SCIPgetSymgraphNVars(), SCIPgetSymgraphNConsnodes(), SCIPgetSymgraphNNodes(), SCIPgetSymgraphNEdges(), SCIPgetSymgraphEdgeFirst(), SCIPgetSymgraphEdgeSecond(),
    1029 SCIPgetSymgraphVarnodeColor(), SCIPgetSymgraphNodeType(), SCIPgetSymgraphNodeColor(), SCIPisSymgraphEdgeColored(), SCIPgetSymgraphEdgeColor(), SCIPgetSymgraphNVarcolors(),
    1030 SCIPhasGraphUniqueEdgetype(), SCIPcreateSymgraphConsnodeperm(), SCIPgetSymgraphConsnodeperm(), SCIPfreeSymgraphConsnodeperm(),
    1031 SCIPgetSymActiveVariables(), SCIPfreeSymDataExpr(), SCIPgetSymExprdataNConstants(), SCIPgetSymExprdataConstants(), SCIPgetCoefSymData(),
    1032 SCIPcreateSymOpNodeType(), SCIPgetSymOpNodeType()
    1033- SCIPexprhdlrSetGetSymdata(), SCIPexprhdlrHasGetSymData(), SCIPgetSymDataExpr(), SCIPcallExprGetSymData() to access symmetry data of expressions
    1034- SYMcheckGraphsAreIdentical() to check whether two symmetry detection graphs are identical
    1035- new functions SYMbuildSassyGraph(), SYMbuildSassyGraphCheck()
    1036- new type SYM_GRAPH
    1037- new definitions SCIP_DECL_CONSGETPERMSYMGRAPH, SCIP_DECL_EXPRGETSYMDATA
    1038- new member SYM_NODETYPE_CONS in SYM_NODETYPE enum
    1039- new members SYM_CONSOPTYPE_SUM, SYM_CONSOPTYPE_SLACK, SYM_CONSOPTYPE_COEF, SYM_CONSOPTYPE_RHS, SYM_CONSOPTYPE_LAST in SYM_CONSOPTYPE enum
    1040- new defintion SCIP_DECL_EXPRGETSYMDATA
    1041- new function SCIPdetectSingleOrDoubleLexMatrices()
    1042
    1043### Command line interface
    1044
    1045- Added optional parameter -i when calling SCIP in AMPL-mode (-AMPL parameter).
    1046 If -i is specified, a SCIP shell is started where normally SCIPsolve() would be called.
    1047
    1048### Interfaces to external software
    1049
    1050- added interface to nauty/traces for symmetry computation
    1051- added interface to sassy, a preprocessor for symmetry computation
    1052- The directory src/sassy contains the source code of sassy.
    1053- Added interface to Lapack (used for solving nonlinear problems).
    1054- The AMPL interface now supports parameters specified in AMPL command scripts via option scip_options.
    1055 The value of scip_options is expected to be a sequence of parameter names and values, separated by a space, e.g.,
    1056 `option scip_options 'limits/time 10 display/verblevel 1';`.
    1057 String values should not be quoted and spaces in string values are not supported.
    1058- sassy can be used now as preprocessor for nauty/traces
    1059- The solution status codes written to AMPL solution files now match those from https://mp.ampl.com/details.html#_CPPv4N2mp3sol6StatusE.
    1060
    1061### Changed parameters
    1062
    1063- change default value of parameter separating/filtercutpoolrel to FALSE
    1064- Shrunk range of parameter "propagating/symmetry/sstleaderrule" from [0,3] to [0,2], removed "MAXCONFLICTS"-option.
    1065- 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).
    1066- Disabled "propagating/symmetry/symfixnonbinaryvars" since it is not used in the new symmetry code.
    1067- Replaced "propagating/symmetry/onlybinarysymmetry" with "propagating/symmetry/enforcecomputesymmetry" and set to FALSE by default.
    1068- Disabled "propagating/symmetry/performpresolving" since running orbital reduction during presolving is not effective.
    1069- Repurposed "propagating/symmetry/usedynamicprop" since it now also applies to lexicographic reduction.
    1070- Changed default value of parameter "propagating/symmetry/addsymresacks" from FALSE to TRUE.
    1071
    1072### New parameters
    1073
    1074- separating/maxcutsgenfactor and separating/maxcutsrootgenfactor as factors (w.r.t. separating/maxcuts and
    1075 separating/maxcutsroot) for limits on the number of cuts generated (which used to be constants '2')
    1076- expr/pow/expandmaxexponent to specify limit on exponent when to expand power of sum
    1077- expr/pow/distribfracexponent to enable expanding power of products with fractional exponents
    1078- expr/product/expandalways to enable expanding any product with sums as factor (that is, also when more than two factors)
    1079- nlhdlr/convex/maxperturb to specify maximal perturbation of non-differential reference points
    1080- benders/default/nlpiterlimit to adjust iteration limit for NLP solver for Benders' decomposition NLP subproblems
    1081- limits/objectivestop to interrupt the solve as soon as a primal solution is found
    1082 that is at least as good as the given value
    1083- heuristics/undercover/{coverand,coverind,covernl} to control which nonlinearities to consider (by default only "and" and nonlinear constraints)
    1084- cutselection/ensemble/∗ all parameters for new ensemble cut selector
    1085- cutselection/dynamic/∗ all parameters for new dynamic cut selector
    1086- branching/relpscost/gmiavgeffweight specifies the weight in the relpscost branching score of the normalized efficacy of all generated GMI cuts (for a variable)
    1087 branching/relpscost/gmilasteffweight specifies the weight in the elpscost branching score of the normalized efficacy of the last generated GMI cut (for a variable)
    1088- nlhdlr/quadratic/usemonoidal to enable monoidal strengthening when separating quadratics with intersection cuts
    1089- nlhdlr/quadratic/trackmore to collect more statistics for monoidal strengthening when separating quadratics with intersection cuts
    1090- nlhdlr/quadratic/useminrep to use the minimal representation to compute cut coefficients when separating quadratics with intersection cuts
    1091- nlhdlr/quadratic/sparsifycuts to enable sparsification of intersection cuts for quadratics
    1092- heuristics/dps/reoptlimits to set strict limits for the reoptimization step in dps
    1093- heuristics/dps/timing to run dps after processing the node
    1094- heuristics/scheduler/∗ all parameters for new scheduler heuristic
    1095- nlhdlr/signomial/enabled, nlhdlr/signomial/maxnundervars, nlhdlr/signomial/mincutscale: parameters for the signomial nonlinear handler
    1096- separating/lagromory/freq to denote the frequency for calling Lagromory separator
    1097- separating/lagromory/away to denote the minimal integrality violation of a basis variable to try separation
    1098- separating/lagromory/dynamiccuts to denote whether the generated cuts be removed from LP if they are no longer tight
    1099- separating/lagromory/maxroundsroot to denote the maximal number of separation rounds in the root node
    1100- separating/lagromory/maxrounds to denote the maximal number of separation rounds in a non-root node
    1101- separating/lagromory/nmaxcutsperlproot to denote, in the root node, the maximal number of Lagromory cuts that can be
    1102 separated per explored basis of the Lagrangian dual
    1103- separating/lagromory/nmaxcutsperlp to denote, in a non-root node, the maximal number of Lagromory cuts that can be
    1104 separated per explored basis of the Lagrangian dual
    1105- separating/lagromory/perroundnmaxlpiters to denote the maximal number of separating LP iterations that are allowed per
    1106 separation round
    1107- separating/lagromory/dualdegeneracyratethreshold to denote the minimum dual degeneracy rate for the separator execution
    1108- separating/lagromory/varconsratiothreshold to denote the minimum variable-constraint ratio on the optimal face for the
    1109 separator execution
    1110- many other advanced parameters for the Lagromory separator, which are also mentioned under separating/lagromory/∗
    1111
    1112### Data structures
    1113
    1114- new data structure SYM_GRAPH to encode symmetry information from a constraint
    1115- new data structure SYM_EXPRDATA to encode symmetry information from expressions
    1116- replaced enum SYM_SYMTYPE by a complete new one; removed SYM_RHSSENSE, added SYM_NODETYPE and SYM_CONSOPTYPE
    1117
    1118Deleted files
    1119-------------
    1120
    1121- 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
    1122
    1123Unit tests
    1124----------
    1125
    1126- new unittests for nlhdlr_quadratic that test monoidal strengthening and the use of the minimal representation to compute cut coefficients
    1127- unittests for nlhdlr_signomial
    1128
    1129Testing
    1130-------
    1131
    1132- changed `set lim obj` to `set lim objective` in ctest since `obj` is no longer unambiguous
    1133
    1134Build system
    1135------------
    1136
    1137### Cmake
    1138
    1139- New flag -DLAPACK=on for linking with Lapack (must be available in the system)
    1140- added flag option "SYM=sbliss" for using sassy/bliss as a graph automorphism package
    1141- use SYM=sbliss by default, since sassy and bliss are now shipped with SCIP.
    1142- added flag option "SYM=snauty" for using sassy/nauty as a graph automorphism package
    1143
    1144### Makefile
    1145
    1146- added flag option "nauty" for SYM variable to specify which graph automorphism package should be used
    1147- added flag option "sbliss" (sassy/bliss) for SYM variable to specify which graph automorphism package should be used
    1148- added flag option "snauty" (sassy/nauty) for SYM variable to specify which graph automorphism package should be used
    1149- use SYM=sbliss by default, since sassy and bliss are now shipped with SCIP
    1150- New flag LAPACK for linking with Lapack (must be available in the system)
    1151- A file scip/config.h is created in the build directory ($(OBJDIR)/include) now.
    1152 Defining NO_CONFIG_HEADER is no longer necessary and has no effect anymore.
    1153
    1154Fixed bugs
    1155----------
    1156
    1157- Number of runs in which separation is enabled will now be correct as per "separating/maxruns" parameter. Earlier,
    1158 separation was enabled for "maxruns + 1" number of runs, i.e., separation was enabled even when "maxruns = 0" was set.
    1159- add safeguard for number of selected cuts
    1160- use double double precision for delta in activity updates of cons_linear.c
    1161- sort constraints in checkSolOrig() to keep the logic of constraint handlers intact
    1162- fixed make install when SHARED=no and make uninstall
    1163- check absolute coefficients relative to extremal average to avoid invalid unifications in normalizeCons()
    1164- enforce and check symmetry-based constraints to take their locks (in dual reductions) into account
    1165- flush changes at the end of SCIPlpiSetBase() in lpi_grb.c to apply the newly set basis correctly
    1166
    1167Miscellaneous
    1168-------------
    1169
    1170- The TPI has been changed to become mostly independent from the actual parallel interface during compile time.
    1171 For this, the locks and conditions are now pointers to abstract structs.
    1172- fixed that scip/def.h, the header for C preprocessor definition (`#define`'s), included headers for some SCIP type and function definitions
    1173 (scip/type_retcode.h, scip/type_message.h, scip/pub_message.h)
    1174
    1175
    1176@page RN8 Release notes for SCIP 8
    1177
    1178@section RN810 SCIP 8.1.0
    1179*************************
    1180
    1181Fixed bugs
    1182----------
    1183
    1184- fixed that scaling of rows in Gurobi interface (SCIPlpiScaleRow()) changed infinite sides to large finite ones (1e20) when scale factor is negative
    1185- check whether objective limit is truly reached in SCIPlpiIsStable()
    1186- if an objective limit is set and Mosek claims that it is exceeded, check that this is indeed the case in SCIPlpiIsStable()
    1187- the .mps file reader was extended to additionally accept .mps files with the objective sense section on one line
    1188- ensure that delayed cutpool separation does not happen if enough cuts have been found already
    1189- 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
    1190- 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
    1191- fixed memory leak in branching rule "distribution"
    1192- 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
    1193- fixed two bugs in cons_varbound: avoid adding variable bounds if vbdcoef is infinite and unlock/lock variables if lhs/rhs/vbdcoef are changed
    1194- 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
    1195- fixed error when attempting to copy SCIP with activated pricers
    1196- 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
    1197- updated and, or, and pseudoboolean constraint handlers to better handle fractional implicit integer variables in enforcement
    1198- 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
    1199- add missing row links to columns in SCIPflushRowExtensions() required to maintain correct row norms
    1200- restrict separator intobj to solutions for which there can be no better feasible integral objective values to avoid cutting them off
    1201- delay removal of clique lists from SCIPvarRemoveCliquesImplicsVbs() into cliqueCleanup() to avoid segmentation faults by incomplete cleanups after variable conversions
    1202- reject sub-solutions with invalid objectives in SCIPtranslateSubSols() due to contradicting infinite contributions
    1203- correct column index in getMinMaxActivityResiduals() to make presolver dualinfer work
    1204- copy quiet flag from main scip's message handler to the one of solverscip in concurrent optimization
    1205- avoid bound tightening cycles towards huge redundancy bounds in fullDualPresolve() to avert fatal numerical trouble in representing vertices of linear relaxations with unbounded domains
    1206- fix problem where debug solution did not work if branching constraints are present
    1207- update index of dominating variable on coefficient deletion in dualPresolving() of constraint handler logicor
    1208- pass on flags from a redundant to the implying varbound constraint in preprocessConstraintPairs() to avoid suboptimal fixings by model relaxations
    1209- apply reductions of dualinfer only if a dual solution exists (primal is bounded)
    1210- before presolving is finished check solutions before retransforming them including tiny values to keep check flags consistent
    1211- 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
    1212- correct local flag of singleton conflict constraints in tightenSingleVar() against invalid bound globalization
    1213- respect unboundedness in the computation of activity bounds in conflict.c to avoid invalid huge bounds due to small coefficients on unbounded variables
    1214- ensure positive sides of a linear constraint when recognizing a set partition in rangedRowSimplify() to account for redundancy issues
    1215- relax numerical conditions for variable aggregations to avert invalid variable fixings
    1216- fixed harmless read of uninitialized data when creating parameters
    1217- fix call of SCIPnlpiOraclePrintProblem in nlpi_worhp
    1218
    1219Performance improvements
    1220------------------------
    1221
    1222- Use sassy/bliss as default symmetry computation package.
    1223
    1224Interface changes
    1225-----------------
    1226
    1227### Interfaces to external software
    1228
    1229- added interface to nauty/traces for symmetry computation
    1230- added interface to sassy, a preprocessor for symmetry computation
    1231- The directory src/sassy contains the source code of sassy.
    1232
    1233Build system
    1234------------
    1235
    1236### Cmake
    1237
    1238- added flag option "SYM=sbliss" for using sassy/bliss as a graph automorphism package
    1239
    1240### Makefile
    1241
    1242- added flag option "nauty" for SYM variable to specify which graph automorphism package should be used
    1243- added flag option "sbliss" for SYM variable to specify which graph automorphism package should be used
    1244- use SYM=sbliss by default, since sassy and bliss are now shipped with SCIP
    1245
    1246Miscellaneous
    1247-------------
    1248
    1249- the parameter change callback is no longer called at the moment a parameter is created
    1250
    1251@section RN804 SCIP 8.0.4
    1252*************************
    1253
    1254Features
    1255--------
    1256
    1257- use quad precision in cutsSubstituteMIR() for substituting slack variables into CMIR cuts
    1258- use quad precision for activity computations in cons_linear.c
    1259
    1260### Deleted and changed API functions
    1261
    1262- SCIPshrinkDisjunctiveVarSet() no longer attempts to cutoff the current node if it finds the
    1263 given disjunction to be infeasible; it is now in the responsibility of the caller to act accordingly
    1264
    1265### New API functions
    1266
    1267- added SCIPskipSpace
    1268- added XML parser routines from src/xml/xml.h
    1269
    1270### Interfaces to external software
    1271
    1272- updated XPRESS interface to work with XPRESS 41 as well
    1273- new interface to LP solver HiGHS (lpi_highs.cpp)
    1274
    1275### Changed parameters
    1276
    1277- changed integer parameter "propagating/symmetry/recomputrestart" from range {0, 1, 2} to being fixed at value 0
    1278
    1279Unit tests
    1280----------
    1281
    1282- added new checks for objective, bounds and sides inside the scaling tests in lpi/change.c
    1283
    1284Fixed bugs
    1285----------
    1286
    1287- relax condition of assert in lpSolve to hold only if lp/checkstability is true
    1288- OPB reader: dynamically increase the size of the line buffer for reading in getMaxAndConsDim()
    1289- Enabled the solution limit checks in SCIPsolveIsStopped in solve.c when in SCIP_STAGE_PRESOLVING
    1290- fix quad precision comparison for the calculation of knapsackcover constraints.
    1291- force copying of symmetry constraints for concurrent solve
    1292- increase the precision of double multiplications in quad precision environments
    1293- corrected handling of different variable types in symmetry
    1294- orbitope detection: refine computation of overlap structure and fixed bug in finding orbitope generators
    1295- ensure that winner is always determined in concurrent mode
    1296- when a row with invalid index range is added to the global cutpool, update the indices instead of failing with an assert
    1297- update of watched literals in cons_xor.c and ensure that fixed variables are counted in propacateCons()
    1298- avoid some numerical issue in check for redundant variables in linear constraints (introduced with version 8.0.2)
    1299- more rows are treated as being integral in cutsSubstituteMIR() for CMIR cuts
    1300- fixed several relaxations of the rhs of cuts to 0 in cuts.c
    1301- avoid aggregation into a single linear constraint if they should not be upgraded (needed for indicator constraints)
    1302- apply effective root changes before fork is repropagated during treeSwitchPath() in tree.c
    1303- avoid invalid objective value for solutions generated from an unbounded LP relaxation in case of a nonlinear objective function
    1304- disable recomputing symmetries after a restart (constraint removal is not permitted)
    1305- avoid cutting off optimal solutions for small feasibility tolerances in conflict analysis
    1306- initialize variable in presol_dualsparsify.c
    1307- fix in presolving of variable bound constraints to use absolute instead of relative difference
    1308- free variable histories in reoptimization mode
    1309- handle whitespaces in interactive shell history consistently
    1310- check and enforce equalities on which the objective is projected in cons_linear.c
    1311- ensure row feasibilities of solution shiftings in heur_oneopt.c and heur_twoopt.c
    1312- remove rounded row check blocking tolerable primal solutions in cons_varbound.c
    1313- fixed that presolve of logicor-constraints may have attempted to cutoff a root of the not yet existing branch-and-bound tree
    1314- only consider positive slack variables as active in benders.c
    1315- in the feasibility check of and/or constraints, allow for fractional values in operands
    1316- fixed linear outer-approximation for some composite absolute-value expressions
    1317
    1318Miscellaneous
    1319-------------
    1320
    1321- Extended documentation of the parameter limits/solutions to point out that the limit is first checked in presolving
    1322- Added more information about using SCIPcache- and SCIPflushRowExtensions() to documentation and comments
    1323- Extended the `how to add' sections of the documentation by adding information on how to include default plugins into SCIP
    1324
    1325@section RN803 SCIP 8.0.3
    1326*************************
    1327
    1328Examples and applications
    1329-------------------------
    1330
    1331- Externalize STP and PolySCIP applications
    1332
    1333Interface changes
    1334-----------------
    1335
    1336### Command line interface
    1337
    1338- When running the AMPL interface, the .nl filename extension does not need to be omitted for the input file anymore.
    1339
    1340Build system
    1341------------
    1342
    1343### Cmake
    1344
    1345- Forbid CMAKE_BUILD_TYPE nonstandard values
    1346- Move -I/path/to/src/amplmp/include to front of compiler flags for include directories
    1347
    1348### Makefile
    1349
    1350Fixed bugs
    1351----------
    1352
    1353- fixed an incorrect handling of xor constraints
    1354- the feasibility checker for integrality constraints now uses checkintegrality even for implied integers
    1355- skip integrality check in cons_integral for relaxation-only implicit-integer variables
    1356- fixed an issue caused by aggregated variables not added to a hashmap in the xor constraint handler
    1357- changed function solveRowEchelonGF2 in cons_xor.c to avoid errors if rank is 0
    1358- fixed that the implication presolver tried to aggregate or tighten bounds of multiaggregated variables
    1359- fixed a sign check in detection of linear constraints that are parallel to the objective
    1360- fixed bug in Clp and lpi_clp with missing basis information when calling the barrier with crossover; needs new Clp version
    1361- do not assume aggregation is successful in cons_setppc.c
    1362
    1363Miscellaneous
    1364-------------
    1365
    1366- Changed license to Apache 2.0, see https://www.apache.org/licenses/LICENSE-2.0.
    1367- When an LP could not be solved accurately, scaling is now turned off as a last fall-back method.
    1368- Functions for using the debug solution mechanism SCIPdebugAddSolVal, SCIPdebugGetSol, SCIPdebugGetSolVal,
    1369 SCIPdebugSolIsValidInSubtree, SCIPdebugIsMainscip, SCIPdebugSolEnable, SCIPdebugSolDisable, SCIPdebugSolIsEnabled,
    1370 SCIPwithDebugSol are now exported
    1371
    1372@section RN802 SCIP 8.0.2
    1373*************************
    1374
    1375Interface changes
    1376-----------------
    1377
    1378### Deleted and changed API functions
    1379
    1380- added input parameter SCIP_Bool initiallp to SCIPcutselsSelect
    1381- changed function type int to SCIP_Longint for SCIPcutpoolGetMaxNCuts
    1382- replaced SCIPsepastoreGetNCutsFound with SCIPsepastoreGetNCutsAdded following the naming convention for the new statistics
    1383- replaced SCIPsepaIncNAppliedCuts with SCIPsepaIncNCutsApplied
    1384
    1385### New API functions
    1386
    1387- added SCIPsepastoreGetNCutsAdded, SCIPsepastoreGetNCutsAddedViaPool, SCIPsepastoreGetNCutsAddedDirect
    1388- added SCIPsepaIncNCutsAdded, SCIPsepaDecNCutsAdded, SCIPsepaIncNCutsApplied, SCIPsepaGetNRootCalls, SCIPsepaGetNCutsAdded, SCIPsepaGetNCutsAddedViaPool, SCIPsepaGetNCutsAddedDirect, SCIPsepaGetNCutsAppliedViaPool, SCIPsepaGetNCutsAppliedDirect
    1389- added SCIPcutpoolGetNRootCalls, SCIPcutpoolGetNCutsAdded, SCIPcutpoolAddMaxNCuts, SCIPcutpoolSetTime, SCIPcutpoolAddNCalls, SCIPcutpoolAddNRootCalls, SCIPcutpoolAddNCutsFound, SCIPcutpoolAddNCutsAdded,
    1390- added SCIPcutselGetNCalls, SCIPcutselGetNRootCalls, SCIPcutselGetNRootCuts, SCIPcutselGetNRootForcedCuts, SCIPcutselGetNRootCutsFiltered, SCIPcutselGetNLocalCuts, SCIPcutselGetNLocalForcedCuts, SCIPcutselGetNLocalCutsFiltered,
    1391
    1392### Interfaces to external software
    1393
    1394- Added compatibility with Mosek 10.0.18.
    1395
    1396### New parameters
    1397
    1398- new parameters to turn on more statistics: misc/showdivingstats (diving heuristics), heuristics/alns/shownbstats (ALNS), estimation/showstats (tree size estimation)
    1399
    1400### Data structures
    1401
    1402- added nrootcalls and ncutsadded to SCIP_Cutpool
    1403- added fromcutpool flag to SCIP_Row and fixed 33 bit allocation
    1404- added ncalls, nrootcalls, nrootcutsselected, nrootcutsforced, nrootcutsfiltered, nlocalcutsselected, nlocalcutsforced, nlocalcutsfiltered to SCIP_Cutsel
    1405- added ncutsadded, ncutsaddedviapool, ncutsaddeddirect, ncutsappliedviapool, ncutsapplieddirect, nrootcalls to SCIP_Sepa
    1406- added ncutsadded, ncutsaddedviapool, ncutsaddeddirect to SCIP_Sepastore
    1407- fixed statistics of relaxators w.r.t. number of times conss/cuts were added
    1408
    1409Build system
    1410------------
    1411
    1412### Cmake
    1413
    1414- new option `-DAUTOBUILD` that configures scip with dependencies on availability.
    1415 Packages like Ipopt, PaPILO, Readline, Zimpl, ZLIB, GMP, Worhp are automatically found and linked, otherwise ignored.
    1416 The individual flags for these packages are ignored. This makes a quick build easier. It is by default set to off.
    1417
    1418Fixed bugs
    1419----------
    1420
    1421- read objective offset from ZIMPL files
    1422- Make sure that objective limit is disabled if not all variables are in the LP. If we would run into
    1423 an objective limit in this case, the results of the LP solver are unclear.
    1424- fixed bug in reopt.c, which occured for bounds outside of current valid bounds
    1425- fixed problem with recomputing symmetries after a restart
    1426- fixed bug in SCIPcalcMIR() with wrong order of arguments for removeZerosQuad()
    1427- fixed segmentation fault in update of cut statistic
    1428- fixed bug in presolving of and constraints by merging variables with multiple occurrences before cliquePresolve()
    1429- fixed bug in dual presolving of linear constraints by setting implicit integers to integers in multi-aggregation
    1430- fixed update of presolve statistics on added constraints and changed coefficients in constraint handler for nonlinear constraints
    1431- fixed bug with reading CIP files with large constraints split over several lines
    1432- fixed bug with infinite bounds in the computation of conflict cuts
    1433- fixed check for unbounded solution constructed by SCIPlpGetUnboundedSol(): The constructed solution is very likely infeasible
    1434 since scaling increases small numerical feasibility violations. Therefore, the solution is now always accepted. However, the
    1435 feasibility of the ray is now checked. This fix now might lead to several rounds of separation in order to resolve unbounded solutions,
    1436 whereas previously SCIP started to branch immediately.
    1437- changed to absolute tolerances in all redundancy checks for linear constraints
    1438
    1439Miscellaneous
    1440-------------
    1441
    1442- Added extended cutselector statistics splitting between root node specific and general statistics
    1443- Added extended and refined cutpool statistics showing the number of cuts added from the cutpool to the sepastore
    1444- Added extended and refined separator statistics to get a better view of the individual generators performance
    1445- turned off output of statistics for the following information by default:
    1446 diving heuristics, ALNS neighborhood information and tree size estimation statistics;
    1447 they can be turned on using the following new parameters:
    1448 misc/showdivingstats (diving heuristics), heuristics/alns/shownbstats (ALNS), estimation/showstats (tree size estimation)
    1449
    1450@section RN801 SCIP 8.0.1
    1451*************************
    1452
    1453Features
    1454--------
    1455
    1456- clique lifting in cons_setppc (parameter enablecliquelifting) is only disabled if it has been applied
    1457- avoid warning if Mosek has reached/exceeded the objective limit
    1458- improved curvature check for quadratic expressions when extended formulations are disabled
    1459
    1460Examples and applications
    1461-------------------------
    1462
    1463- Fixed handling of enforcing in the TSP example.
    1464
    1465Interface changes
    1466-----------------
    1467
    1468### Interfaces to external software
    1469
    1470- Added compatibility with Mosek 10.0.13.
    1471
    1472Build system
    1473------------
    1474
    1475- BLISS is now built from the vendored version from https://github.com/ds4dm/Bliss
    1476
    1477### Cmake
    1478
    1479- avoid warnings about unrecognized compiler warning silencing options when compilation with GCC fails
    1480- adjust mosek find module to version 9.3
    1481- added cmake compatibility for ipopt versions 3.14.x
    1482
    1483### Makefile
    1484
    1485- avoid warnings about unrecognized compiler warning silencing options when compilation with GCC fails
    1486- fixed that compilation with MS/Intel compilers on Windows and Cray compilers was broken when enabling PAPILO
    1487
    1488Fixed bugs
    1489----------
    1490
    1491- fixed uninitialized array in detection of suborbitopes
    1492- Fixed problem with reading long lines in LP/FZN/OPB/Diff-files. The buffer is now reallocated,
    1493 which also should be much faster.
    1494- fixed that recursive products in expressions were sometimes not flattened
    1495- fixed that expressions in original variables could not be simplified
    1496- fixed handling of objective limit with Mosek
    1497- made SCIPlpiGetSolverName()/SCIPlpiGetSolverDesc() thread-safe for LP Solvers (Cplex,Gurobi,Glop,Mosek,SoPlex,Xpress)
    1498- made SYMsymmetryGetName() thread-safe for Bliss
    1499- fixed memory allocation issue in detection of SOC nlhdlr
    1500- fixed that reaching the walltime limit in Ipopt was not handled properly
    1501- Deactivated dual fixing of unlocked variables with zero objective in presol_milp that SCIP is unable to postsolve.
    1502- set the column flag kImplInt for implicit integers in the papilo problem
    1503- fixed bug in propagation of indicator constraints (one case always reported a change through propagation)
    1504
    1505@section RN800 SCIP 8.0.0
    1506*************************
    1507
    1508Features
    1509--------
    1510
    1511- Variables that were marked as relaxation-only and that were not used in any solution (SCIP_SOL)
    1512 are now deleted when during a restart.
    1513- New symmetry handling method, symmetry handling inequalities based on the Schreier Sims table,
    1514 which is able to handle symmetries of arbitrary kinds of variables.
    1515- Revise way in which external memory (e.g., of LP-solver) is estimated.
    1516- The symmetry code can now heuristically search for orbitopes that do not completely handle
    1517 a symmetry component and add certain Schreier Sims cuts to such components.
    1518- The LPIs for Gurobi and Mosek are thread-safe now.
    1519- The complete code is now thread-safe by default.
    1520- New separator to generate mixing cuts (works well for stochastic programming with probabilistic constraint).
    1521- New parsing routines for cons_orbisack and cons_symresack.
    1522- Variables can now be marked to forbid aggregation.
    1523- Heuristic PADM can now reoptimize found solution with original objective function.
    1524- Added code to support debugging of catching or releasing of variables to var.c (prints backtrace
    1525 when catching and releasing).
    1526- SCIPintervalSin() and SCIPintervalCos() are now rounding-safe.
    1527- Removed special handling of second-order cones in undercover heuristic for now.
    1528- Removed use of Hessian sparsity pattern for nonquadratic nonlinear constraints in undercover heuristic.
    1529- Added reader for AMPL .nl files.
    1530- New separator sepa_rlt to compute cuts via the reformulation-linearization technique (RLT).
    1531- New separator sepa_minor to compute cuts from 2x2 minors of a violated semidefiniteness constraint that is
    1532 implied by the extended formulation for bilinear products.
    1533- New separator sepa_interminor to compute intersection cuts from 2x2 (not only principle) minors of a violated
    1534 rank-one constraint that is implied by the extended formulation for bilinear products.
    1535- Symmetry handling has been extended to detect also symmetries between variables that also appear in nonlinear constraints.
    1536- Improved OBBT propagator by only considering variables that are contained in at least one nonconvex expression that has an auxiliary variable.
    1537- Default parameter settings for NLP solves are now defined independently of the NLP solver.
    1538- Added table to print statistics on NLP solvers.
    1539- Knapsack, linear, logicor, setppc, and varbound constraints now add themselves to the NLP relaxation, if enabled.
    1540 And, linking constraints and bounddisjunctions in one variable are added to the NLP relaxation now.
    1541- Ipopt interface now supports warmstarts from a full primal/dual solution pair.
    1542- Extended data structure SCIP_ROWPREP and routines to assemble a linear inequality before it is turned into a SCIP row and
    1543 made it available via the API.
    1544- MIR procedure is now available for strengthening the Benders' optimality cut
    1545- SCIPbranchcandCalcLPCands() now also returns fractional variables in unbounded solutions.
    1546- New emphasis "benchmark" to avoid different solving paths that may come from checking remaining memory.
    1547- New plugin type for cut selection: users can now include their own cut selection rules, default rule moved to cutsel_hybrid.
    1548- New construction heuristic DPS which additionally needs a user-provided decomposition and splits the problem into several sub-SCIPs
    1549 according to this decomposition. The sub-SCIPs are solved and updated repeatedly until a feasible solution of the original problem is found.
    1550
    1551Expressions:
    1552- Removed support for expression types min and max for now. Removed support for expression type sign.
    1553 Removed complex expression types sum, product, linear, quadratic, polynomial.
    1554 Removed support for parameterized expressions.
    1555- Added support for expression types sin, cos, and entropy. Added an expression type that stores a SCIP variable.
    1556- Added handling of sin and cos expressions in OSiL reader.
    1557- Added handling of sin, cos, and tan expressions in ZIMPL reader.
    1558- Added expression handler plugin type, removed user expression type.
    1559- Replaced expressions, expression trees, and expression graphs by a new implementation of expressions.
    1560- Added differentiation methods (Gradients and Hessian directions) to expressions.
    1561- Added integrality information to expressions.
    1562- Added comparison and hashing of expressions.
    1563- Improved simplification of expressions and identification of common subexpressions, in particular terms that appear
    1564 equally in several quadratic functions are now identified.
    1565- Expression simplification now expands powers also when the resulting exponents will be larger than 2.
    1566- Added table to print statistics on expression handlers.
    1567- Removed interval-arithmetic evaluation from expression interpreter (interfaces to automatic differentiation codes).
    1568- Hessians for user-provided expression handlers are not available in the NLP solver interfaces for now.
    1569- Sparse Hessians are now returned by expression interpreter. Removed dense Hessians.
    1570
    1571Constraint handlers for NLP:
    1572- cons_nonlinear has been completely rewritten and now handles constraints of the form lhs <= expr <= rhs, where
    1573 expr is an expression using the new expression type. A linear part of a nonlinear constraint is no longer distinguished.
    1574- Methods that work on a particular nonlinear structure are now implemented via nonlinear handlers (nlhdlr).
    1575 These handlers are plugins of cons_nonlinear and interact with cons_nonlinear by detecting structures in expressions and
    1576 providing propagation and separation mechanisms.
    1577- Added nlhdlr "default" as a mandatory nlhdlr: this is a nlhdlr that gets active on expressions that no other nlhdlr handles.
    1578 It then uses the callbacks implemented in expression handlers to provide domain propagation and linear under/overestimates.
    1579- Added nlhdlr for quadratic expressions: domain propagation that was previously part of cons_quadratic; separation via intersection cuts (currently disabled).
    1580- Added nlhdlr for bilinear expressions: collects bilinear products and provides under/overestimation of a product over a 2D-projection of the LP.
    1581- Added nlhdlr for convex and concave expressions: detection of convex/concave subexpressions and linear under/overestimation.
    1582- Added nlhdlr for quotients: detects quotients, provides specialized linear under/overestimation and domain propagation for univariate quotients.
    1583- Added nlhdlr for perspective reformulations: detects expressions in semi-continuous variables and tightens linear
    1584 under/overestimates of these expressions by applying a perspective transformation.
    1585- Added nlhdlr for second-order cones: detects second-order cone constraints (as ||x|| <= t or a quadratic that can written like that) and
    1586 separates on a disaggregated reformulation (similar to cons_soc previously).
    1587- Removed constraint handlers abspower, bivariate, quadratic, and soc.
    1588- Removed simplification of duplicate abspower constraints for now.
    1589 Removed simplification of abspower constraints with loose variables.
    1590 Removed resolving of domain propagation (ConsResProp callback) and conflict analysis for abspower constraints.
    1591 Removed propagation of varbounds for variables of abspower constraints.
    1592 Removed reformulation of abs(x)^p * x into signpower expression for now.
    1593- Removed reformulation of SOC constraints when adding to the NLP.
    1594 Removed possibility to add linearizations a la Glineur or BenTal&Nemirovski for SOC constraints.
    1595- Removed possibility to disaggregate quadratic constraints.
    1596 Removed lifted tangent inequalities for bilinear terms in quadratic constraints.
    1597 Removed option to project LP solution onto feasible region of a quadratic constraint via interior point or gauge function.
    1598 Removed handling of unbounded LPs when enforcing quadratic constraints.
    1599- Removed construction of cuts from interval gradients for nonlinear constraints.
    1600 Removed possibility to pretend that all nonlinear constraints are convex.
    1601 Removed possibility to create local or non-initial nonlinear constraints for now.
    1602- Removed explicit reformulation of nonlinear constraints in presolve.
    1603 An extended formulation is now generated implicitly and used to construct the LP relaxation,
    1604 but the original formulation is used to check feasibility, propagate variable domains, etc.
    1605 Variables that are added for the extended formulation are now marked as relaxation-only.
    1606- Improved locking of nonlinear variables in nonlinear constraints by taking monotonicity into account.
    1607- Improved mechanisms to detect and handle structures in nonlinear constraints, which allows for several algorithms
    1608 to work simultaneously on equal or overlapping expressions.
    1609- Improved linearization of (sums of) products of binary variables, e.g., clique information is now taken into account.
    1610 Removed option to linearize products between a binary and a non-binary variable.
    1611- Nonlinear constraints with the same function (but possibly different left- or right-hand-side) are now merged.
    1612- 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.
    1613- New branching rule for variables in nonlinear constraints (implemented in cons_nonlinear) that scores candidates
    1614 based on constraint violation, variable type, and pseudo-costs simultaneously.
    1615- Added tables to print statistics of nonlinear constraint handler and nonlinear handlers.
    1616
    1617Performance improvements
    1618------------------------
    1619
    1620- Use the objective cutoff row as base row for separation in sepa_aggregation.c.
    1621- Separate lifted cover cuts based on newer lifting function of Letchford and Souli (2019) in sepa_aggregation.c.
    1622- In-tree restarts due to tree size estimation have been made compatible with orbital fixing.
    1623- Improved upgrade of orbisacks to packing/partitioning orbitopes.
    1624- Improved running time of symresack cover separation.
    1625- Improved propagation algorithm for orbisack and symresack.
    1626- Improved handling for expressions of type signpower in CppAD interface by making use of CppADs conditional expressions.
    1627- Faster reevaluation of Hessian for quadratic expressions in CppAD interface.
    1628- Enabled optimization of taped expressions in the CppAD interface.
    1629- Sparse Hessian evaluation for expressions with sparse Hessian in the CppAD interface.
    1630- Disabled branching on variables that are added for the extended formulation of a nonlinear constraint.
    1631- 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.
    1632- 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.
    1633- Improved under/overestimation of multidimensional vertex-polyhedral (e.g., multilinear or concave) functions by use of scaling and keeping the cut-generating LP around.
    1634- Products in nonlinear constraints are no longer disaggregated for the extended formulation.
    1635- No longer relax bounds of integral variables when computing bounds on activity in nonlinear constraints.
    1636- Revised and improved Ipopt interface.
    1637- Revised and improved subNLP primal heuristic, in particular choice of iteration limit and starting condition and reuse of subSCIP.
    1638- Merge strongcg into the gomory separator to avoid computing the same base equality twice. The files
    1639 sepa_strongcg.{h|c} have been removed.
    1640- The RENS neighborhood in ALNS now fixes fractional variables if necessary for reaching its target fixing rate.
    1641- Use cpsolver emphasis in sepa_rapidlearning.
    1642- If decomposition/maxgraphedge = 0, the computation of the block graph is completely turned off.
    1643- Fixed a performance bug in cons_integral.c where rounding information was passed incorrectly to the generic diving algorithm.
    1644
    1645Examples and applications
    1646-------------------------
    1647
    1648- Add c++ Sudoku example
    1649- Removed circle.c and renamed string.c to spring.c in CallableLibrary example.
    1650- SCIP-Jack (Steiner tree application):
    1651 Most files have been modified and many new ones have been added (code base more than doubled).
    1652 Two new problem classes are supported: maximum-weight connected subgraph problem with budget constraints, partial-terminal node-weighted Steiner tree problem.
    1653 Major performance improvements accross all problem classes that are supported.
    1654
    1655Interface changes
    1656-----------------
    1657
    1658### New and changed callbacks
    1659
    1660- extend SEPAEXEC{LP,SOL} callbacks by parameter "depth", which should be used within separation instead of SCIPgetCurrentDepth()
    1661- extend SCIPseparateSolCutpool() by parameter "pretendroot", which is passed to SCIPcutpoolSeparate() instead of SCIPtreeGetCurrentDepth(scip->tree) == 0
    1662- removed SCIP_DECL_EXPRGRAPHVARADDED, SCIP_DECL_EXPRGRAPHVARREMOVE, SCIP_DECL_EXPRGRAPHVARCHGIDX
    1663- 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
    1664- added SCIP_DECL_EXPR_OWNERFREE, SCIP_DECL_EXPR_OWNERPRINT, SCIP_DECL_EXPR_OWNEREVALACTIVITY, SCIP_DECL_EXPR_OWNERCREATE
    1665- added SCIP_DECL_EXPR_INTEVALVAR, SCIP_DECL_EXPR_MAPEXPR
    1666- 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
    1667- removed SCIP_DECL_QUADCONSUPGD
    1668- added SCIP_DECL_VERTEXPOLYFUN
    1669- added argument nvarexprs to SCIP_DECL_NONLINCONSUPGD to inform upgrade method about number of variables in constraint
    1670- removed SCIP_DECL_EXPRGRAPHNODEREFORM
    1671- 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
    1672- replaced BMS_BLKMEM* blkmem argument of SCIP_DECL_NLPICOPY by SCIP* scip, removed targetnlpi argument
    1673- added SCIP* scip and SCIP_NLPIDATA** nlpidata arguments to SCIP_DECL_NLPIFREE
    1674- 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
    1675- replaced SCIP_DECL_NLPICHGEXPRTREE by SCIP_DECL_NLPICHGEXPR
    1676- removed nquadelems, quadelems, exprvaridxs arguments from SCIP_DECL_NLPIADDCONSTRAINTS, changed exprtrees argument to exprs
    1677- removed nquadelems, quadelems, exprvaridxs arguments from SCIP_DECL_NLPISETOBJECTIVE, changed exprtree argument to expr
    1678- removed SCIP_DECL_NLPICHGQUADCOEFS, SCIP_DECL_NLPICHGNONLINCOEF, SCIP_DECL_NLPISETMESSAGEHDLR
    1679- added SCIP_NLPIPROBLEM* problem to SCIP_DECL_NLPIGETSOLVERPOINTER
    1680
    1681### Deleted and changed API functions
    1682
    1683- When calling SCIPdelVar() in the SCIP_STAGE_PROBLEM stage, it is now documented as the user's responsibility to ensure
    1684 the variable is not present in any constraints. Otherwise, SCIPsolve() now returns SCIP_INVALIDDATA.
    1685- removed SCIPselectCuts(), replaced by SCIPselectCutsHybrid() of the hybrid cut selector plugin
    1686- If SCIPvarMarkRelaxationOnly() is called for a variable, then this now need to happen before the
    1687 variable is added to the transformed problem (SCIPaddVar()).
    1688 SCIPvarMarkRelaxationOnly() will automatically call SCIPvarMarkDeletable().
    1689- SCIPcomputeOrbitsFilterSym() and SCIPcomputeComponentsSym(): Type of argument componentblocked
    1690 changed from SCIP_Shortbool* to unsigned*.
    1691- removed SCIPsetParam()
    1692- SCIPcreateConsOrbitope() and SCIPcreateConsBasicOrbitope() have two new arguments "usedynamicprop"
    1693 and "mayinteract" to encode whether a dynamic reordering of the orbitope rows shall be used in
    1694 full orbitope propagation and whether the orbitope might interact with other symmetry handling
    1695 methods, respectively.
    1696- internal function SCIPgetPropertiesPerm() has been replaced by SCIPisInvolutionPerm()
    1697- internal function SCIPgenerateOrbitopeVarsMatrix() has new arguments "storelexorder", "lexorder",
    1698 "nvarsorder", "maxnvarsorder" to compute and store the lexicographic order defined by an orbitope
    1699- renamed SCIPcomputeArraysIntersection() and SCIPcomputeArraysSetminus() to
    1700 SCIPcomputeArraysIntersectionInt() and SCIPcomputeArraysSetminusInt(), respectively, and changed
    1701 their return type from SCIP_RETCODE (which _always_ was SCIP_OKAY) to void
    1702- removed SCIPincludeDialogDefault(), use SCIPincludeDialogDefaultBasic() instead and check whether you also need SCIPincludeDialogDefaultSet() and SCIPincludeDialogDefaultFix()
    1703- removed exprint argument from SCIPaddNlRowGradientBenderscutOpt()
    1704- added copyexprhdlrs argument to SCIPcopyPlugins() (19th position)
    1705- added copycutselectors argument to SCIPcopyPlugins() (10th position)
    1706- removed refpoint argument from SCIPaddSquareSecant()
    1707- added argument exprdata to SYMcomputeSymmetryGenerators()
    1708- removed SCIPconsNonlinearGetRhs(), SCIPconsNonlinearGetLhs(), SCIPconsNonlinearAddLinearCoef()
    1709- removed arguments timelimit, minimprove, itercontingent, and iterused from SCIPapplyHeurSubNlp()
    1710- removed SCIPresolveSolHeurSubNlp(), SCIPgetSubScipHeurSubNlp(), SCIPgetVarMappingScip2SubScipHeurSubNlp(), SCIPgetVarMappingSubScip2ScipHeurSubNlp()
    1711- SCIPlockVarCons() and SCIPunlockVarCons() are now allowed in stage TRANSFORMED as well
    1712- Added functions SCIPsetSepaIsParentsepa(), SCIPsetSepaParentsepa() [in scip_sepa.h], SCIPsepaSetIsParentsepa(), SCIPsepaSetParentsepa() [in sepa.h],
    1713 SCIPsepaIsParentsepa(), SCIPsepaGetParentsepa() [in pub_sepa.h]
    1714- Added function SCIPpruneTree() to immediately delete nodes that were marked to be deleted with SCIPcutoffNode
    1715
    1716NLP:
    1717- SCIPhasNLPContinuousNonlinearity() now returns SCIP_RETCODE and has additional argument result
    1718- removed SCIPnlrowGetNQuadVars(), SCIPnlrowGetQuadVars(), SCIPnlrowSearchQuadVar(), SCIPnlrowGetNQuadElems(), SCIPnlrowGetQuadElems(), SCIPnlrowGetQuadData()
    1719- renamed SCIPnlrowGetExprtree() to SCIPnlrowGetExpr() and changed return type to SCIP_EXPR*
    1720- removed arguments nquadvars, quadvars, nquadelems, quadelems from SCIPcreateNlRow(); argument expr(ession) is now of type SCIP_EXPR*
    1721- removed SCIPaddQuadVarToNlRow(), SCIPaddQuadVarsToNlRow(), SCIPaddQuadElementToNlRow(), SCIPaddQuadElementsToNlRow(), SCIPchgNlRowQuadElement(), SCIPsetNlRowExprtreeParam(), SCIPsetNlRowExprtreeParams()
    1722- renamed SCIPsetNlRowExprtree() to SCIPsetNlRowExpr() and changed type of expr(tree) argument to SCIP_EXPR*
    1723- SCIPenableNLP() is no longer allowed in stages INITSOLVE and SOLVING
    1724- removed SCIPaddLinearConsToNlpHeurSubNlp()
    1725- 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
    1726- renamed SCIPsolveNLP() to SCIPsolveNLPParam() and added parameter SCIP_NLPPARAM param
    1727- removed SCIPsolveDiveNLP(), use SCIPsolveNLPParam() instead
    1728
    1729NLPI:
    1730- removed SCIPnlpiCopy(), SCIPnlpiFree(), SCIPnlpiChgQuadCoefs(), SCIPnlpiChgNonlinCoef(), SCIPnlpiSetMessageHdlr()
    1731- removed SCIPnlpiCreate() from public API, use SCIPincludeNlpi() instead
    1732- removed SCIPnlpiGetSolverPointer() from public API, use SCIPgetNlpiSolverPointer() instead
    1733- removed SCIPnlpiCreateProblem() from public API, use SCIPcreateNlpiProblem() instead
    1734- removed SCIPnlpiFreeProblem() from public API, use SCIPfreeNlpiProblem() instead
    1735- removed SCIPnlpiGetProblemPointer() from public API, use SCIPgetNlpiProblemPointer() instead
    1736- removed SCIPnlpiAddVars() from public API, use SCIPaddNlpiVars() instead
    1737- removed SCIPnlpiAddConstraints() from public API, use SCIPaddNlpiConstraints() instead
    1738- removed SCIPnlpiSetObjective() from public API, use SCIPsetNlpiObjective() instead
    1739- removed SCIPnlpiChgVarBounds() from public API, use SCIPchgNlpiVarBounds() instead
    1740- removed SCIPnlpiChgConsSides() from public API, use SCIPchgNlpiConsSides() instead
    1741- removed SCIPnlpiDelVarSet() from public API, use SCIPdelNlpiVarSet() instead
    1742- removed SCIPnlpiDelConsSet() from public API, use SCIPdelNlpiConsSet() instead
    1743- removed SCIPnlpiChgLinearCoefs() from public API, use SCIPchgNlpiLinearCoefs() instead
    1744- removed SCIPnlpiChgExprtree() from public API, use SCIPchgNlpiExpr() instead
    1745- removed SCIPnlpiChgObjConstant() from public API, use SCIPchgNlpiObjConstant() instead
    1746- removed SCIPnlpiSetInitialGuess() from public API, use SCIPsetNlpiInitialGuess() instead
    1747- removed SCIPnlpiSolve() from public API, use SCIPsolveNlpiParam() instead
    1748- removed SCIPnlpiGetSolstat() from public API, use SCIPgetNlpiSolstat() instead
    1749- removed SCIPnlpiGetTermstat() from public API, use SCIPgetNlpiTermstat() instead
    1750- removed SCIPnlpiGetSolution() from public API, use SCIPgetNlpiSolution() instead
    1751- removed SCIPnlpiGetStatistics() from public API, use SCIPgetNlpiStatistics() instead
    1752- removed SCIPnlpiGetWarmstartSize()
    1753- removed SCIPnlpiGetWarmstartMemo()
    1754- removed SCIPnlpiSetWarmstartMemo()
    1755- removed SCIPnlpiGetIntPar()
    1756- removed SCIPnlpiSetIntPar()
    1757- removed SCIPnlpiGetRealPar()
    1758- removed SCIPnlpiSetRealPar()
    1759- removed SCIPnlpiGetStringPar(),
    1760- removed SCIPnlpiSetStringPar()
    1761- removed SCIPnlpiSetPriority() from public API, use SCIPsetNlpiPriority() instead
    1762- removed argument nlpi from SCIPincludeNlpi() and added name, description, priority,
    1763 nlpicopy, nlpifree, nlpigetsolverpointer, nlpicreateproblem, nlpifreeproblem, nlpigetproblempointer, nlpiaddvars, nlpiaddconstraints, nlpisetobjective, nlpichgvarbounds, nlpichgconssides, nlpidelvarset, nlpidelconsset, nlpichglinearcoefs, nlpichgexpr, nlpichgobjconstant, nlpisetinitialguess, nlpisolve, nlpigetsolstat, nlpigettermstat, nlpigetsolution, nlpigetstatistics, nlpidata
    1764- removed SCIPcreateNlpSolverAll(), use SCIPincludeNlpSolverAll() instead
    1765- removed SCIPcreateNlpSolverFilterSQP(), use SCIPincludeNlpSolverFilterSQP() instead
    1766- removed SCIPcreateNlpSolverIpopt(), use SCIPincludeNlpSolverIpopt() instead
    1767- removed SCIPcreateNlpSolverWorhp(), use SCIPincludeNlpSolverWorhp() instead
    1768- replaced argument BMS_BLKMEM* blkmem of SCIPnlpiOracleCreate() by SCIP* scip
    1769- 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()
    1770- removed arguments nquadelems, quadelems, exprvaridxs, exprtrees from SCIPnlpiOracleAddConstraints(), added argument SCIP_EXPR** exprs
    1771- removed arguments nquadelems, quadelems, exprvaridxs, exprtree from SCIPnlpiOracleSetObjective(), added argument SCIP_EXPR* expr
    1772- replaced arguments isnewx of SCIPnlpiOracleEvalHessianLag() by two arguments isnewx_obj and isnewx_cons
    1773- removed SCIPnlpiOracleChgExprtree(), use SCIPnlpiOracleChgExpr() instead
    1774- removed SCIPnlpiOracleSetInfinity(), SCIPnlpiOracleGetInfinity(), SCIPnlpiOracleChgQuadCoefs(), SCIPnlpiOracleChgExprParam(), SCIPnlpiOracleGetMaxDegree()
    1775- removed SCIPnlpiOracleGetVarDegree() and SCIPnlpiOracleGetVarDegrees(), use SCIPnlpiOracleIsVarNonlinear() and SCIPnlpiOracleGetVarCounts(), respectively, instead
    1776- removed SCIPnlpiOracleGetConstraintDegree(), use SCIPnlpiOracleIsConstraintNonlinear() instead
    1777- removed argument messagehdlr from SCIPnlpiOraclePrintProblem() and SCIPnlpiOraclePrintProblemGams()
    1778- removed SCIPcreateNlpiProb(), use SCIPcreateNlpiProblemFromNlRows() instead
    1779- renamed SCIPupdateNlpiProb() to SCIPupdateNlpiProblem() and moved into scip_nlpi.{h,c}
    1780- renamed SCIPaddNlpiProbRows() to SCIPaddNlpiProblemRows() and moved into scip_nlpi.{h,c}
    1781- removed SCIPsetModifiedDefaultSettingsIpopt()
    1782- removed SCIPgetIpoptApplicationPointerIpopt(), use SCIPgetNlpiSolverPointer() instead
    1783- removed SCIPnlpStatisticsCreate(), SCIPnlpStatisticsFree(), SCIPnlpStatisticsGetNIterations(), SCIPnlpStatisticsGetTotalTime(), SCIPnlpStatisticsSetNIterations(), SCIPnlpStatisticsSetTotalTime(), the struct is public now
    1784- renamed LapackDsyev() to SCIPcallLapackDsyevIpopt()
    1785- renamed SCIPsolveLinearProb() to SCIPsolveLinearEquationsIpopt()
    1786
    1787Expression interpreter:
    1788- removed functions that operated with SCIPInterval
    1789- changed first argument of SCIPexprintCreate() to SCIP*
    1790- added SCIP* as first argument to SCIPexprintFree()
    1791- added SCIP* as first argument to SCIPexprintCompile(), changed third argument to SCIP_EXPR*, added fourth argument SCIP_EXPRINTDATA**
    1792- added arguments SCIP*, SCIP_EXPRINT*, and SCIP_EXPR* as first arguments to SCIPexprintFreeData()
    1793- renamed SCIPexprintGetExprtreeCapability() to SCIPexprintGetExprCapability();
    1794 added SCIP* as first argument, changed third argument to SCIP_EXPR*, added fourth argument SCIP_EXPRINTDATA*
    1795- removed SCIPexprintNewParametrization()
    1796- SCIPexprintEval(): added SCIP* as first argument, changed third argument to SCIP_EXPR*, added fourth argument SCIP_EXPRINTDATA*
    1797- removed SCIPexprintEvalInt()
    1798- SCIPexprintGrad(): added SCIP* as first argument, changed third argument to SCIP_EXPR*, added fourth argument SCIP_EXPRINTDATA*
    1799- removed SCIPexprintGradInt()
    1800- removed SCIPexprintHessianSparsityDense() and SCIPexprintHessianDense, use SCIPexprintHessianSparsity() and SCIPexprintHessian() instead
    1801
    1802Expressions:
    1803- removed SCIPexpropGetName(), use SCIPexprhdlrGetName() instead
    1804- removed SCIPexpropGetNChildren()
    1805- removed SCIPexprGetOperator(), use SCIPexprGetHdlr() instead
    1806- removed SCIPexprGetOpIndex(), SCIPexprGetOpReal(), SCIPexprGetOpData(), use SCIPexprGetData() instead
    1807- removed SCIPexprGetRealPowerExponent(), SCIPexprGetIntPowerExponent(), SCIPexprGetSignPowerExponent(), use SCIPgetExponentExprPow() instead
    1808- removed SCIPexprGetLinearCoefs(), SCIPexprGetLinearConstant(), use SCIPgetCoefsExprSum() and SCIPgetConstantExprSum() instead
    1809- removed SCIPexprGetQuadElements(), SCIPexprGetQuadConstant(), SCIPexprGetQuadLinearCoefs(), SCIPexprGetNQuadElements(), use SCIPexprGetQuadraticData(), SCIPexprGetQuadraticQuadTerm(), SCIPexprGetQuadraticBilinTerm() instead
    1810- removed SCIPexprGetMonomials(), SCIPexprGetNMonomials, SCIPexprGetPolynomialConstant(), SCIPexprGetMonomialCoef(), SCIPexprGetMonomialNFactors(), SCIPexprGetMonomialChildIndices(), SCIPexprGetMonomialExponents()
    1811- removed SCIPexprGetUserData(), SCIPexprHasUserEstimator(), SCIPexprGetUserEvalCapability()
    1812- removed SCIPexprCreate(), use SCIPcreateExpr() instead
    1813- removed SCIPexprCopyDeep(), use SCIPduplicateExpr() instead
    1814- removed SCIPexprFreeDeep(), use SCIPreleaseExpr() instead
    1815- removed SCIPexprFreeShallow()
    1816- removed SCIPexprAdd(), SCIPexprMulConstant()
    1817- removed SCIPexprCreateLinear(), use SCIPcreateExprSum() instead
    1818- replaced SCIPexprAddToLinear() by SCIPappendExprSumExpr()
    1819- replaced SCIPexprCreateQuadratic() by SCIPcreateExprQuadratic()
    1820- removed SCIPexprSortQuadElems()
    1821- removed SCIPexprCreatePolynomial(), SCIPexprAddMonomials(), SCIPexprChgPolynomialConstant(), SCIPexprMultiplyPolynomialByConstant(), SCIPexprMultiplyPolynomialByMonomial(), SCIPexprMultiplyPolynomialByPolynomial(), SCIPexprPolynomialPower()
    1822- removed SCIPexprMergeMonomials(), SCIPexprFreeMonomial(), SCIPexprSortMonomialFactors(), SCIPexprFindMonomialFactor(), SCIPexprAreMonomialsEqual(), SCIPexprAddMonomialFactors(), SCIPexprChgMonomialCoef(), SCIPexprMultiplyMonomialByMonomial(), SCIPexprMonomialPower(), SCIPexprMergeMonomialFactors(), SCIPexprSortMonomials()
    1823- replaced SCIPexprCreateMonomial() by SCIPcreateExprMonomial()
    1824- removed SCIPexprCreateUser(), use SCIPincludeExprhdlr() instead
    1825- removed SCIPexprHasParam(), SCIPexprGetMaxDegree(), SCIPexprGetVarsUsage()
    1826- replaced SCIPexprAreEqual() by SCIPcompareExpr()
    1827- replaced SCIPexprSimplify() by SCIPsimplifyExpr()
    1828- replaced SCIPexprEvalShallow() by SCIPcallExprEval()
    1829- replaced SCIPexprEval() by SCIPevalExpr()
    1830- replaced SCIPexprEvalIntShallow() by SCIPcallExprInteval()
    1831- replaced SCIPexprEvalInt() by SCIPevalExprActivity()
    1832- removed SCIPexprEvalUser(), SCIPexprEvalIntUser(), SCIPexprEstimateUser()
    1833- replaced SCIPexprCheckCurvature() by SCIPcomputeExprCurvature()
    1834- removed SCIPexprSubstituteVars(), use SCIPcopyExpr() instead
    1835- removed SCIPexprReindexVars(), SCIPexprReindexParams()
    1836- replaced SCIPexprPrint() by SCIPprintExpr()
    1837- replaced SCIPexprParse() by SCIPparseExpr()
    1838
    1839Expression tree:
    1840- removed SCIPexprtreeGetVars(), SCIPexprtreeSetVars(), SCIPexprtreeAddVars(), SCIPexprtreePrintWithNames(), SCIPexprtreeFindVar()
    1841- removed SCIPexprtreeGetRoot(), SCIPexprtreeGetNVars(), SCIPexprtreeGetNParams(), SCIPexprtreeGetParamVals(), SCIPexprtreeSetParamVal(), SCIPexprtreeHasParam()
    1842- removed SCIPexprtreeGetInterpreterData(), SCIPexprtreeSetInterpreterData(), SCIPexprtreeFreeInterpreterData()
    1843- removed SCIPexprtreeGetMaxDegree()
    1844- removed SCIPexprtreeEval(), use SCIPevalExpr() instead
    1845- removed SCIPexprtreeEvalInt(), use SCIPevalExprActivity() instead
    1846- removed SCIPexprtreePrint(), use SCIPprintExpr() instead
    1847- removed SCIPexprtreeCreate()
    1848- removed SCIPexprtreeCopy(), use SCIPduplicateExpr() instead
    1849- removed SCIPexprtreeFree(), use SCIPreleaseExpr() instead
    1850- removed SCIPexprtreeSetParams(), SCIPexprtreeGetVarsUsage()
    1851- removed SCIPexprtreeSimplify(), use SCIPsimplifyExpr() instead
    1852- removed SCIPexprtreeAddExpr()
    1853- removed SCIPexprtreeCheckCurvature(), use SCIPcomputeExprCurvature() instead
    1854- removed SCIPexprtreeSubstituteVars(), use SCIPcopyExpr() instead
    1855- removed SCIPquadelemSort(), SCIPquadelemSortedFind(), SCIPquadelemSqueeze()
    1856
    1857Expression graph:
    1858- removed SCIPexprgraphCaptureNode(), use SCIPcaptureExpr() instead
    1859- removed SCIPexprgraphIsNodeEnabled()
    1860- removed SCIPexprgraphGetNodeNChildren(), use SCIPexprGetNChildren() instead
    1861- removed SCIPexprgraphGetNodeChildren(), use SCIPexprGetChildren() instead
    1862- removed SCIPexprgraphGetNodeNParents(), SCIPexprgraphGetNodeParents(), SCIPexprgraphGetNodeDepth(), SCIPexprgraphGetNodePosition()
    1863- removed SCIPexprgraphGetNodeOperator(), use SCIPexprGetHdlr() instead
    1864- removed SCIPexprgraphGetNodeOperatorIndex(), SCIPexprgraphGetNodeOperatorReal(), use SCIPexprGetData() instead
    1865- removed SCIPexprgraphGetNodeVar(), use SCIPgetVarExprVar() instead
    1866- removed SCIPexprgraphGetNodeRealPowerExponent(), SCIPexprgraphGetNodeIntPowerExponent(), SCIPexprgraphGetNodeSignPowerExponent(), use SCIPgetExponentExprPow() instead
    1867- removed SCIPexprgraphGetNodeLinearCoefs(), SCIPexprgraphGetNodeLinearConstant(), use SCIPgetCoefsExprSum(), SCIPgetConstantExprSum() instead
    1868- removed SCIPexprgraphGetNodeQuadraticConstant(), SCIPexprgraphGetNodeQuadraticLinearCoefs(), SCIPexprgraphGetNodeQuadraticQuadElements(), SCIPexprgraphGetNodeQuadraticNQuadElements(), use SCIPexprGetQuadraticData(), SCIPexprGetQuadraticQuadTerm(), SCIPexprGetQuadraticBilinTerm() instead
    1869- removed SCIPexprgraphGetNodePolynomialMonomials(), SCIPexprgraphGetNodePolynomialNMonomials(), SCIPexprgraphGetNodePolynomialConstant(), SCIPexprgraphGetNodePolynomialMonomialCurvature()
    1870- removed SCIPexprgraphGetNodeUserData(), SCIPexprgraphHasNodeUserEstimator()
    1871- removed SCIPexprgraphGetNodeBounds(), use SCIPexprGetActivity() instead
    1872- removed SCIPexprgraphGetNodeVal(), use SCIPexprGetEvalValue() instead
    1873- removed SCIPexprgraphGetNodeCurvature(), use SCIPexprGetCurvature() instead
    1874- removed SCIPexprgraphCreateNode()
    1875- removed SCIPexprgraphCreateNodeLinear(), use SCIPcreateExprSum() instead
    1876- removed SCIPexprgraphCreateNodeQuadratic(), use SCIPcreateExprQuadratic() instead
    1877- removed SCIPexprgraphCreateNodePolynomial(), SCIPexprgraphNodePolynomialAddMonomials()
    1878- removed SCIPexprgraphCreateNodeUser(), removed SCIPexprgraphNodeSplitOffLinear(), SCIPexprgraphMoveNodeParents()
    1879- removed SCIPexprgraphReleaseNode(), use SCIPreleaseExpr() instead
    1880- removed SCIPexprgraphFreeNode(), use SCIPreleaseExpr() instead
    1881- removed SCIPexprgraphEnableNode(), SCIPexprgraphDisableNode()
    1882- removed SCIPexprgraphHasNodeSibling(), SCIPexprgraphAreAllNodeChildrenVars(), SCIPexprgraphHasNodeNonlinearAncestor()
    1883- removed SCIPexprgraphPrintNode(), SCIPprintExpr() instead
    1884- removed SCIPexprgraphTightenNodeBounds()
    1885- removed SCIPexprgraphUpdateNodeBoundsCurvature(), use SCIPevalExprActivity() and SCIPcomputeExprCurvature() instead
    1886- removed SCIPexprgraphGetDepth(), SCIPexprgraphGetNNodes(), SCIPexprgraphGetNodes(), SCIPexprgraphGetNVars(), SCIPexprgraphGetVars()
    1887- removed SCIPexprgraphGetVarNodes(), SCIPexprgraphSetVarNodeValue(), SCIPexprgraphSetVarsBounds(), SCIPexprgraphSetVarBounds(), SCIPexprgraphSetVarNodeBounds(), SCIPexprgraphSetVarNodeLb(), SCIPexprgraphSetVarNodeUb(), SCIPexprgraphGetVarsBounds()
    1888- removed SCIPexprgraphCreate(), SCIPexprgraphFree()
    1889- removed SCIPexprgraphAddNode(), SCIPexprgraphAddVars(), SCIPexprgraphAddConst(), SCIPexprgraphAddExprtreeSum()
    1890- removed SCIPexprgraphReplaceVarByLinearSum(), SCIPexprgraphFindVarNode(), SCIPexprgraphFindConstNode()
    1891- replaced SCIPexprgraphPrintDot() by SCIPprintExprDotInit[2](), SCIPprintExprDot(), SCIPprintExprDotFinal()
    1892- removed SCIPexprgraphEval(), use SCIPevalExpr() instead
    1893- removed SCIPexprgraphPropagateVarBounds(), SCIPexprgraphPropagateNodeBounds()
    1894- removed SCIPexprgraphCheckCurvature(), use SCIPcomputeExprCurvature() instead
    1895- removed SCIPexprgraphSimplify(), use SCIPsimplifyExpr() instead
    1896- removed SCIPexprgraphGetTree(), SCIPexprgraphGetSeparableTrees(), SCIPexprgraphGetSubtreeVarsUsage(), SCIPexprgraphGetSumTreesNSummands(), SCIPexprgraphGetSumTrees()
    1897
    1898Constraint handlers for NLP:
    1899- removed SCIPincludeConshdlrAbspower()
    1900- deprecated SCIPcreateConsAbspower() and SCIPcreateConsBasicAbspower(), use SCIPcreateConsBasicSignpowerNonlinear() instead
    1901- deprecated SCIPgetNlRowAbspower(), use SCIPgetNlRowNonlinear() instead
    1902- removed SCIPgetNonlinearVarAbspower(), SCIPgetLinearVarAbspower(), SCIPgetExponentAbspower(), SCIPgetOffsetAbspower(), SCIPgetCoefLinearAbspower(), SCIPgetLhsAbspower(), SCIPgetRhsAbspower()
    1903- removed SCIPgetViolationAbspower(), use SCIPgetAbsViolationNonlinear() instead
    1904- removed SCIPisConvexAbspower(), use SCIPhasExprCurvature() instead
    1905- removed SCIPincludeConshdlrBivariate(), SCIPcreateConsBivariate(), SCIPcreateConsBasicBivariate()
    1906- removed SCIPgetLinearVarBivariate(), SCIPgetLinearCoefBivariate(), SCIPgetExprtreeBivariate(), SCIPgetLhsBivariate(), SCIPgetRhsBivariate()
    1907- removed SCIPincludeConshdlrQuadratic(), use SCIPincludeNlhdlrQuadratic() instead
    1908- removed SCIPincludeQuadconsUpgrade()
    1909- removed SCIPcreateConsQuadratic2(), SCIPcreateConsBasicQuadratic2()
    1910- deprecated SCIPcreateConsBasicQuadratic(), use SCIPcreateConsBasicQuadraticNonlinear() instead
    1911- deprecated SCIPcreateConsBasicQuadratic(), use SCIPcreateConsQuadraticNonlinear() instead
    1912- deprecated SCIPaddConstantQuadratic(), use SCIPgetLhsNonlinear() and SCIPgetRhsNonlinear() instead
    1913- deprecated SCIPaddLinearVarQuadratic(), use SCIPaddLinearVarNonlinear() instead
    1914- deprecated SCIPaddQuadVarQuadratic(), use SCIPaddLinearVarNonlinear() and SCIPaddExprNonlinear() instead
    1915- deprecated SCIPaddQuadVarLinearCoefQuadratic(), use SCIPaddLinearVarNonlinear() instead
    1916- deprecated SCIPaddSquareCoefQuadratic(), use SCIPaddExprNonlinear() instead
    1917- deprecated SCIPaddBilinTermQuadratic(), use SCIPaddExprNonlinear() instead
    1918- deprecated SCIPchgLhsQuadratic(), use SCIPgetLhsNonlinear() instead
    1919- deprecated SCIPchgRhsQuadratic(), use SCIPgetRhsNonlinear() instead
    1920- deprecated SCIPgetNlRowQuadratic(), use SCIPgetNlRowNonlinear() instead
    1921- removed SCIPgetNLinearVarsQuadratic(), SCIPgetLinearVarsQuadratic(), SCIPgetCoefsLinearVarsQuadratic(), SCIPgetNQuadVarTermsQuadratic(), SCIPgetQuadVarTermsQuadratic(), SCIPsortQuadVarTermsQuadratic(), SCIPfindQuadVarTermQuadratic(), SCIPgetNBilinTermsQuadratic(), SCIPgetBilinTermsQuadratic(), SCIPgetLhsQuadratic(), SCIPgetRhsQuadratic()
    1922- removed SCIPgetLinvarMayDecreaseQuadratic(), SCIPgetLinvarMayIncreaseQuadratic()
    1923- removed SCIPcheckCurvatureQuadratic() and SCIPisConvexConsQuadratic(), use SCIPcomputeExprQuadraticCurvature() instead
    1924- removed SCIPisConvexQuadratic(), SCIPisConcaveQuadratic()
    1925- removed SCIPgetViolationQuadratic() and SCIPgetFeasibilityQuadratic(), use SCIPgetAbsViolationNonlinear() instead
    1926- removed SCIPisLinearLocalQuadratic(), SCIPaddToNlpiProblemQuadratic()
    1927- removed SCIPchgLinearCoefQuadratic(), SCIPchgSquareCoefQuadratic(), SCIPchgBilinCoefQuadratic()
    1928- renamed SCIPgetNAllBilinearTermsQuadratic() to SCIPgetNBilinTermsNonlinear() and changed argument from SCIP* to SCIP_CONSHDLR*
    1929- renamed SCIPgetAllBilinearTermsQuadratic() to SCIPgetBilinTermsNonlinear() and replaced arguments by SCIP_CONSHDLR* and changed return type to SCIP_CONSNONLINEAR_BILINTERM*
    1930- removed SCIPaddBilinearIneqQuadratic(), use SCIPinsertBilinearTermImplicitNonlinear() instead
    1931- renamed SCIPcreateConsQuadratic() to SCIPcreateConsQuadraticNonlinear() and removed argument stickingatnode
    1932- removed SCIPincludeConshdlrSOC()
    1933- replaced SCIPcreateConsBasicSOC() by SCIPcreateConsBasicSOCNonlinear()
    1934- deprecated SCIPcreateConsSOC(), use SCIPcreateConsBasicSOCNonlinear() instead
    1935- deprecated SCIPgetNlRowSOC(), use SCIPgetNlRowNonlinear() instead
    1936- removed SCIPgetNLhsVarsSOC(), SCIPgetLhsVarsSOC(), SCIPgetLhsCoefsSOC(), SCIPgetLhsOffsetsSOC(), SCIPgetLhsConstantSOC(), SCIPgetRhsVarSOC(), SCIPgetRhsCoefSOC(), SCIPgetRhsOffsetSOC(), use SCIPisSOCNonlinear() instead
    1937- removed SCIPaddToNlpiProblemSOC()
    1938- renamed SCIPincludeNonlinconsUpgrade() to SCIPincludeConsUpgradeNonlinear() and removed nodereform argument
    1939- removed arguments nlinvars, linvars, lincoefs, nexprtrees, exprtrees, nonlincoefs, stickingatnode from SCIPcreateConsNonlinear() and added SCIP_EXPR* argument
    1940- removed arguments nlinvars, linvars, lincoefs, nexprtrees, exprtrees, nonlincoefs from SCIPcreateConsBasicNonlinear() and added SCIP_EXPR* argument
    1941- removed SCIPcreateConsNonlinear2(), SCIPcreateConsBasicNonlinear2()
    1942- removed SCIPsetExprtreesNonlinear(), use SCIPchgExprNonlinear() instead
    1943- removed SCIPaddExprtreesNonlinear()
    1944- removed SCIPgetNLinearVarsNonlinear(), SCIPgetLinearVarsNonlinear(), SCIPgetLinearCoefsNonlinear()
    1945- removed SCIPgetNExprtreesNonlinear(), SCIPgetExprtreesNonlinear(), SCIPgetExprtreeCoefsNonlinear(), SCIPgetExprgraphNodeNonlinear(), use SCIPgetExprNonlinear() instead
    1946- removed argument scip from SCIPgetLhsNonlinear() and SCIPgetRhsNonlinear()
    1947- removed SCIPcheckCurvatureNonlinear(), SCIPgetCurvatureNonlinear(), and SCIPgetExprtreeCurvaturesNonlinear(), use SCIPhasExprCurvature() instead
    1948- renamed SCIPgetViolationNonlinear() to SCIPgetAbsViolationNonlinear()
    1949- added arguments var and coef to SCIPgetLinvarMayDecreaseNonlinear() and SCIPgetLinvarMayIncreaseNonlinear() and changed return type to void
    1950- removed SCIPgetExprgraphNonlinear()
    1951- removed SCIPcomputeHyperplaneThreePoints(), use SCIPcomputeFacetVertexPolyhedralNonlinear() instead
    1952
    1953### New API functions
    1954
    1955- added SCIPallocClearMemory() and SCIPallocClearBlockMemory() to allocate a chunk of (block) memory
    1956 that is initialized to zeros
    1957- New internal functions for changing the default values of parameters:
    1958 SCIPparamsetSetDefaultLongint(), SCIPparamsetSetDefaultReal(), SCIPparamsetSetDefaultChar(),
    1959 SCIPparamsetSetDefaultString() and
    1960 SCIPparamSetDefaultLongint(), SCIPparamSetDefaultReal(), SCIPparamSetDefaultChar(),
    1961 SCIPparamSetDefaultString()
    1962- new internal function SCIPisPackingPartitioningOrbitope() to check whether an orbitope is of
    1963 packing or partitioning type
    1964- new internal function SCIPcomputeOrbitVar() to compute the symmetry orbit of a variable
    1965- added SCIPcalcFibHash(SCIP_Real) to hash a floating-point value to an unsigned integer
    1966- added SCIPcomputeArraysIntersectionPtr() to compute intersection of two sorted arrays of pointers
    1967- new function SCIPinterruptLP() (intended to be called from a different thread) that interrupts ongoing lp solve
    1968- added SCIPcreateConsIndicatorGeneric() and SCIPcreateConsIndicatorGenericLinCons()
    1969 which copy the interface of SCIPcreateConsIndicator() and SCIPcreateConsIndicatorLinCons() and
    1970 add an activeone argument to specify whether the indicator constraint should be activated on 0 or 1.
    1971 SCIPcreateConsIndicator() also adds a lessthanineq flag to choose whether the linear constraint is a less-than or greater-than inequality.
    1972- added SCIPmarkDoNotAggrVar() to mark that a variable should not be aggregated
    1973- added SCIPdoNotAggrVar() to query whether a variable should not be aggregated
    1974- added SCIPdecompGetNBorderVars() and SCIPdecompGetNBorderConss() to get number of border variables/constraints
    1975- added SCIPdecompGetVarsSize() and SCIPdecompGetConssSize() to get variable/constraint size for each block of a decomposition
    1976- added SCIPincludeDialogDefaultBasic()
    1977- added SCIPintervalAreDisjointEps(), SCIPintervalIntersectEps()
    1978- added SCIPintervalEntropy()
    1979- added SCIPintervalPropagateWeightedSum()
    1980- added SCIPcalcRootNewton()
    1981- added SCIPvarGetImplicVarBounds()
    1982- added SCIPcreateRowprep(), SCIPfreeRowprep(), SCIPcopyRowprep(),
    1983 SCIProwprepGetNVars(), SCIProwprepGetVars(), SCIProwprepGetCoefs(), SCIProwprepGetSide(), SCIProwprepGetSidetype(), SCIProwprepIsLocal(), SCIProwprepGetName(), SCIProwprepGetNModifiedVars(), SCIProwprepGetModifiedVars(),
    1984 SCIProwprepReset(), SCIProwprepAddSide(), SCIProwprepAddConstant(), SCIProwprepSetSidetype(), SCIProwprepSetLocal(), SCIProwprepRecordModifications(),
    1985 SCIPprintRowprep(), SCIPprintRowprepSol(), SCIPensureRowprepSize(), SCIPaddRowprepTerm(), SCIPaddRowprepTerms(), SCIPgetRowprepViolation(), SCIPisRowprepViolationReliable(),
    1986 SCIPmergeRowprepTerms(), SCIPcleanupRowprep(), SCIPcleanupRowprep2(), SCIPscaleupRowprep(), SCIPscaleRowprep(),
    1987 SCIPgetRowprepRowConshdlr(), SCIPgetRowprepRowCons(), SCIPgetRowprepRowSepa()
    1988- added SCIPsetClockEnabled()
    1989- added SCIPisSolveInterrupted() to check whether SCIPinterruptSolve() has been called
    1990- added SCIPgetNPresolRounds()
    1991- added SCIPgetNUnfixedLPCols()
    1992- moved SCIPhistoryGetInferenceSum() and SCIPhistoryGetAvgConflictlength() from internal to public API
    1993
    1994Expression handler:
    1995- added SCIPincludeExprhdlr(), SCIPgetExprhdlrs(), SCIPgetNExprhdlrs(), SCIPfindExprhdlr()
    1996- added SCIPgetExprhdlrVar(), SCIPgetExprhdlrValue(), SCIPgetExprhdlrSum(), SCIPgetExprhdlrProduct(), SCIPgetExprhdlrPower()
    1997- added SCIPexprhdlrSetCopyFreeHdlr(), SCIPexprhdlrSetCopyFreeData(), SCIPexprhdlrSetPrint(), SCIPexprhdlrSetParse(), SCIPexprhdlrSetCurvature(), SCIPexprhdlrSetMonotonicity(), SCIPexprhdlrSetIntegrality(), SCIPexprhdlrSetHash(), SCIPexprhdlrSetCompare(), SCIPexprhdlrSetDiff(), SCIPexprhdlrSetIntEval(), SCIPexprhdlrSetSimplify(), SCIPexprhdlrSetReverseProp(), SCIPexprhdlrSetEstimate()
    1998- added SCIPexprhdlrGetName(), SCIPexprhdlrGetDescription(), SCIPexprhdlrGetPrecedence(), SCIPexprhdlrGetData(), SCIPexprhdlrHasPrint(), SCIPexprhdlrHasBwdiff(), SCIPexprhdlrHasFwdiff(), SCIPexprhdlrHasIntEval(), SCIPexprhdlrHasEstimate(), SCIPexprhdlrHasInitEstimates(), SCIPexprhdlrHasSimplify(), SCIPexprhdlrHasCurvature(), SCIPexprhdlrHasMonotonicity(), SCIPexprhdlrHasReverseProp()
    1999- added SCIPexprhdlrComp()
    2000- added SCIPexprhdlrGetNIntevalCalls(), SCIPexprhdlrGetIntevalTime(), SCIPexprhdlrGetNReversepropCalls(), SCIPexprhdlrGetReversepropTime(), SCIPexprhdlrGetNCutoffs(), SCIPexprhdlrGetNDomainReductions(), SCIPexprhdlrIncrementNDomainReductions(), SCIPexprhdlrGetNEstimateCalls(), SCIPexprhdlrGetEstimateTime(), SCIPexprhdlrGetNBranchings(), SCIPexprhdlrIncrementNBranchings(), SCIPexprhdlrGetNSimplifyCalls(), SCIPexprhdlrGetSimplifyTime(), SCIPexprhdlrGetNSimplifications()
    2001- added SCIPprintExpressionHandlerStatistics()
    2002- added SCIPincludeExprhdlrEntropy(), SCIPcreateExprEntropy(), SCIPisExprEntropy()
    2003- added SCIPincludeExprhdlrErf(), SCIPcreateExprErf(), SCIPisExprErf()
    2004- added SCIPcreateExprAbs(), SCIPincludeExprhdlrAbs(), SCIPisExprAbs()
    2005- added SCIPcreateExprExp(), SCIPincludeExprhdlrExp(), SCIPisExprExp()
    2006- added SCIPcreateExprLog(), SCIPincludeExprhdlrLog(), SCIPisExprLog()
    2007- added SCIPcreateExprPow(), SCIPcreateExprSignpower(), SCIPincludeExprhdlrPow(), SCIPincludeExprhdlrSignpower(), SCIPisExprSignpower(), SCIPgetExponentExprPow(), SCIPisExprPower()
    2008- added SCIPincludeExprhdlrProduct(), SCIPcreateExprProduct(), SCIPgetCoefExprProduct(), SCIPisExprProduct()
    2009- added SCIPincludeExprhdlrSum(), SCIPcreateExprSum(), SCIPsetConstantExprSum(), SCIPappendExprSumExpr(), SCIPmultiplyByConstantExprSum(), SCIPgetCoefsExprSum(), SCIPgetConstantExprSum(), SCIPisExprSum()
    2010- added SCIPincludeExprhdlrSin(), SCIPcreateExprSin(), SCIPincludeExprhdlrCos(), SCIPcreateExprCos(), SCIPisExprSin(), SCIPisExprCos()
    2011- added SCIPincludeExprhdlrValue(), SCIPcreateExprValue(), SCIPgetValueExprValue(), SCIPisExprValue()
    2012- added SCIPincludeExprhdlrVar(), SCIPcreateExprVar(), SCIPgetVarExprVar(), SCIPisExprVar()
    2013- added SCIPincludeExprhdlrVaridx(), SCIPcreateExprVaridx(), SCIPisExprVaridx(), SCIPgetIndexExprVaridx(), SCIPsetIndexExprVaridx()
    2014
    2015Expression:
    2016- added SCIPcaptureExpr(), SCIPreleaseExpr(), SCIPexprGetNUses()
    2017- added SCIPexprGetHdlr(), SCIPexprGetData(), SCIPexprSetData(), SCIPexprGetOwnerData()
    2018- added SCIPevalExpr(), SCIPgetExprNewSoltag(), SCIPexprGetEvalValue(), SCIPexprGetEvalTag()
    2019- added SCIPevalExprGradient(), SCIPevalExprHessianDir(), SCIPexprGetDerivative(), SCIPexprGetDot(), SCIPexprGetBardot(), SCIPexprGetDiffTag()
    2020- added SCIPevalExprActivity(), SCIPexprGetActivity(), SCIPexprGetActivityTag(), SCIPexprSetActivity()
    2021- added SCIPcomputeExprCurvature(), SCIPexprGetCurvature(), SCIPexprSetCurvature()
    2022- added SCIPcomputeExprIntegrality(), SCIPexprIsIntegral(), SCIPexprSetIntegrality()
    2023- added SCIPcheckExprQuadratic(), SCIPfreeExprQuadratic(), SCIPevalExprQuadratic(), SCIPprintExprQuadratic(), SCIPcomputeExprQuadraticCurvature()
    2024- added SCIPexprGetQuadraticData(), SCIPexprGetQuadraticQuadTerm(), SCIPexprGetQuadraticBilinTerm(), SCIPexprAreQuadraticExprsVariables()
    2025- added SCIPcreateExpr(), SCIPcreateExpr2(), SCIPcreateExprQuadratic(), SCIPcreateExprMonomial()
    2026- added SCIPappendExprChild(), SCIPreplaceExprChild(), SCIPremoveExprChildren()
    2027- added SCIPduplicateExpr(), SCIPduplicateExprShallow(), SCIPcopyExpr()
    2028- added SCIPparseExpr()
    2029- added SCIPprintExpr(), SCIPdismantleExpr()
    2030- added SCIPprintExprDotInit(), SCIPprintExprDotInit2(), SCIPprintExprDot(), SCIPprintExprDotFinal(), SCIPshowExpr()
    2031- added SCIPcompareExpr(), SCIPhashExpr()
    2032- added SCIPsimplifyExpr(), SCIPreplaceCommonSubexpressions()
    2033- added SCIPgetExprNVars(), SCIPgetExprVarExprs()
    2034- added SCIPcallExprPrint(), SCIPcallExprCurvature(), SCIPcallExprMonotonicity(), SCIPcallExprEval(), SCIPcallExprEvalFwdiff(), SCIPcallExprInteval(), SCIPcallExprEstimate(), SCIPcallExprInitestimates(), SCIPcallExprSimplify(), SCIPcallExprReverseprop()
    2035- added SCIPexprcurvPowerInv(), SCIPexprcurvMonomialInv()
    2036
    2037Expression iterator:
    2038- added SCIPcreateExpriter(), SCIPfreeExpriter()
    2039- added SCIPexpriterIsInit(), SCIPexpriterInit()
    2040- added SCIPexpriterRestartDFS(), SCIPexpriterSetStagesDFS(), SCIPexpriterGetCurrent(), SCIPexpriterGetStageDFS(), SCIPexpriterGetChildIdxDFS(), SCIPexpriterGetChildExprDFS(), SCIPexpriterGetParentDFS()
    2041- added SCIPexpriterGetCurrentUserData(), SCIPexpriterGetChildUserDataDFS(), SCIPexpriterGetExprUserData(), SCIPexpriterSetCurrentUserData(), SCIPexpriterSetExprUserData(), SCIPexpriterSetChildUserData()
    2042- added SCIPexpriterGetNext(), SCIPexpriterSkipDFS(), SCIPexpriterIsEnd()
    2043- added SCIPexprintHessianSparsity(), SCIPexprintHessian()
    2044
    2045Constraint handlers for NLP:
    2046- added SCIPgetCurBoundsTagNonlinear(), SCIPgetLastBoundRelaxTagNonlinear(), SCIPincrementCurBoundsTagNonlinear()
    2047- added SCIPgetVarExprHashmapNonlinear()
    2048- added SCIPprocessRowprepNonlinear()
    2049- added SCIPassumeConvexNonlinear()
    2050- added SCIPcollectBilinTermsNonlinear(), SCIPgetBilinTermIdxNonlinear(), SCIPgetBilinTermNonlinear(), SCIPevalBilinAuxExprNonlinear(), SCIPinsertBilinearTermExistingNonlinear(), SCIPinsertBilinearTermImplicitNonlinear()
    2051- added SCIPcomputeFacetVertexPolyhedralNonlinear()
    2052- added SCIPgetExprNonlinear()
    2053- added SCIPcheckQuadraticNonlinear(), SCIPchgLhsNonlinear(), SCIPchgRhsNonlinear(), SCIPchgExprNonlinear(), SCIPaddExprNonlinear()
    2054- added SCIPgetRelViolationNonlinear()
    2055- added SCIPgetExprNLocksPosNonlinear(), SCIPgetExprNLocksNegNonlinear(), SCIPgetExprAuxVarNonlinear(), SCIPgetExprNEnfosNonlinear(), SCIPgetExprEnfoDataNonlinear(), SCIPsetExprEnfoAuxValueNonlinear()
    2056- added SCIPgetExprNPropUsesActivityNonlinear(), SCIPgetExprNSepaUsesActivityNonlinear(), SCIPgetExprNAuxvarUsesNonlinear(), SCIPregisterExprUsageNonlinear()
    2057- added SCIPgetExprAbsOrigViolationNonlinear(), SCIPgetExprAbsAuxViolationNonlinear(), SCIPgetExprRelAuxViolationNonlinear()
    2058- added SCIPgetExprBoundsNonlinear(), SCIPtightenExprIntervalNonlinear(), SCIPmarkExprPropagateNonlinear()
    2059- added SCIPaddExprViolScoreNonlinear(), SCIPaddExprsViolScoreNonlinear(), SCIPgetExprViolScoreNonlinear()
    2060- added SCIPgetExprPartialDiffNonlinear(), SCIPgetExprPartialDiffGradientDirNonlinear()
    2061- added SCIPevalExprQuadraticAuxNonlinear()
    2062- added SCIPincludeNlhdlrNonlinear(), SCIPfindNlhdlrNonlinear(), SCIPgetNNlhdlrsNonlinear(), SCIPgetNlhdlrsNonlinear(), SCIPgetNlhdlrExprDataNonlinear()
    2063- added SCIPcreateConsQuadraticNonlinear() and SCIPcreateConsBasicQuadraticNonlinear() to create a nonlinear constraint that is quadratic
    2064- added SCIPcreateConsBasicSignpowerNonlinear() to create a nonlinear constraint that looks like the former abspower or signpower constraints
    2065
    2066Nonlinear Handler:
    2067- added SCIPincludeNlhdlrBilinear(), SCIPgetExprsBilinear(), SCIPgetNExprsBilinear(), SCIPaddIneqBilinear()
    2068- added SCIPincludeNlhdlrConvex(), SCIPincludeNlhdlrConcave(), SCIPhasExprCurvature()
    2069- added SCIPincludeNlhdlrDefault()
    2070- added SCIPincludeNlhdlrPerspective()
    2071- added SCIPincludeNlhdlrQuadratic()
    2072- added SCIPincludeNlhdlrQuotient()
    2073- added SCIPincludeNlhdlrSoc(), SCIPisSOCNonlinear(), SCIPfreeSOCArraysNonlinear()
    2074- added SCIPnlhdlrSetCopyHdlr(), SCIPnlhdlrSetFreeHdlrData(), SCIPnlhdlrSetFreeExprData(), SCIPnlhdlrSetInitExit(), SCIPnlhdlrSetProp(), SCIPnlhdlrSetSepa()
    2075- added SCIPnlhdlrGetName(), SCIPnlhdlrGetDesc(), SCIPnlhdlrGetDetectPriority(), SCIPnlhdlrGetEnfoPriority(), SCIPnlhdlrIsEnabled(), SCIPnlhdlrGetData()
    2076- added SCIPnlhdlrHasIntEval(), SCIPnlhdlrHasReverseProp(), SCIPnlhdlrHasInitSepa(), SCIPnlhdlrHasExitSepa(), SCIPnlhdlrHasEnfo(), SCIPnlhdlrHasEstimate()
    2077- added SCIPnlhdlrComp()
    2078
    2079NLPI:
    2080- added SCIPgetNlpiSolverPointer(), SCIPcreateNlpiProblem(), SCIPfreeNlpiProblem(), SCIPgetNlpiProblemPointer(), SCIPaddNlpiVars(), SCIPaddNlpiConstraints(), SCIPsetNlpiObjective(), SCIPchgNlpiVarBounds(), SCIPchgNlpiConsSides(), SCIPdelNlpiVarSet(), SCIPdelNlpiConsSet(), SCIPchgNlpiLinearCoefs(), SCIPchgNlpiExpr(), SCIPchgNlpiObjConstant(), SCIPsetNlpiInitialGuess(), SCIPsolveNlpiParam(), SCIPgetNlpiSolstat(), SCIPgetNlpiTermstat(), SCIPgetNlpiSolution(), SCIPgetNlpiStatistics()
    2081- added SCIPincludeNlpSolverAll()
    2082- added SCIPincludeNlpSolverFilterSQP(), SCIPgetSolverNameFilterSQP(), SCIPgetSolverDescFilterSQP(), SCIPisFilterSQPAvailableFilterSQP()
    2083- added SCIPincludeNlpSolverIpopt()
    2084- added SCIPincludeNlpSolverWorhp()
    2085- added SCIPnlpiOracleChgExpr()
    2086- added SCIPcreateNlpiProblemFromNlRows()
    2087- added SCIPnlpiOracleGetObjectiveConstant()
    2088- added SCIPnlpiOracleIsVarNonlinear(), SCIPnlpiOracleGetVarCounts(), SCIPnlpiOracleIsConstraintNonlinear()
    2089- added SCIPnlpiGetNProblems(), SCIPnlpiGetProblemTime(), SCIPnlpiGetNSolves(), SCIPnlpiGetSolveTime(), SCIPnlpiGetEvalTime(), SCIPnlpiGetNIterations(), SCIPnlpiGetNTermStat(), SCIPnlpiGetNSolStat(), SCIPnlpiMergeStatistics()
    2090- added SCIPmergeNLPIStatistics(), SCIPprintNLPIStatistics()
    2091- added SCIPnlpiOracleResetEvalTime(), SCIPnlpiOracleGetEvalTime()
    2092- added SCIPaddNlpiProblemNlRows()
    2093
    2094Cut Selector:
    2095- added SCIPincludeCutsel(), SCIPincludeCutselBasic(), SCIPsetCutselCopy(), SCIPsetCutselFree(), SCIPsetCutselInit(), SCIPsetCutselExit(), SCIPsetCutselInitsol(), SCIPsetCutselExitsol(), SCIPfindCutsel(), SCIPgetCutsels(), SCIPgetNCutsels(), SCIPsetCutselPriority()
    2096- added SCIPcutselGetName(), SCIPcutselGetData(), SCIPcutselGetDesc(), SCIPcutselGetPriority(), SCIPcutselSetData(), SCIPcutselIsInitialized(), SCIPcutselGetSetupTime(), SCIPcutselGetTime()
    2097
    2098### Command line interface
    2099### Interfaces to external software
    2100
    2101- removed GAMS interface (originally in interfaces/gams) and reading capability of gms reader;
    2102 the removed interface was a poorly maintained copy of the GAMS/SCIP interface that is available at
    2103 https://github.com/coin-or/GAMSlinks
    2104- integrated AMPL interface into main SCIP executable, that is, added possibility to use SCIP executable as solver in AMPL
    2105 (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)
    2106- the ZIMPL interface has been updated to support ZIMPL 3.4.1;
    2107 the minimal required ZIMPL version is now 3.4.1
    2108
    2109### Changed parameters
    2110
    2111- Extended range of parameter "misc/usesymmetry" from [0,3] to [0,7], changed default from 3 to 5
    2112- deleted parameter "constraints/orbitope/usedynamicprop"
    2113- changed type of parameter "propagating/symmetry/recomputerestart" from SCIP_Bool to int with range [0,2]
    2114- deleted parameter "propagating/symmetry/disableofrestart"
    2115- parameter "heuristics/padm/original" is now an advanced parameter
    2116- removed constraints/nonlinear/linfeasshift, constraints/nonlinear/reformulate, constraints/nonlinear/maxexpansionexponent, constraints/nonlinear/sepanlpmincont
    2117- removed constraints/nonlinear/upgrade/abspower
    2118- removed constraints/nonlinear/upgrade/and, use constraints/nonlinear/reformbinprodsand instead
    2119- removed constraints/nonlinear/upgrade/bivariate
    2120- removed constraints/nonlinear/upgrade/quadratic, use nlhdlr/quadratic/enabled instead
    2121- changed default of constraints/nonlinear/maxproprounds from 1 to 10
    2122- replaced constraints/nonlinear/enfocutsremovable by constraints/nonlinear/rownotremovable
    2123- replaced constraints/nonlinear/cutmaxrange by separating/maxcoefratiofacrowprep
    2124- 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
    2125- removed constraints/quadratic/replacebinaryprod, use constraints/nonlinear/reformbinprodsfac instead
    2126- removed constraints/quadratic/empathy4and, use constraints/nonlinear/reformbinprodsand instead
    2127- removed constraints/quadratic/binreforminitial, constraints/quadratic/binreformbinaryonly, constraints/quadratic/binreformmaxcoef
    2128- removed constraints/quadratic/cutmaxrange, constraints/quadratic/mincurvcollectbilinterms, constraints/quadratic/linearizeheursol, constraints/quadratic/checkcurvature, constraints/quadratic/checkfactorable, constraints/quadratic/checkquadvarlocks, constraints/quadratic/linfeasshift
    2129- removed constraints/quadratic/maxdisaggrsize, constraints/quadratic/disaggrmergemethod, constraints/quadratic/maxproprounds, constraints/quadratic/maxproproundspresolve, constraints/quadratic/enfolplimit, constraints/quadratic/sepanlpmincont, constraints/quadratic/enfocutsremovable
    2130- removed constraints/quadratic/gaugecuts, constraints/quadratic/interiorcomputation, constraints/quadratic/projectedcuts, constraints/quadratic/branchscoring, constraints/quadratic/usebilinineqbranch, constraints/quadratic/bilinineqmaxseparounds,
    2131- removed constraints/quadratic/minscorebilinterms, use nlhdlr/bilinear/enabled instead
    2132- removed constraints/quadratic/upgrade/linear, constraints/quadratic/upgrade/abspower, constraints/quadratic/upgrade/bivariate, constraints/quadratic/upgrade/bounddisjunction
    2133- removed constraints/quadratic/upgrade/soc, use nlhdlr/soc/enabled instead
    2134- renamed constraints/quadratic/upgrade/setppc to constraints/nonlinear/upgrade/setppc
    2135- 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
    2136- 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
    2137- 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
    2138- removed constraints/bivariate/cutmaxrange, constraints/bivariate/linfeasshift, constraints/bivariate/maxproprounds, constraints/bivariate/ninitlprefpoints, constraints/bivariate/enfocutsremovable
    2139- 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
    2140- 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
    2141- removed constraints/soc/generalsocupgrade, use nlhdlr/soc/compeigenvalues instead
    2142- changed default of presolving/qpkktref/maxrounds from -1 to 0
    2143- changed default of propagating/obbt/onlynonconvexvars from FALSE to TRUE
    2144- changed default of heuristics/subnlp/resolvetolfactor from 0.001 to 1.0
    2145- removed heuristics/subnlp/nlpoptfile, use nlpi/ipopt/optfile instead
    2146- removed separating/convexproj/nlptimelimit
    2147- removed separating/gauge/nlptimelimit
    2148- removed heuristics/subnlp/nlptimelimit and heuristics/subnlp/nlpiterlimit
    2149- removed heuristics/subnlp/resolvetolfactor and heuristics/subnlp/resolvefromscratch
    2150- changed default of heuristics/subnlp/itermin to 20
    2151- renamed heuristics/subnlp/iteroffset to heuristics/subnlp/nodesoffset
    2152- renamed heuristics/subnlp/iterquotient to heuristics/subnlp/nodesfactor
    2153- removed heuristics/subnlp/runalways, use heuristics/subnlp/nodesoffset=INT_MAX and heuristics/subnlp/successrateexp = 0.0 instead
    2154- removed heuristics/subnlp/minimprove, heuristics/multistart/nlpminimpr
    2155- Removed parameters for strongcg separator: separating/strongcg/..., i.e.,
    2156 maxrounds, maxroundsroot, maxsepacutsroot, maxsepacuts, dynamiccuts. One can control the
    2157 strongcg behavior throught the parameters of sepa_gomory.
    2158- renamed separating/{minortho,minorthoroot,objparalfac,intsupportfac} to cutselection/hybrid/{minortho,minorthoroot,objparalweight,intsupportweight}
    2159
    2160### New parameters
    2161
    2162- It is now possible to add orbitope constraints to handle symmetries even if not all variables
    2163 in a component of the symmetry group are binary. This feature can be enabled using the
    2164 parameter "propagating/symmetry/onlybinorbitope".
    2165
    2166- new parameter "propagating/symmetry/sstleaderrule" to select a rule for selecting the
    2167 leader in SST cuts
    2168- new parameter "propagating/symmetry/ssttiebreakrule" to select a tiebreak rule for selecting the
    2169 leader in SST cuts
    2170- new parameter "propagating/symmetry/sstleadervartype" to select the possible variable types
    2171 for a leader in SST cuts
    2172- new parameter "propagating/symmetry/addconflictcuts" to control whether SST cuts are added if
    2173 a binary leader variable is in conflict with a variable in its orbit
    2174- new parameter "propagating/symmetry/sstaddcuts" to control whether SST cuts are added
    2175- new parameter "propagating/symmetry/sstmixedcomponents" to control whether SST cuts are added
    2176 if a symmetry component contains variables of different types
    2177- new parameter "propagating/symmetry/detectsubgroups" to search for orbitopes defined by subgroups
    2178- new parameter "propagating/symmetry/addweaksbcs" to add Schreier Sims cuts for a single
    2179 variable orbit in case an orbitope subgroup is detected
    2180- new parameter "propagating/symmetry/addstrongsbcs" to add symretope facets for a single
    2181 variable orbit on which the symmetry group acts like a symmetric group
    2182- new parameter "propagating/symmetry/maxnconsssubgroup" to control up to which number of
    2183 constraints subgroups are detected
    2184- new parameter "propagating/symmetry/preferlessrows" to control whether orbitopes with
    2185 smallest number of rows shall be computed by the subgroup detection heuristic
    2186- new parameter "propagating/symmetry/usedynamicprop" to control if rows of full orbitope
    2187 shall be ordered dynamically in propagation
    2188- new parameter "separating/filtercutpoolrel" to control whether cutpool uses
    2189 a dynamic strategy to separate only cuts with high relative efficacy
    2190- if run from AMPL: display/statistics to enable printing detailed solve statistics after solve
    2191- if run from AMPL: display/logfile to specify name of file to write SCIP log to (additionally to writing to stdout)
    2192- constraints/nonlinear/propauxvars, constraints/nonlinear/varboundrelax, constraints/nonlinear/varboundrelaxamount, constraints/nonlinear/conssiderelaxamount
    2193- constraints/nonlinear/vpmaxperturb, constraints/nonlinear/vpadjfacetthresh, constraints/nonlinear/vpdualsimplex
    2194- constraints/nonlinear/bilinmaxnauxexprs, constraints/nonlinear/forbidmultaggrnlvar, constraints/nonlinear/checkvarlocks, constraints/nonlinear/violscale
    2195- constraints/nonlinear/reformbinprods, constraints/nonlinear/reformbinprodsand, constraints/nonlinear/reformbinprodsfac
    2196- constraints/nonlinear/tightenlpfeastol, constraints/nonlinear/propinenforce, constraints/nonlinear/weakcutthreshold, constraints/nonlinear/strongcutmaxcoef, constraints/nonlinear/strongcutefficacy, constraints/nonlinear/forcestrongcut, constraints/nonlinear/enfoauxviolfactor, constraints/nonlinear/weakcutminviolfactor
    2197- 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
    2198- constraints/nonlinear/linearizeheursol
    2199- nlhdlr/default/enabled
    2200- nlhdlr/convex/enabled, nlhdlr/convex/detectsum, nlhdlr/convex/extendedform, nlhdlr/convex/cvxquadratic, nlhdlr/convex/cvxsignomial, nlhdlr/convex/cvxprodcomp, nlhdlr/convex/handletrivial
    2201- nlhdlr/concave/enabled, nlhdlr/concave/detectsum, nlhdlr/concave/cvxquadratic, nlhdlr/concave/cvxsignomial, nlhdlr/concave/cvxprodcomp, nlhdlr/concave/handletrivial
    2202- nlhdlr/bilinear/enabled, nlhdlr/bilinear/useinteval, nlhdlr/bilinear/usereverseprop, nlhdlr/bilinear/maxseparoundsroot, nlhdlr/bilinear/maxseparounds, nlhdlr/bilinear/maxsepadepth
    2203- 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
    2204- 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
    2205- nlhdlr/quotient/enabled
    2206- nlhdlr/soc/enabled, nlhdlr/soc/mincutefficacy, nlhdlr/soc/compeigenvalues
    2207- propagating/obbt/createlincons
    2208- propagating/symmetry/onlybinarysymmetry
    2209- 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
    2210- 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
    2211- separating/interminor/usestrengthening, separating/interminor/usebounds, separating/interminor/mincutviol, separating/interminor/maxrounds, separating/interminor/maxroundsroot
    2212- table/cons_nonlinear/active, table/nlhdlr/active, table/exprhdlr/active, table/nlpi/active, table/nlhdlr_bilinear/active, table/nlhdlr_quadratic/active
    2213- expr/log/minzerodistance, expr/pow/minzerodistance
    2214- benders/default/maxslackvarcoef to specify maximal coefficient for slack variables; if exceeded, slack variables are fixed to zero
    2215- nlpi/ipopt/optfile to specify name of Ipopt options file to use for every solve with Ipopt
    2216- 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
    2217- nlpi/ipopt/warm_start_push
    2218- timing/nlpieval
    2219- heuristics/subnlp/iterinit, heuristics/subnlp/ninitsolves, heuristics/subnlp/successrateexp
    2220- heuristics/subnlp/expectinfeas, heuristics/subnlp/opttol, heuristics/subnlp/feastolfactor
    2221- heuristics/subnlp/presolveemphasis, heuristics/subnlp/setcutoff
    2222- new parameters "branching/inference/conflictprio" and "branching/inference/cutoffprio" that allow
    2223 using the different score criteria in inference branching hierarchically
    2224- new parameters "heuristics/alns/nodesquotmin", "heuristics/alns/maxcallssamesol" and "heuristics/alns/initduringroot"
    2225 to control neighborhoods in ALNS
    2226- new parameter "benders/default/benderscut/optimality/mir" to control whether mixed-integer rounding procedure is applied to Benders optimality cuts
    2227- new parameter "misc/avoidmemout" to try to avoid running into memory limit
    2228- cutselection/hybrid/dircutoffdistweight, cutselection/hybrid/efficacyweight, cutselection/hybrid/intsupportweight, cutselection/hybrid/objparalweight, cutselection/hybrid/priority
    2229- new parameter "decomposition/disablemeasures" to disable expensive measures in SCIPcomputeDecompStats()
    2230- new parameter "presolving/milp/probfilename" filename to write the problem to a file before MILP presolving starts
    2231
    2232### Data structures
    2233
    2234- removed quadratic terms from NLROWs
    2235- removed SCIP_NLPPAR_INFINITY from SCIP_NLPPARAM enum
    2236- added types SYM_OPTYPE, SYM_CONSTTYPE, SYM_RHSTYPE, SYM_EXPRDATA
    2237- removed class SCIPInterval
    2238- removed enum SCIP_EXPROP
    2239- removed union SCIP_EXPROPDATA, added SCIP_EXPRDATA
    2240- removed struct SCIP_EXPRTREE, use SCIP_EXPR instead
    2241- removed structs SCIP_QUADELEM, SCIP_EXPRDATA_QUADRATIC, SCIP_EXPRDATA_MONOMIAL, SCIP_EXPRDATA_POLYNOMIAL, SCIP_EXPRDATA_USER
    2242- removed structs SCIP_EXPRGRAPHNODE, SCIP_EXPRGRAPH
    2243- removed type SCIP_EXPRBOUNDSTATUS
    2244- removed struct SCIP_USEREXPRDATA
    2245- added enum SCIP_MONOTONE
    2246- added structs SCIP_EXPRHDLR, SCIP_EXPRHDLRDATA
    2247- added union SCIP_EXPRITER_USERDATA
    2248- added enum SCIP_EXPRITER_TYPE
    2249- added structs SCIP_EXPRITERDATA, SCIP_EXPRITER
    2250- added type SCIP_EXPRPRINT_WHAT, struct SCIP_EXPRPRINTDATA
    2251- removed enum SCIP_BIVAR_CONVEXITY
    2252- removed structs SCIP_QUADVAREVENTDATA, SCIP_QUADVARTERM, SCIP_BILINTERM
    2253- added structs SCIP_CONSNONLINEAR_AUXEXPR, SCIP_CONSNONLINEAR_BILINTERM
    2254- added type SCIP_NLHDLR_METHOD
    2255- added structs SCIP_NLHDLR, SCIP_NLHDLRDATA, SCIP_NLHDLREXPRDATA
    2256- enum SCIP_NLPPARAM has been changed to a struct that holds values of parameters for an NLP solve
    2257- removed SCIP_NLPPAR_OPTFILE/optfile from SCIP_NLPPARAM
    2258- added SCIP_NLPTERMSTAT_INTERRUPT to SCIP_NLPTERMSTAT enum; returned from NLP solver if SCIPinterruptSolve() has been called
    2259- renamed SCIP_NLPTERMSTAT_TILIM to SCIP_NLPTERMSTAT_TIMELIMIT
    2260- renamed SCIP_NLPTERMSTAT_ITLIM to SCIP_NLPTERMSTAT_ITERLIMIT
    2261- renamed SCIP_NLPTERMSTAT_LOBJLIM to SCIP_NLPTERMSTAT_LOBJLIMIT
    2262- renamed SCIP_NLPTERMSTAT_NUMERR to SCIP_NLPTERMSTAT_NUMERICERROR
    2263- renamed SCIP_NLPTERMSTAT_EVALERR to SCIP_NLPTERMSTAT_EVALERROR
    2264- renamed SCIP_NLPTERMSTAT_MEMERR to SCIP_NLPTERMSTAT_OUTOFMEMORY
    2265- renamed SCIP_NLPTERMSTAT_LICERR to SCIP_NLPTERMSTAT_LICENSEERROR
    2266- added evaltime to SCIP_NLPSTATISTICS
    2267- added structs SCIP_CUTSEL, SCIP_CUTSELDATA
    2268
    2269Deleted files
    2270-------------
    2271
    2272- interfaces/gams/∗
    2273- interfaces/ampl/∗
    2274- src/nlpi/∗
    2275- src/scip/cons_bivariate.{c,h}
    2276- src/scip/pub_misc_nonlinear.h
    2277- src/scip/misc_nonlinear.c
    2278- src/scip/scip_nonlinear.{c,h}
    2279- src/scip/sepa_strongcg.{h|c}
    2280
    2281Unit tests
    2282----------
    2283
    2284- added cons/linear/nonlinupgd.c
    2285- added cons/nonlinear/addcons.c
    2286- added cons/nonlinear/bilinhash.c
    2287- added cons/nonlinear/check.c
    2288- added cons/nonlinear/copy.c
    2289- added cons/nonlinear/create_nlrow.c
    2290- added cons/nonlinear/curvature.c
    2291- added cons/nonlinear/glbconss.c
    2292- added cons/nonlinear/hessian.c
    2293- added cons/nonlinear/locks.c
    2294- added cons/nonlinear/nlhdlr.c
    2295- added cons/nonlinear/nlhdlr_bilinear.c
    2296- added cons/nonlinear/nlhdlr_concave.c
    2297- added cons/nonlinear/nlhdlr_convex.c
    2298- added cons/nonlinear/nlhdlr_perspective.c
    2299- added cons/nonlinear/nlhdlr_quadratic.c
    2300- added cons/nonlinear/nlhdlr_quotient.c
    2301- added cons/nonlinear/nlhdlr_soc.c
    2302- added cons/nonlinear/parse.c
    2303- added cons/nonlinear/presolve.c
    2304- added cons/nonlinear/propagate.c
    2305- added cons/nonlinear/readers.c
    2306- added cons/nonlinear/reformbinprods.c
    2307- added cons/nonlinear/repair.c
    2308- added cons/nonlinear/transform.c
    2309- added cons/nonlinear/vertexpolyhedral.c
    2310- removed cons/nonlinear/getCoeffsAndConstantFromLinearExpr.c
    2311- removed cons/soc/upgrade.c
    2312- added expr/abs/estimation.c
    2313- added expr/commonsubexprs.c
    2314- added expr/compare.c
    2315- added expr/copy.c
    2316- added expr/cos/cos.c
    2317- added expr/cos/estimation.c
    2318- added expr/curvature.c
    2319- added expr/derivative.c
    2320- added expr/entropy/entropy.c
    2321- added expr/entropy/estimation.c
    2322- added expr/eval.c
    2323- added expr/exp/estimation.c
    2324- added expr/free.c
    2325- added expr/getvarexprs.c
    2326- added expr/hash.c
    2327- added expr/hessian.c
    2328- added expr/integrality.c
    2329- added expr/iterator.c
    2330- added expr/log/estimation.c
    2331- added expr/monotonicity.c
    2332- added expr/parse.c
    2333- added expr/pow/estimation.c
    2334- added expr/pow/pow.c
    2335- added expr/product/estimation.c
    2336- added expr/quad.c
    2337- added expr/simplify.c
    2338- added expr/sin/estimation.c
    2339- added expr/sin/sin.c
    2340- added expr/sum/estimation.c
    2341- added nlpi/exprinterpret.c
    2342- speedup test nlpi:solveQP in nlpi/nlpi.c
    2343- added test projection:transitivity in prob/obbt.c
    2344- added reader/nl.c
    2345- added test intervalarith:sincos in scip/intervalarith.c
    2346- added sepa/minor.c
    2347- added sepa/rlt/cuts.c
    2348- added sepa/rlt/product_detection.c
    2349- added sepa/rlt/separation.c
    2350- added tests test_compute_symmetry:expr{1,2,3,4} in symmetry/compute.c
    2351
    2352Build system
    2353------------
    2354
    2355- the separate NLPI library has been integrated into the main SCIP library;
    2356 uses of NLPILIBFILE or NLPILIBSRC in Makefiles that use make/make.project
    2357 should be removed
    2358
    2359### Cmake
    2360
    2361- replace flag PARASCIP by THREADSAFE
    2362- option AMPL is now ON by default
    2363- add -D_XOPEN_SOURCE=600 cflag for compilation on systems other than windows
    2364- add compile options directly instead of modifying CMAKE_C_FLAGS and CMAKE_CXX_FLAGS
    2365
    2366### Makefile
    2367
    2368- prefix PKG_CONFIG_PATH with Ipopt's pkgconfig dir instead of postfixing
    2369- replace flag PARASCIP by THREADSAFE
    2370- flag AMPL is now true by default
    2371- libscip has been renamed to libscipbase and libscipsolver has been renamed to libscip
    2372 in order to have the same library names for makefiles and cmake. For downward
    2373 compatibility libscipsolver still exists (as a link).
    2374
    2375Fixed bugs
    2376----------
    2377
    2378- fixed handling of multi-aggregation in cons_symresack and cons_orbisack
    2379- SCIPgetLowerbound() now consistently returns infinity when status is infeasible
    2380- improved the likelihood that a solution that satisfies the nonlinear constraints in the transformed (presolved) problem is also feasible for the original problem
    2381- worked around a problem with derivatives of pow at 0 with non-integer exponents in CppAD
    2382- fixed that setting of feasiblity and optimiality tolerance for NLP relaxation was overwritten with defaults when solving NLP
    2383- fixed variance computation in t-value computation in hypothesis testing of reliability branching
    2384- fixed potential overflow in cuts.c:evaluateLiftingFunctionKnapsack()
    2385- do not transfer dual reductions to main SCIP in sepa_rapidlearning if strong dual reductions are forbidden
    2386- fixed a bug in cons_setppc.c:removeDoubleAndSingletonsAndPerformDualpresolve() which led to wrong variable aggregations
    2387- added missing redundancy check to coefficient tightening routine in cons_varbound that led to wrong variable locks
    2388- added a check of numerics to avoid wrong reductions in cons_linear.c:simplifyInequalities()
    2389- fixed a bug in cons_logicor.c regarding fixed variables that were not removed
    2390- presol_milp.c handles variable fixings, suggested by PaPILO, more carefully to cover all cases that can appear
    2391- fixed several reproducability bugs that led to different solving paths across multiple runs with one SCIP environment
    2392- fixed check of limits/absgap, which was incorrectly applied to the scaled objective of the transformed problem
    2393
    2394Miscellaneous
    2395-------------
    2396
    2397- in LP, use absolute instead of relative tolerances to check whether solutions from LP solver are primal feasible
    2398- when a restart occurs, SCIP now asserts (during EXITSOLVE) that all relaxation-only variables are unlocked and
    2399 only captured by the transformed problem.
    2400- Avoid redundant calls to LP solver when LP is already flushed and solved
    2401- In SCIPdebugMsg(), SCIPsetDebugMsg(), SCIPstatDebugMsg() strip directory from filename.
    2402- Recompute activity of rows when checking LP solutions instead of trusting the value given by the LP solver
    2403- The define NPARASCIP has been replaced by SCIP_THREADSAFE
    2404- Parameters are not reset to their default values before activating an emphasis setting; this now allows to combine
    2405 different emphasis settings.
    2406- 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.
    2407
    2408@page RN7 Release notes for SCIP 7
    2409
    2410@section RN703 SCIP 7.0.3
    2411*************************
    2412
    2413Interface changes
    2414-----------------
    2415
    2416### New API functions
    2417
    2418- added function SCIPwithDebugSol() to determine whether SCIP was compiled with WITH_DEBUG_SOLUTION
    2419
    2420- New function SCIPcreateConsBounddisjunctionRedundant() and SCIPcreateConsBasicBounddisjunctionRedundant() that allow
    2421 the input to contain redundant literals.
    2422
    2423### Changed API functions
    2424
    2425- added __attribute__((format(printf,,,))) to variadic SCIP message printing functions;
    2426 this enables warnings about mismatches between format string and variadic function arguments if using GCC.
    2427
    2428### Interfaces to external software
    2429
    2430- removed MATLAB interface from interfaces/matlab
    2431
    2432Build system
    2433------------
    2434
    2435- Compilation will now also work in a raw tarball of the scip git repository
    2436
    2437### Cmake
    2438
    2439- Make find_package more verbose and require packages to be found. Now enabled packages that are not found result in an error.
    2440
    2441Fixed bugs
    2442----------
    2443
    2444- Fixed numerical bug by creating and checking the empty solution when problem vanishes in presolving.
    2445- Fixed several bugs in reoptimization.
    2446- Fixed bug in cons_bounddisjunction in which a constraint leads to a cutoff.
    2447- Fixed bug in reoptimization by avoiding redundant literals for bound disjunctions.
    2448- Replace wrong usage of CMAKE_BINARY_DIR by PROJECT_BINARY_DIR in CMake system
    2449- Fixed lpi_glop to use absl flag instead of GFlags
    2450- Fixed invalid initialization of limits/softtime parameter in cons_components
    2451- Fixed MIN macro not defined in some cases.
    2452- Safeguard some API functions for querying solving statistics against segmentation faults after SCIPpresolve()
    2453- Fixed unfreed solution in concurrent solving
    2454- Make sure that logicor constraints are enforced/separated if genlogicor is true in cons_indicator.
    2455 Thus, do not change constraints/logicor/sepafreq anymore, but output warning.
    2456- Fixed assert that assumed infeasibility cannot occur in presol_boundshift.
    2457- Fixed sign bug during creation of conflict constraints with almost zero left-hand side.
    2458- Disabled call of conflict handler for conflict sets that contain relaxation-only variables.
    2459- Fixed bug in cons_symresack by initializing all constraint data in constrans
    2460- Avoid allowing the upgrade of linear constraints corresponding to indicators in propagation of nodes.
    2461- Fixed bug in computing lex. min/max faces in dynamic orbitope propagation.
    2462- Limit vbounds propagator to one sweep through all bounds per call in order to avoid an infinite loop.
    2463- Fixed mismatches between formatter strings and arguments in calls to SCIP message printing functions.
    2464
    2465Miscellaneous
    2466-------------
    2467
    2468- To avoid performance variablity during reoptimization, the active constraints are now stored in the same order as in the
    2469 original problem.
    2470- Added workaround for bug in MSVS 2019 when compiling CppAD source.
    2471- The original order of variables is now only restored after presolve if `randomization/permutevars` is set to FALSE.
    2472
    2473@section RN702 SCIP 7.0.2
    2474*************************
    2475
    2476Features
    2477--------
    2478
    2479- Extended check for valid variable and constraint names in PIP writer.
    2480- Indicator constraints now write the name of the linear constraint in CIP format. This avoids a complicated
    2481 name matching during parsing. The old format is still supported.
    2482- The objective scale and offset are now taken into account when reading/writing problems in lp/mps/fzn/pip format.
    2483 This often changes the behavior when writing transformed problems.
    2484
    2485Performance improvements
    2486------------------------
    2487
    2488Examples and applications
    2489-------------------------
    2490
    2491- Add c++ Sudoku example
    2492
    2493Interface changes
    2494-----------------
    2495
    2496### Deleted and changed API functions
    2497
    2498- deprecated SCIPsetParam(); use SCIPsetIntParam(), SCIPsetRealParam(), etc, instead
    2499
    2500### New API functions
    2501
    2502- new function SCIPcolGetVarProbindex() for accessing the probindex of a variable corresponding to a column
    2503- added new sorting functions SCIPsortPtrRealRealBoolBool()
    2504
    2505Fixed bugs
    2506----------
    2507
    2508- Fixed a sign bug occuring for some cases in the computation of the directed cutoff distance
    2509- Fixed overflow in inference information of cumulative constraint handler
    2510- Fixed problem with propfreq == 0 in cons_linear.c
    2511- Fixed aggregation heuristic in sepa_aggregation.c to not use local rows when that is requested nor modifiable rows
    2512- Fixed problem with incompatibility of symmetry handling in Benders decomposition
    2513- Fixed parsing of small number in CIP format of nonlinear constraint
    2514- Fixed problem in upgrading full orbitopes to partitioning orbitopes
    2515- Fixed treatment of negated variables in parsing orbitope constraints
    2516- Fixed potential indexing error in prop_vbounds.c
    2517- Fixed bug in writing fzn format
    2518- Revert to old parameter value when parameter change is rejected in PARAMCHGD callback
    2519- Fixed order of linker flags when building AMPL interface with cmake system.
    2520- Fixed bug with ofsymcomptiming == 0: now symmetry is actually computed
    2521- Improved separation for SOC constraint with multiaggregated variable on right-hand-side.
    2522- Fixed bug in presol_boundshift: do not shift non-active variables
    2523- Fixed bug in domain propagation for SOC constraints with negative coefficient for variable on right-hand-side.
    2524- Fixed bug with multi-aggregated integer variables in cons_xor.
    2525- Fixed bug with changed number of variables in storing relaxation solution in probing/diving.
    2526- Fixed issues with scip statistics
    2527- Fixed issue with multi-aggregated variables
    2528- Fixed issue in with buffer memory in cons_cumulative
    2529
    2530@section RN701 SCIP 7.0.1
    2531*************************
    2532
    2533Build system
    2534------------
    2535
    2536### Cmake
    2537
    2538- Fixed cmake module for Ipopt to support Ipopt 3.13
    2539- Added cmake variable BLISS_LIBRARY_DIR to pass a bliss library
    2540- Added warning to require minimal GCC version 4.8
    2541- Renamed FindCriterion cmake findmodule to FindCRITERION
    2542
    2543### Makefile
    2544
    2545- Updated make/make.project for macOS
    2546- Add SANITZERFLAGS (only OPT=dbg) to LDFLAGS also if SHARED=true (and rename SANITZERFLAGS to SANITIZERFLAGS)
    2547- Fixed GCC version check in make/make.linux.gnu.dbg
    2548
    2549Fixed bugs
    2550----------
    2551
    2552- Fixed handling of constant term in quadratic objective of pip-reader
    2553- Fixed incorrect value string for parameter estimation/completiontype
    2554- Fixed initialization of first LP which led to wrong output about LPs not resolved correctly
    2555- Fixed bug in SCIPcutpoolClear() function not clearing internal datastructures properly
    2556- Fixed inability to set a value in a solution if it was within epsilon to the current value
    2557- Fixed problems for linking optimized code with debug library of SCIP (and vice versa) by moving debug-only members
    2558 to end of SCIP structs
    2559
    2560Miscellaneous
    2561-------------
    2562
    2563- Variables that are marked as relaxation-only are no longer checked against debug solutions if
    2564 they are captured by the transformed problem only.
    2565
    2566@section RN700 SCIP 7.0.0
    2567*************************
    2568
    2569Features
    2570--------
    2571
    2572- Using the parameter "propagating/symmetry/recomputerestart" one can now decide to recompute symmetries after a
    2573 restart or not. Previously one could just turn off symmetry computation after a restart. If orbital fixing
    2574 has found a reduction before the restart occured, symmetries have to be updated to ensure correctness.
    2575 To this end, the user can decide via "propagating/symmetry/disableofrestart" whether orbital fixing is disabled or
    2576 whether symmetries are recomputed.
    2577
    2578- extended relaxators statistics in solve statistics about information on number of cutoffs, improved bounds, etc.
    2579
    2580- extends SMPS file reader for the stochastic information, the sto files, to read a lower bound for the discrete
    2581 scenarios. The lower bound is used when creating the auxiliary variables for Benders' decomposition.
    2582
    2583- extended Benders framework to solve NLPs and generate optimality and feasibility cuts from their solution
    2584 when the subproblem is convex nonlinear.
    2585
    2586- extended Benders framework to create copies of Benders decompositions that can be used in a multithreading environment
    2587
    2588- additional functionality has been added to enable the transfer of Benders' decomposition cuts between different SCIP
    2589 instances, e.g., when used in UG
    2590
    2591- LP rows (SCIP_ROW) can now store pointer to a constraint from which the row originates
    2592
    2593- Trust region, a new LNS heuristic, has been added to SCIP as both a standalone primal heuristic heur_trustregion.c
    2594 and as a neighborhood inside of Adaptive Large Neighborhood Search (heur_alns.c). This heuristic is designed to improve the
    2595 heuristic performance of the Benders' decomposition algorithm. It builds upon the successful trust region approaches
    2596 applied to Benders' decomposition.
    2597
    2598- Modularity of symmetry handling has been increased. It is now possible to use orbitopes (i.e., polyhedral symmetry
    2599 handling techniques) and orbital fixing on the same instance.
    2600
    2601- cut strengthening enabled within the Benders' decomposition framework. This uses a mix of the Improved Magnanti-Wong
    2602 method and Kelly's method. The cut strengthening is enabled by setting the paramemter
    2603 "benders/<bendersname>/cutstrengthenenabled" to TRUE. The parameters "cutstrengthenmult", "noimprovelimit" and
    2604 "corepointperturb" control the behavior of the cut strengthening method. Additionally, the parameter
    2605 "cutstrengthenintpoint" allows the user to specify the solution that is used to initialize the core point. The options
    2606 are the first LP solution, the first integer feasible solution, a relative interior point, a solution vector of all
    2607 ones and a solution vector of all zeros. Also, the core point can be reinitialized after each update to the incumbent
    2608 solution.
    2609
    2610- added option to adjust weights of different scores in relpscost (hybrid) branching rule based on degeneracy information
    2611 and skip strong branching for very high degeneracy rates
    2612
    2613- added new SCIP_DECOMP* object to store user decompositions. The user can specify one or several decompositions by assigning variable
    2614 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).
    2615 This format specifies constraint labels, variable labels are inferred from that. The decomposition is transformed after presolving.
    2616- statistics regarding the number of blocks, the largest and smallest blocks, the border, and the constraint graph are printed for the original decomposition,
    2617 and for each decomposition after presolving.
    2618- the decomposition can be used as initial decomposition for the Benders functionality of SCIP.
    2619- new subsection "How to provide a problem decomposition" in the SCIP documentation
    2620
    2621- GINS heuristic can make use of a user-provided decomposition labels in two ways:
    2622 1. by selecting a block of variables that maximizes the potential, and randomly selecting a start variable for the neighborhood and/or
    2623 2. by selecting an interval of consecutive blocks as neighborhood, until fixing rate is reached. In this case, no variable is randomly selected.
    2624
    2625- extend potential parameter of GINS to allow computation based on local LP solution, as well
    2626
    2627- new primal heuristic Adaptive Diving, which registers all publicly available dive sets from other diving heuristics.
    2628 At each call, it selects one of the available dive sets based on the user's score type choice (heuristics/adaptivediving/scoretype).
    2629 During the solution process, the heuristics learns online which divesets reach the best score, and executes them more frequently.
    2630 The statistic output for Diving heuristics has been extended to incorporate the statistics of each dive set within Adaptive diving.
    2631
    2632- Added new penalty alternating direction method (PADM) primal heuristic that splits the problem into several sub-SCIPs
    2633 according to a user-provided decomposition. The sub-SCIPs are solved on an alternating basis until a feasible solution of
    2634 the original problem is found.
    2635
    2636- Symmetry handling constraints (cons_orbisack, cons_orbitope, cons_symresack) now have an additional parameter to encode
    2637 whether they are model constraints, i.e., define the problem, or whether they are only present to handle symmetries.
    2638
    2639- The symmetry code has been completely restructured. The presolvers presol_symbreak and presol_symmetry as well as the propagator
    2640 prop_orbitalfixing have been merged into the single propagator prop_symmetry to avoid storing the same information
    2641 multiple times. This propagator is now responsible for adding symmetry handling constraints as well as activating orbital
    2642 fixing. Moreover, the new file symmetry.c contains general functions for symmetry computations like orbit computations.
    2643
    2644- Variables can now be marked as "relaxation-only". This flag should be used to introduce new variables that are required
    2645 to define a relaxation, but that are not part of any checked constraints. Essentially, these variables should only be used
    2646 in the current SCIP solve and disregarded after a restart or in SCIP copies. Hence, these variables are not copied by SCIPcopy and
    2647 SCIPgetVarCopy, they are currently not used in conflict constraints, and cuts involving them are not upgraded to linear constraints.
    2648 Relaxation-only variables cannot appear in the objective function.
    2649
    2650- The OSiL reader now supports nonlinear expressions of type "signpower".
    2651
    2652- Expressions of form abs(x)^p * x in a nonlinear constraint are now sometimes recognized and handled by abspower constraints.
    2653
    2654- If polyhedral symmetry handling methods are used (cons_orbisack, cons_orbitope, cons_symresack), it is now possible to
    2655 recompute symmetries if a restart occured.
    2656
    2657- upgrade some more quadratic constraints to second-order cone constraints, that is,
    2658 handle linear binary variables as if squared in simple upgrade and
    2659 do not require bounds for variables that have a zero entry in the computed eigenvectors in the non-simple upgrade
    2660
    2661- new variable event when changing the variable type
    2662
    2663- It is no longer necessary to provide a SCIP pointer for the subproblem in SCIPaddBendersSubproblem if custom solving
    2664 methods are defined. A NULL pointer can be supplied to SCIPaddBendersSubproblem. In this case, no internal Benders'
    2665 cut generation methods can be used.
    2666
    2667- Using the parameter "constraints/symresack/checkmonotonicity" one can now decide to upgrade to packing/partitioning
    2668 symresacks even if the underlying permutation is not monotone.
    2669
    2670- New branching rule `vanillafullstrong`, mostly for scientific purpose, with the following features:
    2671 1) no cutoff or domain reduction: only branching;
    2672 2) idempotent (optional): leave SCIP, as much as possible, in the same state before / after the strong branching calls
    2673 - basically, do not update any statistic;
    2674 3) donotbranch (optional): do no perform branching. So that the brancher can be called as an oracle only
    2675 (on which variable would you branch ? But do not branch please);
    2676 4) scoreall (optional): keep scoring variables, even if infeasibility is detected;
    2677 5) collectscores (optional): store the candidate scores from the last call, which can then be retrieved by calling SCIPgetVanillafullstrongData();
    2678 6) integralcands (optional): consider integral candidates for branching,
    2679 i.e., get candidates from SCIPgetPseudoBranchCands() instead of SCIPgetLPBranchCands().
    2680
    2681- If a reference value (misc/referencevalue) is given, the primal-reference and reference-dual integrals are calculated automatically and printed within the SCIP statistics.
    2682
    2683- Locally valid cuts / rows are now considered for dual proof analysis when `conflict/uselocalrows` is set to TRUE.
    2684
    2685- 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.
    2686
    2687- To save memory, it is now possible to remove all variables from the internal symmetry data structures that are
    2688 not affected by any symmetry.
    2689
    2690- Allow to filter first variables from orbits and transfer pseudo cost information to variables in orbit
    2691
    2692- Add integration of external MILP presolve library as a SCIP presolver plugin that runs on MILP problems
    2693
    2694- Parallelisation can be used when applying Benders' decomposition. There are two different forms of parallelisation
    2695 available. The first is applying Benders' decomposition within a parallel branch-and-bound. This is achieved through
    2696 the integration with the UG framework. The second is the use of shared memory parallelisation for solving the Benders'
    2697 decomposition subproblems. A priority queue has been added to help with load balancing.
    2698
    2699- The Benders' decomposition framework can handle MINLPs. If a convex relaxation of the MINLP exists, then this is
    2700 solved to generate optimality and feasibility cuts. The extensions to the framework are:
    2701 - New generic solving methods to solve convex NLP subproblems.
    2702 - Modification to benderscut_opt and benderscut_feas to enable the generation of cuts from convex NLPs.
    2703 - Addition of benderscut_feasalt to generate feasibility cuts from an alternative subproblem that minimises the
    2704 violation of infeasible problems.
    2705 - Better handling of subproblem solution results
    2706
    2707- Adds a feasibility phase to the Benders' decomposition subproblem solving methods. The feasibility phase adds slack
    2708 variables to each of the constraints to ensure feasibility of the subproblem. A large coefficient is given to these
    2709 slack variables in the objective function to penalise constraint violations. The coefficients are progressively
    2710 increased until all slack variables take the value 0.0.
    2711
    2712- Improved convexity check for Benders' decomposition subproblems. The constraints of the subproblem are now checked for
    2713 convexity in the initialisation of the Benders' decomposition algorithm. This enables the solving of convex NLPs as
    2714 Benders' decomposition subproblems.
    2715
    2716- Benders' decomposition can be applied using decomposition supplied in the DEC format. To apply Benders' decomposition
    2717 the parameters decomposition/benderslabels and decomposition/applybenders must be set to TRUE.
    2718
    2719- new event handler event_estim.c/h that approximates search tree completion and estimates tree size
    2720 to trigger restarts; many approximations of search tree completion and estimation, including WBE, SSG, and tree profile method
    2721- new display column that reports approx. search tree completion during the search, and an overview in the statistics table
    2722- added resources (script, tutorial, test data) to adapt tree size estimation to user instances.
    2723
    2724- Orbital Fixing uses a list of variables that have been fixed globally since the computation of symmetries to filter
    2725 symmetries. Previously, some plugins were disabled, which is not necessary anymore.
    2726
    2727- A new presolver "dualsparsify" was added. It tries to combine columns (i.e. variables) to cancel nonzero coefficients in the constraint matrix.
    2728
    2729- The presolver "tworowbnd" was implemented with better performance.
    2730
    2731- 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.
    2732
    2733- allow disabling of pricers during solving process
    2734
    2735- added emphasis setting for numerically challenging instances
    2736
    2737Performance improvements
    2738------------------------
    2739
    2740- Extended cut presolving by removing variables that been fixed at their bounds
    2741
    2742- Improved branching point selection when branching on externals branching candidates. Instead of using exactly the
    2743 LP solution, a point closer to the middle of the variables domain is chosen.
    2744
    2745- Matrix presolvers that do not work on incomplete matrices now skip matrix creation if unsupported constraint types are detected.
    2746
    2747- consLockBenders callback implemented to add down locks on the Benders' decomposition auxiliary variables and
    2748 up and down locks per subproblem for all master problem variables. This allows the use of presolving and propagation
    2749 with Benders' decomposition.
    2750
    2751- improved performance of orbital fixing in several ways:
    2752 store permutations in transposed form to improve cache efficency;
    2753 reverse order to speed up filtering of permutations;
    2754 handle variables globally fixed to 1 in list;
    2755 use event handler to catch global fixings;
    2756 speed up orbit computations;
    2757 change handling of restarts;
    2758 use only permutations that can contribute to a variable's orbit;
    2759
    2760- allow rapid learning at local nodes
    2761
    2762- allow to recompute cut without using fractional values for sepa_cgmip
    2763
    2764- restrict the number of the clique table nonzeros relative to the number of problem nonzeros, which could be a performance bottleneck.
    2765
    2766- variable fixings of LP face heuristic are now computed earlier; subproblem creation is skipped if not enough variables are fixed.
    2767
    2768- Improved domcol presolver to not require a complete representation of all constraints in the matrix
    2769
    2770- performance improvement of adaptive large neighborhood search heuristic on merely continuous problems. The heuristic
    2771 stops if presolving in the sub-SCIP fixes less than 50 % of the current target fixing rate over all variables
    2772 (including continuous).
    2773
    2774- reduce memory usage in symmetry detection by a staggered allocation with decreasing overhead for larger instances
    2775
    2776- improved full orbitope propagation using a static implementation or a dynamic reordering of orbitope rows by a global rank function
    2777
    2778- improved detection of packing/partitioning orbitopes
    2779
    2780- enable an in-tree restart if after a reasonable initialization, the estimated size of the remaining tree is large.
    2781
    2782
    2783Examples and applications
    2784-------------------------
    2785
    2786- added functions to set and get hmin and hmax for optcumulative constraints
    2787
    2788Interface changes
    2789-----------------
    2790
    2791### New and changed callbacks
    2792
    2793- new optional callback `SCIP_DECL_DIVESETAVAILABLE` to check preconditions for this dive set, e.g., if an incumbent solution is available,
    2794 which is passed as new argument to SCIPcreateDiveset(). SCIPcreateDiveset() has another new parameter "ispublic".
    2795
    2796- new callback `SCIP_DECL_CONSHDLRCOPY` and `SCIP_DECL_CONSCOPY` in cons_orbisack and cons_symresack
    2797
    2798- new `idempotent` argument to SCIPgetVarStrongbranchInt() and SCIPgetVarStrongbranchFrac(),
    2799 so that statistics are not updated during the call. Likewise, new `updatecol` and `updatestat` arguments to SCIPcolGetStrongbranch().
    2800
    2801- callback `SCIP_DECL_CONSHDLRENFOLP` can now also return SCIP_SOLVELP as *result, which indicates to the SCIP core that the LP relaxation
    2802 should be solved again because the primal feasibility tolerance of the LP has been tightened (using SCIPsetLPFeastol())
    2803
    2804- 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.
    2805
    2806### Deleted and changed API functions
    2807
    2808- LPI:
    2809 + now for all lp interfaces consistent requirements on SCIP_LPPAR:
    2810 LPITLIM and BARRIERCONVTOL positive or zero; FEASTOL, DUALFEASTOL, LPTILIM strictly positive
    2811 + now projecting SCIP_LPPAR values on feasible values for each lp interface
    2812 + add interface to Glop
    2813 + fixed mapping between scaling parameter values in Gurobi LPI lpi_grb
    2814- Symmetry:
    2815 + removed function SCIPseparateCoversOrbisack() in cons_orbisack.h since the orbitope constraint
    2816 handler has its own implementation of this routine with advanced features now
    2817 + renamed SCIPgetGeneratorsSymmetry() to SCIPgetSymmetry() and removed two arguments
    2818 + extended function SCIPgetSymmetry(): It is possible to access both the original and
    2819 transposed permutations matrix as well as the (independent symmetry) components of a permutation group now.
    2820 + arguments of functions SCIPcreateConsOrbisack(), SCIPcreateConsBasicOrbisack(), SCIPcreateConsOrbitope(),
    2821 SCIPcreateConsBasicOrbitope(), SCIPcreateConsSymresack(), SCIPcreateConsBasicSymresack(), and SCIPcreateSymbreakCons() extended
    2822 by "ismodelcons" to encode whether the constraints are model constraints or not
    2823 + the function SCIPgetSymmetry() no longer accepts the parameter recompute, but has parameter permvarmap as new input
    2824 + removed SCIPgetPermvarsObjSymmetry(), SCIPsetSymmetryComponentblocked(), SCIPgetSymmetryComponentblocked(),
    2825 SCIPgetSyminfoGloballyFixedVars(), SCIPcomputeGroupOrbitsSymbreak, SCIPincludePresolSymmetry(),SCIPincludePresolSymbreak(),
    2826 and SCIPincludePropOrbitalfixing()
    2827 + add function SCIPcomputeOrbitsComponentsSym() to compute orbits without filtering permutations and indices of orbits for each variable
    2828- SCIPallowObjProp() and SCIPallowDualReds() are deprecated and replaced by SCIPallowWeakDualReds() and SCIPallowStrongDualReds(), respectively
    2829- Benders' decomposition
    2830 + changed SCIPstoreBenderscutCut() in scip_benders.c to SCIPstoreBendersCut(). Where this function used to take a
    2831 SCIP_BENDERSCUT pointer, it now accepts a SCIP_BENDERS pointer.
    2832 + the functions SCIPsolveBendersSubproblem() no longer accepts the parameter type. The type is not a necessary
    2833 argument for the subproblem solving method.
    2834 + arguments of functions SCIPbendersSolveSubproblemLP(), SCIPbendersSolveSubproblemCIP(), and SCIPbendersOnlyCheckConvexRelax() changed
    2835 - removed SCIPbenderscutGetNAddedCuts() and SCIPbenderscutGetAddedCutData()
    2836
    2837
    2838### New API functions
    2839
    2840- new argument "onlyifcomplete" in SCIPmatrixCreate() to skip matrix creation right after detecting unsupported constraint types
    2841 and new arguments to count statistics when doing a clean-up of inactive variables in the constraints before building the matrix
    2842
    2843- new argument "threadsafe" in SCIPcopy(), SCIPcopyConsCompression(), SCIPcopyOrig(), SCIPcopyOrigConsCompression and
    2844 SCIPcopyBenders(). This argument must only be set to TRUE if the source and target SCIP instances are to be solved in
    2845 parallel. Setting this argument to TRUE has a performance cost.
    2846
    2847- new argument "append" in SCIPsetModifiedDefaultSettingsIpopt()
    2848- functions SCIPclearRelaxSolVals(), SCIPsetRelaxSolVal(), SCIPsetRelaxSolVals(), SCIPsetRelaxSolValsSol(), and SCIPmarkRelaxSolValid()
    2849 receive an additional argument "relax" to store the relaxation handler as creator of the relaxation solution.
    2850
    2851- LP:
    2852 - SCIProwGetOriginCons() now returns a SCIP_CONS* instead of a SCIP_CONSHDLR*, use SCIProwGetOriginConshdlr() for the previous behavior
    2853 - SCIPcreateRowCons() and SCIPcreateEmptyRowCons() now expect a SCIP_CONS* instead of a SCIP_CONSHDLR*,
    2854 use SCIPcreateRowConshdlr() and SCIPcreateEmptyRowConshdlr(), respectively, for the previous behavior
    2855 - deprecated SCIPlpfeastol() and SCIPchgLpfeastol(), use SCIPgetLPFeastol() and SCIPsetLPFeastol()
    2856
    2857- new parameter "divecontext" for every function that queries statistics for a diveset. The context can be used to distinguish between the dive set
    2858 as single (standalone) heuristic or within Adaptive Diving.
    2859- new parameters "divecontext" and "iterlim" to SCIPperformGenericDivingAlgorithm() to control in which context (single,adaptive) statistics are updated.
    2860
    2861- SCIPcopyVars, SCIPcopy, SCIPcopyConsCompression, and SCIPgetVarCopy do not copy variables that are marked as relaxation-only,
    2862 thus it cannot be assumed anymore that each active variable from the master SCIP also has a counterpart in the copy.
    2863 SCIPcopy, SCIPcopyConsCompression, and SCIPcopyConss can now return *valid=TRUE if some non-checked and non-enforced constraints were not copied, e.g.,
    2864 because they involved relaxation-only variables. Thus, a copy is already regarded as valid if all checked or enforced constraints were copied successfully.
    2865
    2866- linking constraint handler:
    2867 - changed type of vals argument from int* to SCIP_Real* in SCIPcreateConsLinking() and SCIPcreateConsBasicLinking()
    2868 - SCIPgetIntvarLinking() has been renamed to SCIPgetLinkvarLinking().
    2869 - changed return value of SCIPgetValsLinking() from int* to SCIP_Real*.
    2870 - new function SCIPgetBinvarsDataLinking().
    2871
    2872- SCIPbendersCheckSubproblemOptimality() now returns a boolean indicating whether the subproblem is optimal or not.
    2873 Previously this result was returned through a parameter. The change was required to facilitate the integration with
    2874 the UG framework.
    2875
    2876- deleted SCIPcombineTwoInt(), SCIPcombineThreeInt(), SCIPcombineFourInt(); use the appropriate SCIPhashTwo(), ..., SCIPhashSeven() function instead
    2877
    2878- SCIPsetupBendersSubproblem takes a parameter of the enforcement type.
    2879
    2880- SCIPcreateNlpiProb takes a hashmap to store the map between the nlrows and the index in the nlrow array.
    2881
    2882### New API functions
    2883
    2884- SCIPallowWeakDualReds() and SCIPallowStrongDualReds() replace the deprecated SCIPallowObjProp() and SCIPallowDualReds(), respectively
    2885- functions have been added to facilitate the transfer of Benders' decomposition cuts between solvers in UG. These include
    2886 SCIPapplyBendersStoredCuts(), SCIPbendersGetNStoredCuts(), SCIPbendersGetStoredCutData() and
    2887 SCIPbendersGetStoredCutOrigData().
    2888- added SCIPisConvexAbspower()
    2889- new functions SCIPsolGetType(), SCIPsolGetRelax(), SCIPsolSetRelax(), SCIPsolSetLPRelaxation(), SCIPsolSetStrongbranch(),
    2890 SCIPsolSetPseudo to set or query the new type attribute of a primal solution. The type attribute gives information
    2891 about the origin of the solution, ie, whether it was created by a relaxation handler,
    2892 by the LP relaxation, by strong branching, by the current pseudo solution, or by a primal heuristic.
    2893 The meaning of the argument 'heur' in all creation methods for primal solutions such as SCIPcreateSol() stays unchanged.
    2894- added SCIProwGetOriginConshdlr(), SCIPcreateRowConshdlr(), SCIPcreateEmptyRowConshdlr()
    2895- new API functions SCIPsetCommonSubscipParams(), SCIPtranslateSubSol(), and SCIPtranslateSubSols() shared by several Large Neighborhood Search heuristics.
    2896- new API function SCIPgetLPDualDegeneracy() to get two measures for the dual degeneracy of the current LP
    2897- new API functions SCIPdivesetIsAvailable() to check preconditions of a dive set and SCIPdivesetIsPublic() to check if the dive set can be used
    2898 by other primal heuristics.
    2899- new API functions SCIPcomputeOrbitsSym(), SCIPcomputeOrbitsFilterSym(), SCIPgetPropertiesPerm(), SCIPdetermineBinvarAffectedSym(),
    2900 SCIPdetermineNVarsAffectedSym(), SCIPcomputeComponentsSym(), and SCIPextendSubOrbitope(), SCIPgenerateOrbitopeVarsMatrix() for symmetry computations
    2901- new API functions SCIPvarIsRelaxationOnly() and SCIPvarMarkRelaxationOnly() to query and set, resp., whether a variable is marked as relaxation-only
    2902- new API functions SCIPconshdlrGetNUpdateConss() and SCIPconshdlrGetUpdateConss(), for expert users only
    2903- new API function SCIPgetNConflictDualproofsApplied()
    2904- new API functions SCIPeventGetOldtype() and SCIPeventGetNewtype() for the new event when changing the variable type
    2905- new API function SCIPisConvexConsQuadratic() to check whether a quadratic constraint is convex when a given set of variables would be fixed
    2906- new API functions SCIPgetLPFeastol(), SCIPsetLPFeastol(), and SCIPresetLPFeastol() to get, set, and reset (to the default), respectively, the primal
    2907 feasibility tolerance for the LP relaxation
    2908- new API functions SCIPcleanupConss{Linear,Varbound,Setppc,Logicor,Knapsack}() to clean up inactive variables from those types of linear constraints
    2909- new API function SCIPsetBendersSubproblemComp() used to add a custom comparison method for ordering the Benders'
    2910 decomposition subproblem solves. The comparison method is used to help with load balancing.
    2911- new API function SCIPgetRowObjParallelism to get the objective parallelism of a row
    2912- new API function SCIPcolGetAge to get the age of a column
    2913- added SCIPhashThree(), SCIPhashFive(), SCIPhashSix(), and SCIPhashSeven() that complement SCIPhashTwo(), SCIPhashFour() to combine 32bit integers to
    2914 a 32bit hash value
    2915- new API function SCIPgenerateAndApplyBendersOptCut is used to generate a Benders' optimality cut using the dual
    2916 solutions. This function can be supplied vectors for the primal and dual solution for generating an optimality cut.
    2917 This avoids the need for a SCIP instance to solve the Benders' decomposition subproblem and generating cuts.
    2918- new API function SCIPconsAddCoef used for adding a coefficient to a linear-type constraint.
    2919- new API functions SCIPconsNonlinearGetRhs, SCIPconsNonlinearGetLhs and SCIPconsNonlinearAddLinearCoef for getting the
    2920 RHS and LHS from a nonlinear-type constraint and adding a linear coefficient to the constraint.
    2921- new API function SCIPbendersSolSlackVarsActive for checking whether any slack variables from the feasibility phase are
    2922 active in the subproblem solution.
    2923- new API functions SCIPbendersSetSubproblemType and SCIPbendersGetSubproblemType sets and gets the subproblem type.
    2924 This is either:
    2925 - Convex constraints with continuous variables
    2926 - Convex constraints with discrete variables
    2927 - Non-convex constraints with continuous variables
    2928 - Non-convex constraints with discrete variables
    2929- new API functions SCIPbendersSetSubproblemIsNonlinear() and SCIPbendersSubproblemIsNonlinear() for setting and
    2930 identifying whether the Benders' decomposition subproblems contain nonlinear constraints. Similarly, the functions
    2931 SCIPbendersSetMasterIsNonlinear() and SCIPbendersMasterIsNonlinear() sets and identifies whether the Benders'
    2932 decomposition master problem contains nonlinear constraints.
    2933- new API function SCIPapplyBendersDecomposition for applying Benders' decomposition given a decomposition in the DEC
    2934 format
    2935- new API function SCIPwasNodeLastBranchParent to query if a node has been the parent of the most recent branching in the tree
    2936- new API functions SCIPtreemodelInit(), SCIPtreemodelFree(), SCIPtreemodelIsEnabled(), SCIPtreemodelSelectCandidate() related to the new
    2937 treemodel way of comparing branching candidates. These functions are only currently used for reliability pscost branching, but they can be used
    2938 in other parts of the code.
    2939- New function SCIPcalcChildEstimateIncrease() to compute the increase in the child estimation
    2940- new API functions SCIPisOrbitalfixingEnabled() and SCIPgetSymmetryNGenerators() to check whether orbital fixing is
    2941 enabled and to get the number of generators of the current symmetry group, respectively
    2942- new API function SCIPdelNlRow() to remove a row from the NLP
    2943
    2944### Event system
    2945
    2946- new event type SCIP_EVENTTYPE_NODEDELETE to react on nodes that are about to be deleted from the tree
    2947
    2948### Changed parameters
    2949
    2950- renamed parameter "propagating/orbitalfixing/enableafterrestart" to ".../symmetry/recomputerestart"
    2951- Parameter "misc/allowdualreds" is now called "misc/allowstrongdualreds"
    2952- Parameter "misc/allowobjprop" is now called "misc/allowweakdualreds"
    2953- changed default values of propagation (new value: 1, old value: 5) and separation frequency (new value: -1, old value: 5) in cons_orbitope.c
    2954- all primal heuristics that use sub-SCIPs are disabled within the heuristics fast emphasis setting
    2955- deleted parameter heuristics/localbranching/useuct, use heuristics/useuctsubscip instead
    2956- changed default value of "presolving/symbreak/detectorbitopes" (new value: TRUE, old value: FALSE)
    2957- extended range of "misc/usesymmetry" (new range: [0,3], old range: [0,2])
    2958- deleted parameter "constraints/orbisack/checkalwaysfeas"
    2959- deleted parameter "constraints/orbitope/checkalwaysfeas"
    2960- deleted parameter "constraints/symresack/checkalwaysfeas"
    2961- deleted parameter "presolving/symmetry/maxgenerators"
    2962- deleted parameter "presolving/symmetry/checksymmetries"
    2963- deleted parameter "presolving/symmetry/displaynorbitvars"
    2964- deleted parameter "presolving/symbreak/conssaddlp"
    2965- deleted parameter "presolving/symbreak/addsymresacks"
    2966- deleted parameter "presolving/symbreak/computeorbits"
    2967- deleted parameter "presolving/symbreak/detectorbitopes"
    2968- deleted parameter "presolving/symbreak/addconsstiming"
    2969- deleted parameter "propagating/orbitalfixing/symcomptiming"
    2970- deleted parameter "propagating/orbitalfixing/performpresolving"
    2971- deleted parameter "propagating/orbitalfixing/recomputerestart"
    2972- changed default value of "heuristics/coefdiving/freq" (old: 10, new: -1)
    2973- changed default value of "heuristics/conflictdiving/freq" (old: -1, new: 10)
    2974- changed default value of "heuristics/conflictdiving/lockweight" (old: 1.0, new: 0.75)
    2975- replaced parameter "numerics/lpfeastol" by "numerics/lpfeastolfactor" to specify which factor should be applied to the SCIP feasibility
    2976 tolerance to initialize the primal feasibility tolerance of the LP solver
    2977- enabling aggressive presolving now activates all available presolving plugins,
    2978 and decreases the presolving/restartfac parameter correctly with respect to default.
    2979- changed default value of heuristics/rins/nodesquot to 0.3 (was 0.1), to compensate
    2980 the removal of a hard coded factor of 3.0 in the code without affecting the default behavior
    2981 of the RINS heuristic.
    2982- changed default value of "constraints/quadratic/empathy4and" (old: 0, new: 2)
    2983- changed default value of "propagating/redcost/useimplics" (old: TRUE, new: FALSE)
    2984
    2985### New parameters
    2986
    2987- the possibility to define the Benders' decomposition auxiliary variables as implicit integer is provided. This
    2988 behavior is controlled with an additional parameter in the Benders' decomposition framework.
    2989- added parameter benders/<bendersname>/cutcheck to enable the generation of Benders' decomposition cuts during solution
    2990 checking.
    2991- constraints/orbitope/usedynamicprop: the possibility to propagate orbitope constraints by reordering the rows based on the
    2992 branching strategy is provided (only possible for non-model constraints)
    2993
    2994- new parameters heuristics/shiftandpropagate/minfixingratelp and heuristics/locks/minfixingratelp to stop the
    2995 heuristics after propagating integer fixings if no sufficient fixing of the all variables (including continuous)
    2996 could be achieved. These parameters help to avoid solving LP's that are comparable in hardness to the main root LP.
    2997
    2998- Added parameters branching/midpull and branching/midpullreldomtrig to control by how much to move
    2999 the branching point for an external branching candidate closer to the middle of the candidates domain. The
    3000 default of 0.75 and 0.5, respectively, uses a point that is 75*alpha% closer to the middle of the domain, where
    3001 alpha is the relative width of the candidates domain (width of local domain divided by width of global domain),
    3002 if the latter is below 0.5, and alpha=1.0 otherwise. That is, with the default settings, a branching point is
    3003 chosen closer to the middle of the candidates domain if the variables local domain is still similar to its
    3004 global domain, but is chosen closer to the LP solution if the local domain is much smaller than the global
    3005 domain.
    3006
    3007- Added parameter lp/minmarkowitz to set the Markowitz stability threshold (range 0.0001 to 0.9999).
    3008 High values sacrifice performance for stability.
    3009
    3010- Added parameters benders/<bendersname>/lnsmaxcalls and benders/<bendersname>/lnsmaxcallsroot to the Benders'
    3011 decomposition core. These parameters limit the number of Benders' decomposition subproblem checks, for the full
    3012 branch-and-bound tree and root node respective, when solving the auxiliary problem of LNS hueristics. These
    3013 parameters only have effect if the lnscheck parameter is set to TRUE.
    3014
    3015- Added parameter cons/linear/maxmultaggrquot to limit the maximum coefficient dynamism of an equation on which
    3016 multiaggregation is performed. This replaces a compiler define of the same name.
    3017 Default value is 1000, smaller values make multiaggregations numerically more stable.
    3018- new global parameter heuristics/useuctsubscip that affects all LNS heuristics using common sub-SCIP parameters
    3019
    3020- new parameter branching/relpscost/degeneracyaware to switch degeneracy-aware hybrid branching
    3021
    3022- new parameter separation/rapidlearning/checkexec to check whether rapid learning is allowed to run locally
    3023- new parameters separation/rapidlearning/check{degeneracy,dualbound,leaves,nsols,obj} to enable checking the respective feature for local rapid learning
    3024- new parameter separation/rapidlearning/maxcalls to limit the number of rapid learning executions
    3025- new parameter separation/rapidlearning/nwaitingnodes to set the number of waiting nodes before the dual bound is checked
    3026- new parameter separation/rapidlearning/mindegeneracy to set the minimal threshold of degenerate basic-variables
    3027- new parameters separation/rapidlearning/minvarconsratio to set the minimal ratio of unfixed variables in relation to basis size
    3028
    3029- new parameters to control the Benders' decomposition two-phase method.
    3030 - constraints/benderslp/depthfreq: after the maxdepth is reached, then the two-phase method will only be called at
    3031 nodes at a depth divisible by depthfreq.
    3032 - constraints/benderslp/stalllimit: after the maxdepth is reached, if there has been no improvement in the dual bound
    3033 for stalllimit number of nodes, then the two-phase method is executed for the next fractional LP solution that is
    3034 encountered.
    3035 - constraints/benderslp/iterlimit: after the root node, only iterlimit fractional LP solutions are used at each node
    3036 to generate Benders' decomposition cuts.
    3037
    3038- new parameters for symmetry handling
    3039 - new parameter "propagating/symmetry/maxgenerators"
    3040 - new parameter "propagating/symmetry/checksymmetries"
    3041 - new parameter "propagating/symmetry/displaynorbitvars"
    3042 - new parameter "propagating/symmetry/conssaddlp"
    3043 - new parameter "propagating/symmetry/addsymresacks"
    3044 - new parameter "propagating/symmetry/detectorbitopes"
    3045 - new parameter "propagating/symmetry/addconsstiming"
    3046 - new parameter "propagating/symmetry/ofsymcomptiming"
    3047 - new parameter "propagating/symmetry/performpresolving"
    3048 - new parameter "propagating/symmetry/recomputerestart"
    3049 - new parameter "constraints/symresack/checkmonotonicity"
    3050 - new parameter "propagating/symmetry/compresssymmetries"
    3051 - new parameter "propagating/symmetry/compressthreshold"
    3052 - new parameter "propagating/symmetry/disableofrestart"
    3053 - new parameter "propagating/symmetry/symfixnonbinaryvars"
    3054
    3055- new parameter for enabling shared memory parallelisation for solving Benders' decomposition subproblems. The parameter
    3056 benders/<bendersname>/numthreads sets the number of threads used for parallel subproblem solving.
    3057
    3058- new parameters to control enhancements for solving MINLPs by Benders' decomposition
    3059 - benders/<bendersname>/execfeasphase: enables the feasibility phase for solving the Benders' decomposition
    3060 subproblems
    3061 - benders/<bendersname>/slackvarcoef: the initial coefficient of the slack variable for the feasibility phase
    3062 - benders/<bendersname>/checkconsconvexity: should the constraints be checked for convexity. This can be set to FALSE
    3063 if you are certain that the NLP subproblem is convex.
    3064
    3065- new parameter presolving/clqtablefac (default value 2.0) as limit on number of entries in clique table relative to number of problem nonzeros
    3066
    3067- new parameter conflict/uselocalrows (default: TRUE) to incorporate locally valid cuts / rows for dual proof analysis
    3068
    3069- new return code SCIP_NOTIMPLEMENTED for functions, e.g., in the LPI that have not been implemented (yet)
    3070
    3071- new parameter separating/cgmip/genprimalsols that allows to generate initial primal solutions from Gomory cuts
    3072
    3073- new parameter branching/relpscost/filtercandssym to allow filtering from orbits
    3074
    3075- new parameter branching/relpscost/transsympscost to transfer pseudo cost information to orbit
    3076
    3077- new parameters for tree size estimation and restarts:
    3078 - estimation/restarts/restartpolicy (default value n)
    3079 - estimation/method (default value c)
    3080 - estimation/restarts/restartlimit (default value 1)
    3081 - estimation/restarts/minnodes (default value 1000)
    3082 - estimation/restarts/countonlyleaves (default value FALSE)
    3083 - estimation/restarts/restartfactor (default value 2)
    3084 - estimation/coefmonoprog (default value 0.3667)
    3085 - estimation/coefmonossg (default value 0.6333)
    3086 - estimation/restarts/hitcounterlim (default value 50)
    3087 - estimation/reportfreq (default value -1)
    3088 - estimation/regforestfilename (default value "-")
    3089 - estimation/completiontype (default value a)
    3090 - estimation/treeprofile/enabled (default value FALSE)
    3091 - estimation/treeprofile/minnodesperdepth (default value 20)
    3092 - estimation/useleafts (default value TRUE)
    3093 - estimation/ssg/nmaxsubtrees (default value -1)
    3094 - estimation/ssg/nminnodeslastsplit (default value 0)
    3095
    3096- new parameter constraints/linear/extractcliques to turn clique extraction off
    3097
    3098- new emphasis setting emphasis/numerics to increase numerical stability of (mostly) presolving operations such as (multi-)aggregations at the cost of performance.
    3099
    3100- new parameters for treemodel:
    3101 - new parameter branching/treemodel/enable to enable the treemodel in reliability pscost branching and possible
    3102 future parts of the code where it could be used.
    3103 - new parameter branching/treemodel/highrule to specify which branching rule to use when treemodel thinks the node
    3104 is high in the tree.
    3105 - new parameter branching/treemodel/lowrule to specify which branching rule to use when treemodel thinks the node
    3106 is low in the tree.
    3107 - new parameter branching/treemodel/height to specify at which (estimated) height a node is high or low in the tree.
    3108 - new parameter branching/treemodel/filterhigh to specify whether to filter dominated candidates in nodes which are
    3109 high in the tree.
    3110 - new parameter branching/treemodel/filterlow to specify whether to filter dominated candidates in nodes which are
    3111 low in the tree.
    3112 - new parameter branching/treemodel/maxfpiter to specify the maximum number of fixed-point iterations to use when
    3113 computing the ratio of a variable using the fixed-point method.
    3114 - new parameter branching/treemodel/maxsvtsheight to specify the maximum height to compute the SVTS score exactly
    3115 before approximating it using the ratio.
    3116 - new parameter branching/treemodel/fallbackinf defines the fallback strategy to use when the tree size estimates
    3117 obtained by SVTS are infinite.
    3118 - new parameter branching/treemodel/fallbacknoprim defines the fallback strategy to use when no primal bound is known
    3119 and thus SVTS would not be able to compute a tree size (it would be infinite).
    3120 - new parameter branching/treemodel/smallpscost defines the value under which pscosts are considered too small to be
    3121 the deciding factor for branching, in which case it may be better not to use the treemodel.
    3122
    3123- new parameters for symmetry handling constraint handlers to enforce that also non-model constraint are copied:
    3124 - new parameter "constraints/orbisack/forceconscopy"
    3125 - new parameter "constraints/orbitope/forceconscopy"
    3126 - new parameter "constraints/symresack/forceconscopy"
    3127
    3128
    3129### Data structures
    3130
    3131- small changes in constants of hash functions
    3132- added fast 2-universal hash functions for two to seven 32bit elements with 32bit output
    3133- extended SCIPpqueueCreate() by additional callback argument SCIP_DECL_PQUEUEELEMCHGPOS to catch position changes
    3134- new methods SCIPpqueueDelPos() to delete elements at a specific position in the priority queue and SCIPpqueueFind() to
    3135 find a specific position. It is recommended to track position changes using the new callback SCIP_DECL_PQUEUEELEMCHGPOS.
    3136 In contrast, using SCIPpqueueFind() can be slow because it needs to compare the element it searches for
    3137 with each slot in the queue.
    3138
    3139### Build system
    3140
    3141- The default value for DFLAGS in the non-cmake buildsystem has changed from -MM to -MMD. This will break the
    3142 generation of depend.* files if that was done by a compiler call that relied on -MM. The new preferred way
    3143 to handle compilation dependencies is to additionally use $(DFLAGS) when compiling the object files (.o) and
    3144 to include the generated .d files in the Makefile, see also "Build system / Makefile" below.
    3145
    3146Unit tests
    3147----------
    3148 - new unit test for treemodel.
    3149
    3150Testing
    3151-------
    3152
    3153 - fixed an issue that may have lead to wrong status reports in the evaluation scripts
    3154
    3155Build system
    3156------------
    3157
    3158### Cmake
    3159
    3160- avoid problem with doubly defined object together with CPLEX
    3161
    3162### Makefile
    3163
    3164- Removed static object compilation dependency files (depend.*). If using a GCC compatible compiler, then dependency
    3165 files are now dynamically created and updated during build. The new dependency files (*.d) reside next to each object
    3166 file (.o) in the corresponding obj subdirectory.
    3167- added support for building against Ipopt >= 3.13
    3168- unify compiler switches for Intel compiler and avoid problem with doubly defined object together with CPLEX
    3169
    3170Fixed bugs
    3171----------
    3172
    3173- fix and improve memory handling in symmetry computation
    3174- fix shown number of applied conflicts in solving statistics
    3175- fix wrongly skipping strong branching call and using old information if LP was solved with 0 iterations
    3176- fix minor bug in cut score calculation
    3177- fixed several bugs related to rounding locks of variables not being updated correctly
    3178- small fix in cons_varbound.c to skip changing bounds of multi-aggregated variables in separation callback
    3179- fixed issue in SCIPtightenVar* and SCIPinferVar* that occurs for small bound changes
    3180- fixed rejecting minimal boundchange that changed sign of variable, even though SCIPisLb/UbBetter approved it
    3181- fixed issue in generateCutNonConvex() which is triggered when adding quadratic constraints during the solving process
    3182- fixed bug in freeing the reoptimization data if no problem exists
    3183- fixed bug in SCIPreoptReleaseData() when freeing all stored constraints
    3184- fixed bug when freeing the transformed problem via interactive shell if reoptimization is enabled
    3185- fixed two issues related to (near-)redundant logicor constraints in presolving
    3186- fixed counting of aggregations in XOR constraint handler
    3187- fixed handling of unbounded solutions
    3188- fixed update of LP size information when an LP error occured during probing
    3189- handle special case of variable bound constraints during aggregating variables
    3190- tighten sides of linear constraints before trying to upgrade them to more specialized constraints (knapsack, logic-or etc.) when calling SCIPupgradeConsLinear()
    3191- fixed an issue in repair heuristic in the case of loose (noncolumn) variables
    3192- allow user to correctly set heuristics/alns/(un)fixtol
    3193- fixed an issue in heur_completesol which is triggered during bound widening of unbounded continuous variables
    3194- fixed bug in cons_indicator if addopposite is true
    3195- fixed bug in sepa_disjunctive: treat case that conflictgraph is empty
    3196- added safety check in conversion to rational number to avoid overflow
    3197- fixed bug in interval evaluation with power-operator in certain situations
    3198- fixed behavior of SCIPmatrixCreate() regarding memory management and column generation
    3199- SCIPmatrixCreate() returns complete=FALSE when locks do not add up
    3200- fixed bug in sepa_oddcylce when variables are fixed
    3201- fixed numerical issues related to tighter constraint sides in varbound constraint handler
    3202- fixed update of watchedvars in logicor constraint handler in case of a restart during the tree
    3203- fixed treatment of multi-aggregated variables in logicor constraint handler
    3204- handle special case of redundant implications
    3205- fixed numerical issue related to almost-0-values in pseudosolution conflict analysis
    3206- fixed numerical issue related to very large greatest common dividers in linear constraint handler
    3207- avoid using implications on multiaggregated variables when propagating implications
    3208- fixed creation of (Lagrangian) variable bounds in the OBBT propagator
    3209- fixed sorting of primal solutions
    3210- fixed cleaning of clean buffer in conflict analysis
    3211- avoid probing on variables with huge bounds in shift and propagate heuristic
    3212- fix issue in printing solutions for variables that have been added by the dual sparsify presolver
    3213- fix issue related to fixing redundant logic-or constraints after presolving
    3214- fixed bug when parsing logic-or and and-constraints
    3215- fixed wrong assert in updateLazyBounds()
    3216- fixed bug in pricestore, which resulted in too many problem variables being added
    3217- fixed bug in cons_knapsack where weight of clique was not reset after an infeasibility was detected
    3218- fixed bug in presol_inttobinary which did not take into account that the aggregation could be rejected due to numerics
    3219- fixed bug in debug solution mechanism in connection to variables created by presol_inttobinary
    3220- fixed wrong indexing while undoing the implications from a redundant variable in SCIPshrinkDisjunctiveVarSet
    3221- redundancy checks in SCIPnodeAddBoundinfer now take a possible change to an active variable into account
    3222- fixed adding already added quadratic rows to NLP relaxation during solve
    3223- fixed issue related to variable locks in the varbound constraint handler
    3224- fixed bug in the quadratic constraint handler when changing infinite constraint sides
    3225- fixed sorting of variables in linear constraint handler
    3226- added additional checks to ensure numerical stability of dual proofs
    3227- fixed a case when activities of a linear constraint got unreliable but where still used for reductions
    3228- ensure that lhs <= rhs for linear constraints (without tolerances)
    3229- make handling of read errors in SCIPfread() consistent between version with and without ZLIB
    3230- correctly drop variable events in cons_indicator in restart
    3231- fixed bug in cons_orbitope with upgrading of orbitope constraints
    3232- additional checks in some presolvers for time limit being exceeded
    3233- fixed bug in presolving of cons_varbound with multi-aggregated variables
    3234- improve numerics in conflict analysis by using double-double arithmetic
    3235- fixed bound acceptance condition to avoid inconsistencies
    3236- fixed numerics in pseudoobj propagator by using double-double arithmetic
    3237
    3238Miscellaneous
    3239-------------
    3240
    3241- modified display column for memory usage ("mem"), which reports the memory usage most of the time, but shows the creator name
    3242 (heuristic, relaxation handler, LP relaxation, strong branching, pseudo solution) of every new incumbent solution. Together with this change,
    3243 heuristic display characters have been unified to represent the type of the heuristic
    3244 (diving, Large neighborhood search, propagation, etc.), see also type_heur.h.
    3245- added assert that ensures that the locks of a variable have been decreased to 0 when it is freed
    3246- added more output for completing a partial solution
    3247- checks in debug mode that clean buffer memory is really clean when being freed are now disabled by default
    3248- don't compute symmetries if reoptimization is enabled
    3249- prefer integral values when fixing an almost-fixed continuous variable in the trivial presolver
    3250- changed the name of the variable that is added by the OSiL reader to represent the quadratic or nonlinear parts of the objective function
    3251- SCIP_EXPORT is now defined as __attribute__((__visibility__("default"))) if GCC and no SCIP config header is used
    3252
    3253@page RN6 Release notes for SCIP 6
    3254
    3255@section RN602 SCIP 6.0.2
    3256*************************
    3257
    3258Features
    3259--------
    3260
    3261- The abspower constraint handler now passes more accurate convexity
    3262 information to the NLP relaxation.
    3263
    3264Examples and applications
    3265-------------------------
    3266
    3267- added parsing functionality for optcumulative constraints in CIP format
    3268
    3269Interface changes
    3270-----------------
    3271
    3272### Interfaces to external software
    3273
    3274- Updated the Mosek LP solver interface to support Mosek 9.0.
    3275
    3276Build system
    3277------------
    3278
    3279### Cmake
    3280
    3281- new target to 'doc' to build documentation
    3282- ctests now fail if parameter file not found
    3283- add flag STATIC_GMP and improve GMP find module
    3284- remove non-API functions from library (API functions use new macro SCIP_EXPORT)
    3285- increase minimal required CMake version to 3.3
    3286- correct paths and dependency information when installing SCIP
    3287
    3288Fixed bugs
    3289----------
    3290- fixed SCIP-Jack presolving bug that could lead to wrong results for Steiner arborescence problems
    3291- fixed wrong unboundedness result in case not all constraints were already in the LP and enforcement was
    3292 skipped because an optimal solution was found
    3293- fixed wrong enforcement of constraints in the disjunction constraint handler
    3294- fixed wrong behavior of concurrent solve ignoring initial solutions
    3295- fixed bug in concurrent solve when problem was already solved in presolving
    3296- aggregate non-artificial integer variable for XOR constraints with two binary variables and delete constraint
    3297- copy the objective offset when copying the original problem
    3298- fixed bug in SCIPlpiGetBInvARow in lpi_cpx using wrong size of resulting vector
    3299- fixed quadratic runtime behavior in sepa_aggregation
    3300- fixed statistics of separators
    3301- improve numerical stability in varbound constraint handler by using double-double arithmetic
    3302- fixed bug in propagation of dual proofs
    3303- fixed bugs that arise for multiaggregated indicator variables by disallowing multiaggregation for them
    3304- improve numerical stability in SCIPcomputeBilinEnvelope* by using double-double arithmetic
    3305- fixed bug related to releasing pending bound changes in tree.c
    3306- set STD FENV_ACCESS pragma to on in code that changes floating-point rounding mode
    3307- disable GCC optimizations in main interval arithmetic code to prevent wrong optimizations
    3308- fixed wrong assert in cons_xor concerning the variable type
    3309- fixed different behavior of SCIPisLbBetter and SCIPisUbBetter between having NDEBUG defined or not
    3310- correctly handle bound disjunctions in symmetry detection
    3311- fixed issue in reliability branching related to the LP error flag not being reset
    3312- fixed treatment of near-infinite bounds in shiftandpropagate's problem transformation
    3313- fixed handling of infinite values in SCIPcomputeHyperplaneThreePoints()
    3314- fixed comparisons of infinite values in heur_intshifting.c and heur_shifting.c
    3315- fixed bug related to updating unprocessed cuts in the cutpool
    3316- fixed bug related to enabling quadratic constraints during `CONSINITLP`
    3317- add missing SCIP_EXPORT for functions used by GCG
    3318- fixed memory leak and wrong initialization for trival cases in cons_symresack.c
    3319- fixed bug with upgrading to packing/partitioning orbitopes
    3320- fixed bug with the status while upgrading in presol_symbreak.c
    3321- fixed wrong stage while clearing the conflict store
    3322- fixed behavior of SCIPfixVar() by setting infeasible pointer to TRUE if fixval lies outside variable domain
    3323- allow tightenVar() in SCIP_STAGE_PROBLEM stage
    3324- fixed bug in cumulative constraint handler when separating the LP solution
    3325- fixed issues with integer overflow in cumulative constraint handler
    3326- fixed bug where the convexity of Benders' decomposition subproblems was checked even when users defined subproblem
    3327 solving methods. Now, as per the documentation, the user must explicitly state whether the subproblem is convex
    3328- fixed wrong indexing in heur_dualval
    3329- fixed issue with basis status in SoPlex LPi
    3330
    3331Miscellaneous
    3332-------------
    3333
    3334- statistics now output primal/dual bounds if objective limit is reached
    3335- memory check in debug mode is now disabled by default
    3336- message is now provided to the user to inform that automatic Benders' auxiliary variable lower bound computations are
    3337 not activated when user defined subproblem solving methods are present
    3338- corrected documentation of the primalgap in SCIP; describe when it will be infinite
    3339
    3340@section RN601 SCIP 6.0.1
    3341*************************
    3342
    3343Features
    3344--------
    3345
    3346- when using a debug solution every (multi-)aggregation will be checked w.r.t. this solution
    3347
    3348Performance improvements
    3349------------------------
    3350
    3351- try greedy solution first before solving knapsack exactly using dynamic programming in SCIPsolveKnapsackExactly,
    3352 compute greedy solution by weighted median selection.
    3353- don't consider implied redcost by default in the reduced cost propagator
    3354
    3355Interface changes
    3356-----------------
    3357
    3358### Deleted and changed API functions and macros
    3359
    3360- The preprocessor macro NO_CONFIG_HEADER now needs to be defined when
    3361 including SCIP header files from a SCIP build or installation that
    3362 has been build via the Makefile-only build system.
    3363
    3364- The following preprocessor macros have been renamed:
    3365 WITH_ZLIB to SCIP_WITH_ZLIB, WITH_GMP to SCIP_WITH_GMP, WITH_READLINE
    3366 to SCIP_WITH_READLINE, NO_SIGACTION to SCIP_NO_SIGACTION, NO_STRTOK_R
    3367 to SCIP_NO_STRTOK_R, ROUNDING_FE to SCIP_ROUNDING_FE, ROUNDING_FP to
    3368 SCIP_ROUNDING_FP, ROUNDING_MS to SCIP_ROUNDING_MS. Note, however, that
    3369 the names of macros NO_RAND_R and NO_STRERROR_R have not been changed
    3370 so far.
    3371
    3372### New API functions
    3373
    3374- SCIPhashmapInsertInt(), SCIPhashmapSetImageInt(), and SCIPhashmapGetImageInt() to use integer values as images in hashmaps
    3375
    3376### Command line interface
    3377
    3378- warn about coefficients in MPS files with absolute value larger than SCIP's value for infinity
    3379
    3380### Changed parameters
    3381
    3382- default clock type for timing is now wallclock
    3383
    3384Unit tests
    3385----------
    3386
    3387- added unit tests for exact knapsack solving and (weighted) median selection algorithms
    3388
    3389Build system
    3390------------
    3391
    3392### Cmake
    3393
    3394- add missing GMP dependency when compiling with SYM=bliss
    3395- add DL library when linking to CPLEX to avoid linker errors
    3396- new config.h header defining the current build configuration, e.g. SCIP_WITH_GMP
    3397
    3398Fixed bugs
    3399----------
    3400
    3401- fixed handling of weights in cons_sos1 and cons_sos2 (NULL pointer to weights)
    3402- fixed handling of unbounded LPs in SCIP and in several LPIs; added heuristic method to guess solution
    3403- the STO reader is capable of handling scenarios defined using lower case "rhs"
    3404- fixed OPB reader for instances without explicit plus signs
    3405- correct dual solution values for bound constraints
    3406- fixed recognition of variable with only one lock in cons_bivariate, cons_quadratic, and cons_nonlinear
    3407- fixed update of constraint violations in solution repair in cons_bivariate, cons_quadratic, and cons_nonlinear
    3408- print error message and terminate if matrix entries of a column are not consecutive in mps format
    3409- fixed incorrect handling of fixed variables when transfer of cuts from LNS heuristic for Benders' decomposition
    3410- fix returning local infeasible status by Ipopt interface if Ipopt finds problem locally infeasible
    3411- skip attempt to apply fixings in linear constraint handler during solving stage as LP rows cannot change anymore
    3412- fixed bug when reading >= indicator constraints in MPS format
    3413- fix issue with nodes without domain changes if we ran into solution limit in prop_orbitalfixing
    3414- fixed unresolved reference to CppAD's microsoft_timer() function on builds with MS/Intel compilers on Windows
    3415- ignore implications added through SCIPaddVarImplication() that are redundant to global bounds also in the
    3416 special case of an implication between two binary variables; also, use implications instead of cliques in the case
    3417 of a binary implied variable with nonbinary active representative
    3418- fixed bug with aggregated variables that are aggregated in propagation of cons_sos1
    3419- fixed some special cases in SCIPselect/SCIPselectWeighted methods
    3420- relaxed too strict assertion in Zirounding heuristic
    3421- fixed the upgrade routine to XOR constraints: aggregate integer variable if its coefficient has the wrong sign
    3422- fixed handling of nonartificial parity variables when deleting redundant XOR constraints
    3423- earlier deletion of trivial XOR constraints (at most 1 operator left)
    3424- fixed wrong hashmap accesses and added sanity check for the correct hashmap type
    3425- avoid copying of unbounded solutions from sub-SCIPs as those cannot be checked completely
    3426- corrected the output of the first LP value in case of branch-and-price
    3427- fixed possible integer overflow, which led to wrong conclusion of infeasibility, in energetic reasoning of cons_cumulative.c
    3428
    3429Miscellaneous
    3430-------------
    3431
    3432- do not scale linear constraints to integral coefficients
    3433
    3434@section RN600 SCIP 6.0.0
    3435*************************
    3436
    3437Features
    3438--------
    3439
    3440- new diving heuristic farkasdiving that dives into the direction of the pseudosolution and tries to construct Farkas-proofs
    3441- new diving heuristic conflictdiving that considers locks from conflict constraints
    3442- restructuring of timing of symmetry computation that allows to add symmetry handling components within presolving
    3443- `lp/checkstability` is properly implemented for SoPlex LPI (spx2)
    3444- new branching rule lookahead that evaluates potential child and grandchild nodes to determine a branching decision
    3445- limits on the number of presolving rounds a presolver (maxrounds) or propagator/constraint handler (maxprerounds)
    3446 participates in are now compared to the number of calls of the particular presolving method, not the number of
    3447 presolving rounds in general, anymore
    3448- new miscellaneous methods for constraints that have a one-row linear representation in pub_misc_linear.h
    3449- a Benders' decomposition framework has been added. This framework provides the functionality for a user to solve a
    3450 decomposed problem using Benders' decomposition. The framework includes classical optimality and feasibility cuts,
    3451 integer optimality cuts and no-good cuts.
    3452- add statistic that presents the number of resolves for instable LPs
    3453- new readers for stochastic programming problems in SMPS format (reader_sto.h, reader_smps.h)
    3454
    3455Performance improvements
    3456------------------------
    3457
    3458- cuts generated from certain quadratic constraints with convex feasible region are now global
    3459- performance improvements for Adaptive Large Neighborhood Search heur_alns.c
    3460 + all neighborhoods now start conservatively from maximum fixing rate
    3461 + new default parameter settings for bandit selection parameters
    3462 + no adjustment of minimum improvement by default
    3463- improved bound tightening for some quadratic equations
    3464- constraint handler checking order for original solutions has been modified to check those with negative check priority
    3465 that don't need constraints after all other constraint handlers and constraints have been checked
    3466- deactivate gauge cuts
    3467
    3468Examples and applications
    3469-------------------------
    3470
    3471- new example `brachistochrone` in CallableLibrary examples collection; this example implements a discretized model to
    3472 obtain the trajectory associated with the shortest time to go from point A to B for a particle under gravity only
    3473- new example `circlepacking` in CallableLibrary examples collection; this example models two problems about packing
    3474 circles of given radii into a rectangle
    3475- new price-and-branch application for the ringpacking problem
    3476- new stochastic capacitated facility location example demonstrating the use of the Benders' decomposition framework
    3477
    3478Interface changes
    3479-----------------
    3480
    3481### New and changed callbacks
    3482
    3483- added parameter locktype to `SCIP_DECL_CONSLOCK` callback to indicate the type of variable locks
    3484
    3485### Deleted and changed API functions
    3486
    3487- Symmetry:
    3488 + removed function SCIPgetTimingSymmetry() in presol_symmetry.h since this presolver does not compute symmetries independent
    3489 of other components anymore
    3490 + additional argument `recompute` to SCIPgetGeneratorsSymmetry() to allow recomputation of symmetries
    3491
    3492- Random generators:
    3493 + the seed of SCIPinitializeRandomSeed() is now an unsigned int
    3494 + the seed of SCIPsetInitializeRandomSeed() is now an unsigned int and it returns an unsigned int
    3495 + new parameter for SCIPcreateRandom() to specify whether the global random seed shift should be used in the creation of
    3496 the random number generator
    3497
    3498- Miscellaneous:
    3499 + additional arguments `preferrecent`, `decayfactor` and `avglim` to SCIPcreateBanditEpsgreedy() to choose between
    3500 weights that are simple averages or higher weights for more recent observations (the previous default).
    3501 The last two parameters are used for a finer control of the exponential decay.
    3502 + functions SCIPintervalSolveUnivariateQuadExpression(), SCIPintervalSolveUnivariateQuadExpressionPositive(), and
    3503 SCIPintervalSolveUnivariateQuadExpressionPositiveAllScalar() now take an additional argument to specify already
    3504 existing bounds on x, providing an entire interval ([-infinity,infinity]) gives previous behavior
    3505
    3506### New API functions
    3507
    3508- SCIPintervalSolveUnivariateQuadExpressionNegative()
    3509- SCIPvarGetNLocksDownType() and SCIPvarGetNLocksUpType()
    3510- SCIPaddConsLocksType()
    3511- SCIPconsIsLockedTypePos(), SCIPconsIsLockedTypeNeg(), SCIPconsIsLockedType(), SCIPconsGetNLocksTypePos() and SCIPconsGetNLocksTypeNeg()
    3512- SCIPstrncpy(), a safe version of strncpy()
    3513
    3514### Changed parameters
    3515
    3516- Removed parameters:
    3517 - `heuristics/alns/stallnodefactor` as the stall nodes are now controlled directly by the target node limit within the heuristic
    3518 - `presolving/symmetry/computepresolved` since this presolver does not compute symmetries independent of other components anymore
    3519 - `separating/maxincrounds`
    3520
    3521### New parameters
    3522
    3523- `lp/checkfarkas` that enables the check of infeasibility proofs from the LP
    3524- `heuristics/alns/unfixtol` to specify tolerance to exceed the target fixing rate before unfixing variables, (default: 0.1)
    3525- `propagating/orbitalfixing/symcomptiming` to change the timining of symmetry computation for orbital fixing
    3526- `lp/alwaysgetduals` ensure that the dual solutions are always computed from the recent LP solve
    3527- `display/relevantstats` indicates whether the small relevant statistics are displayed at the end of solving
    3528- `propagating/orbitalfixing/performpresolving` that enables orbital fixing in presolving
    3529- `presolving/symbreak/addconsstiming` to change the timining of symmetry computation for symmetry handling inequalities
    3530- `propagating/orbitalfixing/enabledafterrestarts` to control whether orbital fixing is enabled after restarts
    3531- `benders/∗` new submenu for Benders' decomposition related settings. This includes the settings related to the
    3532 included Benders' decompositions and the general Benders' decomposition settings.
    3533- `benders/<decompname>/benderscuts/∗` submenu within each included Benders' decomposition to control the Benders'
    3534 decomposition cuts. The cuts are added to each decomposition separately, so the setting are unique to each
    3535 decomposition.
    3536
    3537### Data structures
    3538
    3539- new enum `SCIP_LOCKTYPE` to distinguish between variable locks implied by model (check) constraints (`SCIP_LOCKYPE_MODEL`)
    3540 and variable locks implied by conflict constraints (`SCIP_LOCKYPE_CONFLICT`)
    3541- expression interpreter objects are now stored in the block memory
    3542
    3543Deleted files
    3544-------------
    3545
    3546- removed presolving plugin presol_implfree
    3547- separated scip.c into several smaller implementation files scip_*.c for better code overview; scip.c was removed,
    3548 but the central user header scip.h remains, which contains includes of the separated headers
    3549
    3550Fixed bugs
    3551----------
    3552
    3553- fixed bug in gcd reductions of cons_linear regarding an outdated flag for variable types
    3554- fixed bug in heur_dualval regarding fixing routine for integer variables
    3555- suppress debug solution warnings during problem creation stage
    3556- fixed check for activated debugging solution in components constraint handler
    3557- fixed potential bug concerning solution linking to LP in SCIPperformGenericDivingAlgorithm()
    3558- fixed reward computation in ALNS on continuous, especially nonlinear, problems
    3559- fixed bug in freeing reoptimization data if problem was solved during presolving
    3560- fixed check of timing in heur_completesol
    3561- fixed wrong propagation in optcumulative constraint handler
    3562- fixed non-deterministic behavior in OBBT propagator
    3563- don't disable LP presolving when using Xpress as LP solver
    3564- fixed possible `NULL` pointer usage in cons_pseudoboolean
    3565- ensured that SCIPgetDualbound() returns global dual bound instead of the dual bound of the remaining search tree
    3566- fixed rare division-by-zero when solving bivariate quadratic interval equation
    3567- use total memory for triggering memory saving mode
    3568- fix parsing of version number in the CMake module for Ipopt
    3569- fixed handling of implicit integer variables when attempting to solve sub-MIP in nlpdiving heuristic
    3570- added workaround for bug when solving certain bivariate quadratic interval equations with unbounded second variable
    3571- fixed bug with releasing slack variable and linear constraint in cons_indicator
    3572- fixed problem when writing MPS file with indicator constraints with corresponding empty linear constraints
    3573- fixed bug in heur_vbound triggered when new variables were added while constructing the LP
    3574- fixed bug with unlinked columns in SCIProwGetLPSolCutoffDistance()
    3575
    3576Miscellaneous
    3577-------------
    3578
    3579- updated CppAD to version 20180000.0
    3580- remove LEGACY mode, compiler needs to be C++11-compliant
    3581
    3582@page RN5 Release notes for SCIP 5
    3583
    3584@section RN501 SCIP 5.0.1
    3585*************************
    3586
    3587Features
    3588--------
    3589
    3590- SCIP executable handles the `SIGTERM` signal. If the process receives a `SIGTERM`, SCIP terminates the solution process with a
    3591 new `SCIP_STATUS` code `SCIP_STATUS_TERMINATE` and displays all relevant statistics before exiting.
    3592- add number of conflict constraints found by diving heuristics to statistics
    3593- allow output of lower bounds for visualization
    3594- added symmetry detection for linking constraints
    3595
    3596Performance improvements
    3597------------------------
    3598
    3599- disable disaggregation of quadratic constraints by changing the default for `constraints/quadratic/maxdisaggrsize` to 1
    3600 (disaggregation can still be very helpful on some instances, but also seems hurtful on others)
    3601
    3602- Cuts:
    3603 - increased threshold when to scale up cuts that are generated by nonlinear constraint handlers
    3604 - test additional scaling factors in CMIR cut generation heuristic
    3605 - cleaned up implementation of the cut selection procedure and added new cut quality measure
    3606 - use random tie-breaking in cut selection
    3607
    3608Interface changes
    3609-----------------
    3610
    3611### New API functions
    3612
    3613- new methods SCIPtryTerminate() and SCIPterminated() in scip/interrupt.h for handling of SIGTERM signals.
    3614- new method SCIPselectCuts() to run SCIP's cut selection procedure on a given array of cuts
    3615
    3616### Changed parameters
    3617
    3618- rename parameter `constraints/orbisack/orbisack/coverseparation` to `constraints/orbisack/coverseparation`
    3619
    3620### New parameters
    3621
    3622- `visual/displb` that enables output of lower bounds for visualization
    3623- `presolving/symmetry/displaynorbitvars` (whether we display the number of affected variables in the statistics)
    3624- `separating/efficacyfac` to change the weight of the efficacy in cut score calculation
    3625- `separating/dircutoffdistfac` to change the weight of the directed cutoff distance in cut score calculation
    3626
    3627### Data structures
    3628
    3629- new `SCIP_STATUS` code `SCIP_STATUS_TERMINATE` in scip/interrupt.h for handling of SIGTERM signals.
    3630
    3631Unit tests
    3632----------
    3633
    3634- expanded unit tests of the lpis
    3635- added check to unit tests that problem is not solved after every change
    3636
    3637Fixed bugs
    3638----------
    3639
    3640- fixed LP status to unsolved when marking LP to be resolved if objective limit has changed
    3641- copy parameter settings to sub-SCIPs in SCIPcopyLargeNeighborhoodSearch() also when copying only LP rows
    3642- fixed a check for fixed variables in Binpacking example
    3643- generate deprecation warnings when using SCIPaddCut
    3644- fix bug in sepa_gomory if cut is a bound change
    3645- fixed handling of infinite bounds in cons_sos1
    3646
    3647- Constraints:
    3648 - fixed bug while scaling linear constraints
    3649 - don't delete conflict constraints that were transformed into model constraints during a restart
    3650 - fixed treatment of variable aggregations in knapsack constraint handler that led to wrong propagations
    3651
    3652- LP Interface:
    3653 - fixed LPI status after changing objective in lpi_cpx, lpi_grb, lpi_xprs, lpi_msk
    3654 - fixed and unified asserts in LPIs
    3655 - retrieve interior solution instead of (possibly non-existing) basic solution from mosek after using barrier without crossover in lpi_msk
    3656 - fixed bug with `NULL` pointer handling in LPIs
    3657
    3658- Heuristics:
    3659 - fixed wrong cast in LP iteration limit computation in proximity search heuristic
    3660 - fixed check for time limit in heur_nlpdiving
    3661 - improved numerics and fixed stop criterion in zirounding heuristic
    3662
    3663@section RN500 SCIP 5.0.0
    3664*************************
    3665
    3666Features
    3667--------
    3668
    3669- new numerical solution violations get printed when checksol is called
    3670- added analysis of the clique table which identifies possible aggregations via the search for
    3671 strongly connected components and may detect infeasible assignments on the way
    3672- added macros to do computations with a higher precision by using double-double arithmetic
    3673- extended conflict analysis by analyzing dual solutions of boundexceeding LPs
    3674- revised internal debugging mechanism to check against a user given debug solution (debug.h)
    3675
    3676- Heuristic:
    3677 - add new heuristic MPEC that solves a MPEC reformulation of a mixed-binary nonlinear problem by regularized NLP reformulations
    3678 - new primal heuristic ALNS that orchestrates eight different LNS heuristics adaptively
    3679 using algorithms for the multi-armed bandit problem
    3680 - three bandit selection algorithms to face sequential decision problems under uncertainty
    3681
    3682- Presolving and symmetry:
    3683 - added presol_symmetry.c for computing and storing symmetry information of a MIP
    3684 - added presol_symbreak.c to detect special symmetry structures and to add symmetry handling constraints
    3685 - SCIP can now automatically detect and compute symmetries in MIPs (if a graph automorphism code is linked in)
    3686 - added cons_symresack.c to handle permutation symmetries in a binary programs via inequalities and propagation
    3687 - added cons_orbisack.c to handle special permutation symmetries in a binary programs via inequalities and propagation
    3688 - cons_orbitope.c can now handle full orbitopes as well
    3689
    3690- Propagator:
    3691 - added new propagator orbital fixing
    3692 - utilizing linear inequalities to compute stronger linearizations for bilinear terms; the inequalities are computed in
    3693 the OBBT propagator
    3694
    3695- Cuts:
    3696 - added API for aggregating rows for generating cuts which uses double-double arithmetic internally
    3697 - added filtering of parallel cuts in the cut pool
    3698
    3699- Plugins:
    3700 + added new plugin type `table` for adding user-defined statistics tables
    3701 + new presolving plugin presol_sparsify that tries to cancel nonzero coefficients in linear constraints by adding
    3702 multiples of linear equalities
    3703
    3704Performance improvements
    3705------------------------
    3706
    3707- use disjoint set to reduce peak memory usage and time to compute of clique table connectedness information
    3708- add and use RESTRICT macro for some pointers
    3709- improved the implementation of SCIPvarGetActiveRepresentatives
    3710- speed-up reverse propagation
    3711- removed bestrelaxsol and directly access relaxation solution instead to decrease overhead when using relaxation handlers
    3712- for fast presolving emphasis, disable use of implications in logicor presolving
    3713- use limit on the total number of nonzeros added to the clique table during the greedyCliqueAlgorithm of cons_knapsack.c
    3714- revised disaggregation of quadratic constraints: the number of created constraints can now be controlled and the
    3715 disaggregated constraints are scaled in order to increase numerical accuracy
    3716- disabled reformulation of products of a binary variable with a linear term that does not solely involve binary variables
    3717- speed up creation of LP in the computation of relative interior points
    3718- improved dual ray analysis
    3719- drop events of disabled linear constraints to reduce event processing effort
    3720
    3721- Separation:
    3722 - new implementation of zerohalf separator
    3723 - enabled cutting plane separation in the tree
    3724 - improved cut selection and management
    3725 - improved cut post-processing: apply coefficient tightening, enforce maximal dynamism
    3726
    3727- Heuristics:
    3728 - improved selection of rows in CMIR aggregation heuristic
    3729 - generate lifted flowcover cuts in CMIR cut generation heuristic
    3730 - faster implementation of CMIR cut generation heuristic
    3731 - use LP solution polishing during probing and diving mode to activate it during many primal heuristics; remains disabled
    3732 during strong branching and OBBT
    3733 - improved versions of the clique and variable bound pre-root heuristics that are often able to fix many more variables
    3734
    3735Interface changes
    3736-----------------
    3737
    3738### New and changed callbacks
    3739
    3740- New types:
    3741 - added new abstract selection algorithm `SCIP_BANDIT` together with callbacks
    3742 - added new types for symmetry handling
    3743
    3744- NLP interface:
    3745 - dropped NLP termination status `SCIP_NLPTERMSTAT_UOBJLIM`
    3746
    3747- NLP callbacks:
    3748 - added parameter `objval` to `SCIP_DECL_NLPIGETSOLUTION` for returning the optimal objective value (can be set to `NULL`)
    3749
    3750- Separation callbacks:
    3751 - added parameter `allowlocal` to `SCIP_DECL_SEPAEXECLP` and `SCIP_DECL_SEPAEXECSOL` to switch generation of locally valid cuts
    3752 - added parameter `dstatssize` to `SCIP_DECL_NLPIDELVARSET` and `SCIP_DECL_NLPIDELCONSSET`
    3753
    3754### Deleted and changed API functions
    3755
    3756- Branching rules:
    3757 - removed parameter `allowaddcons` from SCIPselectVarPseudoStrongBranching(), SCIPselectVarStrongBranching(), and
    3758 SCIPincludeBranchruleRelpscost()
    3759
    3760- Constraint Handlers:
    3761 - generalized SCIPcreateConsOrbitope() and SCIPcreateConsBasicOrbitope() method to three orbitope types (full, partitioning, packing)
    3762
    3763- Cutting plane separation methods:
    3764 - changed function signature of SCIPcalcMIR()
    3765 - changed function signature of SCIPcalcStrongCG()
    3766 - new method SCIPaddRow() to replace deprecated SCIPaddCut()
    3767 - removed parameter `scaling` from SCIPgetRowprepViolation()
    3768 - added parameter `allowlocal` to SCIPseparateSol()
    3769
    3770- LP interface:
    3771 - replaced LP parameters `SCIP_LPPARAM_LOBJLIM` and `SCIP_LPPARAM_UOBJLIM` by `SCIP_LPPARAM_OBJLIM`
    3772
    3773- NLP interface:
    3774 - SCIPnlpStatisticsCreate() and SCIPnlpStatisticsFree() now require a pointer to blockmemory as parameter
    3775 - added parameter `objval` to SCIPnlpiGetSolution() of NLPIs for returning the optimal objective value (can be set to `NULL`)
    3776 - added parameter `varnameslength` to SCIPexprParse()
    3777 - added parameter `dstatssize` to SCIPnlpiDelVarSet() and SCIPnlpiDelConsSet()
    3778 - added modifier const to `exprtree` parameter of SCIPnlpiChgExprtree()
    3779
    3780- Primal heuristics:
    3781 - SCIPheurPassIndicator() has a new parameter which allows to pass the objective of the solution
    3782
    3783- Relaxator methods:
    3784 - added parameter `includeslp` to SCIPmarkRelaxSolValid(), SCIPsetRelaxSolVals() and SCIPsetRelaxSolValsSol();
    3785 - removed parameter `includeslp` from SCIPrelaxCreate() and SCIPincludeRelax()
    3786 - removed functions SCIPrelaxIncludesLp() and SCIPrelaxSetIncludesLp()
    3787 - replaced method SCIPgetRelaxFeastolFactor() by SCIPrelaxfeastol() and added SCIPchgRelaxfeastol()
    3788
    3789- Misc:
    3790 - changed return type of SCIPcliqueGetId() from `int` to `unsigned int`
    3791 - removed SCIPvarGetCliqueComponentIdx(); the connectedness information of the clique table is now stored as a
    3792 `SCIP_DISJOINTSET` member of the clique table and cannot be publicly accessed
    3793 - added parameter `copytables` to SCIPcopyPlugins()
    3794 - SCIPsolveParallel() has been deprecated, use the new method SCIPsolveConcurrent() instead
    3795 - allowed SCIPgetNConss() in stage `SCIP_STAGE_INITSOLVE`
    3796
    3797### New API functions
    3798
    3799- SCIPaddRow() to replace deprecated SCIPaddCut()
    3800- methods to display linear constraint classification types; use SCIPclassifyConstraintTypesLinear()
    3801 after reading a problem to classify linear constraint types
    3802- public methods SCIPvariableGraphBreadthFirst() and SCIPvariableGraph{Create,Free}() to
    3803 perform breadth-first search on the variable constraint graph used by the GINS and ALNS heuristics
    3804- SCIPsetProbingLPState() to install given LP state and/or norms at the current probing node
    3805- SCIPbranchcandGetLPMaxPrio() and SCIPbranchcandGetExternMaxPrio() to query the maximal branching priority of given
    3806 branching candidates; also added SCIPbranchcandGetNPrioLPCands() to access the number of LP candidates with this priority.
    3807- SCIPupdateSolIntegralityViolation(), SCIPupdateSolBoundViolation(), SCIPupdateSolLPRowViolation(),
    3808 SCIPupdateSolConsViolation() and SCIPupdateSolLPConsViolation() for updating numerical solution violations, as well as
    3809 SCIPactivateSolViolationUpdates() and SCIPdeactivateSolViolationUpdates() for activating/deactivating violation updates globally
    3810- SCIPsetSubscipDepth() to set the depth of SCIP as a copied subproblem during problem stage
    3811- SCIPdivesetGetNSols() to query the number of found solutions from a diveset.
    3812- SCIPnextafter() that wraps different nextafter methods to return the next representable value after a given value
    3813- SCIPlinConsStats{Create,Free,GetTypeCount,GetSum}() and SCIPprintLinConsStats() to work with linear constraint classification through the C API
    3814- SCIPgetRowNumIntCols() that returns the number of integer columns in a row
    3815- SCIPsetSlackVarUb() to control upper bound of slack variable in cons_indicator
    3816
    3817- Data structures:
    3818 - methods SCIPrandomCreate() and SCIPrandomFree() are no longer public and should be replaced by SCIPcreateRandom() and
    3819 SCIPfreeRandom(), respectively (the new methods respect the global parameter `randomization/randomseedshift` automatically)
    3820 - methods SCIPdigraphCreate() and SCIPdigraphCopy() are no longer public and should be replaced by SCIPcreateDigraph() and
    3821 SCIPcopyDigraph(), respectively, which receive a SCIP argument and are more robust towards future interface changes
    3822
    3823- Bilinear:
    3824 - SCIPgetAllBilinearTermsQuadratic() to access data of all existing bilinear terms in quadratic constraints
    3825 - SCIPaddBilinearIneqQuadratic() to propose an inequality with two variables that appear in a bilinear term
    3826 - SCIPcomputeBilinEnvelope{1,2}() to compute a linearization of a bilinear term when considering at most two linear inequalities
    3827
    3828- Clique:
    3829 - SCIPcliqueGetIndex() which returns the unique identifier for the given clique
    3830 - SCIPgetNCliquesCreated() which returns the number of cliques created so far
    3831
    3832- Cutting plane separation methods:
    3833 - SCIPisCutNew() that returns whether a cut is already present in the global cut pool
    3834 - SCIPgetSepaMinEfficacy() to access separating/minefficacy(root)
    3835
    3836- Interfaces:
    3837 - interface methods to create and use bandit algorithms implemented as SCIP core plugins
    3838 - interface methods for aggregating rows and computating MIP cuts, see cuts.h
    3839 - interface method SCIPsetRandomSeed() to (re)set a random number generator seed
    3840
    3841### Command line interface
    3842
    3843- new interactive shell functionality to display linear constraint classification types;
    3844 use `display linclass` after reading a problem to classify linear constraint types
    3845- new command line parameter `-r` to pass a nonnegative integer as random seed.
    3846
    3847### Interfaces to external software
    3848
    3849- added interface to the NLP solver WORHP
    3850- added interface to the NLP solver FilterSQP
    3851- added interface to graph automorphism algorithms in `src/symmetry/` (initially only to BLISS)
    3852- unify handling of objective limit in LPIs by replacing LPI parameters `SCIP_LPPAR_LOBJLIM` and `SCIP_LPPAR_UOBJLIM` by
    3853 `SCIP_LPPAR_OBJLIM`
    3854- dropped support for MOSEK < 7.0.0.0
    3855
    3856### Changed parameters
    3857
    3858- changed and removed several parameters for zerohalf separator
    3859- replaced `constraints/quadratic/disaggregate` by `constraints/quadratic/maxdisaggrsize` to bound
    3860 the total number of created constraints when disaggregating a quadratic constraint
    3861- new value 3 for parameter `lp/solutionpolishing` to enable LP polishing only during probing and diving mode
    3862- parameter `conflict/useboundlp` has new values `d` (only dual solution analysis) and `b` (both, conflict and dual solution analysis)
    3863
    3864- Heuristics:
    3865 - fixed typo `heuristics/completesol/maxunkownrate` has changed to `heuristics/completesol/maxunknownrate`
    3866 - replaced parameter `heuristics/{clique,vbounds}/minfixingrate` by `heuristics/{clique,vbounds}/minintfixingrate` and
    3867 `heuristics/{clique,vbounds}/minmipfixingrate`, which check the fixing rate before LP solving and after sub-MIP presolve
    3868
    3869- Separating:
    3870 - parameter `separating/maxstallrounds` only applies to nodes in the tree (not the root node, anymore); use the new
    3871 parameter `separating/maxstallroundsroot` for the root node
    3872 - moved parameters for flowcover and cmir separators to `separating/aggregation`
    3873
    3874- Removed parameters:
    3875 - `constraints/{abspower,bivariate,nonlinear,quadratic,soc}/scaling`
    3876 - `constraints/{abspower,bivariate,quadratic,nonlinear}/mincutefficacysepa`
    3877 - `constraints/{abspower,bivariate,quadratic,nonlinear}/mincutefficacyenfofac`
    3878 - `constraints/soc/minefficacy`
    3879 - `conflict/usemir`
    3880 - `conflict/prefermir`
    3881 - `heuristics/clique/{multiplier,initseed}`
    3882 - `separating/feastolfac`
    3883 - `separating/orthofac`
    3884 - `separating/cgmip/allowlocal` (use parameter passed to separation callback instead)
    3885 - `separating/{gomory,strongcg}/maxweightrange`
    3886
    3887### New parameters
    3888
    3889- `conflict/prefinfproof` (prefer infeasibility proof to boundexceeding proof)
    3890- `conflict/sepaaltproofs`
    3891- `constraints/indicator/maxsepanonviolated` to stop separation after separation of non violated cuts
    3892- `constraints/orbisack/coverseparation` (whether orbisack cover inequalities should be separated)
    3893- `constraints/orbisack/orbiSeparation` (whether facet defining inequalities for orbisack should be separated)
    3894- `constraints/orbisack/coeffbound` (maximal value of coefficients in orbisack facet inequalities)
    3895- `constraints/orbisack/checkpporbisack` (check whether orbisacks can be strengthened by packing/partitioning constraints)
    3896- `constraints/orbisack/checkalwaysfeas` (whether conscheck returns always `SCIP_FEASIBLE`)
    3897- `constraints/orbitope/checkpporbitope` (check packing/partitioning orbitopes)
    3898- `constraints/orbitope/sepafullorbitope` (separate full orbitopes)
    3899- `constraints/orbitope/checkalwaysfeas` (whether conscheck returns always `SCIP_FEASIBLE`)
    3900- `constraints/quadratic/{usebilinineqbranch,minscorebilinterms,bilinineqmaxseparounds}`
    3901- `constraints/quadratic/disaggrmergemethod` to change the strategy of how to merge independent blocks of quadratic constraints
    3902- `constraints/quadratic/mincurvcollectbilinterms` to change the minimal curvature of constraints
    3903 to be considered when returning bilinear terms to other plugins
    3904- `constraints/quadratic/binreformbinaryonly` to disable reformulation of products of binary and non-binary variables
    3905- `constraints/symresack/ppsymresack` (check whether symresacks can be strengthend by packing/partitining constraints)
    3906- `constraints/symresack/checkalwaysfeas` (whether conscheck returns always `SCIP_FEASIBLE`)
    3907- `expbackoff` to all separators which increases the frequency exponentially over the depth in the tree
    3908- `heuristics/completesol/{beforepresol,maxlpiter,maxcontvars}`
    3909- `heuristics/{clique,vbounds}/maxbacktracks` to limit the number of backtracks in the fix-and-propagate phase
    3910- `heuristics/{clique,vbounds}/uselockfixings` to enable fixing of additional variables based on variable locks
    3911- `heuristics/vbounds/{feasvariant,tightenvariant}` to specify the fixing variants used by the vbounds heuristic
    3912- `lp/refactorinterval` to change the refactorization interval of the LP solver
    3913- `misc/debugsol` to specify a debug solution that should be checked during the solve
    3914- `misc/usesymmetry` to determine whether symmetry handling should be used
    3915- `presolving/symbreak/conssaddlp` (whether symmetry handling inequalities should be added to the LP)
    3916- `presolving/symbreak/addsymresacks` (whether symresacks should be used to handle symmetries)
    3917- `presolving/symbreak/computeorbits` (whether symmetry orbits should be computed)
    3918- `presolving/symbreak/detectorbitopes` (whether it should be checked if some symmetries can be handled by orbitopes)
    3919- `presolving/symmetry/computepresolved` (Whether symmetries are computed after presolving)
    3920- `presolving/symmetry/maxgenerators` (maximal number of generators generated by symmetry detection)
    3921- `presolving/symmetry/checksymmetries` (whether validity of computed symmetries should be verified)
    3922- `propagating/obbt/{itlimitfactorbilin,minnonconvexity,createbilinineqs}`
    3923- `propagating/vbounds/minnewcliques` to specify the minimum number of new cliques to trigger another clique table analysis
    3924- `propagating/vbounds/{maxcliquesmedium,maxcliquesexhaustive}` to limit the number of cliques relative to the
    3925 number of binary variable for performing clique table analysis
    3926- `separating/maxincrounds`
    3927- `separating/maxlocalbounddist`, `separating/maxcoefratio` and `separating/intsupportfac`
    3928- if PaPILO >= 2.1: `presolving/milp/maxbadgesizepar` to limit the maximal badge size if PaPILO is called in parallel mode
    3929- if PaPILO >= 2.1: `presolving/milp/maxbadgesizeseq` to limit the maximal badge size if PaPILO is called in sequential mode
    3930
    3931### Data structures
    3932
    3933- new type `SCIP_Shortbool` (equal to uint8_t) for storing Boolean values in a more compact manner
    3934- new disjoint set data structure `SCIP_DISJOINTSET` to incrementally update connectedness information for a graph on nodes {0,...,n-1}
    3935- new red black tree data structure defined in `src/scip/rbtree.{c,h}`
    3936- new object `SCIP_LINCONSSTATS`, see type_cons.h, to work with linear constraint classification through the C API
    3937- added new type `SCIP_TABLE` together with callbacks to output SCIP statistics
    3938
    3939Unit tests
    3940----------
    3941
    3942- added several tests for the LP interface
    3943- added tests that cover nonempty linear constraint classification types
    3944- added tests for the double double arithmetic, the new red black tree data structure, the nlpi, obbt, interval arithmetics,
    3945 symmetry computation, objective function changes in probing, computing envelopes of bilinear function, relaxation enforcement
    3946
    3947Build system
    3948------------
    3949
    3950- added interface to the NLP solver WORHP; set `WORHP=true` in order to link to WORHP
    3951- added interface to the NLP solver FilterSQP; set `FILTERSQP=true` in order to link to FilterSQP
    3952
    3953### Cmake
    3954
    3955- added support for sanitizers in debug mode and options SANITIZE_ADDRESS, SANITIZE_MEMORY, SANITIZE_UNDEFINED, SANITIZE_THREAD
    3956- added option SYM to specify which graph automorphism package (bliss, none) should be used, if available
    3957- disable non-standard compliant floating point optimizations in combination with intel compilers
    3958- improve Visual Studio compilation
    3959- only accept IPOPT version 3.12.0 or higher
    3960- preserve correct rpath in library (e.g. path to libipopt) when installing
    3961
    3962### Makefile
    3963
    3964- new flag `DEBUGSOL={true,false}` to enable checks against a user given debug solution
    3965- added flag SYM to specify which graph automorphism package (bliss, none) should be used
    3966- default value for ZIMPL in the Makefile is now `false`
    3967
    3968Fixed bugs
    3969----------
    3970
    3971- fix wrong statistic display of diving leaf solutions
    3972- fixed order of SCIPcalcCliquePartition() in corner case where no cliques are available
    3973- fix treatment of infinite lower bound in proximity objective cutoff
    3974- fixed minor issue in expression graph simplification
    3975
    3976- Separator:
    3977 - fix linear knapsack relaxation during separation if a binary variable does not have a solution value in [0,1].
    3978 - fixed potential ressource leaks in SCIPsolveLinearProb(), expr.c, sepa_eccuts, cons_cumulative.c, cons_nonlinear.c
    3979 - fixed bug in cons_orbitope.c, where wrong terminating index in separation of SCIs was used
    3980 - fixed wrong mapping of permuted basis indices in gomory separator
    3981 - fixed integer objective separator for objective scales < 1
    3982
    3983- Presolver:
    3984 - fixed numerical issues in boundshift presolver when aggregating integer variables
    3985 - fixed aggregation of variables in boundshift presolver that contain large variable bounds
    3986
    3987- Heuristic:
    3988 - fixed bug in feasibility pump heuristic when switching on the `usefp20` parameter
    3989 - fixed handling of LOOSE variables in locks heuristic
    3990 - fixed creation of conflicts in clique heuristic for incomplete LPs
    3991
    3992- Constraints:
    3993 - fixed bug in mps reader. Reader now prints `OBJSENSE` section and tries to generate unique names of constraints
    3994 - fixed upgrade to a varbound constraint if abspower constraint contains a multi-aggregated variable
    3995 - fixed several bugs related to hashing of constraints/rows in cutpool.c and cons_linear.c
    3996 - fixed registration of almost fixed nonlinear variables in abspower constraints
    3997
    3998- Propagator:
    3999 - fixed releasing of variables in the genvbounds propagator in case the problem could be solved during presolving of a restart
    4000 - fixed numerical issues in bound widening of variable bound constraint handler and vbound propagator during conflict analysis
    4001
    4002@page RN4 Release notes for SCIP 4
    4003
    4004@section RN401 SCIP 4.0.1
    4005*************************
    4006
    4007Features
    4008--------
    4009
    4010- added parsing functionality to cardinality constraint handler for CIP format
    4011- allow to relax objective limit in reoptimization in presolved stage
    4012- suppress excessive printing about numerical troubles in LP on default verblevel (high)
    4013
    4014Performance improvements
    4015------------------------
    4016
    4017- only accept passed improving solutions in heur_indicator
    4018- add and use RESTRICT macro for some pointers
    4019- sorting of parents and children for some expression types is now independent of memory layout
    4020
    4021- Constraints:
    4022 - widened a bottleneck in simplifying long signomial sums in a nonlinear constraint
    4023 - unified and extended code that improves numerics of cuts generated by nonlinear constraint handlers
    4024
    4025- Separation:
    4026 - stop separation in cons_indicator after maxsepanonviolated many non violated separated cuts
    4027 - improve choice of variable to enter support in separation of cons_indicator
    4028
    4029Interface changes
    4030-----------------
    4031
    4032### New API functions
    4033
    4034- SCIPvalidateSolve() to compare solving result with an external primal and dual reference value
    4035- SCIPisObjChangedProbing() to check whether the objective function has changed during probing mode
    4036- SCIPgetDualSolVal() to get the dual solution value of a constraint
    4037- SCIPisLPPrimalReliable() and SCIPisLPDualReliable() to check whether the current primal / dual LP solution
    4038 were successfully checked for feasibility
    4039
    4040### Command line interface
    4041
    4042- New option in the interactive shell to validate the solution against an external primal and dual reference value
    4043- added command line option `-o` and command `validatesolve` in interactive shell
    4044 to validate the solution against an external primal and dual reference value.
    4045
    4046### Interfaces to external software
    4047
    4048- Updated and new interfaces to Mosek 8.1, GAMS and Gurobi
    4049- new LP interface to Glop (Google OR tools); CMake only
    4050
    4051### Changed parameters
    4052
    4053- renamed parameter `heuristics/completesol/maxunkownrate` to `heuristics/completesol/maxunknownrate`
    4054
    4055Testing
    4056-------
    4057
    4058- add options to make test target (see Makefile section)
    4059
    4060Build system
    4061------------
    4062
    4063### Cmake
    4064
    4065- New CMake build system alongside the usual Makefile setup
    4066
    4067### Makefile
    4068
    4069- added make options for specifying EXECUTABLE and OUTPUTDIR variables for the make test target
    4070
    4071Fixed bugs
    4072----------
    4073
    4074- fixed unintended behavior of interrupt signal handler inside SCIP copies
    4075- fixed uninitialized values in SCIP's digraph data structure after calling SCIPdigraphResize()
    4076- fixed issue related to SCIPcreateFiniteSolCopy() not being able to remove all infinite fixings
    4077- fixed issue in SCIPcopyLimits() w.r.t. soft time limit
    4078- fixed bug in dynamic resizing of hashtables and hashmaps
    4079- added workaround for bug in primal simplex of cplex 12.7.1.0 occuring when attempting to solve LPs without rows without presolving
    4080- fixed bug in binpacking example that might have led to doing the same branching several times
    4081- fixed memory issue in binpacking example
    4082- in GAMS writer, forbid also various parenthesis characters in gams symbol names
    4083- added missing definition of `SCIP_UNUSED` in memory.h if def.h is not included
    4084- treat reopt bugs: Avoid numerical problems with changing objective; fix check for changed objective
    4085- fixed reading issue in mps reader: integer variables fixed to 0 or 1 are treated as binaries now,
    4086 allowing to use them as indicator variables
    4087- afternode heuristics are now called even if the node limit was reached and the solving process will be stopped
    4088 after the current node
    4089- fixed bug when activating probing mode with a non-empty separation storage
    4090
    4091- LP interfaces:
    4092 - fixed guard against using old Gurobi versions in lpi_grb.c: Gurobi 7.5 was not permitted
    4093 - fixed wrong handling of unboundedness status in lpi_grb.c
    4094 - fixed wrong handling of row basis status in lpi_grb.c
    4095
    4096- Propagator:
    4097 - fixed bug in shift and propagate--variable information with a negation transformation is correctly reset after backtracking
    4098 - fixed bug in genvbounds propagator when applying a restart after the root node
    4099
    4100- Constraints:
    4101 - fixed bug in varbound coefficient tightening: if a varbound constraint only contained one variable afterwards,
    4102 it may have been deleted without applying the induced bound, if the change was too small, this is now forced
    4103 - fixed potential wrong locks update after a varbound constraint became redundant in coefficient tightening
    4104 - fixed potentially wrong cleanup of fixed variables in nonlinear constraint handler
    4105 - fixed memory leak in OSiL reader when using SOS constraints
    4106
    4107- Solution:
    4108 - improved handling of infinite values in a primal solution in quadratic and nonlinear constraints
    4109 - fixed bug in computing violation and cut for certain nonlinear constraints when LP solution is slightly out of bounds
    4110 - fixed debug solution check that appeared in probing mode when the objective function has changed
    4111 - relaxed a too strong assert concerning solutions close to the objective limit
    4112
    4113@section RN400 SCIP 4.0.0
    4114*************************
    4115
    4116Features
    4117--------
    4118
    4119- Introduced support for partial or infeasible user solutions, which SCIP tries to complete/repair heuristically
    4120- implemented linear time methods for (weighted) median selection for joint arrays of various types
    4121- added adaptive solving behavior of SCIP based on solving phases and heuristic transitions, if enabled via `solvingphases/enabled`
    4122- can now solve relaxations within probing
    4123- in case of multiple relaxators the best solution is saved instead of the last one
    4124- added write callback for reader_bnd
    4125- added possibility to use a reference value for advanced analysis of the tree search. If a finite reference value
    4126 (an objective value in original objective space) is passed via misc/referencevalue, SCIP keeps track of the
    4127 number of nodes exceeding the reference value and the number of early backtracks -- path switches in the tree when
    4128 a child node with lower bound smaller than the reference value was available.
    4129- added reading capabilities for partial solutions with extension *.mst
    4130- new global shift off all random seeds (randomization/randomseedshift) and unification of all existing random seeds
    4131- use new macros SCIPdebugMsg(), SCIPsetDebugMsg(), SCIPstatDebugMsg() at all places where it makes sense
    4132- new random number generator in pub_misc.h
    4133- add check whether variables have been released when freeing SCIP
    4134- a print callback can now be specified for user expressions
    4135
    4136- LP Solutions:
    4137 - will now enforce relaxation solution instead of lp or pseudosolution if lowerbound is better and the whole lp is included in the relaxation
    4138 - new feature solution polishing to improve integrality of LP solutions
    4139
    4140- Constraints:
    4141 - new constraint handler for cardinality constraints
    4142 - added interval-evaluation of sine and cosine
    4143 - allow to create constraints of constraint handlers that don't need constraints
    4144 - New constraint handlers cardinality and components
    4145
    4146- Conflicts:
    4147 - implement a storage for conflicts to have more control over active conflicts
    4148 - Improved conflict analysis through central conflict pool and dual ray analysis for primal infeasible LPs; can now analyze dual
    4149 unbounded rays of primal infeasible LPs
    4150
    4151- Presolving:
    4152 - New presolvers that disaggregate SOC constraints and reformulate QP's by adding KKT conditions
    4153 - new presolving step for variables contained in a single quadratic constraint with proper square coefficients
    4154 - add new presolving step to disaggregate second order cone constraints
    4155 - new presolving method presol_qpkktref to add the KKT conditions of a QP
    4156 - implemented and extended stuffing presolving in linear constraint handler
    4157 - new components constraint handler which replaces the components presolver; it searches for independent subproblems
    4158 and solves small ones as sub-SCIPs during presolve, larger ones are solved alternatingly during the main solving process
    4159 - new presolving timing FINAL: presolving methods with this timing are only called once after all other presolvers with timings
    4160 FAST, MEDIUM and EXHAUSTIVE are finished; during this timing only reductions are allowed that are self-contained, e.g.,
    4161 fixing all variables and deleting all constraints of an independent component; note that reductions found in this timing
    4162 do not trigger a new presolving round
    4163
    4164- Separation and Cuts:
    4165 - can now separate perspective cuts for indicator constraints
    4166 - add sepa_convexproj, a separator which projects onto convex relaxation and build gradient cuts at the projection
    4167 - add sepa_gauge, a separator which computes an interior point of a convex relaxation and performs a binary search in the segment joining
    4168 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
    4169 - changed handling of coupling constraints in cons_indicator; the cuts will not be added to the pool, but are separated by default
    4170 - concurrent solving mode that allows to run multiple SCIP instances, that share solutions and global variable bounds, in parallel
    4171 - Revised pseudo random number generation and introduced central random seed for all plugins
    4172
    4173- Heuristics:
    4174 - new Graph induced neighborhood search (GINS) primal heuristic that uses neighborhoods
    4175 based on distances in the variable constraint connectivity graph.
    4176 In addition, the heuristic supports a rolling horizon-like procedure to solve auxiliary problems
    4177 for neighborhoods with increasing distance from the starting neighborhood.
    4178 - new primal heuristic LP face that tries to find an integer solution inside the optimal LP face.
    4179 - new heuristic that tries to complete partial solutions
    4180 - the subnlp heuristic now gives ownership of a found solution to the heuristic that constructed the starting point, if any;
    4181 as a consequence, MIP heuristics may now be shown more frequently for having found a solution when solving MINLPs, even
    4182 though the solutions required an additional NLP solve
    4183 - new multistart heuristic for NLPs
    4184
    4185- Propagator:
    4186 - add prop_nlobbt, a nonlinear optimization-based bound propagator solving two convex NLP relaxations for each variable
    4187 - nodes can now be postponed; currently, this can only be triggered by BEFORELP propagation callbacks
    4188
    4189- Statistic:
    4190 + Extended statistic output displayable via the interactive shell
    4191 + new statistic computed: `Root LP Estimate` that shows the root LP best-estimate with every pseudo-cost update
    4192 + added leaf statistics about LP objective limit|feasible|infeasible leaves to the statistics output and
    4193 to the callable library: SCIPgetNObjlimLeaves(), SCIPgetNFeasibleLeaves(), SCIPgetNInfeasibleLeaves()
    4194 + next to the number of found solution, also the number of new best solutions is now printed for each heuristic
    4195 (and relaxation solutions) in the statistics in the `Primal Heuristic` section.
    4196
    4197Performance improvements
    4198------------------------
    4199
    4200- Extended the presolving timings by an additional timing FINAL for self-contained reductions
    4201- Randomized tie-breaking in different parts of the code to reduce performance variability
    4202- use connectedness information of the clique table to speed up the clique partitioning algorithm
    4203- knapsack approximation algorithms use linear-time weighted median selection instead of sorting
    4204- improved greedy solution in SCIPsolveKnapsackApproximatelyLT() for the flow cover separation
    4205- reduce performance variability by using random numbers as tie-breaker for external branching candidates
    4206
    4207- Heuristics:
    4208 - adjusted most Large Neighborhood Search heuristics such that they collect their variable fixings first in an array,
    4209 and only create and populate a sub-SCIP if enough variables will be fixed.
    4210 - reduce performance variability by using a small perturbation in the undercover heuristic
    4211 - 1-opt heuristic can now be repeatedly executed as long as new incumbents are found
    4212
    4213- Constraints:
    4214 - Improved and extended stuffing inside of linear constraint handler
    4215 - Changed handling of coupling constraints in cons_indicator
    4216 - SCIP supports constraint compression for problem copies; constraint compression denotes the immediate
    4217 removal of fixed variables from constraint data at creation time to reduce memory requirements.
    4218
    4219- Propagation:
    4220 - rewrote the propagate-and-cut-and-price loop so that successful propagations with DURINGLPLOOP timing, bound changes found by separation,
    4221 and new primal solutions now trigger a new round of node solving, starting with propagation; improved tuning of propagation and heuristic timings
    4222 - tuned propagation methods of several constraint handlers
    4223 - make more use of SCIPmarkConsPropagate() to mark constraints for propagation and improved the internal handling of marked constraints
    4224 - improve propagation of absolute-value expression in the case that the sign of the argument is fixed
    4225
    4226Interface changes
    4227-----------------
    4228
    4229### New and changed callbacks
    4230
    4231- Concurrent SCIP:
    4232 - extended interface to support concurrent solving mode
    4233
    4234- Constraint Handlers:
    4235 - new optional callback `CONSENFORELAX` to enforce a relaxation solution, see \ref CONS
    4236 - `CONSINITLP` callback now has a new parameter `infeasible`, which is a pointer to store whether infeasibility
    4237 was detected while building the initial LP relaxation
    4238
    4239### Deleted and changed API functions
    4240
    4241- setting a parameter to a non-valid value now produces an error message instead of a warning
    4242- bound reader uses angle bracket around variable names
    4243- the parameters of SCIPlpiChgObj(), SCIPlpiSetBase(), SCIPlpiSetState(), SCIPlpiSetNorms() have been declared as const
    4244- SCIPapplyHeurSubNlp() can now return the solution found by the sub-NLP heuristic
    4245
    4246- Random:
    4247 - methods SCIPrandomGetInt() substitutes SCIPgetRandomInt() (marked to be deprecated)
    4248 - methods SCIPrandomGetReal() substitutes SCIPgetRandomReal() (marked to be deprecated)
    4249 - methods SCIPrandomPermuteArray() substitutes SCIPpermuteRandomArray() (marked to be deprecated)
    4250 - methods SCIPrandomPermuteIntArray() substitutes SCIPpermuteRandomIntArray() (marked to be deprecated)
    4251 - method SCIPrandomGetSubset() substitutes SCIPgetRandomSubset() (marked to be deprecated)
    4252
    4253- Conflict Analysis:
    4254 - added parameters `conftype` and `iscutoffinvolved` to SCIPinitConflictAnalysis()
    4255 that indicate the type of the conflict and whether the current cutoff bound is used or not
    4256
    4257- Constraint Handlers:
    4258 - added parameter `infeasible` to SCIPinitlpCons()
    4259
    4260- Copying:
    4261 - added parameters `fixedvars`, `fixedvals`, `nfixedvars` to SCIPcopyVars()
    4262 - added parameters `fixedvars`, `fixedvals`, `nfixedvars` to SCIPcopyOrigVars()
    4263 - renamed parameter `success` to `valid` in SCIPgetConsCopy()
    4264
    4265- Hashmap and Hashtable:
    4266 - removed function SCIPcalcHashtableSize() since not required anymore for `SCIP_HASHTABLE` and `SCIP_HASHMAP`
    4267 - based on the initial size `SCIP_HASHTABLE` and `SCIP_HASHMAP` choose an appropriate size internally to allow insertion of that
    4268 many elements without resizing
    4269 - `SCIP_MULTIHASH` behaves like the old `SCIP_HASHTABLE` and SCIPcalcMultihashSize() should be used as replacement for
    4270 SCIPcalcHashtableSize()
    4271
    4272- Nonlinear Relaxation:
    4273 - added parameter `curvature` to SCIPcreateNlRow()
    4274
    4275- Parameters:
    4276 - the following new methods return a bool indicating whether the given value is valid for the parameter instead of printing a warning
    4277 message and returning an error code if the value is invalid
    4278 - renamed method SCIPcheckBoolParam() to SCIPisBoolParamValid()
    4279 - renamed method SCIPcheckLongintParam() to SCIPisLongintParamValid()
    4280 - renamed method SCIPcheckCharParam() to SCIPisCharParamValid()
    4281 - renamed method SCIPcheckStringParam() to SCIPisStringParamValid()
    4282 - renamed method SCIPcheckRealParam() to SCIPisRealParamValid()
    4283 - 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
    4284 and returning an error code if the value is invalid
    4285 - rename SCIPparamCheckBool() to SCIPparamIsValidBool()
    4286 - rename SCIPparamCheckString() to SCIPparamIsValidString()
    4287 - rename SCIPparamCheckChar() to SCIPparamIsValidChar()
    4288 - rename SCIPparamCheckLongint() to SCIPparamIsValidLongint()
    4289
    4290- Primal Heuristics:
    4291 - added parameter `initialseed` to SCIPcreateDiveset()
    4292 - introduced new type `SCIP_HEURTIMING` for primal heuristic timing masks
    4293 - changed type of parameter `timingmask` from unsigned int to `SCIP_HEURTIMING` in SCIPincludeHeur(), SCIPincludeHeurBasic()
    4294
    4295- Relaxators:
    4296 - new parameter `includeslp` for SCIPincludeRelax() and SCIPincludeRelaxBasic()
    4297 to indicate whether relaxation includes all linear rows and can be enforced
    4298
    4299- Reoptimization:
    4300 - rename method SCIPgetReopSolsRun() to SCIPgetReoptSolsRun()
    4301
    4302- Solutions:
    4303 - added parameter `completely` to SCIPtrySol(), SCIPtrySolFree(), SCIPcheckSol() to check all constraints when
    4304 printing violations
    4305
    4306- Variables:
    4307 - removed SCIPvarGetLbAtIndex() and added SCIPgetVarLbAtIndex()
    4308 - removed SCIPvarGetUbAtIndex() and added SCIPgetVarUbAtIndex()
    4309 - removed SCIPVarGetBdAtIndex() and added SCIPgetVarBdAtIndex()
    4310 - removed SCIPvarWasFixedAtIndex() and added SCIPgetVarWasFixedAtIndex()
    4311 - Removed method SCIPvarGetNBinImpls()
    4312
    4313### New API functions
    4314
    4315- added functions for concurrent solving mode (see concurrent.h, concsolver.h)
    4316- SCIPcreateNlpiProb(), SCIPupdateNlpiProb() and SCIPaddNlpiProbRows() to create and update a nonlinear relaxation
    4317- SCIPgetNObjlimLeaves(), SCIPgetNFeasibleLeaves(), SCIPgetNInfeasibleLeaves() for statistics output
    4318 about LP objective leaves
    4319- SCIPcheckCopyLimits() which can be used to check that enough time and memory is left to run a sub-SCIP after
    4320 subtracting time and memory used by the main-SCIP and SCIPcopyLimits() which copies these limits accordingly and disables
    4321 all other limits (need to be set by the plugin, if needed)
    4322- SCIPcopyLargeNeighborhoodSearch() in heuristics.h that supports compressed copying and two kinds of problem copy: the MIP-relaxation or
    4323 a 1-1 problem copy (by copying the constraints and not the LP relaxation)
    4324- SCIPsolveProbingRelax() to solve a relaxation within probing
    4325- SCIPgetLastStrongbranchingLPSolstat() to query the LP statuses after strong branching on a variable
    4326- SCIPinitializeRandomSeed()
    4327- SCIPswapReals() to swap two real values
    4328- SCIPgetNNZs() to get the number of active non-zeros in the transformed/presolved problem
    4329
    4330- Debug Messages:
    4331 - SCIPprintDebugMessage(), SCIPsetPrintDebugMessage(), SCIPstatPrintDebugMessage() that output debug messages and also print the
    4332 subscip depth; the first two output via the message handler; also added macros SCIPdebugMsg(), SCIPsetDebugMsg(), SCIPstatDebugMsg()
    4333 - SCIPdebugMsgPrint()/SCIPsetDebugMsgPrint() that output a message without `[debug]` prefix via the message handler (compare SCIPdebugPrintf())
    4334
    4335- Solution:
    4336 - SCIPisDualSolAvailable() to query the dual solution availability
    4337 - SCIPlpiSetIntegralityInformation() to improve SoPlex' solution polishing
    4338
    4339- Constraints:
    4340 - library methods SCIPcopyConsCompression(), SCIPcopyOrigConsCompression() that accept an array of variables that are immediately
    4341 fixed in the copy. Alternatively, local instead of global bounds can be used for compression.
    4342 - library methods SCIPenableConsCompression(), SCIPisConsCompressionEnabled(), SCIPcopyConsCompression(), SCIPcopyOrigConsCompression()
    4343 - SCIPgetIntVarXor() to access integer variable of XOR constraints
    4344 - SCIPcreateConsCardinality() to create a cardinality constraint
    4345 - SCIPcreateConsBasicCardinality() to create a basic cardinality constraint
    4346 - SCIPchgCardvalCardinality() to changes cardinality value of cardinality constraint (i.e., right hand side of cardinality constraint)
    4347 - SCIPaddVarCardinality() to add a variable to a cardinality constraint
    4348 - SCIPappendVarCardinality() to append a variable to a cardinality constraint
    4349 - SCIPgetNVarsCardinality() to get the number of variables in a cardinality constraint
    4350 - SCIPgetVarsCardinality() to get the array of variables in a cardinality constraint
    4351 - SCIPgetCardvalCardinality() to get the cardinality value of a cardinality constraint (i.e., right hand side of cardinality constraint)
    4352 - SCIPgetWeightsCardinality() to get the array of weights of a cardinality constraint
    4353 - SCIPgetLinvarMay{Decrease,Increase}Quadratic() to get index of a variable in linear term of quadratic constraint that may be decreased
    4354 without making any other constraint infeasible
    4355
    4356- Parameters:
    4357 - add SCIPparamIsValidInt() and SCIPparamIsValidReal() to param.c/h
    4358 - add missing functions SCIPisIntParamValid() and SCIPisRealParamValid() to scip.c/h
    4359
    4360### Command line interface
    4361
    4362- new command line parameter `-v` to print detailed build options
    4363
    4364### Interfaces to external software
    4365
    4366- Interfaces for Python and Java are, among others, now available via http://www.github.com/scip-interfaces
    4367- Revised documentation of the SCIP C-API to group methods more comprehensively by topics
    4368- dropped support for Ipopt < 3.11
    4369- Additional I/O-functionalities for debugging and logging in SCIP and in the AMPL interface
    4370- updated CppAD to 20160000
    4371- for users of the ampl interface, the display/logfile option has been added to set the name of a
    4372 file to write the SCIP log to (additionally to stdout)
    4373
    4374- LP Interfaces:
    4375 - SCIP uses the lpi_spx2 interface by default
    4376 - Improved Gurobi interface that can handle ranged rows (requires Gurobi >= 7.0.2)
    4377 - the CPLEX LPI now also compiles with CPLEX 12.7.0.0
    4378
    4379### Changed parameters
    4380
    4381- 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
    4382- changed value of parameter `separating/clique/cliquedensity` to 0.0 such that the separator always constructs a dense clique table
    4383 which proved to be faster on the benchmarks MMM and stableset.
    4384- parameters `misc/permutationseed`, `misc/permuteconss` and `misc/permutevars` changed to `randomization/permutationseed`,
    4385 `randomization/permuteconss` and `randomization/permutevars`
    4386- parameters `conflict/useinflp` and `conflict/useboundlp` are now of type char (before bool)
    4387- all parameters of the components presolver (starting with `presolving/components/`) are now parameters of the components
    4388 constraint handler (starting with `constraints/components/`)
    4389
    4390### New parameters
    4391
    4392- class randomization
    4393- `branching/sumadjustweight` to adjust branching scores by adding a sum epsilon in order to keep score differences
    4394 near zero, which are otherwise completely disregarded (they are adjusted to at least sum epsilon)
    4395- `concurrent/∗ ` and `parallel/∗ ` for configuring the concurrent solving mode
    4396- `constraints/cardinality/branchbalanced` to decide whether to use a balanced branching scheme in the enforcing of cardinality
    4397 constraints
    4398- `constraints/cardinality/balanceddepth` to set the maximal depth until balanced branching is turned off
    4399- `constraints/cardinality/balancedcutoff` to determine that balanced branching is only used if the branching cut off value
    4400 w.r.t. the current LP solution is greater than a given value
    4401- `constraints/indicator/sepaperspective` to turn on separation of perspective cuts for indicator constraints
    4402- `constraints/indicator/sepapersplocal` to decide whether local cuts can be used for perspective cuts for indicator constraints
    4403- `constraints/quadratic/projectedcuts` to enable convex quadratics to generate gradients cuts at the
    4404 projection of the point onto the region described by the constraint, which is supporting
    4405- `lp/solutionpolishing` to enable LP polishing only at the root LP or always
    4406- `misc/referencevalue` to pass a reference value for further analysis of the tree search, see also in `features`
    4407- `presolving/qpkktref/addkktbinary` to allow the presence of binary variables for the KKT update
    4408- `presolving/qpkktref/updatequadbounded` to add the KKT conditions to QPs only if all variables are bounded
    4409- `presolving/qpkktref/updatequadindef` to add the KKT conditions to QPs only if the quadratic matrix is indefinite
    4410- `randomization/lpseed` to set the initial seed of the LP solver
    4411- `solvingphases/enabled` to activate adaptive behavior during the solution process; several further parameters
    4412 in the solvingphases-section to control how to switch the parameters and whether a restart should be performed between the phases.
    4413
    4414### Data structures
    4415
    4416- new `SCIP_REGRESSION` data structure in pub_misc.h to incrementally compute a best-fit line through pairs of observations
    4417- add maximum branch-and-bound tree depth constant `SCIP_MAXTREEDEPTH` (replaces SCIPgetDepthLimit() and SCIPtreeGetDepthLimit())
    4418- new files heuristics.c/heuristics.h to collect methods that are frequently used by heuristics
    4419- merged dive.c/pub_dive.h with heuristics.c/heuristics.h, removed dive.c/pub_dive.h
    4420- separated header pub_misc.h from repeated methods for sorting and (weighted) median selection;
    4421 those are also available in separate headers pub_misc_sort.h
    4422 and pub_misc_select.h, but included into pub_misc.h
    4423
    4424Unit tests
    4425----------
    4426
    4427- New unit testing system built on the Criterion framework
    4428
    4429Build system
    4430------------
    4431
    4432### Makefile
    4433
    4434- All makefiles in `examples/` and `applications/` have been updated.
    4435- `make.project` defines a variable `SCIP_VERSION` containing the SCIP version number
    4436- revise sub-makefiles for MSVC on MinGW
    4437- make shared libraries aware of their dependencies
    4438- sub-makefile for CrayXC systems added
    4439
    4440- Places:
    4441 - All objective files are now placed in `obj/static` or `obj/shared`, depending on `SHARED=false` or `SHARED=true`, respectively.
    4442 - All internal and external libraries are placed in `lib/static` and `lib/shared`, the include files are in `lib/include`.
    4443 - The binaries now contain an rpath to the SCIP directory, such that shared libraries are found.
    4444
    4445- Linking:
    4446 - link binary to shared libs when compiling with `SHARED=true`
    4447 - External projects (including make.project) can use the makefile variable LINKCXXSCIPALL or LINKCCSCIPALL to link all SCIP libraries.
    4448 - Building with `SHARED=true` automatically generates the combined library libscipsolver.so for easier linking
    4449
    4450- Targets:
    4451 - Running `make help` lists all makefile options.
    4452 - `make install` copies now all header files
    4453 - new target `dll` to build Windows dlls with MSVC
    4454 - rename `dll` target to `windowslib`
    4455
    4456Fixed bugs
    4457----------
    4458
    4459- fixed bug in event system: bound change events of the new focus node must be processed, even if the bound
    4460 is the same as at the last focus node
    4461- avoid numerically unstable (multi-)aggregations
    4462- fixed bug in XML reader concerning comments
    4463- the AMPL interface now writes a solve status (solve_result_num) into the .sol file
    4464- in the cmpres.awk (allcmpres.sh) output, the counts in the time column are now with respect to the
    4465 whole set of processed instances (as with fail and solv), while before it was with respect to the
    4466 set of instances where no solver failed (eval set); thus, now proc = fail + time + solv.
    4467- writing of solutions or parameters to a file now works also with the message handler set to quiet
    4468- ignore lower and upper bound tightenigs beyond +/-infinity during solving
    4469- time limit of SCIP-infinity is converted to LPI-infinity when setting it
    4470- fix LP activity of a row that has been modified
    4471
    4472- Propagation:
    4473 - fixed possible segmentation fault in genvbounds propagator
    4474 - fixed bug with sorting of propagators in presolving: the order can be changed by calling probing; thus, there is a copy of the
    4475 propagators, which is sorted by presolving priority
    4476 - added missing capturing and releasing mechanism in genvbounds propagator
    4477 - fix wrong propagation of product expressions
    4478
    4479- Constraints:
    4480 - fixed wrong representation of SOC constraints in NLP
    4481 - fixed a few issues within redundant constraint detection of (specialized) linear constraint handlers
    4482 - fixed issue in reader_opb concerning writing of fixed variables contained in no constraints
    4483
    4484- Memory:
    4485 - fixed memory bug in `SCIP_DIGRAPH`
    4486 - improved counting of memory consumption by using more block memory and counting all allocated memory
    4487 - fix memory leaks in TSP example
    4488 - return `SCIP_ERROR` when a memory exception is caught in SoPlex (was `SCIP_LPERROR`)
    4489 - fixed memory leak in OSiL reader
    4490
    4491- Objective:
    4492 - fixed bug while changing the objective value of an original value after transforming the problem
    4493 - fixed bug with solutions from previous runs not satisfying an objective limit
    4494 - SCIPisObjIntegral() now works correctly in `SCIP_STAGE_PROBLEM`
    4495
    4496- Heuristics:
    4497 - fixed two bugs in heur_indicator: use improvesols parameter now and update pointer to indicator constraint handler
    4498 - fix wrong NLP representation of logic-or constraints in the dual value heuristic
    4499 - correct handling of implicit integer variables with fractional solution value in simplerounding heuristic
    4500 - fixed bug in heur_octane with uninitialized ray direction
    4501
    4502@page RN3_2 Release notes for SCIP 3.2
    4503
    4504@section RN321 SCIP 3.2.1
    4505*************************
    4506
    4507Features
    4508--------
    4509
    4510- new `force` parameter in (root)redcost propagator to run the propagator also with active pricers
    4511
    4512Performance improvements
    4513------------------------
    4514
    4515- do not transfer solutions to original space, if SCIP is being freed
    4516- modified implication graph analysis of SOS1 constraint handler; a new component allows to deduce zero fixings of variables
    4517- made SOS1 constraint handler specific diving selection rule faster for the case that the SOS1 constraints do not overlap
    4518- improved disjunctive cuts by the `monoidal cut strengthening` procedure of Balas and Jeroslow
    4519
    4520Examples and applications
    4521-------------------------
    4522
    4523- several improvements of SCIP-Jack (STP application): extended presolving for STP variants, STP-specific branching
    4524 rule, dual heuristic to generate initial LP relaxation
    4525 SCIP-Jack is now competitive with problem specific state-of-the-art solvers on several well-known STP variants,
    4526 e.g., the (rooted) prize-collecting Steiner tree problem.
    4527- MultiObjective application renamed to PolySCIP; several improvements: better command line argument processing,
    4528 overhaul of much of the source code, installation via CMake
    4529
    4530Interface changes
    4531-----------------
    4532
    4533- made debug solution functionality thread safe (see debug.h for further information)
    4534
    4535### Deleted and changed API functions
    4536
    4537- add SCIPcomputeHyperplaneThreePoints() to compute a hyperplane containing three given 3-dimensional points
    4538- SCIPsolveLinearProb() now uses a 1-dimensional matrix representation
    4539
    4540### Command line interface
    4541
    4542- added interactive shell command `display finitesolution` to print solution with infinite fixings removed,
    4543 added reference to that method to `display solution` output if there are infinite fixings
    4544- new interactive shell command `write history` to write the command line history (only when compiled with Readline)
    4545
    4546### Interfaces to external software
    4547
    4548- significantly improved Python interface to support user callbacks as well as linear and quadratic expressions
    4549
    4550### New parameters
    4551
    4552- `constraints/sos1/branchingrule` to decide whether to use neighborhood, bipartite, or SOS1 branching (this parameter
    4553 replaces the old parameters `constraints/sos1/neighbranch`, `constraints/sos1/bipbranch`, and `constraints/sos1/sos1branch`)
    4554- `constraints/sos1/depthimplanalysis` to limit the number of recursive calls of implication graph analysis
    4555- `constraints/sos1/perfimplanalysis` to perform an implication graph analysis to deduce variable fixings and
    4556 additional SOS1 constraints (this parameter replaces the old parameter `constraints/sos1/updateconflpresol`)
    4557- `misc/transsolorig` for transfering transformed solutions to the original space (default: true)
    4558- `propagating/rootredcost/onlybinary` to propagate root reduced costs of binary variables only
    4559
    4560### Data structures
    4561
    4562- renamed MIP matrix structure to `SCIP_MATRIX`
    4563- changed the numeric values for `PRESOLTIMING` flags
    4564
    4565Build system
    4566------------
    4567
    4568### Makefile
    4569
    4570- new target `dll` to build Windows dlls with MSVC
    4571- add new compiling flag OPENSOURCE to allow/forbid the usage of third party software
    4572
    4573Fixed bugs
    4574----------
    4575
    4576- fixed wrong objective sense when copying the original problem
    4577- fixed a bug in merge step of cliques during clean up phase; method did not correctly handle infeasibility in the case of multiple
    4578 variable-negation pairs
    4579- fixed a previously untreated case in the linear cons simplification where coefficients only differ by slightly more than an epsilon
    4580- fixed bug in parsing emphasis parameters which formerly led to completely wrong results
    4581- fixed bug in the computation of the Wilcoxon test
    4582- do not use the relative and absolute gap limit if no primal solution has been found so far
    4583- fixed bug in conflict.c with wrong reset of bounds used
    4584- fixed bug with transferring solutions to new runs (need to recompute objective before checking)
    4585- fixed issue with infinite values when checking cuts for redundancy
    4586- fixed library problems on Windows operating systems
    4587
    4588- Variables:
    4589 - fixed wrong check when computing cuts for factorable quadratic functions bound tightening of a single variable
    4590 - fixed wrong handling of loose variables in OBBT
    4591 - fixed freeing of hash for binary variables
    4592 - fixed bug during the computation of branching points for continuous variables which are almost fixed to +/- SCIPinfinity()
    4593 - treated the case of integer variables as intermediate variables in the process of obtaining the active variable for a
    4594 given binary variable
    4595
    4596- LP:
    4597 - fixed a bug in dive.c that occurred when lpsolvefreq was set to 1; after a cutoff, the solution values of the
    4598 linked LP solution might have become invalid
    4599 - do not analyse an infeasible LP for conflicts during diving mode when LHS/RHS of rows were changed
    4600 - use LPi infinity when reverting bound changes in conflict analysis
    4601
    4602- Heuristics:
    4603 - fixed bug in heur_simplerounding in connection with relaxators
    4604 - fixed bug in feaspump heuristic where last solution candidates were not updated correctly
    4605 - fixed bug with infinite shift values in heur_shifting
    4606 - fixed bug in shiftandpropagate heuristic: the heuristic did not correctly handle intermediate, global bound changes of the selected variable
    4607 after its tentative fixing led to a cutoff.
    4608
    4609- Propagator:
    4610 - (root) reduced cost propagators are not run anymore when doing branch-and-price,
    4611 since they may install upper bounds on variables which might interfere with the
    4612 pricing (they may be enabled again by their force parameters)
    4613 - fixed too hard assertion in pseudoobj propagator
    4614 - fixed a bug in shiftandpropagate where column positions after sorting are now correctly linked to their variables after sorting
    4615 - fixed potential memory leak in genvbound propagator
    4616
    4617- Presolving:
    4618 - fixed inconsistency in knapsack constraint handler data during presolving
    4619 - fixed some problem with reoptimization when the problems are infeasible or have been solved in presolving
    4620 - fixed endless loop in knapsack constraint handler when continuous variables change their types to binary during presolving
    4621 - squares of binary variables might not have been replaced by the binary variable itself in presolve,
    4622 if the variable was originally general integer and only became binary during presolve (due to bound tightening)
    4623 - fixed bug in dive.c avoiding a check of constraints in the presence of indicator constraints
    4624
    4625- Constraints:
    4626 - fixed numerical problems in computation of cuts for bivariate functions in quadratic constraint handler
    4627 - fixed bug in quadratic constraint handler when computing lifted-tangent inequalities
    4628 - fixed bug in nonlinear constraint handler when replacing a violated nonlinear constraint leads to an infinite
    4629 - fixed bug in SOS1 constraint handler with inconsistent data structure after restart
    4630 - fixed wrong handling of negated variables in bound tightening procedure of SOS1 constraint handler
    4631 - fixed bug in simple fixing heuristic of SOS1 constraint handler
    4632 - fixed two bugs in pseudoboolean constraint handler with wrong sorting of and constraints
    4633 - fixed issue: constraints being parallel to objective function (after restart) sometimes led to wrongly stating infeasible
    4634 - fixed bug during coefficient tightening in varbound constraint handler
    4635 - handle cutoffs in cons_indicator detected by infeasible inequalities
    4636 - fixed late change of type of slack variables in cons_indicator, if the bounds are not integral
    4637 - fixed initsol and exitsol of cons_indicator, if problem has already been solved
    4638 - fixed bug in cons_indicator with changing type of slackvariable
    4639
    4640@section RN320 SCIP 3.2.0
    4641*************************
    4642
    4643Features
    4644--------
    4645
    4646- added reoptimization feature for optimization problems with changed objective function or tighter feasible region
    4647- the original problem can now be permuted directly after reading (if `misc/permutationseed` has value >= 0)
    4648- added methods to compute strongly connected components with Tarjan's Algorithm
    4649- added method to propagate implications of SOS1 variables
    4650- convex quadratic contraints can now generate gradient cuts which are supporting to the feasible region
    4651- SoPlex interface can now (re)store dual steepest edge weights
    4652- extended expression parsing to support power, realpower and signpower operators; started support for user-defined operators
    4653 in expression trees/graphs
    4654- possibility to set a soft time limit which becomes active only after the first primal solution was found
    4655- added matrix module for getting access to the internal mixed inter linear problem matrix
    4656- better handling of large values returned by the LP solver
    4657- added more checks to SCIP{alloc,realloc,duplicate}BufferArray() to handle overflows properly
    4658- new plugin for reoptimizing a sequence of optimization problem that differ in the objective function, e.g., sequences arising from
    4659 column generation
    4660- new plugin `compr` for rearranging the search tree, currently this only works on the reoptimization tree
    4661- moved assertions in comparison methods from scip.c to set.c
    4662
    4663- Constraints:
    4664 - we can now upgrade quadratic constraints with one bilinear term to SOC constraints
    4665 - we can also upgrade general quadratic constraints with a single negative eigenvalue to SOC constraints
    4666
    4667- Branching:
    4668 - tighter reliability notions introduced for reliability branching, based on pseudo-cost relative errors
    4669 and comparing candidates with the best pseudo-candidate using a 2-sample student-T test. These methods
    4670 are used in disjunction with the existing reliability notion that uses a fixed number as reliability
    4671 threshold for every variable before turning off strong-branching. This means, the classical method
    4672 must be turned off by setting parameters minreliable and maxreliable to 0. The behavior is
    4673 controlled through several parameters.
    4674 - new distribution branching rule to base decisions on row activity (normal) distribution over domain space
    4675 - can now output information for BAK: Branch-and-bound Analysis Kit
    4676 - new score in hybrid reliability pseudocost branching that prefers nonlinear variables when solving MINLPs
    4677 - new branching rule multaggr which allows to branch on general disjunctions defined by fractional multi-aggregated variables
    4678 - new branching rules for SOS1 constraints for branching on a neighborhood or a complete bipartite subgraph of
    4679 the conflict graph. In addition to variable domain fixings, it is sometimes also possible to add complementarity
    4680 constraints to the branching nodes. This results in a nonstatic conflict graph, which may change dynamically
    4681 with every branching node.
    4682 - new branching rule nodereopt to reconstruct the tree after changing the objective function
    4683
    4684- Reader:
    4685 - the MPS reader can now read semi-integer variables, they are handled by creating bound disjunction constraints
    4686 - the MPS reader can now handle objective constants given as (the negation of) the RHS of the objective row
    4687
    4688- Separation:
    4689 - obbt propagator applies now additional separation and propagation in order to learn stronger and more bound tightenings
    4690 - extended probing mode to allow separation and objective coefficient changes
    4691 - improved separation procedure of SOS1 constraint handler, including bound (clique) cuts and implied bound cuts
    4692 - new disjunctive cut separator for SOS1 constraints
    4693 - new edge-concave cut separator for quadratic constraints
    4694
    4695- Presolver:
    4696 - Improved coordination of presolvers. There are three timings for presolvers now, FAST, MEDIUM and EXHAUSTIVE.
    4697 Each presolving callback can specify one or more of these timings in which it will be called later.
    4698 Within a presolving method, the current timing can be checked and the algorithms to be performed selected based on
    4699 the timing. In one presolving round, first all presolving methods with timing FAST are called, sorted by priority.
    4700 If they found enough reductions, a new round is started, otherwise, all presolving methods with timing MEDIUM are
    4701 called. Again, with enough reductions, a new presolving round is started, too few reductions lead to running
    4702 the EXHAUSTIVE presolvers. Similar to the delay concept used before, we are not neccessarily running all EXHAUSTIVE
    4703 presolvers but stop as soon as one of them found enough reductions, starting a new presolving round immediately.
    4704 - new presolving components for SOS1 constraints, including bound tightening and clique extension
    4705 - new presolver tworowbnd for improving variable bounds and detecting redundant constraints added
    4706 - new presolver dualagg for aggregating single up-/downlocked variables by a binary variable added
    4707 - new presolver implfree for aggregating implied free variables added
    4708 - new presolver redvub which can detect redundant variable upper bound constraints added
    4709 - new presolver stuffing for fixing of singleton continuous variables added
    4710
    4711- Heuristic:
    4712 - improved clique and variable bound heuristics
    4713 - new heuristic distribution diving that bases its score function on the changes regarding solution density
    4714 - variable histories can be transferred between sub-SCIPs solved by LNS heuristics and the component presolver
    4715 and the main SCIP to reuse this information.
    4716 - new heuristic heur_indicator that tries to make partial solutions with indicator constraints feasible. It also
    4717 tries to improve them (or external solutions) by a one-opt local search.
    4718 - new heuristic (heur_bound) which fixes all integer variables to their lower/upper bounds and solves the remaining LP
    4719 - modified diving heuristics to handle SOS1 constraints
    4720 - new primal heuristic for reoptimization 'ofins': objective function induced neighborhood heuristic
    4721 - new heuristic for reoptimization which constructs solutions based in the changes between the objective function and the optimal
    4722 solution before changing the objective function
    4723
    4724- Statistic:
    4725 - extended variable branching statistics in the interactive shell by sample variance of unit gains
    4726 - extended statistic output of interactive shell by more information on diving heuristic behavior
    4727
    4728Performance improvements
    4729------------------------
    4730
    4731- improved treatment of nonlinearities in hybrid reliability pseudo cost branching
    4732- using sparsity information of the SoPlex LP
    4733
    4734- Constraints:
    4735 - improved vartype upgradability from continuous to implicit variables in cons_linear.c, depending on their objective coefficients
    4736 - improved propagation of SOS1 constraint handler using the information from a conflict
    4737
    4738- Heuristics:
    4739 - zi rounding heuristic uses buffer data structures, thereby decreasing total memory usage of SCIP
    4740 - adjusted (hard) diving heuristics to solve fewer LPs. LP's are resolved only if a parameter-defined
    4741 percentage of the variable bounds changed through domain propagation or at a predefined frequency.
    4742 - some of the diving heuristics additionally consider indicator variables and SOS1 variables as candidate variables and try to
    4743 make these constraint types feasible before passing a rounded solution to SCIPtrySol()
    4744
    4745- Presolving:
    4746 - new presolving/propagation algorithm using the gcd for ranged rows and equations in cons_linear
    4747 - added presolving levels (FAST, MEDIUM and EXHAUSTIVE) to allow better balancing of presolvers
    4748
    4749- Separation:
    4750 - improved separation procedure of SOS1 constraint handler
    4751 - improved separation procedure for convex quadratic constraints
    4752
    4753Examples and applications
    4754-------------------------
    4755
    4756- two new applications for multi-objective optimization (PolySCIP) and the Steiner Tree Problem in Graphs
    4757- new application for solving Steiner tree problems: SCIP-Jack can handle both the classical Steiner tree problem in graphs
    4758 and 10 of its variants
    4759
    4760Interface changes
    4761-----------------
    4762
    4763### New and changed callbacks
    4764
    4765- new callback function `SCIP_DECL_CONSGETDIVEBDCHGS` to provide
    4766 constraint handler method to suggest dive bound changes during the generic diving algorithm, see type_cons.h for details
    4767- new callback `SCIP_DECL_DIVESETGETSCORE` to implement scoring function to guide diving
    4768
    4769### Deleted and changed API functions
    4770
    4771- avoid potential comparisons of different infinity values by adjusting the LP solution value
    4772- SCIPintervalSign(), SCIPintervalAbs(), SCIPintervalMax(), SCIPintervalMin(), SCIPexprgraphGetNodePolynomialMonomialCurvature(),
    4773 and SCIPexprgraphTightenNodeBounds() need an infinity value to decide whether an interval is empty or not
    4774- SCIPgetFeasibilityQuadratic() and SCIPgetActivityQuadratic() returns now a `SCIP_RETCODE` and needs an additional `SCIP_Real*` to
    4775 store the result
    4776- methods which support statistical tests in pub_misc.h, SCIPstudentTGetCriticalValue(), SCIPcomputeTwoSampleTTestValue() etc.
    4777- SCIPsolveLinearProb() solves a linear problem of the form Ax=b for a regular square matrix A
    4778- Added parameter `freesubscip` to SCIPapplyProximity()
    4779
    4780- Data structures:
    4781 - Renamed method SCIPdigraphGetSuccessorsDatas() to SCIPdigraphGetSuccessorsData()
    4782 - Renamed method SCIPdigraphGetNodeDatas() to SCIPdigraphGetNodeData()
    4783 - Renamed method SCIPdigraphSetNodeDatas() to SCIPdigraphSetNodeData()
    4784
    4785- Constraint Handlers:
    4786 - Renamed method SCIPconshdlrGetPropTimingmask() to SCIPconshdlrGetPropTiming()
    4787 - new method SCIPconshdlrSetPropTiming()
    4788 - Removed method SCIPconshdlrIsPresolvingDelayed()
    4789 - Removed method SCIPconshdlrWasPresolvingDelayed()
    4790 - SCIPmakeSOS1sFeasible() based on solution values, fixes variables to zero to turn all SOS1 constraints feasible
    4791 - removed `delay(presol)` parameter from SCIPinclude{Conshdlr,Presol,Prop}() and added `(presol)timing` parameter
    4792 - new parameter `presoltiming` for method SCIPpresolCons()
    4793 - SCIPvarIsSOS1() returns whether some variable is involved in an SOS1 constraint
    4794 - SCIPgetConflictgraphSOS1() gets conflict graph of SOS1 constraints
    4795 - Added parameter `presoltiming` to SCIPpropCumulativeCondition()
    4796 - Removed parameter `delaypos` from SCIPsetConshdlrPresol()
    4797 - Added parameter `presoltiming` to SCIPsetConshdlrPresol()
    4798 - Removed parameter `delaypos` from SCIPincludeConshdlr()
    4799 - Added parameter `presoltiming` to SCIPincludeConshdlr()
    4800 - Added parameter `consgetdivebdchgs` to SCIPincludeConshdlr() to provide a divebdchg-callback for the constraint handler
    4801 to include
    4802
    4803- Branching Rules:
    4804 - Added parameter `forcestrongbranch` to SCIPselectVarStrongBranching()
    4805 - Added parameter `executebranching` SCIPexecRelpscostBranching()
    4806 - Added parameters `ndomredsdown` and `ndomredsup` to SCIPgetVarStrongbranchWithPropagation()
    4807
    4808- LP and Cutting Planes:
    4809 - Added parameters `inds` and `ninds` to SCIPgetLPBInvRow(), SCIPgetLPBInvCol(), SCIPgetLPBInvARow(), SCIPgetLPBInvACol(), and
    4810 SCIPcalcStrongCG()
    4811 - Added parameters `maxweight`, `weightinds`, `nweightinds`, and `rowlensum` to SCIPcalcMIR()
    4812
    4813- Variables:
    4814 - SCIPvarGetNodeSOS1() returns node of SOS1 variable in the conflict graph
    4815 - SCIPnodeGetVarSOS1() returns SOS1 variable associated to some given node in the conflict graph
    4816 - Removed method SCIPvarGetNBinImpls()
    4817
    4818- Presolving:
    4819 - Removed parameter `delaypos` from SCIPincludePresolBasic()
    4820 - Added parameter `presoltiming` to SCIPincludePresolBasic()
    4821 - Removed parameter `delaypos` from SCIPincludePresol()
    4822 - Added parameter `presoltiming` to SCIPincludePresol()
    4823 - Removed parameters `presoldelay` and `presoltiming` from SCIPincludePresol()
    4824 - Removed parameters `presoldelay` and `presoltiming` from SCIPsetPropPresol()
    4825
    4826- Misc:
    4827 - Added parameter `isequation` to SCIPaddClique()
    4828 - Removed parameter `writeimplications` from SCIPwriteCliqueGraph()
    4829 - Removed method SCIPallocBufferSize()
    4830 - Removed method SCIPduplicateBufferSize()
    4831 - Removed method SCIPreallocBufferSize()
    4832 - Removed method SCIPfreeBufferSize()
    4833 - Removed method callback SCIPdialogExecConflictgraph()
    4834
    4835### New API functions
    4836
    4837- started support for user-defined operators in expression trees/graphs (see SCIPexprCreateUser()),
    4838 interface will likely change again in future SCIP versions
    4839- new methods for mixed inter linear matrix access (see pub_matrix.h) added
    4840- SCIPcomputeArraysIntersection() to compute the set intersection of two ordered arrays
    4841- SCIPcomputeArraysSetminus() to compute the set difference of two ordered arrays
    4842- SCIPcutGetLPActivityQuot() in pub_cutpool.h to get the potion of LP's where this cut was sharp in an optimal basis.
    4843- SCIPpresolGetTiming(), SCIPpresolSetTiming(), SCIP{conshdlr,prop}GetPresolTiming(), and SCIP{conshdlr,prop}SetPresolTiming()
    4844- SCIPdigraphSetNSuccessors() sets the number of successors of some digraph node to a given value
    4845
    4846- Diving:
    4847 - SCIPcreateDiveset() to add a diveset to a heuristic. Heuristics may have multiple divesets under different names
    4848 - SCIPperformGenericDivingAlgorithm() that performs diving with periodic LP resolve according to the diveset argument.
    4849
    4850- Constraints:
    4851 - new setter function SCIPsetConshdlrGetDiveBdChgs() in scip.h to set dive bound change callback for this constraint handler
    4852 - SCIPaddDiveBoundChange() to add a diving bound change to the diving bound change storage of SCIP together with the information if this is a
    4853 bound change for the preferred direction or not, to be used by constraint handlers inside the getDiveBdChgs-callback
    4854 - SCIPchgCoefLinear() and SCIPdelCoefLinear() to modify linear constraint during problem creation
    4855
    4856- Memory:
    4857 - BMSallocClearBlockMemoryArray()/SCIPallocClearBlockMemoryArray() and
    4858 BMSallocClearBufferMemoryArray(), SCIPallocClearBufferArray() to allocate arrays that are initialized to 0
    4859 - SCIPbuffermem() to get buffer memory;
    4860
    4861- Sort:
    4862 - added new sorting functions SCIPsortRealRealRealBoolBoolPtr(), SCIPsortDownRealRealRealBoolBoolPtr()
    4863 - added new sorting functions SCIPsortIntIntIntReal(), SCIPsortDownIntIntIntReal(), SCIPsortRealIntInt(), SCIPsortDownRealIntInt()
    4864
    4865- Param:
    4866 - SCIPwriteParam() to write a single parameter to a file
    4867 - SCIPcheckParam{Bool,Char,...}() to check whether a parameter value is within the feasible domain
    4868
    4869- Quadratic:
    4870 - SCIPchgLhsQuadratic(), SCIPchgRhsQuadratic(), SCIPchgLinearCoefQuadratic(), SCIPchgSquareCoefQuadratic(),
    4871 and SCIPchgBilinCoefQuadratic() to modify quadratic constraints during problem creation
    4872 - SCIPgetFeasibilityQuadratic() and SCIPgetActivityQuadratic() to get the feasibility and activity of a quadratic constraint in a given solution
    4873 - SCIPaddSquareLinearization(), SCIPaddSquareSecant(), SCIPaddBilinLinearization() and SCIPaddBilinMcCormick()
    4874 in cons_quadratic.h to compute linear under- and overestimation for bilinear and quadratic terms
    4875
    4876### Command line interface
    4877
    4878- extended variable branching statistics and statistic output in the interactive shell (see Statistic section)
    4879- submenu for setting `vbc` settings renamed to `visual`
    4880- at the end of a command line run the best solution can now be output in the orignal space
    4881
    4882### Interfaces to external software
    4883
    4884- in the AMPL interface, variable and constraint attributes (flags) can now be set via suffixes, where 0 (unset) stands
    4885 for the default, 1 for TRUE and other values for FALSE; see SCIPcreateVar() and SCIPcreateCons() for their meaning;
    4886 for variables, `initial` and `removable` are recognized;
    4887 for constraints, `initial`, `separate`, `enforce`, `check`, `propagate`, `dynamic` and `removable` are recognized
    4888- the AMPL interface now passes an initial guess, if specified, as a solution (that will be checked for feasibility) to SCIP
    4889
    4890### Changed parameters
    4891
    4892- rowrepswitch set to 2.0, so row representation is activated if LP has at least 2 times more rows than columns
    4893- one can now set emphasis parameters at the beginning of a settings file; it should start with `emphasis:` and
    4894 the contain the emphasis string, e.g., `emphasis: feasibility` or `emphasis: heuristics off`.
    4895
    4896- Renamed parameters:
    4897 - `vbc/filename` to `visual/vbcfilename`
    4898 - `vbc/realtime` to `visual/realtime`
    4899 - `vbc/dispsols` to `visual/dispsols`
    4900
    4901### New parameters
    4902
    4903- added parameter to switch pseudo cost update in diving heuristics (enabled by default)
    4904- `branching/relpscost/confidencelevel` to set the confidence level to be used by statistical tests
    4905- `branching/relpscost/higherrortol` to define the highest reliability threshold for relative error based reliability
    4906- `branching/relpscost/lowerrortol` to define a lower reliability threshold for relative error based reliability
    4907- `branching/relpscost/nlscoreweight` for weight of nonlinear score when branching on MINLPs
    4908- `branching/relpscost/usedynamicconfidence` to use a dynamic confidence level based on the amount of
    4909 strong-branching simplex-iterations compared to the overall simplex iterations (default is FALSE)
    4910- `branching/relpscost/usehyptestforreliability` to enable strong branching decisions based on a 2-sample student-T test of all prior
    4911 pseudo-cost observations between the best pseudo-candidate and the candidate for which to decide whether strong-branching should be applied
    4912- `branching/relpscost/userelerrorreliability` to enable relative error based reliability
    4913- `branching/relpscost/skipbadinitcands` for skipping strong-branching candidates whose estimated gain
    4914 is significantly worse than the one of the locally best (sb or pseudo) candidate
    4915- `constraints/linear/multaggrremove` to perform multi-aggregations in linear constraint handler only if the constraint can be removed afterwards
    4916- `constraints/linear/rangedrowpropagation` to disabled newly implemented propagtion algorithm for ranged rows and equations
    4917- `constraints/quadratic/advanced/interiorcomputation` to select the way of computing and interior point for gauge cuts
    4918- `constraints/quadratic/gaugecuts` to enable convex quadratics to generate gradients cuts which are supporting
    4919- `constraints/soc/generalsocupgrade` to allow general quadratics to be upgraded to soc
    4920- `constraints/SOS1/addcomps` to add local complementarity constraints to the branching nodes (can be used in combination
    4921 with neighborhood or bipartite branching)
    4922- `constraints/SOS1/addbdsfeas` to define a minimal feasibility value for local bound (clique) inequalities in order to be
    4923 added to the branching node
    4924- `constraints/SOS1/addcompsdepth` to define the maximal depth for adding complementarity constraints
    4925- `constraints/SOS1/addcompsfeas` to define a minimal feasibility value for local complementarity constraints in order to be
    4926 added to the branching node
    4927- `constraints/SOS1/autocutsfromsos1` to automatically switch to separating bound cuts from SOS1 constraints if the SOS1
    4928 constraints do not overlap
    4929- `constraints/SOS1/autosos1branch` to switch to SOS1 branching if the SOS1 constraints do not overlap
    4930- `constraints/SOS1/conflictprop` to define whether to use conflict graph propagation
    4931- `constraints/SOS1/bipbranch` to branch on a complete bipartite subgraph of the conflict graph
    4932- `constraints/SOS1/boundcutsdepth` to define the node depth of separating bound (clique) cuts
    4933- `constraints/SOS1/boundcutsfreq` to define the frequency for separating bound (clique) cuts
    4934- `constraints/SOS1/boundcutsfromgraph` to define whether to separate bound (clique) inequalities from the conflict graph
    4935- `constraints/SOS1/boundcutsfromsos1` to define whether to separate bound (clique) inequalities from SOS1 constraints
    4936- `constraints/SOS1/fixnonzero`: If neighborhood branching is used, then fix the branching variable (if positive in sign)
    4937 to the value of the feasibility tolerance
    4938- `constraints/SOS1/implcutsdepth` to define the node depth of separating implied bound cuts
    4939- `constraints/SOS1/implcutsfreq` to define the frequency for separating implied bound cuts
    4940- `constraints/SOS1/implprop` to define whether to use implication graph propagation
    4941- `constraints/SOS1/maxaddcomps` to define the maximal number of complementarity constraints added per branching node
    4942- `constraints/SOS1/maxboundcuts` to define the maximal number of bound (clique) cuts separated per branching node
    4943- `constraints/SOS1/maxboundcutsroot` to define the maximal number of bound (clique) cuts separated per iteration in the root node
    4944- `constraints/SOS1/maximplcuts` to define the maximal number of implied bound cuts separated per branching node
    4945- `constraints/SOS1/maximplcutsroot` to define the maximal number of implied bound cuts separated per iteration in the root node
    4946- `constraints/SOS1/maxextensions` to define maximal number of extensions that will be computed for each SOS1 constraint in presolving
    4947- `constraints/SOS1/maxsosadjacency` to define that the adjacency matrix of the conflict graph is not created in presolving if
    4948 the number of SOS1 variables is too large
    4949- `constraints/SOS1/maxtightenbds` to define the maximal number of bound tightening rounds per presolving round
    4950- `constraints/SOS1/neighbranch` to branch on a neighborhood of the conflict graph
    4951- `constraints/SOS1/nstrongiter` to define the maximal number LP iterations to perform for each strong branching round
    4952- `constraints/SOS1/nstrongrounds` to define the maximal number of strong branching rounds to perform for each node (only
    4953 available for neighborhood and bipartite branching)
    4954- `constraints/SOS1/sos1branch` to branch on a single SOS1 constraint, i.e., a clique of the conflict graph
    4955- `constraints/SOS1/sosconsprop` to define whether to use SOS1 constraint propagation
    4956- `constraints/SOS1/strthenboundcuts` to define whether to strengthen bound (clique) cuts in case bound variables are available
    4957- `constraints/SOS1/updateconflpresol` to update the conflict graph during the presolving procedure
    4958- `display/allviols` to print all violated constraints of the best solution during checksol in the scip shell
    4959- `heuristics/indicator/improvesols` that turns on the improvement of external solutions by one-opt
    4960- `heuristics/∗diving/lpresolvedomchgquot` to determine the percentage of changed domains since previous LP to trigger
    4961 an LP resolve [default: 0.15] (* stands for eight diving heuristics to support this feature)
    4962- `heuristics/∗diving/lpsolvefreq` to determine the frequency for resolving LP's during the execution of
    4963 this heuristic [default: 1, use 0 for a dynamic setting based on the number of domain reductions]
    4964 (* stands for eight diving heuristics to support this feature)
    4965- `heuristics/shiftandpropagate/binlocksfirst` to set if binaries without locks should be preferred in ordering
    4966- `heuristics/shiftandpropagate/maxcutoffquot` to select a maximum percentage of allowed cutoffs before stopping the heuristic (default is 0.0)
    4967- `heuristics/shiftandpropagate/selectbest` to trigger if shiftandpropagate should select the best candidate in every round
    4968 (set to FALSE for static order) (default is FALSE)
    4969- `limits/autororestart` for triggering an automatic restart after this many nodes, or -1 for no auto restart [default is -1]
    4970- `limits/softtime` to set a soft time limit (active only after first primal solution was found)
    4971- `misc/allowobjprop` to allow objective function propagation
    4972- `misc/allowdualreds` to allow dual reductions
    4973- `misc/outputorigsol` to control whether at the end of a command line run the solution should be output in the orignal space
    4974- `numerics/checkfeastolfac` to scale feasibility tolerance when checking the feasibility of best found solution
    4975 after the solving process finished (e.g., checksol in scip shell)
    4976- `separating/cutselrestart` for cut selection during restart copy process (`a`ge, activity `q`uotient) [default is `a`]
    4977- `separating/cutselsubscip` for cut selection for sub SCIPs (`a`ge, activity `q`uotient) [default is `a`]
    4978- `separating/disjunctive/maxconsdelay` to delay separation of disjunctive cuts if number of SOS1 constraints is larger than predefined value
    4979- `separating/disjunctive/maxdepth` to define the node depth of separating disjunctive cuts
    4980- `separating/disjunctive/maxinvcuts` to define the maximal number of disjunctive cuts investigated per iteration in a branching node
    4981- `separating/disjunctive/maxinvcutsroot` to define the maximal number of disjunctive cuts investigated per iteration in the root node
    4982- `separating/disjunctive/maxrank` to define the maximal permissible rank of a disjunctive cut that could not be scaled to integral coefficients
    4983- `separating/disjunctive/maxrankintegral` to define the maximal permissible rank of a disjunctive cut that could be scaled
    4984 to integral coefficients
    4985- `separating/disjunctive/maxrounds` to define the maximal number of separation rounds of disjunctive cuts in a branching node
    4986- `separating/disjunctive/maxweightrange` to define the maximal valid range of simplex tableau row weights
    4987
    4988### Data structures
    4989
    4990- new enum `SCIP_CONFIDENCE_LEVEL` for different levels of confidence for statistical tests.
    4991- new struct `SCIP_DIVESET` that bundles options for SCIP's diving heuristics; all hard diving heuristics (those
    4992 without `obj` at the beginning) include diveset and implement only the scoring callback.
    4993- rename all file `*_vbc.?` to the more generic `*_visual.?`
    4994- moved buffer memory handling to blockmemory/memory.?;
    4995 remove files type_buffer.h, struct_buffer.h buffer.h buffer.c;
    4996 removed functions SCIP*buffer*() from scip.? and replaced them by macros;
    4997 redesigned buffer interface to be similar to block memory; added checks for strange sizes
    4998
    4999Testing
    5000-------
    5001
    5002- added scripts and targets for testing with xpress (see Makefile section)
    5003
    5004Build system
    5005------------
    5006
    5007### Makefile
    5008
    5009- new parameter `DELHEADERS` for `uninstall`-target: scip headers are only removed when invoking `make uninstall DELHEADERS=true`
    5010- added scripts check_xpress.awk, check_xpress.sh, evalcheck_xpress.sh and check_cluster_xpress.sh and target
    5011 `testclusterxpress` and `testxpress`
    5012
    5013Fixed bugs
    5014----------
    5015
    5016- fixed bug in primal.c and tree.c by using SCIPinfinity() as a cutoffbound to delete child nodes
    5017- fixed bug in lp.c which leads to wrong primal and dual feasibility
    5018- fixed wrong handling of infinite activities and primal values in sepastore.c and lp.c
    5019- fixed bug that led to an erroneous warning about the clock type
    5020- fix behavior of `make install` which now sets symbolic links and short links to binaries and libraries
    5021- fix bug which lead to wrong global bound tightenings in prop_genvbounds.c
    5022- fix call to random generator for Windows operating systems in misc.c
    5023- fixed again a bug in backward propagation of linear expressions in expression graph
    5024- fixed bug in prop_symmetry.c, where an incorrect weak symmetry handling constraint got added.
    5025
    5026- NLP:
    5027 - fixed bug in heur_nlpdiving.c: wrong counting of fix variables
    5028 - fix wrong handling of `SCIP_NLPSOLSTAT_LOCALINFEASIBLE` solution status in nlp.c
    5029 - fix characterization of logic or constraints in SCIP's NLP relaxation
    5030
    5031- Branching:
    5032 - fixed wrong comparison when executing branching rule for external branching candidates
    5033 - fix spatial branching on implicit integer variables
    5034 - fix wrong comparisons of values larger/less than +/- SCIPinfinity() in branch.c, lp.c and sol.c
    5035 - fixed problem with lpisrelax flag in probing mode when doing branch-and-price
    5036
    5037- Constraint Handlers:
    5038 - try to handle fixings of multi-aggregated variable in cons_sos1 presolving and avoid error
    5039 - fixed bug in pseudoboolean constraint handler about negated variables
    5040 - fixed assert in cons_soc.c: now soc with 1 lhs variable are allowed
    5041 - fixed wrong assert in cons_indicator (slack variables might be replaced by active variables that have nonzero objective)
    5042 - fix late creation of auxiliary LP in cons_nonlinear.c, which lead to a segmentation fault with lpi_spx2.cpp
    5043 - fixed bug in cons_abspower.c: do not generate cuts with infinity right-hand-side anymore
    5044 - fixed setting of enforcement flag for constraints created by reformulation in nonlinear constraint handlers
    5045 - fixed bug in cons_indicator with handling local bounds
    5046
    5047- Memory:
    5048 - fix potential memory leak in SoPlex LP interfaces when setting invalid basis
    5049 - fix potential memory leak in method SCIPgetConsCopy()
    5050 - fix potential memory leak in method detectRedundantConstraints() of the knapsack constraint handler
    5051
    5052- Interval arithmetic:
    5053 - fix handling of infinite intervals in SCIPintervalIsEmpty()
    5054 - fixed bug in intervalarith.c: bivariate quadratic equations may have been solved wrongly if second variable is unbounded
    5055
    5056- Quadratic Constraints:
    5057 - fix wrong sorting of bilinear terms in cons_quadratic
    5058 - fix potentially tightening of LB/UB of a variable to +/- infinity in cons_quadratic
    5059 - fixed bug in cons_quadratic.c which leads to an overflow when SCIP allocates memory for a dense matrix
    5060 - fixed bug in cons_quadratic.c: do not generate linearization cuts for disabled constraints
    5061 - fix missing clean phase of bilinear terms with zero coefficient in cons_quadratic.c
    5062
    5063@page RN3_1 Release notes for SCIP 3.1
    5064
    5065@section RN311 SCIP 3.1.1
    5066*************************
    5067
    5068Features
    5069--------
    5070
    5071- use clock average to reduce number of system calls via `timing/rareclockcheck` parameter
    5072- added copy mechanism for conjunction constraints
    5073- added revised lpi_xprs for using XPRESS as LP solver
    5074
    5075Performance improvements
    5076------------------------
    5077
    5078- improved solving of LPs in OBBT propagator
    5079- improved activity-delta computation and thereby propagation for linear constraints
    5080- improved memory management of proximity heuristic
    5081- disabled statistic timing in all subscips via new parameter `timing/statistictiming`
    5082
    5083Interface changes
    5084-----------------
    5085
    5086### New and changed callbacks
    5087
    5088- rename array arcdatas in digraph to arcdata
    5089- changes in clock type are now transferred to SoPlex
    5090- corrected wrong primal bound in statistics for unbounded problems
    5091- forbid to call SCIPfixVar() in `SCIP_STAGE_PRESOLVED` stage, which is not allowed since it calls SCIPchgVarLb/Ub()
    5092
    5093### Deleted and changed API functions
    5094
    5095- rename SCIPdigraphGetNodeDatas() to SCIPdigraphGetNodeData();
    5096- rename SCIPdigraphSetNodeDatas() to SCIPdigraphSetNodeData()
    5097- SCIPapplyProximity() has an additional parameter freesubscip, which causes the method to free
    5098 the created subscip automatically at the end.
    5099
    5100### New API functions
    5101
    5102- SCIPhasPerformedPresolve() to check, e.g., whether LP duals are accessible
    5103- SCIPconvertRealTo[Long]Int() to convert reals that represent integers to [long] ints.
    5104- SCIPisDualfeasEQ() and related to perform checks w.r.t. to the dual feasibility tolerance
    5105- SCIPdeleteSubproblemProximity() to free proximity subproblem manually as external caller
    5106
    5107### Command line interface
    5108
    5109- added dialog for writing the finite solution (calling SCIPcreateFiniteSolCopy() before writing)
    5110
    5111### Interfaces to external software
    5112
    5113- AMPL interface now returns dual multipliers if problem is an LP and presolving was turned off
    5114
    5115### Changed parameters
    5116
    5117- changed default value of parameter `heuristics/proximity/minimprove` to 0.02; previous value was 0.25
    5118- changed default value of parameter `heuristics/proximity/usefinallp` to FALSE
    5119
    5120### New parameters
    5121
    5122- `timing/rareclockcheck` to call the system time less frequently, based on the current average time interval
    5123 between two calls to SCIPsolveIsStopped(); the default value is FALSE
    5124- `timing/statistictiming` to enable/disable all timers for statistic output of SCIP; the default value is TRUE
    5125
    5126### Data structures
    5127
    5128- renamed MIP matrix structure to `SCIP_MATRIX`
    5129- changed the numeric values for `PRESOLTIMING` flags
    5130
    5131Build system
    5132------------
    5133
    5134### Makefile
    5135
    5136- added Makefile support for cygwin 64 Bit
    5137- allow to turn off block and buffer memory by the makefile parameters NOBLKMEM, NOBUFMEM, NOBLKBUFMEM;
    5138 also remove the now superfluous makefiles for noblkmem, nobufmem, noblkbufmem
    5139
    5140Fixed bugs
    5141----------
    5142
    5143- fixed wrong conversion of reals representing negative integer values
    5144- in debug mode, SCIP checks that no NaN's are introduced in SCIPsolSetVal()
    5145- fixed bug 697 (and 699), calling SCIPsolve() after the problem was already solved and SCIPfreeSolve() was called now
    5146 does nothing anymore
    5147- added support for character `#` in variable names in old non-linear CIP format (i.e., names without `<` and `>`)
    5148- fixed bug 702, removed too hard assert when casting too big values into `SCIP_Longint`
    5149- branching for continuous variables with unbounded intervals now takes `branching/clamp` into account
    5150- forbid aggregations with scalar smaller feastol or larger 1/feastol
    5151- fixed bug 683, not recognizing errors/segfaults especially in free stage of SCIP by improving the check scripts
    5152- fixed bug where quieting a message handler also disabled writing to files other than stdout
    5153- fixed bug 708, special case of implications led to a fixing
    5154- fixed bug, variable bounds detected wrong infeasibility
    5155- another bug fix when computing the original variable sum of a given variable in SCIPvarGetOrigvarSum()
    5156- fixed setting solution value of multi-aggregated var in xml-solution case
    5157- fixed bug changing the variable type of an negated variable
    5158- fixed numerical troubles in SCIPcreateFiniteSolCopy()
    5159- fixed bug in SCIPpermuteProb(): if called before transforming the problem, data structures were not initialized yet
    5160- fixed bug in aggregation procedure if two variables were of non-binary type but for one of the variables
    5161 SCIPvarIsBinary() returned true
    5162- treat activities of pseudo solutions as invalid when containing positive and negative infinity contributions
    5163- fixed bug in GMI example: fractionality of slack variable is now computed correctly
    5164- fixed LP interface of CPLEX: functions getBInv* return the correct sign of the coefficients.
    5165- fixed bug in SCIPpermuteProb(), when called in transformed stage and non-active constraints exist
    5166
    5167- Dual:
    5168 - use dual feasibility tolerance for comparisons regarding reduced costs
    5169 - fixed bug in prop_dualfixing: don't fix variables to infinite values during solving
    5170 - fixed sign of the dual multipliers returned by AMPL interfaces for maximization
    5171
    5172- Objective and Time Limit:
    5173 - fixed wrong output of status when an objective limit was imposed but not reached yet
    5174 - fixed the rare case that branching was performed even though strong branching found global bound changes leading to
    5175 an infeasible/objlimit LP
    5176 - fixed bug that objective limit was not reset correctly during SCIPfreeTransform() for maximization problems
    5177 - fixed bug that hitting the time limit while solving a pure LP and then continuing the solving process lead to
    5178 not solving the LP, but always creating a single child node until maximum depth is reached
    5179
    5180- Heuristic:
    5181 - fixed bug leading to an incorrect dual bound when solving probing LPs within a DURINGPRICINGLOOP heuristic
    5182 - fixed bug in proximity heuristic which attempted to enter diving mode even at nodes without a constructed LP
    5183 - fixed wrong pseudo cost updates during diving heuristic execution after backtracking
    5184 - fixed bug in heur_oneopt: avoid bound violations if shift value is negative due to infeasibilities
    5185 - fixed bug that reaching a solution limit by beforenode heuristics lead to disregarding the current node if the
    5186 optimization process was restarted later
    5187 - fixed bug in trysol heuristic not saving the best solution in maximization problems
    5188
    5189- Presolve:
    5190 - fixed bug in presolving of abspower constraints that lead to wrong variable locks
    5191 - allow to call SCIPmarkConsPropagate() in INITPRESOLVE stage
    5192 - fixed bug in components presolver with handling of dual fixable variables: unboundedness was not detected,
    5193 better handle components with single variables by dual fixing propagator
    5194 - issues in component solving by presol_components do not lead to stopping the overall process, anymore, the component
    5195 is just disregarded
    5196
    5197- Memory:
    5198 - fixed bug with freeing problem: need to reset objective limit
    5199 - fixed memory leaks in case of erroneous parsing of constraints, e.g., non-linear constraints
    5200 - fixed missing memory allocation for node data in digraphs
    5201
    5202- Constraints:
    5203 - fixed bug in cons_quadratic which leads to wrong min/max activities
    5204 - removed wrong break in cons_pseudoboolean
    5205 - fixed bug in cons_varbound.c using the wrong constraint side for updating an upper bound
    5206 - fixed bug in presolve of cons_nonlinear: wrong constraint upgrades may have been performed due to outdated bound
    5207 information in expression graph
    5208 - fixed bug in cons_setppc, wrongly aggregating variables if dual-presolving was disabled
    5209 - fixed bug in cons_sos1: locks and events were not initialized if constraint was added to transformed problem
    5210 - fixed bug in cons_setppc with dual presolving disabled
    5211 - corrected copy of disjunction constraints
    5212
    5213- Reading:
    5214 - allow to read numbers like `42856.` in lp-format
    5215 - fixed bug(?) in reader_mps: variables are now written in columns section even of they occur in no constraint
    5216 and have an objective coefficient of 0 (otherwise, CPLEX and Gurobi cannot read the file)
    5217 - fixed bug with reading `>=1` indicator constraints in LP-files
    5218 - fixed bug in reader_lp which created two indicator constraints with the same name to trigger an equality
    5219 - fixed bug when reading indicator constraints for linear constraints (equations/ranged rows) from MPS files
    5220
    5221@section RN310 SCIP 3.1.0
    5222*************************
    5223
    5224Features
    5225--------
    5226
    5227- added breadth first search node selection
    5228- new node selection rule UCT which balances exploration and exploitation by considering node visits
    5229- added possibility to not set a cutoff bound in the LP solver (can be enabled by setting `lp/disablecutoff` to TRUE)
    5230- added missing debugging solution check for cliques
    5231- added a data pointer to each node of the `SCIP_DIGRAPH`
    5232- SCIPgetVarCopy() will now copy the original bounds when called for an original variable
    5233- added upgrade of continuous variables to implicit variables for linear equations even if the coefficient is
    5234 not equal to 1
    5235- probing supports implicit binary variables
    5236- added scaling to computation of relative interior point in SCIPcomputeLPRelIntPoint()
    5237
    5238- Solution:
    5239 - added two methods to iterate over a sparse solution (`SCIP_SPARSESOLUTION`), see pub_misc.h
    5240 - it is now possible to add an offset for the original problem instance, all original solutions will be initialized with
    5241 this value and updated, when the offset is changed
    5242 - extended and corrected dual feasibility checks for LP solution (controlled by parameter `lp/checkdualfeas`)
    5243
    5244- Cuts and Separation:
    5245 - the rank of cuts is now stored and taken into account to improve numerical stability
    5246 - added possibility to separate a cutpool w.r.t. a given solution (instead of LP-solution)
    5247
    5248- Branching:
    5249 - new branching rule `cloud branching` that considers several alternative LP optima
    5250 - additional vbc output added: branching information is printed earlier and also for nodes which were cut off
    5251 - added support for strong branching with domain propagation in full strong and reliability pseudo cost branching
    5252 - added strong branching with domain propagation support: in SCIPstartStrongbranch(), support for propagation can
    5253 be enabled (uses the probing mode, some overhead compared to standard strong branching), after that
    5254 SCIPgetVarStrongbranchWithPropagation() can be used to perform strong branching on a variable with previous domain
    5255 propagation; similar to probing, valid bounds for variables are collected
    5256 - strong branching with propagation can be enabled in fullstrong and relpscost branching rule
    5257 - added possibility to store pricing norms of the LP solver (in addition to basis information) to speed up LP solving
    5258 after a backtrack, e.g. in probing or strong branching with domain propagation
    5259 - a pricer can now return that no further pricing should be done but rather early branching, even if it added variables
    5260
    5261- LP interface:
    5262 - SoPlex (>= 1.7.0.5) can compute condition number of current basis matrix via LP interface
    5263 - LPI files (lpi*.[h|c]) all moved from src/scip to src/lpi
    5264
    5265- Constraints:
    5266 - added propagation method to cons_xor relying on Gaussian elimination, which can also produce feasible solutions
    5267 - added first implication detection in cons_linear
    5268 - cons_indicator can now try to construct feasible solutions from a cover
    5269 - added possibility to forbid upgrading of linear constraints
    5270 - new initial constraints are now added to the LP before solving a probing LP
    5271 - first implementation of parsing for nonlinear constraints in CIP format
    5272 - added upgrade from varbound constraints to set-packing constraints
    5273 - added upgrade from bounddisjunction constraints to set-packing/logicor constraints
    5274 - cumulative constraint handler adds disjunctive constraints (cumulative with capacity 1) for all jobs which cannot
    5275 be processed in parallel
    5276 - added new clique extraction algorithm for linear constraints
    5277 - the slack variables of indicator constraints can now be scaled
    5278 - added redundancy check of sides of ranged row varbound constraint
    5279 - added coefficient tightening for ranged row varbound constraint
    5280 - XOR constraint handler can add two extended formulations (flow/asymmetric, parameter `addflowextended/addextendedform`)
    5281 - added multi-aggregation for binary variables with at most two uplocks and two downlocks, which emerge from set-
    5282 partitioning or set-packing constraints
    5283 - added upgrade from quadratic constraints to set-packing constraints
    5284 - generalized the linking constraint handler
    5285
    5286- Reader:
    5287 - can now read and write CIP-files with (multi-)aggregated variables
    5288 - all readers now take the global parameters `reading/dynamic{conss|cols|rows}` and `reading/initialconss` into account
    5289 - added reader_pbm, which writes the constraint-variable incidence matrix in pbm format (possibly scaled to given size)
    5290 - reader_osil can now read SOS1 and SOS2 constraints
    5291 - reader_lp and reader_mps are now able to write and-constraints in form of their (weak/strict) relaxation
    5292 - added reading capability to GAMS reader (if compiling with GAMS=true, requires a GAMS system)
    5293 - added capability of writing SOS1/2 constraints to GAMS reader (introduces extra variables and equations)
    5294
    5295- Heuristic:
    5296 - new primal heuristics dual value
    5297 - new LNS heuristic called `proximity`, which solves a problem in which a local branching constraint replaces the
    5298 objective function which in turn is treated as additional constraint
    5299 - new LP-based rounding heuristic (heur_randround) whose randomized rounding is biased towards the LP solution value;
    5300 the heuristic uses the probing mode of SCIP to generate conflict clauses on the fractional variables
    5301
    5302- Presolving:
    5303 - added new dual presolving for setppc-constraints
    5304 - changed dualfix presolver to propagator such that dual fixing can also be applied during repropagation of the root node
    5305 - added full-dual presolving step in setppc constraint handler
    5306 - dual solution can now be displayed for pure LPs when no presolving was performed
    5307 - added clique presolving for xor constraints
    5308 - added presolving using pairs of variable bound constraints that use the same variables
    5309 - added more presolving to cons_indicator, checking whether indicator/slack variables are aggregated
    5310 - added presolve.{c,h} which should be used for all preprocessing mechanisms executed from within SCIP, corresponding to
    5311 solve.{c,h} and also for presprocessing methods which can be called from different plugins or from the core to avoid
    5312 code doubling
    5313 - return error if variable should be fixed to infinity after presolving (LP-solvers do not handle this consistently)
    5314 - in verblevel `SCIP_VERBLEVEL_FULL`, the number of non-zeros will be output for the original and presolved model
    5315 - new presolving step for tightening logicor constraints using implication and clique information
    5316 - several new presolving steps for linear and knapsack constraints, using gcd information and many more
    5317
    5318- Statistic:
    5319 - added average gap based on primal-dual integral to solution statistics; can be disabled via parameter
    5320 `misc/calcintegral`
    5321 - the statistics now include the value of the first LP solved at the root node (without cuts)
    5322 - added new statistic which distinguishes between internal nodes and leaves which got processed
    5323 - new section `Root Node` in statistics, listing objective value, iterations and solving time for the first LP solved
    5324 at the root node as well as final dual bound of the root node and LP iterations for processing the root node
    5325 (those where listed in the `Solutions` section before, named `Root Dual Bound` and `Root Iterations`)
    5326
    5327Performance improvements
    5328------------------------
    5329
    5330- allow multiaggregation of binary variables
    5331- shorten conflicts and deriving global boundchanges from conflicts
    5332- apply lowerbound provided by pricers already during pricing loop, stop pricing if the lower bound computed by pricing
    5333 already exceeds the cutoff bound
    5334- improved performance of SCIPcliquelistDel(), SCIPcliquetableAdd(), SCIPcliquetableCleanup()
    5335
    5336- LP Solution:
    5337 - strong branching LP solutions are checked for integrality
    5338 - improved LP reoptimization for branch-and-price applications
    5339 - improved numerical stability checks for LP solution
    5340 - faster feasibility check of LP solutions (controlled by parameters `lp/checkprimfeas` and `lp/checkdualfeas`)
    5341
    5342- Presolver:
    5343 - improved methods SCIPlpiGetBInv{Row,Col,ACol} for row representation in SoPlex LP interface
    5344 - improved performance of method SCIPsolRetransform() when called during presolving with many aggregations
    5345 - minor presolving performance improvements in cons_logicor.c and cons_knapsack.c
    5346 - dual fixing presolver was turned into a propagator
    5347 - many presolving improvements in constraint handlers
    5348 - improved dual-presolving for setppc constraints in special cases
    5349
    5350- Constraints:
    5351 - major improvements in pseudo-boolean constraint handler
    5352 - performance improvement in domain propagation by marking constraints for propagation
    5353 - added more constraint upgrading possibilities
    5354 - improved handling of initial constraints created during solving
    5355 - disabled scaling in feasibility check of nonlinear constraint handlers
    5356 - conflict consisting of exactly two binary variables will be handled as set-packing constraint instead of an logicor
    5357 constraint and the corresponding clique information is globally added
    5358 - fasten repropagation for set-packing and -partitioning constraints
    5359 - improved merging of and-constraints
    5360 - disabled multi-aggregation in linear constraint handler when coefficients differ too much
    5361 - improved multi-aggregation in linear constraint handler when only one variable in the aggregation has infinity
    5362 contribution
    5363 - added upgradability for implicit binary variable cases for linear constraints
    5364
    5365Examples and applications
    5366-------------------------
    5367
    5368- new textbook Gomory mixed integer cuts example
    5369
    5370Interface changes
    5371-----------------
    5372
    5373- removed all message length parameters in message.c and for printing error messages (not needed anymore)
    5374
    5375### New and changed callbacks
    5376
    5377- Domain Propagation:
    5378 - added parameter `nmarkedconss` to SCIP_DECL_CONSPROP() callback which gives the number of constraints marked
    5379 for propagation (these constraints are listed first in the conss array given as parameter).
    5380
    5381- Primal Heuristics:
    5382 - Added parameter `nodeinfeasible` to SCIP_DECL_HEUREXEC() callback which states whether the current subproblem was
    5383 already detected to be infeasible. In this case, the current LP solution might not respect local bounds and the
    5384 heuristic must not assume that it does.
    5385
    5386- Variable Pricers:
    5387 - Added parameter `stopearly` to callback method SCIP_DECL_PRICERREDCOST(). This boolean pointer should be used by the pricer
    5388 to state whether early branching should be performed, even if new variables were added in the current pricing round.
    5389
    5390- Branching Rules:
    5391 - new possible return value `SCIP_DIDNOTFIND` for SCIP_DECL_BRANCHEXECLP(), SCIP_DECL_BRANCHEXECPS(), and
    5392 SCIP_DECL_BRANCHEXECEXT() callbacks to state that the branching rule searched, but did not find a branching.
    5393
    5394### Deleted and changed API functions
    5395
    5396- SCIPcalcMIR() takes an additional parameter sidetypes to determine which side of the rows to use
    5397 (relevant for ranged rows)
    5398- SCIPvarParseOriginal() and SCIPvarParseTransformed() now return the end of the parsed string
    5399- SCIPgetConsCopy() now always captures the created constraint
    5400
    5401- Branching:
    5402 - Added parameter `nfracimplvars` to SCIPgetLPBranchCands()
    5403 - SCIPgetLPBranchCands() can be used to retrieve the number of implicit integer variables with fractional LP solution
    5404 value via an additional pointer; the corresponding implicit integer variables can be accessed together with their
    5405 fractionalities and solution values in the same way as binary and integer variables before; the arrays are sorted such
    5406 that binary and integer variables precede the implicit integer variables; the method SCIPbranchcandGetLPCands()
    5407 has been modified in the same way
    5408
    5409- LP and Cutting Planes:
    5410 - Added parameter `sidetypes` to SCIPcalcMIR() to specify the specify row side type to be used.
    5411 - Added parameter `cutrank` to SCIPcalcMIR() and SCIPcalcStrongCG() which stores the rank of the returned cut;
    5412 via SCIProwChgRank() the rank of a cut can be changed (default rank is 0)
    5413 - Added parameter `infeasible` to SCIPaddCut() which is a pointer to store whether the cut is infeasible for the
    5414 local bounds.
    5415 - SCIPgetLPObjval() now returns the LP value of the current (suboptimal) basis if the iteration limit is hit during LP
    5416 solving (instead of -infinity); this value is not necessarily a valid dual bound and must not be used as such, but can
    5417 be used as an objective estimate, e.g., if strong branching is simulated using the probing mode
    5418 - removed parameter `normtype` from function SCIPcomputeLPRelIntPoint()
    5419
    5420- Misc:
    5421 - Added parameter `lazyconss` to SCIPwriteMIP() to swith writing removable rows as lazy constraints.
    5422 - Added parameter `enablepropagation` to SCIPstartStrongbranch(), which can be used to enable strong branching
    5423 with domain propagation.
    5424 - SCIPstartStrongbranch() has a new parameter `propagate` to enable or disable propagation support for strong branching
    5425 - New method SCIPgetVarStrongbranchWithPropagation() which performs strong branching with propagation on a variable.
    5426 - Added parameter `endptr` to SCIPparseVar() which stores the final string position after parsing.
    5427
    5428### New API functions
    5429
    5430- added SCIPdebugCheckConss() to the debugging mechanism and therefore created a `SCIP_SOL` (in original space) in debug.c
    5431- before copying solutions to the original solution candidate storage, infinite solution values can now be removed using SCIPcreateFiniteSolCopy()
    5432- SCIPsortLongPtrRealBool(), SCIPsortLongPtrRealRealBool(), SCIPsortLongPtrRealRealIntBool() and corresponding
    5433 methods for sorting, insertion and deletion
    5434- SCIPstoreSolutionGap() in scip.c, to store the gap when the first and last solution is found
    5435- SCIPwriteCliqueGraph() which allows to write a graph with node weights for fractional variables
    5436
    5437- Separation:
    5438 - SCIPconshdlrIncNCutsFound(), SCIPsepaIncNCutsFound() and SCIPsepaIncNCutsFoundAtNode() to increase the number of found cuts
    5439 - SCIPseparateSolCutpool() to separate a cutpool w.r.t. a given solution
    5440
    5441- Constraint Handlers:
    5442 - New method SCIPconshdlrGetStrongBranchPropTime() which returns the time used for domain propagation methods
    5443 of the constraint handler during strong branching.
    5444 - New method SCIPconsIsMarkedPropagate() which returns whether a constraint is marked for propagation.
    5445 - New methods SCIPconsAddUpgradeLocks() and SCIPconsGetNUpgradeLocks() to increase or get the number of upgrade
    5446 locks of a constraint.
    5447 - New method SCIPgetNCheckConss() which returns the number of checked constraints.
    5448
    5449- Data structures:
    5450 - New methods SCIPsparseSolGetFirstSol() and SCIPsparseSolGetNextSol() to get the first sparse solution
    5451 or iterate over the sparse solutions, respectively.
    5452 - New methods for the `SCIP_QUEUE` data structure in pub_misc.h to handle a (circular) queue, e.g., SCIPqueueCreate(),
    5453 SCIPqueueFree(), SCIPqueueInsert(), SCIPqueueRemove(), SCIPqueueFirst(), SCIPqueueIsEmpty(), SCIPqueueNElems()
    5454 - New method SCIPgmlWriteNodeWeight() to write a node section including weight to a .gml graph file.
    5455 - New methods for hash tables: SCIPhashtableRemoveAll(), SCIPhashtableGetNElements(), SCIPhashtableGetLoad()
    5456 - New methods in pub_misc.h to handle a resource activity, e.g., SCIPactivityCreate(), SCIPactivityFree(),
    5457 SCIPactivityGetVar(), SCIPactivityGetDemand() ...
    5458 - New methods for digraphs: SCIPdigraphResize() to resize the graph and SCIPdigraphSetNodeDatas() and
    5459 SCIPdigraphGetNodeDatas() to set and get the data attached to the nodes.
    5460
    5461- Domain Propagation:
    5462 - New method SCIPpropGetStrongBranchPropTime() which returns the time spent by a domain propagator during strong branching.
    5463 - New methods SCIPmarkConsPropagate() and SCIPunmarkConsPropagate() to (un)mark a constraint for propagation.
    5464
    5465- LP and Cutting Planes:
    5466 - New methods SCIPchgRowLhsDive() and SCIPchgRowRhsDive() to change left and right hand side of a row during diving.
    5467 - Added parameter `cutoff` to SCIPsolveDiveLP(), SCIPsolveProbingLP(), and SCIPsolveProbingLPWithPricing()
    5468 which is a pointer to store whether the diving/probing LP was infeasible or the objective limit was reached.
    5469 - SCIPgetFirstLP{Dual/Lower}boundRoot() which return the value of the first LP solved at the root node
    5470 - SCIPgetNRootFirstLPIterations() which returns the number of LP iterations for the first LP solved at the root node
    5471 - SCIPlpiGetNorms(), SCIPlpiSetNorms() and SCIPlpiFreeNorms() for getting the LP pricing norms from the LP
    5472 solver, loading them back into the solver and freeing the data
    5473 - New method SCIPgetFirstLPTime() and SCIPgetNRootFirstLPIterations() to return time and iterations for the first LP solve
    5474 and SCIPgetFirstLPDualboundRoot() and SCIPgetFirstLPLowerboundRoot() to return the first root LP dual and lower bound.
    5475 - New method SCIPprintDualSol() which prints the dual solution for a pure LP (works only with preprocessing disabled).
    5476 - New method SCIPisCutApplicable() which returns whether a cut is good enough to be applied.
    5477
    5478- Message Handler:
    5479 - the main output routine of message.c (`bufferMessage` now handleMessage) has been rewritten: it now does not need
    5480 a copy of the string to be output anymore, which makes the code much simpler (and also faster); it is passed a
    5481 function pointer to the output function and uses it to directly output the (buffered) messages
    5482 - New generic messagehandler output callback method SCIP_DECL_MESSAGEOUTPUTFUNC().
    5483 - Removed parameter `msglength` from callback method SCIP_DECL_ERRORPRINTING().
    5484 - New method SCIPmessageVPrintError() to print an error message.
    5485 - Removed method SCIPmessagePrintWarningHeader().
    5486
    5487- Parameters:
    5488 - New method SCIPparamGetCharAllowedValues() to get the allowed values for a char parameter.
    5489 - New method SCIPgetParam() to get the parameter with a given name.
    5490
    5491- Variables:
    5492 - SCIPapplyProbingVar() in prop_probing.h
    5493 without deteriorating its objective value
    5494 - SCIPshrinkDisjunctiveVarSet(), which takes an set of variables with corresponding bounds and boundtypes, and
    5495 tries to derive global boundchanges and also to shorten this set of variables by using cliqe, implication and
    5496 variable bound information
    5497 - SCIPselectVarStrongBranching() to get the variable that fullstrongbranching would select
    5498 - New method SCIPvarGetValuehistory() to get the value-based history of a variable.
    5499
    5500- Misc:
    5501 - New method SCIPdoNotMultaggr() which returns whether multi-aggregation was disabled.
    5502 - New method SCIPcreateFiniteSolCopy() to create a copy of a solution with infinite fixings removed.
    5503 - New method SCIPadjustImplicitSolVals() which sets implicit integer variables to an integer value in the given
    5504 solution without deteriorating its objective value.
    5505 - New method SCIPcopyOrig() to copy the original problem. Analoguosly, use SCIPcopyOrigProb(), SCIPcopyOrigVars(),
    5506 and SCIPcopyOrigConss() to copy original problem data, variables, or constraints, respectively.
    5507 - New method SCIPwriteCliqueGraph() to write the clique graph in GML format into a given file
    5508 - New method SCIPaddOrigObjoffset() to add an offset to the objective function.
    5509 in original space and updates all orignal solutions correspondingly
    5510 - New method SCIPcopyImplicationsCliques() to copy implications and cliques to a copied SCIP instance.
    5511 - New method SCIPgetOpenNodesData() which returns all unprocessed nodes.
    5512 - Added parameter `endline` to SCIPprintDisplayLine() to switch printing a newline symbol at the end of the line.
    5513 - New method SCIPgetNLimSolsFound() returning the number of feasible primal solution respecting the objective limit.
    5514
    5515### Command line interface
    5516
    5517- allow dialog option to write clique graph
    5518- dual solution values can now be obtained in the interactive shell after solving a pure
    5519 LP without presolving
    5520
    5521### Interfaces to external software
    5522
    5523- new SoPlex 2.0 interface, can be enabled with `LPS=spx2`
    5524- add support for SOS1 and SOS2 constraints to AMPL interface (see `interfaces/check/testset/SOS/sos?a.mod` for example)
    5525- added copy of GAMS interface from COIN-OR/GAMSlinks project; GAMS-reader in SCIP can now read model instances from .gms files
    5526- beta version of a python interface for the scipoptsuite is now available under interfaces/python
    5527- beta version of a Java native interface is now available under `interfaces/jni`
    5528
    5529### Changed parameters
    5530
    5531- parameter `branching/scorefunction` has new value `q` for for `q`uotient branching score function
    5532- replaced parameter `lp/checkfeas` by two parameters `lp/checkprimfeas` and `lp/checkdualfeas` to decide on primal and dual
    5533 feasibility checks individually
    5534- removed all local parameters `reading/(READER)/dynamic{conss|cols|rows}` and replaced them by global parameters
    5535 `reading/dynamic{conss|cols|rows}`
    5536- changed default value of parameter `numerics/dualfeastol` to 1e-7 for safer dual bounds from LP solver
    5537- new possible values for parameter `heuristics/shiftandpropagate/sortkey` for sorting variables w.r.t. their norm,
    5538 default changed from `u` to `v`, which means sorting downwards by violations
    5539
    5540- Constraints:
    5541 - changed type of parameters `constraints/bivariate/scaling`, `constraints/quadratic/scaling`, `constraints/soc/scaling`
    5542 from boolean to character
    5543 - changed default for `constraints/{abspower,bivariate,nonlinear,quadratic,soc}/scaling` to off
    5544 - changed default max coefficient for big-M constraint to be initial from 1e6 to 1e9
    5545
    5546- Separation:
    5547 - changed default value of gomory cut separation parameter `separating/gomory/maxrank` from 0 to 3, to take also gomory
    5548 cuts that could not be scaled to integral coefficients, with maximal rank 3 into account
    5549 - remove parameter `separating/closecuts/relintnormtype`
    5550
    5551### New parameters
    5552
    5553- `branching/checksol` and `branching/heursbsol` to specify whether the strong branching LP solution
    5554 should be checked for feasibility and whether a simple rounding heuristic should be run on this solution
    5555- `branching/firstsbchild` and `branching/forceall` to specify the first child node to be
    5556 investigated during strong branching (`u`p, `d`down, `a`uto) and whether always both children should be solved (only for
    5557 strong branching with domain propagation, per default, the second child is not looked at when the first is infeasible)
    5558- `conflict/fullshortenconflict` to decide whether we want to stop shortening a conflict set, when no
    5559 global bound changes can be found anymore
    5560- `conflict/maxvarsdetectimpliedbounds` to decide whether the a valid conflict of what maximal length
    5561 will be used to derive global bound changes
    5562- `constraints/{linear,knapsack}/detectcutoffbound` and `constraints/{linear,knapsack}/detectlowerbound`
    5563 to enable/disable detection of constraint parallel to the objective function that will add an cutoffbound or an
    5564 lowerbound respectively and these constraints will be prevented from entering the LP
    5565- `constraints/and/upgraderesultant` to upgrade resultants of and constraints from binary to implicit binary variables, default is TRUE
    5566- `constraints/abspower/scaling` and `constraints/nonlinear/scaling`
    5567- `constraints/indicator/scaleslackvar` for scaling of the slack variable in indicator constraints
    5568- `constraints/indicator/trysolfromcover` for trying to construct a feasible solution from a cover
    5569- `constraints/linear/checkrelmaxabs` for checking linear constraints with a side of 0.0 relative to
    5570- `constraints/linear/detectpartialobjective` to enable/disable the detection of sub-equations of the objective function
    5571- `constraints/logicor/strengthen`, should pairwise constraint comparison try to strengthen constraints by removing superflous non-zeros?
    5572- `constraints/xor/addextendedform` to add an extended formulation in XOR-constraints
    5573- `constraints/xor/addflowextended` to add use the extended flow formulation in XOR-constraints
    5574- `heuristics/<heurname>/lplimfac` for LNS heuristics to limit the number of LPs solved in a subproblem
    5575 the maximum absolute value in the activity instead of 1.0
    5576- `heuristics/shiftandpropagate/fixbinlocks` for fixing binary variables with no locks in one direction to the corresponding bound
    5577- `heuristics/shiftandpropagate/collectstats` which decides whether variable statistics are collected
    5578- `heuristics/shiftandpropagate/impliscontinuous` to decide whether implicit integer variables are treated as continuous variables
    5579- `heuristics/shiftandpropagate/preferbinaries` and `heuristics/shiftandpropagate/stopafterfeasible`,
    5580 which decide whether binaries should be shifted first and the shifting should be stopped when no violations are left
    5581- `lp/disablecutoff` to toggle usage of LP cutoff bound (0: enabled, 1: disabled, 2: auto = disabled if pricers are used)
    5582- `misc/calcintegral` (default TRUE) to trigger calculation of primal-dual integral
    5583- `misc/finitesolutionstore` to switch whether infinite fixings should be removed from solutions before
    5584 copying them to the original solution store
    5585- `misc/permuteconss` and `misc/permutevars` to control whether variables and/or constraints should be permuted, if permutationseed != -1
    5586- `presolving/components/feastolfactor` to increase the feasibility tolerance in all sub-SCIPs, when solving a component
    5587- `propagating/obbt/conditionlimit` to discard instable LP bases
    5588- `reading/(READER)/initialconss` that determines whether model constraints are initial
    5589- `reading/cipreader/writefixedvars` for disabling printing of fixed variables in CIP format
    5590- `reading/lpreader/aggrlinearization-ands` and `reading/mpsreader/aggrlinearization-ands` to enable/disable
    5591 the printing of the weak or strict relaxation of and-constraints in LP and MPS format, respectively
    5592- `reading/lpreader/linearize-and-constraints` and `reading/mpsreader/linearize-and-constraints` to
    5593 allow and-constraints to be linearized when printing in LP and MPS format, respectively
    5594- `separating/feastolfac` to allow dynamic decrease of relaxation feasibility tolerance depending on feasibility to applied cuts,
    5595 i.e., allow relaxation solutions to have a primal infeasibility of at most this factor times the infeasibility of applied cuts
    5596- `separating/gomory/sidetypebasis` to decide whether the sides of ranged rows should be determined from the basis status
    5597- `separating/oddcycle/cutthreshold` to run odd cycle separation if not enough cuts have been found
    5598- `separating/zerohalf/delayedcuts` to use the delayed cutpool for the zerohalf separator
    5599- `write/allconss` to enable that all constraints are written
    5600- `write/genericnamesoffset` when writing a generic problem to define an offset on the variable numbering
    5601
    5602### Data structures
    5603
    5604- New structure to store value-based branching and inference history (see pub_history.h).
    5605- new data structure for (circular) queues (`SCIP_QUEUE`)
    5606- hash tables will now increase dynamically
    5607- Moved LP solver interfaces to subdirectory `src/lpi`.
    5608
    5609Testing
    5610-------
    5611
    5612- added McNemar tests and Wilcoxon signed rank tests to cmpres.awk evaluation scripts
    5613- added passing MEM option of testgams(cluster) target as workspace option to GAMS jobs
    5614- extended test scripts by statistical tests
    5615
    5616Build system
    5617------------
    5618
    5619### Makefile
    5620
    5621- default flag for ZIMPL is now `auto`, which means that it is built if and only if GMP is available (GMP=true)
    5622- fixed make install for older Mac systems where install command does not have option -t
    5623- dropped support for Ipopt < 3.10
    5624
    5625Fixed bugs
    5626----------
    5627
    5628- fixed bug when adding (global) clique, implications or variable bound information in solving stage that lead to
    5629 global bound changes which contradict local bounds and therefore need to be stored as pending bound changes
    5630- unlinking a solution now copies solution values smaller than SCIPepsilon() avoiding some feasible solution in the
    5631 transformed problem to be infeasible in the original problem
    5632- fixed bug when flushing the warning buffer when SCIP is closed
    5633- fixed bug when a bound change contradicts a local bound and is stored as pending, but the contradicting local
    5634 bound becomes global afterwards (--> node where pending bound change is valid can be cut off)
    5635- fixed statistics bug: externally given solutions and new solutions found while transforming existing ones
    5636 are now listed in line `other solutions` of primal heuristics statistics
    5637- fixed bug in random generators SCIPgetRandomInt() and SCIPgetRandomReal() for large intervals
    5638- make sure that bound changes of negated original variables are correct
    5639
    5640- Branching:
    5641 - fixed bug w.r.t. changing the variable branching priority beyond the problem stage
    5642 - allow again branching on continuous variables with huge bounds
    5643
    5644- Separation:
    5645 - fixed bug in sepa_cgmip computeObjWeightSize() w.r.t. equal sized rows
    5646 - fixed wrong bound calculation in sepa_rapidlearning
    5647 - fixed bug in flowcover separator to exclude unconstrained rows in aggregation
    5648
    5649- LP and Interfaces:
    5650 - fixed bug that lead to resolving the LP after diving instead of restoring the buffered solution
    5651 - fixed rare bug with conflict analysis and LP/LPI having different states after diving
    5652 - fixed several bugs in lpi_grb
    5653 - fixed wrong strong branching results in lpi_grb.c and an invalid write
    5654 - fixed bug in handling max-function in ampl interface; added support for min-function
    5655
    5656- Presolving:
    5657 - fixed bug in prop_dualfix w.r.t. to fixing of variables to infinity after presolving
    5658 - fixed wrong presolving finished status which sometimes occurred when the time limit was hit during presolve
    5659 - fixed bug where a limit on presolving rounds was exceeded by 1
    5660 - fixed minor bugs in presolving in cons_setppc.c and cons_logicor.c
    5661 - fixed minor bug in cons_linear w.r.t. disabled presolving
    5662
    5663- Propagators:
    5664 - fixed bug in genvbounds propagator occurring when objective offset or scale changes after a restart
    5665 - fixed bug in genvbounds propagator by replacing non-active variables on right-hand side after presolving
    5666
    5667- Readers:
    5668 - fixed memory bug in reader_mps
    5669 - fixed several minor bugs with handling of memory when writing aggregated variables (reader_lp, reader_mps)
    5670 - fixed bug in reader_lp when writing bilinear terms (product sign was missing)
    5671 - fixed bug in reading indicator constraints in mps-format
    5672 - nonlinear readers now create auxiliary objective variables and constraints always as initial and not removable
    5673 in order to avoid unbounded LPs due to loose variables with infinite best bound
    5674
    5675- Constraints:
    5676 - fixed several bugs where variables or constraints were not freed correctly
    5677 - do not multi-aggregate variables if the constant would be a huge value in order to avoid numerical troubles
    5678 - fixed bug with infinite multi-aggregation constants
    5679 - fixed output of aggregated variables in indicator constraints in lp and mps-format
    5680 - improved handling of initial constraints: constraints which are initial, but added during the search to an already
    5681 treated node are kept and added to the LP at every node where they are active
    5682 - fixed bug in cons_superindicator concerning names of upgraded constraints
    5683 - fixed bug in cons_indicator with trying to create solution in problem stage
    5684 - fixed bug in cons_orbitope with fixing upper right triangle in non-root nodes
    5685
    5686Miscellaneous
    5687-------------
    5688
    5689- new SCIP Optimization Suite homepages
    5690
    5691@page RN3_0 Release notes for SCIP 3.0
    5692
    5693@section RN302 SCIP 3.0.2
    5694*************************
    5695
    5696Features
    5697--------
    5698
    5699- reading erroneous CIP files can now output some indication of syntax errors
    5700- can now run splint on core files
    5701- cons_xor now uses the integral variable in propagation
    5702- allowed to switch on/off the solution debugging
    5703
    5704Performance improvements
    5705------------------------
    5706
    5707- improved SCIPlpiAdd{Cols,Rows}() in SoPlex LPi
    5708
    5709Examples and applications
    5710-------------------------
    5711
    5712Interface changes
    5713-----------------
    5714
    5715### New API functions
    5716
    5717- SCIPmarkColNotRemovableLocal() and SCIPmarkRowNotRemovableLocal() to forbid removal of an column/row
    5718 from the LP in the current node
    5719- SCIPmessageVPrintError()
    5720
    5721### Command line interface
    5722
    5723- can now output the solutions in the solution pool in the interactive shell
    5724
    5725### Interfaces to external software
    5726
    5727- updated Mosek LP interface to compile with Mosek 7
    5728
    5729Fixed bugs
    5730----------
    5731
    5732- fixed bugs in solution counting
    5733- fixed fieldtypes in sorting template
    5734- fixed bug concerning the userinterrupt flag, which was not reset
    5735- fixed solution collection when counting solutions
    5736- fixed bug with storing original solutions
    5737- fixed bug with infinite multi-aggregation constants
    5738- fixed bug that removing reverse implication did not reset closestvblpcount
    5739- fixed bug that duplicate solutions stopped copying of solutions to original solution candidate store
    5740- forbid branching on variables with huge bounds; such huge values cannot be enumerated with fixed precision
    5741 floating point arithmetics
    5742- fixed bug that Ipopt's error message was not fully shown due to exiting before the message handler buffer was emptied
    5743- unlinking a solution now copies solution values smaller than SCIPepsilon() avoiding some feasible solution in the
    5744 transformed problem to be infeasible in the original problem
    5745- allow to add columns (rows) with nonzero indices beyond current number of rows (columns) in SoPlex LPi
    5746- updated get.ASL script to cope with broken ftp access to netlib server
    5747
    5748- Memory:
    5749 - fixed bugs with freeing C++ object data for problem and variables
    5750 - fixed memory leak in lp.c (probably never occurred so far since array was not used)
    5751 - fixed bug in sepa_zerohalf.c where the maxcuts(root) parameters led to an invalid memory allocation call
    5752
    5753- LP:
    5754 - fixed assert in solve.c with branched status and LP reached the objective limit
    5755 - fixed bug in heur_oneopt.c and heur_clique.c which was caused by side-effects when calling SCIPconstructLP(); when
    5756 adding new variables in this method (e.g. adding new variables needed for a relaxation), this changes the variables
    5757 array of SCIP
    5758 - fixed problem that diving did not save status for infeasible LPs
    5759 - fixed bug in SCIPlpComputeRelIntPoint() with wrong iteration limit and with wrong recompution
    5760 - fixed bug that old LP size was not updated for deadend if no LP was solved
    5761
    5762- Expressions:
    5763 - fixed issues with ungraceful termination when encountering unsupported expression operands in AMPL interface
    5764 - fixed bug in backward propagation of linear expressions in expression graph
    5765
    5766- Propagation:
    5767 - fixed potential performance issue with tree depth always assumed to be zero when propagating in probing mode
    5768 - fixed bug in prop_vbound w.r.t. creation of variables during the search
    5769 - fixed several bugs in propagation of cons_xor: need to take integral variables into account
    5770 - fixed bug in cons_abspower.c handling infinity values in propagation
    5771 - fixed bug in cons_and.c when a constraint was not correctly propagated which led to wrong dual-presolve reductions
    5772 - fixed bug in cons_abspower: wrong infinity check when propagating bounds
    5773
    5774- Presolving:
    5775 - fixed bug that the number aggregated variables were not counted in presol_inttobinary.c
    5776 - fixed bug in presol_domcol: locks are now checked to see whether rounding was forbidden for a variable
    5777
    5778- Reader:
    5779 - fixed bug in reader_gms.c w.r.t. writing nonlinear expressions with polynomials with constants
    5780 - fixed bugs in parsing bounds from CIP-files, in reader_gms and AMPL interface
    5781 - fixed bug when reading a mps formated file with a missing bound in the bound section
    5782
    5783- Constraints:
    5784 - fixed bug in cons_bounddisjunction with satisfied literal of multi-aggregated variable
    5785 - fixed bug in upgrade method of cons_soc
    5786 - fixed issue with negated variables in cons_xor.c
    5787 - fixed several asserts in cons_xor presolving
    5788 - fixed bug in cons_xor.c calling method on null pointer row
    5789 - fixed bug using a too hard comparison on the objective-infeasible-decision in constraint enforcement
    5790 - fixed possible cycling in enforcement of nonlinear constraints due to too early removal of newly added cuts from LP
    5791 - fixed bug wrongly removing constraints locally while counting
    5792 - fixed bugs in cons_bivariate.c when the nonlinear function is not differentiable on the boundary of the domain
    5793 - fixed bug in cons_indicator.c:SCIPmakeIndicatorFeasible() with handling fixed variables
    5794 - fixed bug in cons_integral: check integrality of implicit integer variables when a solution is checked for feasibility
    5795 - fixed bug in Undercover with `pseudo-`quadratic constraints
    5796 - fixed bug with quadratic constraints not being upgraded
    5797 - fixed bug in intervalarith.c: bivariate quad. equations may have been solved wrongly if second variable is unbounded
    5798
    5799- Separation:
    5800 - fixed bug in sepa_zerohalf.c not copying the displays to the subscip, but still changing a display parameter there
    5801 - fixed iteration limit determination in sepa_closecuts
    5802 - fixed bug in sepa_closecuts: need to make sure that variable values of separation point satisfy bounds
    5803 - fixed bugs in sepa_oddcylce: number of arcs have to be adjusted, handle implicit binary variables,
    5804 fixed bug in heuristic separation method, fixed asserts
    5805 - fixed wrong bound calculation in sepa_rapidlearning
    5806
    5807@section RN301 SCIP 3.0.1
    5808*************************
    5809
    5810Features
    5811--------
    5812
    5813- added delayed cutpool which only gets separated if the sepastore is empty after a separation round
    5814- sepa_cgmip can now take the objective row into account
    5815- added possibility to run clang compiler
    5816- statistics now include output on number of solutions that respect objective limit
    5817
    5818Performance improvements
    5819------------------------
    5820
    5821- also copying active tight cuts from the delayed cut pool when calling SCIPcopyCuts()
    5822- sort genvbounds only when root node is finished; apply more often
    5823
    5824Examples and applications
    5825-------------------------
    5826
    5827Interface changes
    5828-----------------
    5829
    5830- when using an objective limit, heuristic characters are not displayed any longer for worse solutions
    5831
    5832### Deleted and changed API functions
    5833
    5834- fixed spelling in the method name SCIPgmlWriteClosing()
    5835
    5836### New API functions
    5837
    5838- SCIPgetNLimSolsFound() to get number of solutions that respect the objective limit
    5839
    5840Fixed bugs
    5841----------
    5842
    5843- fixed issue with applying the effective root depth during the search
    5844- fixed bug concerning usage of dualbound and lowerbound
    5845- fixed bug trying to color probing nodes, which are not added to the vbc output anymore
    5846- fixed bug in sorting template
    5847- fixed bug leading to removing a ranged row parallel to the objective function, although one of the sides was still needed
    5848- fixed a bug correcting the binvarssorted flag in cons_linear.c
    5849- fixed bug in cons_varbound.c not resolving multi-aggregated variables
    5850- relaxed assert in SCIPvarCh{Lb,Ub}{Global,Local} that new bound must be tighter to feastol
    5851- fixed contra-intuitive behavior when using SCIP with objective limits and solution limit at the same time;
    5852 SCIP now only stops when sufficiently many solutions better than the objective limit have been found
    5853- fixed bug when adding binary implications with non-vartype binary variables
    5854- fixed bug adding binary implications on binary variables with type != `SCIP_VARTYPE_BINARY`
    5855- fixed bug concerning different tolerances for reached objective limit in case of pricing with fastmip
    5856
    5857- LP:
    5858 - fixed bug which disabled iteration limit in SCIPlpSolveAndEval()
    5859 - ensure consistency of LP bounds during OBBT diving, i.e., that lower <= upper holds exactly
    5860 - set lpsolstat to `SCIP_LPSOLSTAT_NOTSOLVED` in SCIPchg{Lp,Dual}feastol()
    5861 - use tighter dual feasibility tolerance for LPs solved during optimization-based bound tightening
    5862 - fixed bug with unflushed LP arising from global bound changes in strong branching
    5863
    5864- Constraints:
    5865 - fixed issue with deleting varbound constraints in case the bound change was not applied
    5866 - fixed bugs in parsing dis-/conjunctive constraints
    5867 - fixed bug with handling of empty logicor and bounddisjunction constraints
    5868 - fixed issue in cumulative constraint and separation
    5869 - fixed bug when sorting knapsack constraints with the same weights
    5870 - fixed bug resulting in trying to delete an upgraded linear constraint a second time in exitpre callback
    5871 - fixed minor bug in conjunctive constraint handler printing wrong constraint
    5872 - fixed bug in disjunctive constraint handler when enforcing a constraint
    5873 - fixed behaviour change of indicator constraint handler when solving another instance after solving one using the
    5874 interactive shell
    5875 - fixed several issues in cumulative constraint handler
    5876 - fixed bug in cumulative constraint handler w.r.t. getting active variables
    5877 - fixed bug in cumulative constraint handler concerning conflict analysis
    5878
    5879- LPI and Interfaces:
    5880 - fixed bug in CppAD in connection with abspower constraints
    5881 - fixed bug in CppAD when using signpower functions with expression pointers that do not fit into an unsigned int
    5882 - better handling of generalized (Lagrangian) variable bounds that are not in the LPI
    5883 - fixed wrong basis rstat values in CPLEX LPI
    5884 - fixed bug with LP not being flushed after bound changes on columns that are not in the LPI
    5885 - methods SCIPlpiIs{PrimalFeasible,DualFeasible,DualUnbounded}() in SoPlex LPi now check that the LP is not perturbed,
    5886 which may happen when stopping due to iteration or time limit
    5887 - fixed inconsistencies between methods SCIPlpiIs{PrimalFeasible,DualFeasible,Optimal,...} in SoPlex LPi
    5888
    5889- Propagation:
    5890 - fixed bug when adding linear constraints with non active variables in solving process, during propagation this
    5891 resulted in changing the row, which is not possible for unmodifiable constraints/locked rows
    5892 - fixed small issue in pseudo objective propagator w.r.t. propagating the lower bound globally
    5893 - fixed bug in cons_orbitope: in rare cases one cannot repropagate
    5894 - fixed bug of wrong result code in propagation in prop_genvbound.c
    5895
    5896- Presolve:
    5897 - fixed bug in copying nonlinear constraints during presolve (resulted
    5898 in wrongly declaring instances as infeasible when using component presolve)
    5899 - fixed bug in copying nonlinear constraints during presolve (nonlinear part was not copied)
    5900
    5901- Heuristics:
    5902 - fixed wrong solving status (OPTIMAL) in case an unbounded solution was provided or found by heuristic before presolve
    5903 - fixed bug in heur_subnlp running with tightened tolerances: sumepsilon must be tightened like feastol and epsilon
    5904 - fixed bug in nlp diving heuristic for fractional variables with values slightly outside of their domain
    5905
    5906- Numerics:
    5907 - fixed several numeric issues
    5908 - fixed numerical bug in conflict.c relaxing bounds while keeping an infeasibility proof
    5909 - fixed feasibility decision bug when replacing inactive variables by their active counterparts, which might change the
    5910 redundancy status of a bounddisjunction constraint due to numerics
    5911 - fixed numerical bug adding a relaxed bound for conflict analysis in cons_varbound
    5912 - fixed numerical bug in conflict analysis of genvbounds propagator
    5913
    5914@section RN300 SCIP 3.0.0
    5915*************************
    5916
    5917Features
    5918--------
    5919
    5920- SCIPcomputeLPRelIntPoint() with normtype=`s` now uses homogenized LP for computing rel.int. point too and allow to
    5921 set relaxrows = FALSE
    5922- new column showing the pseudo objective value
    5923- digraph structure added to misc.c and pub_misc.h that can be used to handle directed graphs, compute undirected
    5924 components in the graph and sort these components (almost) topologically
    5925- SCIP does now print an info message when the root LP could not be solved or is unbounded
    5926- added counter and clock for SCIPcopy() calls
    5927- correct initialization of steepest edge weights with SoPlex 1.6.0.4
    5928- parameters can now be fixed, which means that their value cannot be changed unless they are unfixed, first;
    5929 the fixing status of a parameter is copied to sub-SCIPs, which allows to ensure that certain parameters
    5930 are also not changed when, e.g., heuristics change emphasis settings or also specific parameters
    5931- automatic transfer of original solutions (e.g., provided by the user, from solution pool, after restart, from heuristic
    5932 adding original solution during solve) to the transformed space (might fail due to, e.g., dual fixings)
    5933- added possibility to use GUBs for lifting knapsack cuts (disabled)
    5934- added pre- and post-conditions in doxygen documentation for all methods of scip.{c,h}
    5935- added zeroobj heuristic that solves a copy of the problem without an objective function and with quite strict limits
    5936 on the number of nodes and LP iterations
    5937- complete reworking of the vbounds propagator: it now takes into account variable bounds, cliques and implications,
    5938 stores bounds of variables which were changed and performs a forward propagation from these bounds, i.e., tries to
    5939 derive new bounds for other variables; during propagation, bound changes are propagated in an (almost) topological order
    5940
    5941- Constraints:
    5942 - full version of cumulative constraint handler
    5943 - new constraint handler `superindicator` for indicator constraints with slack constraints of arbitrary type
    5944 - implemented first clique lifting procedure in cons_setppc.c (by default is off)
    5945 - the conjunction and disjunction constraint handlers are now able to parse their CIP output format
    5946
    5947- Memory:
    5948 - better handling of memory limits, in particular for large problems
    5949 - estimate memory consumption for sub-SCIP and do not copy them if close to memory limit
    5950
    5951- Presolve:
    5952 - time for initpre and exitpre methods is now also measured in presolving time
    5953 - added dual presolving for and-constraints difficult instances (no guarantees)
    5954 - oneopt can now be called before presolving
    5955 - added a presolving step in the disjunctive constraint handler, removing disjunction, where a sub-constraint was
    5956 deleted, which means this sub-constraint is redundant, which again means it is always TRUE or will be enforced by
    5957 another constraint
    5958 - added new presolver convertinttobin, which converts bounded integer variables to their binary representation, e.g.
    5959 for integer variable 0 <= x <= 10 the binary variables y0, y1, y2 and y3 are created, such that
    5960 1 y0 + 2 y1 + 4 y2 + 8 y3 <= 10 and x = 1 y0 + 2 y1 + 4 y2 + 8 y3
    5961 - added new presolver gateextraction, which tries to find and-gates/constraints which are linearized
    5962 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
    5963 constraints e.g. (x + y + z >= 1, x + y <= 1, x + z <= 1 and y + z <= 1 => x + y + z == 1));
    5964 gate-extractor is also able to detect logicor constraints and set-packing/-partitioning constraints with the same
    5965 variables, to upgrade these both constraints to a set-partitioning constraint
    5966 - added new presolver components, that searches for independent components in the problem structure and solves
    5967 these components as sub-SCIPs when they are small enough (per default <= 20 discrete variables, nodelimit of 10000)
    5968 - added new presolver domcol that looks for dominated columns in a MIP and tries to fix them
    5969
    5970- Reader:
    5971 - CNF reader now creates feasibility instances per default, usage of an objective has to be set by a parameter
    5972 - added reader for MI(NL)Ps in OSiL (Optimization Services Instance Language) format
    5973
    5974- Statistic:
    5975 - new statistics and new statistic output messages
    5976 - number of presolving calls of plugins is counted and displayed in the statistics,
    5977 can be accessed via SCIPpresolGetNCalls() and SCIP{prop/conshdlr}getNPresolCalls()
    5978 - the statistics shows for a branching rule the number of calls for LP, extern and pseudo candidates
    5979 - new switch `SCIP_STATISTIC` and new macros SCIPstatisticMessage(), SCIPstatisticPrintf() and SCIPstatistic() to output
    5980 statistic and execute code lines which are only needed therefor. Works as `SCIP_DEBUG` and SCIPdebugXyz()
    5981 - added statistics on the number of cuts/rows that have actually been applied to the lp for each constraint handler and separator;
    5982 use SCIPcreate(Empty)RowCons() and SCIPcreate(Empty)RowSepa() to support the statistics.
    5983
    5984- NLP:
    5985 - new propagators obbt and genvbounds for MINLP
    5986 - new NLPI parameter `SCIP_NLPPAR_FASTFAIL` to enable convergence checks in NLP solver to stop early on seemingly
    5987 - added nlpdiving heuristic that comprises several diving heuristics using an NLP relaxation
    5988
    5989Performance improvements
    5990------------------------
    5991
    5992- improved scaling by choosing the smallest scaler
    5993- if first root lp is solved and the optimality is rejected by SCIP, there won't be an unnecessary solving of the lp
    5994 from scratch again
    5995- several performance improvements for Pseudo-Boolean optimization, pseudo objective propagator
    5996- streamlined initlp functions in cons_indicator, cons_sos1, cons_sos2 (add rows only if needed)
    5997- improved time used for adding implications
    5998- speed up in SCIPboolarrayExtend() in misc.c replacing a for loop with BMSmoveMemoryArray() call
    5999- speed up in var.c changing some recursive calls into iterative calls and reducing the number of VARFIX event that are
    6000 thrown for fixation, aggregation or multi-aggregations
    6001- revised reduced cost propagator
    6002- increased performance in SCIPcliqueAddVar(), adding a variable to a clique
    6003- tighten primal and dual feasibility tolerances independently if they are not reached in LP solving
    6004
    6005- Probing:
    6006 - if probing reached the end of all variables it will restart the probing cycle correctly
    6007 - improved probing by ordering the variables differently and applying the one-branch before the zero-branch
    6008
    6009- Constraints:
    6010 - improved scaling of linear constraints, linear constraints with integral variables will now be scale with
    6011 1e+06/MAX(maximal absolute coefficient, 1.0) instead of 1e+03/MAX(maximal absolute coefficient, 1.0);
    6012 if all coefficients are in absolute value equal they will be scaled by that
    6013 - added clique presolving for and-constraints, which checks if two operands or one operand and the resultant are in a
    6014 clique and then fixes the resultant to 0 and in the former case we can delete the and-constraint too
    6015 - speed up in linear constraint handler replacing aggregated variables
    6016 - when all nonlinearities have been fixed and the number of nonfixed variables is 1 in cons_nonlinear/cons_quadratic/
    6017 cons_bivariate, handle it by a bound change instead of adding a linear constraint
    6018
    6019- Separation:
    6020 - automatically turn off separation in sepa_oddcycle if it was too unsuccessful within the last calls
    6021 - use faster Dijkstra variants in sepa_oddcycle
    6022 - improved tcliquegraphAddImplicsVars() in sepa_clique.c to faster add possible variables
    6023 - changed emphasis settings: knapsack disaggregation is now allowed in fast presolving, CG-MIP separator disabled in
    6024 aggressive separation
    6025
    6026- Reader:
    6027 - improved lp-, mps-, opb-reading time
    6028 - speed up mps reader asking parameters only once
    6029
    6030- Heuristics:
    6031 - added parameters mincoveredrel and mincoveredabs to heur_undercover to only run if problem is sufficiently nonlinear
    6032 - improved intdiving heuristic by activating backtracking to a different fixing value
    6033 - heur_undercover treats indicator constraints as nonlinear and fixes the binary variable for linearization
    6034
    6035Examples and applications
    6036-------------------------
    6037
    6038- new examples for scheduling and usage of the callable library with nonlinear problems
    6039- the error messages are not handled via the message handler anymore; per default the error message a written to stderr
    6040
    6041Interface changes
    6042-----------------
    6043
    6044- introduced basic inclusion and creation methods to simplify usage of the SCIP library
    6045- allowed to start diving mode even if LP is not flushed, not solved, or not solved to optimality
    6046- changed the message handler system within SCIP heavily such that it is thread save
    6047- the resolve propagation methods for the constraint handler and propagator getting a new parameter called relaxedbd;
    6048 explaining/resolving this relaxed bound is sufficient
    6049- default integer comparer SCIPsortCompInt() (see pub_misc.h)
    6050
    6051- LP interface:
    6052 - SoPlex LPI supports setting of `SCIP_LPPAR_DUALFEASTOL` when using SoPlex version 1.6.0.5 and higher.
    6053
    6054- Problem:
    6055 - Forbid problem modifications in `SCIP_STAGE_{INIT,EXIT}PRESOLVE` (see pre-conditions for corresponding methods in scip.h).
    6056
    6057- Miscellaneous:
    6058 - New macro SCIPdebugPrintCons() to print constraint only if `SCIP_DEBUG` flag is set.
    6059 - all objscip *.h file now use the default SCIP interface macros (this should avoid errors when changing the interface)
    6060
    6061### New and changed callbacks
    6062
    6063- Constraint Handler:
    6064 - Added a propagation timing parameter `proptiming` to SCIP_DECL_CONSPROP(), giving the current timing at which
    6065 this method is called (also to the corresponding c++ wrapper classes).
    6066 - New optional callback methods in constraint handlers: `SCIP_DECL_CONSGETVARS` and `SCIP_DECL_CONSGETNVARS`.
    6067 These callbacks, if implemented, should return an array of all variables and the number of all variables used
    6068 by the given constraint, respectively. (This method might, e.g., be called by a presolver)
    6069
    6070- NLP Solver Interface:
    6071 - New NLPI callback SCIP_DECL_NLPISETMESSAGEHDLR() to set message handler in NLP solver interfaces.
    6072
    6073- Propagator:
    6074 - Added a propagation timing parameter `proptiming` to SCIP_DECL_PROPEXEC(), giving the current timing at which this method is
    6075 called (also to the corresponding c++ wrapper classes).
    6076
    6077- Plugin management:
    6078 - added `basic` inclusion methods which have only fundamental data of the plug-ins as arguments; added setter functions
    6079 for all non-fundamental callbacks of the plug-ins; the plug-in types with basic inclusion functions are:
    6080 readers, constraint handlers, conflict handlers, presolvers, propagators, heuristics, separators, relaxation handlers,
    6081 branching rules, node selectors and pricers; these methods should make the usage easier, sparing out optional callbacks and
    6082 parameters: e.g., SCIPincludeConshdlrBasic();
    6083 - To extend the basic functionalities, there are setter method to add
    6084 optional callbacks. For example SCIPsetConshdlrParse(), SCIPsetPropCopy() or SCIPsetHeurInitsol().
    6085
    6086- Constraint Handlers:
    6087 - Added basic creation methods for all constraints types, e.g., SCIPcreateConsBasicLinear(); these methods should make the usage easier,
    6088 sparing out optional callbacks and parameters.
    6089
    6090### Deleted and changed API functions
    6091
    6092- SCIPcomputeCoverUndercover() now has an additional parameter coverbd
    6093- tcliqueMaxClique has an additional parameter to store the number of used branch-and-bound nodes
    6094- the code in `src/dijkstra` and `src/xml` has been changed to (increasingly) conform to the SCIP coding style;
    6095 all function (and variable) names have been changed (do not contain `_` anymore).
    6096- renamed SCIPstairmap*Core() to SCIPstairmap*Stair()
    6097
    6098- Conflict Analysis:
    6099 - Added parameter `relaxedbds` to conflict handler callback method SCIP_DECL_CONFLICTEXEC(). This array contains
    6100 bounds which are sufficient to create a valid conflict
    6101
    6102- Constraint Handler:
    6103 - Added a parameter `restart` to the SCIP_DECL_CONSEXITSOL() callback method, indicating whether this call was
    6104 triggered by a restart.
    6105 - Added a parameter `relaxedbd` to SCIP_DECL_CONSRESPROP() callback method. If explaining a given bound change
    6106 (index), it is sufficient to explain the reason for reaching the `relaxedbd` value, see above
    6107 - Removed parameters `isunbounded`, `isinfeasible` and `result` from SCIP_DECL_CONSINITPRE() and SCIP_DECL_CONSEXITPRE()
    6108 callback methods. It is not allowed to determine unboundedness or infeasibility in these callbacks, anymore.
    6109 - added a `SCIP_CONS*` parameter to SCIPcreateConsDisjunction() which can represent the linear relaxation of the whole
    6110 disjunction constraint as a conjunction constraint, or `NULL`
    6111 - remove problematic function cons_indicator:SCIPsetSlackVarIndicator()
    6112 - Renamed SCIPgetCountedSparseSolutions() to SCIPgetCountedSparseSols() in cons_countsols.{c,h}.
    6113
    6114- Counting:
    6115 - Changed the counting system within SCIP heavily. New method for `SCIP_SPARSESOL` usage, SCIPsparseSolCreate(),
    6116 SCIPsparseSolFree(), SCIPsparseSolGetVars(), SCIPsparseSolGetNVars(), SCIPsparseSolGetLbs(), SCIPsparseSolGetUbs()
    6117 in (pub_)misc.{c,h}.
    6118
    6119- Cuts and Separation:
    6120 - removed `targetscip` parameter from SCIPconvertCutsToConss(), now this function can only convert cuts on one instance,
    6121 otherwise use SCIPcopyCuts()
    6122 - added `ncutsadded` parameter to SCIPcopyCuts() to be able to store the number of copied/converted cuts
    6123 - New functions SCIPcreateEmptyRowCons(), SCIPcreateEmptyRowSepa(), SCIPcreateRowCons(), and SCIPcreateRowSepa() that allow
    6124 to set the originating constraint handler or separator of a row respectively; this is, for instance, needed for statistics
    6125 on the number of applied cuts. If rows are created outside a constraint handler or separator use SCIPcreateRowUnspec() and
    6126 SCIPcreateEmptyRowUnspec(). The use of SCIPcreateEmptyRow() and SCIPcreateRow() is deprecated.
    6127 - New functions SCIProwGetOrigintype(), SCIProwGetOriginCons(), and SCIProwGetOriginSepa() to obtain the originator
    6128 that created a row.
    6129
    6130- LP:
    6131 - new parameter numerics/lpfeastol for primal feasibility tolerance used in LP solver
    6132 - SCIPcomputeLPRelIntPoint() takes two new arguments giving a time and iteration limit
    6133 - SCIPcolGetStrongbranchLPAge(), SCIPgetVarStrongbranchLPAge(), SCIPgetNLPs(), SCIPgetNPrimalLPs(), SCIPgetNDualLPs(),
    6134 SCIPgetNBarrierLPs(), SCIPgetNResolveLPs(), SCIPgetNPrimalResolveLPs(), SCIPgetNDualResolveLPs(), SCIPgetNNodeLPs(),
    6135 SCIPgetNNodeInitLPs(), SCIPgetNDivingLPs(), SCIPgetNStrongbranchs(), SCIPgetNRootStrongbranchs() now return a longint
    6136 instead of an integer
    6137
    6138- Message Handler and Printing:
    6139 - New callback method SCIP_DECL_MESSAGEHDLRFREE() which is called when the message handler is freed.
    6140 - The old callback method SCIP_DECL_MESSAGEERROR() was replaced by the callback method SCIP_DECL_ERRORPRINTING().
    6141 - the follwing methods additionally need the SCIP pointer as parameter to make the output thread save:
    6142 SCIPprintVersion(), SCIPsetMessagehdlr(), SCIPgetMessagehdlr() and SCIPwarningMessage()
    6143 - the error printing method can be replaced using the method SCIPmessageSetErrorPrinting(); the default error message
    6144 printing can be recoverd via SCIPmessageSetErrorPrintingDefault() (see pub_message.h)
    6145 - Changed the message handler system within SCIP heavily such that it is thread-safe. SCIPcreateMessagehdlr() in
    6146 scip.{c,h} was replaced by SCIPmessagehdlrCreate() in pub_message.h/message.c with a changed parameter list;
    6147 see pub_message.h and type_message.h.
    6148 - removed method SCIPcreateMesshdlr(), please use SCIPmessagehdlrCreate() (see pub_message.c)
    6149 - removed method SCIPfreeMesshdlr(), please use SCIPmessagehdlrRelease() (see pub_message.c)
    6150 - Error messages (SCIPerrorMessage()) are not handled via the message handler anymore; per default the error
    6151 message is written to stderr.
    6152 - the following methods need an additional message handler: SCIPdispLongint(), SCIPdispInt(), SCIPdispTime(), all message
    6153 handler methods (see pub_message.h), SCIPhashtablePrintStatistics(), SCIPhashmapPrintStatistics(), SCIPlpiCreate()
    6154 - SCIPprintCons() does not print termination symbol `;\n` anymore; if wanted, use SCIPinfoMessage() to print `;\n` manually
    6155 - remove SCIPcolPrint() and SCIProwPrint(), please use SCIPprintCol() SCIPprintRow() see scip.h
    6156 - method SCIPprintError() does not need the file stream anymore. The error is written via the error message callback.
    6157
    6158- Nonlinear expressions, relaxation, and solver interface:
    6159 - Method SCIPexprtreeRemoveFixedVars() is not public anymore.
    6160 - Renamed SCIPmarkNonlinearitiesPresent() to SCIPenableNLP()
    6161 - Renamed SCIPhasNonlinearitiesPresent() to SCIPisNLPEnabled().
    6162 - removed SCIPmarkContinuousNonlinearitiesPresent(),
    6163 renamed SCIPhasContinuousNonlinearitiesPresent() to SCIPhasNLPContinuousNonlinearity() and allow call only during
    6164 initsolve and solve,
    6165
    6166- Parameters:
    6167 - Replaced SCIPparamSet*() by SCIPchg*Param()
    6168 + replaced SCIPparamSetBool() by SCIPchgBoolParam()
    6169 + replaced SCIPparamSetInt() by SCIPchgIntParam()
    6170 + replaced SCIPparamSetLongint() by SCIPchgLongintParam()
    6171 + replaced SCIPparamSetReal() by SCIPchgRealParam()
    6172 + replaced SCIPparamSetChar() by SCIPchgCharParam()
    6173 + replaced SCIPparamSetString() by SCIPchgStringParam()
    6174
    6175- Presolving:
    6176 - Removed parameters `isunbounded`, `isinfeasible` and `result` from SCIP_DECL_PRESOLINITPRE() and
    6177 SCIP_DECL_PRESOLSEXITPRE(). It is not allowed to determine unboundedness or infeasibility in these callbacks, anymore.
    6178
    6179- Propagator:
    6180 - changed parameters of function SCIPpropagateCutoffboundVar() in prop_pseudoobj.{c,h}
    6181 - Added a parameter `restart` to SCIP_DECL_PROPEXITSOL() callback method, indicating whether this call was triggered
    6182 by a restart.
    6183 - Added a parameter `relaxedbd` to SCIP_DECL_PROPRESPROP() callback method. If explaining a given bound change
    6184 (index), it is sufficient to explain the reason for reaching the `relaxedbd` value.
    6185 - Removed parameters `isunbounded`, `isinfeasible` and `result` from SCIP_DECL_PROPINITPRE() and
    6186 SCIP_DECL_PROPEXITPRE() callback methods. It is not allowed to determined unboundedness or infeasibility in
    6187 these callbacks, anymore.
    6188
    6189- Sort and Copy:
    6190 - The methods SCIPsortedvecInsert*() have an additional parameter which can be used to receive the position where
    6191 the new element was inserted, if this is not of interest a `NULL` pointer can be given
    6192 - new parameter in SCIPcopyPlugins() to indicate whether the message handler from the source SCIP should be passed to the
    6193 target SCIP (only the pointer is copied and the usage counter of the message handler is increased)
    6194 - New parameter in SCIPcopy() to indicate whether the message handler from the source SCIP
    6195 should be passed to the target SCIP (only the pointer is copied and the usage counter of the message handler is
    6196 increased). In multi theaded enviroment this parameter needs to be set to FALSE.
    6197
    6198- Variable usage:
    6199 - rename SCIPvarGetBestBound() to SCIPvarGetBestBoundLocal()
    6200 - rename SCIPvarGetWorstBound() to SCIPvarGetWorstBoundLocal()
    6201 - Method SCIPvarGetProbvarSum() is not public anymore, use SCIPgetProbvarSum() instead.
    6202 - Replaced method SCIPvarGetRootRedcost() by SCIPvarGetBestRootRedcost().
    6203
    6204### New API functions
    6205
    6206- setup timer to all plugins and therefore SCIP<plugin-type>GetSetupTime() methods in all pub_plugin-type.h to ask
    6207 for this time (, e.g. SCIPeventhdlrGetSetupTime() in pub_event.h)
    6208- new GML(Graph Modeling Language) methods SCIPgmlWriteOpening(), SCIPgmlWriteCosing(), SCIPgmlWriteArc(), SCIPgmlWriteEdge(),
    6209 SCIPgmlWriteNode() that write to a given GML file
    6210- new LPI method SCIPlpiGetObjsen() to query objective sense
    6211- SCIPpermuteIntArray() in pub_misc.h and misc.c for permuting an integer array
    6212- SCIPcalcBinomCoef() in pub_misc.h and misc.c which calculates a binomial coefficient up to 33 over 16
    6213- SCIPheurPassSolAddSol() in heur_trysol.c; solution which are passed via this method are just without any feasibility check
    6214- SCIPgetGlobalPseudoObjval() which returns the global pseudo objective value which is all variables
    6215 set to their best (w.r.t. the objective function) global bound
    6216- SCIPhashGetKeyStandard() which returns the element itself as the key, SCIPhashKeyEqPtr(),
    6217 SCIPhashKeyValPtr() which do the hash-comparison/-conversion on a pointer in pub_misc.h
    6218- SCIPhashtableClear() which removes all elements of a hash table
    6219- SCIPisUpdateUnreliable() to check whether an iteratively updated value should be recomputed from scratch
    6220 (e.g., for activities; uses new parameter `misc/num_recompfac`)
    6221- SCIPisHugeValue() to check whether a value is huge and should be handled separately from other values
    6222 (e.g., in activity computations) and SCIPgetHugeValue() to get the smallest value counting as huge
    6223- SCIPfixParam() and SCIPunfixParam() to fix and unfix a parameter, respectively;
    6224 the fixing status of a parameter can be requested by SCIPparamIsFixed();
    6225- SCIPsetBasePointClosecuts() to set the base point for close cut separation
    6226- SCIPchgCutoffboundDive() to change the cutoffbound in diving mode
    6227- SCIPupdateCutoffbound() which can be used to pass a cutoff bound
    6228
    6229- Presolving:
    6230 - SCIPpropIsPresolDelayed() which return if a propagator is delay during presolving
    6231 - Added method SCIPisPresolveFinished() which returns whether the presolving process would be stopped after the
    6232 current presolving round, given no further reductions will be found, can be used to ensure that a presolver is called very late
    6233
    6234- Memory:
    6235 - added forgotten implementation of SCIPfreeMemorySize(), SCIPfreeMemorySizeNull() in scip.h and BMSfreeMemorySize(),
    6236 BMSfreeMemorySizeNull() in memory.h
    6237 - SCIPmemccpy() in pub_misc.h and misc.c which copies either a specified number of charcters of a source
    6238 string to a destination string or until it hits a stoping character
    6239 - BMSmoveMemory(), BMSmoveMemoryArray(), BMSmoveMemorySize() and corresponding BMSmoveMemory_call() in
    6240 memory.{h,c} too move memory elements
    6241
    6242- Conflict Analysis:
    6243 - SCIPisConflictAnalysisApplicable() which return FALSE is the conflict will not runs; can be used
    6244 to avoid unnecessary initialization of the conflict analysis
    6245 - SCIPaddConflictRelaxedLb(), SCIPaddConflictRelaxedUb() and SCIPaddConflictRelaxedBd(); these methods
    6246 can be used to give for a bound change which is part of an explanation a relaxed bound; this means the relaxed bound
    6247 is already efficient to be part of a valid explanation
    6248 - SCIPisConflictVarUsed() returns TRUE if the given bound change is already part of the conflict set;
    6249 that is the bound change is redundant;
    6250 - SCIPgetConflictVarLb() and SCIPgetConflictVarUb() returning the lower/upper bound of the given
    6251 variable within the current active conflict set
    6252
    6253- Variable usage:
    6254 - SCIPvarsGetProbvar() in pub_var.h and var.c, which returns for a given array of variables the active, fixed
    6255 or multiaggregated representation
    6256 - SCIPgetActiveVars() in scip.{h,c}, which returns for a given array of variables the active counterparts
    6257 - SCIPgetNObjVars() which returns the number of variables which have a non-zero objective coefficient
    6258 - SCIPenableVarHistory() and SCIPdisableVarHistory() which can be used to turn off and on the collection
    6259 of variables statistics which is used for example for branching
    6260 - SCIPbranchVarHole() which branches a variable w.r.t. a given domain hole
    6261 - SCIPvarGetAggregatedObj() which computes for a (not active) variable the corresponding objective value
    6262 - SCIPsolIsOriginal() that returns whether a solution is defined on the original variables
    6263 - SCIPgetVarImplRedcost() which returns the implied reduced costs
    6264 - SCIPvarGetBestRootSol(), SCIPvarGetBestRootRedcost(), SCIPvarGetBestRootLPObjval() which return the best
    6265 combination for a variable w.r.t. root solution value, root LP objective value and root reduced cost
    6266 - SCIPhaveVarsCommonClique() in scip.{h,c}, to check for common clique information on two given variables
    6267 - added basic creation methods SCIPcreateVarBasic() and SCIPcreateProbBasic() and setter functions for
    6268 non-fundamental callbacks of variables and problems.
    6269 - added new methods SCIPvarGetBestBoundGlobal() and SCIPvarGetWorstBoundGlobal().
    6270
    6271- Constraint Handler:
    6272 - added public wrapper functions for calling constraint handler callback methods for a single constraint:
    6273 SCIPactiveCons(), SCIPdeactiveCons(), SCIPinitlpCons(), SCIPsepalpCons(), SCIPsepasolCons(), SCIPpropCons(),
    6274 SCIPrespropCons(), SCIPenfopsCons(), SCIPenfolpCons()
    6275 - added basic creation methods for all constraint handlers
    6276 - SCIPchgCapacityKnapsack() which can be used to change the capacity of a knapsack constraint
    6277 - SCIPconsIsAdded() which returns whether a constraint was already to a SCIP instance
    6278 - SCIPconshdlrGetNCutsApplied() in pub_cons.h to get the number of cuts applied to the lp
    6279 - SCIPconshdlrIncNAppliedCuts() in cons.h to increase the number of applied cuts (used by sepastore.c)
    6280 - SCIPchgVarName() and SCIPchgConsName() which can be used to change name of variables and
    6281 constraints in problem creation stage
    6282 - New methods SCIPgetConsVars() and SCIPgetConsNVars() which return for a given constraint the involved variables and
    6283 the number of variables if the corresponding constraint supports this (optional) callbacks
    6284 (corresponding callbacks need to be implemented, see above)
    6285
    6286- Message Handler:
    6287 - SCIPmessagehdlrCapture() which captures a given message handler (increases number of uses)
    6288 - SCIPmessagehdlrRelease() which releases and possibly frees a given message handler (decreases number of uses)
    6289 - SCIPsetMessagehdlrLogfile() which can be used to write into a log file
    6290 - SCIPsetMessagehdlrQuiet() which can be used to turn the screen output on and off
    6291
    6292### Command line interface
    6293
    6294- in the interactive shell, parameters can be fixed and unfixed with `fix` (instead of `set`), e.g., `fix heuristics rens freq TRUE`;
    6295- new shell command `change minuc` to minimize the number of unsatisfied constraints
    6296
    6297### Interfaces to external software
    6298
    6299- beta-version of a MATLAB interface can be found under interfaces/matlab
    6300- beta-version of a AMPL interface can be found under interfaces/ampl
    6301
    6302### Changed parameters
    6303
    6304- `branching/fullstrong/reevalage` changed from an integer to a longint parameter
    6305
    6306- Removed parameters:
    6307 - `separating/closecuts/separootonly`
    6308 - `constraints/quadratic/defaultbound`
    6309 - `separating/cgmip/nodelimit`
    6310
    6311### New parameters
    6312
    6313- `constraints/%s/timingmask` for changing the timingmask for calling the propagtion method of all constraint plugins
    6314- `constraints/and/dualpresolving` by default set to TRUE, enabling dual-presolving on and-constraints
    6315- `constraints/indicator/{sepacouplingcuts,sepacouplinglocal}` to enable separation of (local) cuts
    6316- `constraints/indicator/{maxsepacuts,maxsepacutsroot}` to restrict the number of separated cuts
    6317- `constraints/indicator/dualreductions` to enable dual presolving/propagation steps
    6318- `constraints/setppc/cliquelifting`, `constraints/setppc/addvariablesascliques`,
    6319 `constraints/setppc/cliqueshrinking`, first for enabling/disabling the clique lifting algorithm in cons_setppc.c,
    6320 second parameter is for trying to create extra clique constraints in lifting algorithm, third parameter is for trying
    6321 to decrease the number of variable in a clique constraint in the lifting algorithm
    6322- `limits/totalnodes` that allows to stop at the correct node if a restart occured; therefore the new
    6323 `SCIP_STATUS_TOTALNODELIMIT` is added
    6324- `lp/{rootiterlim,iterlim}` to set a limit on the LP iterations spend in the initial root LP and each
    6325 LP resolve, respectively
    6326- `misc/transorigsols` by default set to TRUE, that switches whether SCIP tries to transfer original
    6327 solutions into the transformed space (in initsol and if a heuristic adds an original solution during solving)
    6328- `numerics/hugeval` that defines the smalles value counting as huge (see new method SCIPisHugeValue())
    6329- `numerics/recompfac` which denotes the factor, by which the absolute of an iteratively updated value has
    6330 to be decreased in order to recompute the value from scratch
    6331- `presolving/convertinttobin/maxdomainsize` by default is set to `SCIP_LONGINT_MAX`, which deternmines
    6332 the domainsize for which integers are converted to their binary representation
    6333- `presolving/convertinttobin/onlypoweroftwo` by default is set to FALSE, that parameter allows you to
    6334 only convert integer variables with a domainsize of 2^p-1 to their binary representation
    6335- `presolving/convertinttobin/samelocksinbothdirections` by default is set to FALSE, that parameter allows
    6336 you to convert only integer variables to their binary representation, which have the same amount of up- and downlocks
    6337- `presolving/gateextraction/sorting` by default is set to 1, that parameter determines if you want to try
    6338 to extract big-gates(-1) or small-gates(1) at first by ordering bigger/smaller logicor constraint up front, or use
    6339 them as they are (0)
    6340- `presolving/gateextraction/onlysetpart` by default is set to FALSE, that parameter allows you to
    6341 only extract set-partitioning and no and-constraints
    6342- `presolving/gateextraction/searchequations` by default is set to TRUE, that parameter allows you to
    6343 search for logicor constraints and set-packing/-partitioning constraints with same variables
    6344- `propagating/%s/timingmask` for changing the timingmask for calling the propagtion method of all propagator plugins
    6345- `propagating/probing/maxdepth` to set the maximal depth until the probing propagation is executed
    6346- `reading/cnfreader/useobj` to state whether an artificial objective, depending on the number of clauses
    6347 a variable appears in, should be used, by default set to FALSE, old default behavior of reader corresponds to TRUE
    6348- `separating/cgmip/{minnodelimit,maxnodelimit}` to determine node limit.
    6349- `separating/closecuts/maxlpiterfactor` for iteration limit in relative interior point computation
    6350- `separating/oddcycle/maxunsucessfull` to automatically turn off separation
    6351- `oncepernode` in Rounding and Simple Rounding heuristic
    6352
    6353### Data structures
    6354
    6355- new data structure for binary trees (`SCIP_BT` and `SCIP_BTNODE` in pub_misc.h)
    6356- renamed data structure `SCIP_STAIRMAP` to `SCIP_PROFILE`
    6357- added new stages `SCIP_STAGE_INITPRESOLVE`, `SCIP_STAGE_EXITPRESOLVE` and `SCIP_STAGE_FREE`; renamed `SCIP_STAGE_FREESOLVE`
    6358 to `SCIP_STAGE_EXITSOLVE`
    6359- Changed the counting system within SCIP heavily. `SPARSESOLUTION` was renamed to `SCIP_SPARSESOL` and moved
    6360 from cons_countsols.h to struct_misc.h
    6361
    6362Testing
    6363-------
    6364
    6365- the check script now recognizes MIQCP and MINLP instances
    6366- make test now also checks instances in wbo, cnf, osil and fzn format
    6367- renamed parameter SCRDIR of `make testgams` to CLIENTTMPDIR and changed its default to `/tmp`
    6368
    6369Build system
    6370------------
    6371
    6372### Makefile
    6373
    6374- CppAD source code is now distributed with SCIP (`src/cppad`), so that `lib/cppad` is not used anymore;
    6375 the default for EXPRINT has changed from none to cppad
    6376
    6377Fixed bugs
    6378----------
    6379
    6380- fixed bug with strong branching with the LP status for conflict analysis
    6381- fixed bug w.r.t. adding a value to the objective offset of the transformed problem
    6382- fixed wrong assert in feasibility pump stage 3
    6383- fixed bug in solve.c, applied bounding for the initial lp was only done if root-lp-solution was valid but another
    6384 solution could also have been added
    6385- primal solutions with infinite objective value are now automatically discarded
    6386- all plugins that solve sub-SCIPs now do not stop the whole solution process if there has been an error
    6387- fixed bug in cip reader, wrong use of SCIPstrtok()
    6388
    6389- Variables:
    6390 - fixed bug in shiftandpropagate w.r.t. SCIPconstructLP() which can have the side effect that variables are created
    6391 - method SCIPvarGetProbvarSum() (and thus also SCIPgetProbvarSum()) returns +/-infinity if the variable resolves to a
    6392 variable fixed to +/-infinity (depending on the sign of the scalar) but does not multiply with the scalar, anymore
    6393 - better handling of infinite solution values for aggregated and negated variables
    6394 - fixed bug that disabled multi-aggregation of two integer or implicit integer variables
    6395 - fixed bug in sol.c with requesting values of transformed variables in original solution; previously this had only
    6396 been handled in SCIPgetSolVal(), now the handling has been moved to SCIPsolGetVal()
    6397 - fixed several bugs writing an mps file in the reader_mps.c, e.g. writing fixed variables which are not (yet) removed
    6398 and writing integer variables even with an objective value of 0, if they only exist in non-linear constraints
    6399
    6400- Separation:
    6401 - fixed minor bugs with respect to counting generated and lifted cuts in sepa_oddcycle
    6402 - fixed bug in sepa_clique.c, could not handle only empty cliques, that were not removed
    6403
    6404- Heuristics:
    6405 - fixed potential bugs in shiftandpropagate heuristic concerning the transformation update of a variable with free status
    6406 - fixed bug in heur_zirounding with computation of up/downslacks
    6407 - fixed bug in mutation heuristic with unnecessary aborts due to a wrong memory limit
    6408 - fixed potential bug in fix-and-infer heuristic with variables being fixed to infinite value
    6409 - fixed bug in diving heuristics with variables being fixed to values outside their domain
    6410 - fixed bug in simple rounding heuristic with column generation for variables with strictly positive lower bound
    6411 - made Octane heuristic numerically more stable to avoid asserts being caused by cancellation
    6412 - fixed bug in mutation heuristic with variables being fixed to infinite values
    6413 - do not run heur_shiftandpropagate if there is no LP
    6414
    6415- LP Interface:
    6416 - fixed bug in Cplex LPI: after running simplex, solisbasic flag was always true, which might be wrong if Cplex hit a
    6417 time limit
    6418 - fixed bug in SCIP probing mode with cleared LPI state but solved LP
    6419 - fixed assert with `LPI=none` (need to count rows/cols in lpi_none)
    6420 - fixed bug in SoPlex LPI where objective sense was not correct after reading LP from file in SCIPlpiReadLP()
    6421
    6422- Constraints:
    6423 - fixed bug in scip.c adding a constraint in SCIPgetConsCopy() to the constraint hashmap
    6424 - fixed bug in cons_linear w.r.t recalculation of unreliable activities
    6425 - fixed bug in cons_linear concerning huge activity values: besides infinite contributions, we now also treat huge
    6426 contributions separately, count their occurences in a constraint and provide a relaxed activity value
    6427 - fixed bug in cons_xor.c parsing a constraint
    6428 - fixed count of propagations in cons_indicator and only try to propagate if variables are not yet fixed
    6429 - fixed some bugs in cons_disjunction.c (wrong assert, forgotten deletion of constraint, wrong SCIPreleaseCons() call)
    6430
    6431Miscellaneous
    6432-------------
    6433
    6434- first release of GCG, a generic branch-cut-and-price solver built on top of SCIP
    6435- first release of UG, a framework for solving mixed integer programs, mixed integer
    6436 nonlinear programs and constraint integer programs in parallel
    6437- new SCIP T-shirts
    6438- renamed ZIB Optimization Suite to SCIP Optimization Suite
    6439
    6440@page RN2_1 Release notes for SCIP 2.1
    6441
    6442@section RN212 SCIP 2.1.2
    6443*************************
    6444
    6445Performance improvements
    6446------------------------
    6447
    6448- fixed performance issue in debug mode, where SCIPvarGetLPSol_rec() calculated a value to often, which in the end lead
    6449 to exponential growth in running time
    6450- force cuts from linearizations of convex constraint in NLP relax solution into LP, thus allowing faster proving of
    6451 optimality for convex NLPs
    6452
    6453Fixed bugs
    6454----------
    6455
    6456- fixed bug in varAddTransitiveImplic() in var.c, when adding implications on special aggregated, namely negated, variables
    6457- fixed issue if a primal solution leads to a cutoff of the current focus node
    6458- fix compilation issues with zlib 1.2.6
    6459- fixed bug in SCIPsolveKnapsackExactly(), trying to allocate too much memory which led to an overflow and later to a segmentation fault
    6460- fixed bug in sepa_rapidlearning, carrying on the optimization process, when already solved
    6461
    6462- Heuristics:
    6463 - fixed bug in heur_undercover.c, where a variable with fixed bounds but not of status `SCIP_VARSTATUS_FIXED` was wrongly handled
    6464 - fixed bug in heur_oneopt.c which forgot to check LP rows if local rows are present
    6465
    6466- Constraints:
    6467 - fixed bug in SCIPsolveKnapsackExactly()
    6468 - fixed bug in cons_quadratic where bounds on activity of quadratic term were not always invalidated when quadratic variables were removed
    6469 - fixed bug in cons.c, where after a restart the arrays for all initial constraints were corrected in the initsol process
    6470 instead of the initpre process, this was to late because you might change the status in presolving which lead to an assert()
    6471 - fixed bug in NLP representation of abspower constraints handling (x+a)^2 with nonzero a
    6472 - fixed bug parsing an and-constraint in cip format
    6473 - fixed bug in cons_setppc, did not handle new constraints with inactive variables
    6474 - fixed bug in cons_xor.c which did not copy the artificial integer variable (used for the lp relaxation)
    6475
    6476@section RN211 SCIP 2.1.1
    6477*************************
    6478
    6479Features
    6480--------
    6481
    6482- the pseudo objective propagator can be forced to propagate if active pricers are present; this can be done
    6483 if for all (known or unknown) variables follows that: they have positive (negative) objective coefficient
    6484 and the global lower (upper) bound is zero.
    6485
    6486Performance improvements
    6487------------------------
    6488
    6489- improvements in undercover heuristic
    6490- improve SCIPintervalSolveBivariateQuadExpressionAllScalar() for ax=0 case if x has 0 in the interval for the linear coef.
    6491- better domain propagation for quadratic constraints that consist of `non-overlapping` bilinear terms only
    6492- ensure that a fixing of a variable in an abspower constraint is propagated to a fixing of the other variable
    6493- improvements in undercover heuristic, e.g., bound disjunction constraints are considered when setting up the covering problem
    6494
    6495Interface changes
    6496-----------------
    6497
    6498### Changed parameters
    6499
    6500- changed parameter `propagating/pseudoobj/maxcands` to `propagating/pseudoobj/minuseless` (see prop_pseudoobj.c)
    6501 due to revision of the pseudo objective propagator
    6502
    6503### New parameters
    6504
    6505- added parameters `heuristics/undercover/coverbd` and `heuristics/undercover/fixingorder`
    6506
    6507Fixed bugs
    6508----------
    6509
    6510- fixed numeric issue in aggregations
    6511- fixed pseudo cost computation
    6512- fixed bug with setting type of slack variables to be implicitly integral
    6513- fixed bug when copying problem data in c++ case returned with the result `SCIP_DIDNOTRUN`
    6514- fixed computation of counter which state the changes since the last call of a presolver
    6515- fixed handling of unbounded solutions, including double-checking their feasibility and that the primal ray is a
    6516 valid unboundedness proof and reoptimizing the LP with modified settings if the solution is not feasible
    6517- fixed compilation issues with negate() function in intervalarith.c on exotic platforms
    6518- fixed bug in SCIPsortedvecDelPos...() templates
    6519- pseudo objective propagator does not propagate it active pricers are present
    6520- fixed bug in heur_shiftandpropagate.c concerning the treatment of unbounded variables
    6521- workaround for trying to add variable bounds with to small coefficients
    6522
    6523- Reading and Writing:
    6524 - gams writer now also substitutes $-sign from variable/equation names
    6525 - fixed bug in reader_mps.c: INTEND marker is now also written, if COLUMNS section ends with non-continous variables
    6526 - fixed bug in flatzinc reader w.r.t. boolean expressions
    6527
    6528- Constraints:
    6529 - fixed constraint flags evaluation within the ZIMPL reader (reader_zpl.c)
    6530 - fixed bug in SCIPmakeIndicatorFeasible() in cons_indicator.c
    6531 - fixed bug with conflict clause modification in cons_indicator
    6532 - fixed bug in cons_bounddisjunction with uninitialized return values
    6533 - fixed bug in cons_orbitope with calling conflict analysis
    6534 - fixed bug in nlpi_oracle w.r.t. changing linear coefs in a NLP constraint
    6535
    6536@section RN210 SCIP 2.1.0
    6537*************************
    6538
    6539Features
    6540--------
    6541
    6542- New original solution storage capability, which allows transfering solutions between SCIP runs
    6543- SCIP-CPX is now threadsafe
    6544- comparison of solutions now also works for original solutions
    6545- can now compute the relative interior point of the current LP
    6546- interval arithmetics for power, log, exp, bivariate quadratic expressions should be rounding safe now
    6547- LP iterations in resolving calls can now be limited w.r.t. the average number of LP iterations in previous calls
    6548 (after the root node); this is currently only done for the initial LP solve at a node and the corresponding parameter
    6549 resolveiterfac is set to -1 (no limit) per default
    6550- it is now possible in `SCIP_STAGE_TRANSFORMED` to call SCIPaddVarLocks() (i.e. to lock variables in initialization methods)
    6551- changed computation of optimality gap which is now done in the same way as described in the MIPLIB 2010 paper: the gap
    6552 is 0, if primalbound (pb) and dualbound (db) are equal (within tolerances), it is infinity if pb and db have opposite
    6553 signs and (this changed), if both have the same sign, the difference between pb and db is devided by the minimum of
    6554 the absolute values of pb and db (instead of always the dual bound)
    6555- functionality to use the bound flipping ratio test of SoPlex is available (requires at least version 1.5.0.7)
    6556- there exists now a solution candidate store for the original problem; during transformation these solutions are tried;
    6557 during free the transformed problem the best feasible solution of the transformed problem are copied to the solution
    6558 candidate store of the original problem; this useful if you solve several problems iteratively, solutions get now
    6559 carried over automatically.
    6560- reworked concept of lazy bounds: they can now also be used for problems where constraints and objective together
    6561 ensure the bounds; to allow this also for diving heuristics that might change the objective and thus destroy this
    6562 property, lazy bounds are explicitly put into the LP during diving and removed afterwards
    6563- `SCIP_HASHMAP` now works also without block memory
    6564- The variable deletion event is now a variable specific event and not global, anymore.
    6565- All timing flags are now defined type_timing.h.
    6566- all C template files are now called <plugintype>_xyz.{c,h} instead of <plugintype>_xxx.{c,h}
    6567
    6568- Separators and Cuts:
    6569 - reorganized computation of scores in cut filtering: instead of the computation at the time of addition, scores are now
    6570 only computed w.r.t. the current LP solution and when cut filtering is performed; one can now fill the cut storage
    6571 with cuts that were separated for different solutions
    6572 - New separator for close cuts and a new function to compute relative interior points of the LP
    6573 - added first version of sepa_closecuts.{c,h} to separate cuts w.r.t. a point that is closer to the integral polyhedron
    6574
    6575- Constraints:
    6576 - implement possibility to force a restart in cons_indicator if enough indicator variables have been fixed
    6577 - the xor constraint handler can now parse its constraints
    6578 - the bounddisjunction constraint handler can now parse its constraints
    6579 - the knapsack, setppc and soc constraint handler can now parse their constraints
    6580 - the varbound constraint handler can now parse its constraints
    6581 - added beta version of variable deletion: for branch-and-price application, variables can now be completely deleted
    6582 from the problem; variables that are deletable have to be marked with SCIPvarMarkDeletable(), constraint handlers can
    6583 implement the new `SCIP_DECL_DELVARS` callback that should remove variables from the constraints; at the moment, only
    6584 the linear, the setppc and the knapsack constraint handler support this callback; furthermore, when using this
    6585 feature, all used plugins have to capture and release variables they store in their data, this is currently only done
    6586 for the aforementioned constraint handlers as well as the and, the varbound and the logicor constraint handler; for
    6587 more details about this feature, see the FAQ
    6588 - added pseudoboolean constraint handler (cons_pseudoboolean.{c,h})
    6589 - added first version of cons_disjunction.{c,h} which allows a disjunction of constraints
    6590 - added constraint handler for (absolute) power constraints (cons_abspower.{c,h}) to handle equations like z = sign(x)abs(x)^n, n > 1
    6591
    6592- Heuristics:
    6593 - new heuristic vbounds which use the variables lower and upper bounds to fix variable and performs a neighborhood search
    6594 - added vbound heuristic (heur_vbounds.{c,h})
    6595 - added clique heuristic (heur_clique.{c,h})
    6596
    6597- Reading and Writing:
    6598 - added writing for wbo files
    6599 - added writing for pip files (linear, quadratic, polynomial nonlinear, polynomial abspower, polynomial bivariate, and
    6600 and constraints)
    6601 - CIP format variable characters defined, e.g. `SCIP_VARTYPE_INTEGER_CHAR`
    6602 - Improved support for wbo format for weighted PBO problems, IBM's xml-solution
    6603 format and pip and zimpl format for polynomial mixed-integer programs
    6604 - New reader for (standard) bounds on variables
    6605 - Extended reader for CIP models to handle various new constraints, including all types of linear constraints
    6606 - flatzinc reader is now capable to read cumulative constraints
    6607 - changed opb(/wbo) reader which now creates pseudoboolean constraints instead of linear- and and-constraints, only a
    6608 non-linear objective will create and-constraints inside the reader and while reading a wbo file the topcost constraint
    6609 is created as well
    6610 - added clock for determine the time for reading
    6611 - added reader for variable bounds (reader_bnd.{c,h})
    6612 - Removed method SCIPreadSol(); call solution reading via SCIPreadProb() which calls the solution reader for .sol files.
    6613
    6614- Nonlinear:
    6615 - Major extensions for nonlinear CIP, new option for n-ary branching on nonlinear variables (within pseudocost branching rule)
    6616 - added BETA version of constraint handler for nonlinear constraints (cons_nonlinear.{c,h}) to handle nonlinear
    6617 equations given by algebraic expressions using operands like addition, multiplication, power, exp, log, bivariate
    6618 nonlinear constraints; currently no trigonometric functions
    6619 - added BETA version of constraint handler for bivariate nonlinear constraints (cons_bivariate.{c,h}) to compute tight
    6620 estimators for 1-convex and convex-concave bivariate nonlinear functions (given as expression tree)
    6621 - the gams writer can now write nonlinear, abspower and bivariate constraints
    6622 - Extended writer for GAMS and pip format to write more types of nonlinear constraints
    6623 - the pip and zimpl reader now create nonlinear constraints for polynomials of degree > 2
    6624
    6625- Presolving:
    6626 - new dual presolving methods in cons_setppc and cons_logicor
    6627 - new presolving step `removeConstraintsDueToNegCliques` in locigor constraint handler which updates logicor constraints
    6628 to setppc constraints if a negated clique inside this constraint exist, by default is off
    6629 - new presolving step in cons_knapsack (detectRedundantVars, deleteRedundantVars) which determines redundant variables
    6630 in knapsack constraint with or without using clique information
    6631 - cons_logicor is now able to replace all aggregated variables in presolving by there active or negation of an active
    6632 variable counterpart
    6633 - prop_pseudoobj is now working in presolving as well
    6634 - implement presolving in exitpre() in cons_orbitope and cons_indicator
    6635
    6636- Propagators:
    6637 - added counter for number calls and timing for resolve propagation calls for constraint handler and propagators
    6638 - Propagators are now also called in node presolving
    6639 - the probing presolver presol_probing.{c.h} is now a propagator prop_probing.{c,h}, all corresponding parameters moved as well
    6640 - the redcost separator sepa_redcost.{c.h} is now a propagator prop_redcost.{c,h}, all corresponding parameters moved as well
    6641 - outsourced propAndSolve() method in solve.c which calls domain propagation and solving of the lp and relaxation
    6642
    6643- Statistic:
    6644 - solutions which are given by the user from the outside are now marked by `#` in the output
    6645 - the `Solving Time` is now spitted into presolving, solving and reading time
    6646 - Presolvers section has new column `AddCons` which states the number of added constraint
    6647 - Constraints section has new column named \#ResProp which show the number of resolve propagation calls of certain
    6648 constraint handler
    6649 - Constraint Timing section has a new column \#ResProp which states the time spend in resolve propagation method of the
    6650 constraint handler
    6651 - improved output of propagators in display statistics
    6652 - new section `Propagator Timing` which shows the time spend in different callbacks of the propagator
    6653 - rearranged first two columns of Propagators section; \#Propagate and \#ResProp stating the number of call for
    6654 propagation and resolve propagation; the Time column is moved into the new section Propagator Timings
    6655 - Constraints section has new column named `MaxNumber` which the maximum number of active constraint of a certain
    6656 constraint handler
    6657 - 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
    6658 solving LPs with zero iterations (only refactorization)
    6659 - The display of statistics for presolvers, propagators, constraints and LP solving has changed.
    6660
    6661Performance improvements
    6662------------------------
    6663
    6664- Reorganized filtering process of separation storage (allows adding cuts for different solutions)
    6665- Improved presolving for various constraint handlers
    6666- Improved propagation methods for variable bound constraints
    6667- Improved performance for quadratic constraints
    6668- performance improvements in prop_vbounds
    6669- child selection rules now get also applied when the relaxation value is equal to the bound changed in branching
    6670- added dual reduction to cons_cumulative.c
    6671- for continuous variables, the pseudo costs update and the pscost branching rule now use the same strategies for
    6672 updating the pseudo costs and estimating the improvement in the LP bound
    6673- only perform probing if the variables are locked
    6674- performance and memory consumption improvements in xmlparse.c
    6675- Improved knapsack cover cuts
    6676- avoid very long separation times of LEWIs in cons_knapsack for very large minimal covers
    6677- used SCIPallocMemoryArray() instead of SCIPallocBlockMemoryArray() which leads to fewer memory consumption in
    6678 getLiftingSequence() in cons_knapsack, also improved cache use bei using an extra array instead blockmemory chunks
    6679- switched FASTMIP from 1 to 2 for CPLEX and changed default pricing rule back to steepest edge pricing instead of
    6680 quickstart steepest edge pricing
    6681- made sorting method more robust
    6682- LNS heuristics now use SCIPcopy() by default
    6683- considering inactive variables in undercover heuristic; limiting effort for solving covering problem
    6684- if during probing mode the LP relaxation is solved from scratch, e.g., when calling the shiftandpropagate heuristic
    6685 before root node solving, then we clear the resulting LP state, since it might be a bad starting basis for the next
    6686 solve of the LP relaxation (controlled by new parameter `lp/clearinitialprobinglp`)
    6687- included LP simplifier into SoPlex LP interface, applied when solving from scratch (lpi_spx.cpp)
    6688- new presolving steps in varbound constraint handler, tightening bounds, coefficients, sides and pairwise presolving
    6689
    6690Interface changes
    6691-----------------
    6692
    6693- Miscellaneous:
    6694 - The emphasis setting types now distinguish between plugin-type specific parameter settings (default, aggressive, fast, off),
    6695 which are changed by SCIPsetHeuristics/Presolving/Separating(), and global emphasis settings (default, cpsolver, easycip,
    6696 feasibility, hardlp, optimality, counter), which can be set using SCIPsetEmphasis().
    6697
    6698### New and changed callbacks
    6699
    6700- added propagator timings `SCIP_PROPTIMING_BEFORELP`, `SCIP_PROPTIMING_DURINGLPLOOP` and `SCIP_PROPTIMING_AFTERLPLOOP` for
    6701 all propagation callbacks (see propagators and constraint handlers) which lead to calling the propagation methods of a
    6702 propagator before the lp is solved, during the lp loop and after the lp solving loop
    6703
    6704- Conflict Analysis:
    6705 - Added parameter `separate` to conflict handler callback method SCIP_DECL_CONFLICTEXEC() that defines whether the conflict
    6706 constraint should be separated or not.
    6707
    6708- Constraint Handler:
    6709 - The new constraint handler callback SCIP_DECL_CONSDELVARS() is called after variables were marked for deletion.
    6710 This method is optional and only of interest if you are using SCIP as a branch-and-price framework. That means,
    6711 you are generating new variables during the search. If you are not doing that just define the function pointer
    6712 to be `NULL`.
    6713 If this method gets implemented you should iterate over all constraints of the constraint handler and delete all
    6714 variables that were marked for deletion by SCIPdelVar().
    6715
    6716- NLP Solver Interface:
    6717 - The callbacks SCIP_DECL_NLPIGETSOLUTION() and SCIP_DECL_NLPISETINITIALGUESS() got new parameters to get/set values of
    6718 dual variables.
    6719 - The callback SCIP_DECL_NLPICOPY() now passes the block memory of the target SCIP as an additional parameter.
    6720
    6721- Presolving:
    6722 - New parameters `isunbounded` and `isinfeasible` for presolving initialization (SCIP_DECL_CONSINITPRE(),
    6723 SCIP_DECL_PRESOLINITPRE(), SCIP_DECL_PROPINITPRE()) and presolving deinitialization (SCIP_DECL_CONSEXITPRE(),
    6724 SCIP_DECL_PRESOLEXITPRE(), SCIP_DECL_PROPEXITPRE()) callbacks of presolvers,
    6725 constraint handlers and propagators, telling the callback whether the problem was already declared to be
    6726 unbounded or infeasible. This allows to avoid expensive steps in these methods in case the problem is already
    6727 solved, anyway.
    6728
    6729 Note, that the C++ methods
    6730 - scip::ObjConshdlr::scip_presol() corresponding to SCIP_DECL_CONSPRESOL()
    6731 - scip::ObjConshdlr::scip_initpre() corresponding to SCIP_DECL_CONSINITPRE()
    6732 - scip::ObjPresol::scip_initpre() corresponding to SCIP_DECL_PRESOLINITPRE()
    6733 - scip::ObjProp::scip_initpre() corresponding to SCIP_DECL_PROPINITPRE()
    6734 - scip::ObjConshdlr::scip_exitpre() corresponding to SCIP_DECL_CONSEXITPRE()
    6735 - scip::ObjPresol::scip_exitpre() corresponding to SCIP_DECL_PRESOLEXITPRE()
    6736 - scip::ObjProp::scip_exitpre() corresponding to and SCIP_DECL_PROPEXITPRE()
    6737 are virtual functions. That means, if you are not adding the new parameters, your code will still compile, but these methods are not executed.
    6738 - Propagators are now also called in during presolving, this is supported by the new callback methods SCIP_DECL_PROPINITPRE(),
    6739 SCIP_DECL_PROPEXITPRE(), and SCIP_DECL_PROPPRESOL().
    6740 - The new parameters `nnewaddconss` and `naddconss` were added to the constraint handler callback method SCIP_DECL_CONSPRESOL()
    6741 and the presolver callback method SCIP_DECL_PRESOLEXEC(). These parameters were also added to corresponding C++ wrapper
    6742 class methods (scip_presol() in objconshdlr.h and scip_exec() in objpresol.h)
    6743
    6744- Problem Data:
    6745 - The callback SCIP_DECL_PROBCOPY() got a new parameter `global` to indicate whether the global problem or a local version is copied.
    6746
    6747### Deleted and changed API functions
    6748
    6749- implemented SCIPlpiGetPrimalRay() in SoPlex interface that has become available with SoPlex version 1.5.0.2
    6750- allowed calling SCIPgetRowSolActivity() in `SCIP_STAGE_SOLVED`, since LP is still available
    6751- various extensions and modifications for expressions and expression trees (too much to state here)
    6752- The result value `SCIP_NEWROUND` has been added, it allows a separator/constraint handler to start a new separation round
    6753 (without previous calls to other separators/conshdlrs).
    6754- SCIPcalcNodeselPriority() got a new parameter `branchdir`, which defines the type of branching that was performed: upwards, downwards, or fixed.
    6755
    6756- Constraint Handlers:
    6757 - Method SCIPincludeQuadconsUpgrade() of quadratic constraint handler got new parameter `active` to indicate whether the upgrading method is active by default.
    6758 - Method SCIPseparateRelaxedKnapsack() in knapsack constraint handler got new parameter `cutoff`, which is a pointer to store whether a cutoff was found.
    6759
    6760- Nonlinear expressions, relaxation, and solver interface:
    6761 - SCIPcreateNLPSol() now creates a `SCIP_SOL` that is linked to the solution of the current NLP relaxation
    6762 - Various types and functions dealing with polynomial expressions have been renamed to use the proper terms `monomial` and
    6763 `polynomial` in nonlinear expressions (nlpi/∗expr*); results in many renamings of types, structs and methods.
    6764 - The methods SCIPnlpGetObjective(), SCIPnlpGetSolVals(), and SCIPnlpGetVarSolVal() have been removed, use SCIPgetNLPObjval(),
    6765 SCIPvarGetNLPSol() and SCIPcreateNLPSol() to retrieve NLP solution values instead.
    6766 SCIPcreateNLPSol() now returns an error if NLP or NLP solution is not available
    6767 - Removed methods SCIPmarkRequireNLP() and SCIPisNLPRequired(), because the NLP is now always constructed if nonlinearities
    6768 are present.
    6769 - SCIPgetNLP() has been removed and NLP-methods from pub_nlp.h have been moved to scip.h, which resulted in some renamings, too.
    6770 - renamed SCIPexprtreeEvalSol() to SCIPevalExprtreeSol() and now located in scip.h.
    6771 - renamed SCIPexprtreeEvalIntLocalBounds() to SCIPevalExprtreeLocalBounds() and now located in scip.h.
    6772 - renamed SCIPexprtreeEvalIntGlobalBounds() to SCIPevalExprtreeGlobalBounds() and now located in scip.h.
    6773 - The functions SCIPnlpiGetSolution() and SCIPnlpiSetInitialGuess() got additional arguments to get/set dual values.
    6774 - The method SCIPgetNLPI() got a new parameter `nlpiproblem`, which is a pointer to store the NLP solver interface problem.
    6775
    6776- Timing:
    6777 - SCIPincludeProp() got additional parameters to set the timing mask of the propagator and the new callbacks and parameters
    6778 related to calling the propagator in presolving.
    6779 - SCIPincludeConshdlr() got additional parameters to set the variable deletion callback function and the timing mask for
    6780 propagation.
    6781 - removed parameters timelimit and memorylimit from SCIPapplyRens()
    6782 - The parameters `timelimit` and `memorylimit` were removed from SCIPapplyRens().
    6783
    6784- Problem Data:
    6785 - The method SCIPcopyProb() got a new parameter `global` to indicate whether the global problem or a local version is copied.
    6786
    6787- Writing and Parsing Constraints:
    6788 - The methods SCIPwriteVarName(), SCIPwriteVarsList(), and SCIPwriteVarsLinearsum() got a new boolean parameter `type`
    6789 that indicates whether the variable type should be written or not.
    6790 - The methods SCIPparseVarName() and SCIPparseVarsList() got a new output parameter `endptr` that is filled with the position
    6791 where the parsing stopped.
    6792 - The method SCIPwriteVarsList() got additionally a new parameter `delimiter` that defines the character which is used for delimitation.
    6793
    6794- Variables:
    6795 - SCIPmarkDoNotMultaggrVar()/SCIPvarMarkDoNotMultaggr() now allow to mark negated and aggregated variables
    6796 - SCIPgetVarCopy() got a new parameter `success` that will be FALSE if method is called after problem creation stage and no hash map is
    6797 given or no image for the given variable is contained in the given hash map.
    6798 - SCIPchgVarType() got an extra boolean parameter to store if infeasibility is recognized while upgrading a variable from continuous
    6799 type to an integer type.
    6800 - SCIPdelVar() got a new parameter `deleted`, which stores whether the variable was successfully marked to be deleted.
    6801
    6802### New API functions
    6803
    6804- information about the quality of the solution of an LP (currently the condition number of the basis matrix) can now be:
    6805 + requested from the LPI (currently only available for CPLEX): methods SCIPlpiGetRealSolQuality() and
    6806 + SCIPprintLPSolutionQuality() command display lpsolquality in interactive shell display column lpcond to show
    6807 + estimate on condition number, if available
    6808- SCIPround() and SCIPfeasRound() to round to nearest integer
    6809- SCIPsortRealRealIntInt() and corresponding sorting/inserting/deleting methods in pub_misc.h and necessary defines in misc.c
    6810- SCIPsortRealIntLong(), SCIPsortPtrPtrRealInt() and corresponding sorting/inserting/deleting methods in
    6811 pub_misc.h and necessary defines in misc.c
    6812- SCIPcomputeLPRelIntPoint() to compute relative interior point of the current LP
    6813- SCIPstartSolvingTime() and SCIPstopSolvingTime() which can be used to start or stop the solving time clock
    6814- SCIPstrToRealValue() and SCIPstrCopySection() in pub_misc.h; these methods can be used to convert a string
    6815 into a `SCIP_Real` value and to copy a substring.
    6816- SCIPgetBinvarRepresentatives() which gets binary variables that are equal to some given binary variables,
    6817 and which are either active, fixed, or multi-aggregated, or the negated variables of active, fixed, or multi-aggregated variables
    6818- SCIPhasPrimalRay() and SCIPgetPrimalRayVal() that return whether a primal ray is stored and which value a
    6819 given variable has in the primal ray, respectively
    6820- SCIPsetConsModifiable()
    6821- SCIPsetParam() which is a generic parameter setter method, independent of the parameter type
    6822- SCIPpropInitpre(), SCIPpropExitpre(), SCIPpropPresol() which initializes, exists and executes the presolving phase
    6823- SCIProwGetAge() to access the age of a row (pub_lp.h/lp.c)
    6824- SCIPsolGetOrigObj() in pub_sol.h which returns for a solution in the original problem space the objective value
    6825- SCIPretransformSol() in scip.h that allows to retransform a solution to the original space
    6826- SCIPlpiClearState() to LP interfaces for clearing basis information in the LP solver
    6827- SCIPgetSubscipDepth() to access the depth of the current SCIP as a copied subproblem
    6828- SCIPdebugAddSolVal() and SCIPdebugGetSolVal() to add/get values to/from a debug solution
    6829- SCIPsepastoreRemoveInefficaciousCuts() to remove non-efficious cuts from the separation storage
    6830
    6831- Nodes:
    6832 - SCIPnodeGetParent() to get parent node of a node
    6833 - SCIPnodesSharePath() in pub_tree.h that determines whether two nodes are on the same leaf-root path
    6834 - SCIPnodesGetCommonAncestor() in pub_tree.h that finds the common ancestor node for two given nodes
    6835
    6836- Read and Write:
    6837 - SCIPgetReadingTime() which returns the time for reading in seconds
    6838 - SCIPparseVarsLinearsum(), SCIPparseVarsPolynomial() and SCIPwriteVarsPolynomial() and for writing and
    6839 parsing polynomials in constraint handler writing/parsing methods
    6840
    6841- Memory:
    6842 - SCIPcreateMesshdlrPThreads() and SCIPfreeMesshdlrPThreads() for allocating and deleting necessary memory
    6843 for message handlers for parallel pthread version
    6844 - SCIPallocClearMemoryArray() and BMSallocClearMemoryArray() for allocating cleared memory arrays in scip.h and memory.h
    6845
    6846- Intervals:
    6847 - SCIPintervalPowerScalarInverse() to solve an equation y = x^p for given bounds on y and scalar exponent p
    6848 - SCIPintervalQuadBivar() to compute tight bounds on a bivariate quadratic form
    6849 - SCIPintervalSolveBivariateQuadExpressionAllScalar() to compute tight bounds on the solutions of a bivariate quadratic equation
    6850
    6851- Variables:
    6852 - SCIPcomputeVarCurrent{L,U}b{Local,Global}() to compute local or global lower or upper bounds of a
    6853 multiaggregated variable from the bounds of the aggregation variables
    6854 - SCIPbranchVarValNary() for n-ary variable branching
    6855 - SCIPgetNegatedVars() which returns all negated variables for a given array of variables, if the negated
    6856 variables are not existing yet, they will be created
    6857 - SCIPgetNTotalVars() that returns the total number of created vars, icluding variables that were deleted in the meantime
    6858 - SCIPvarGetHashkey(), SCIPvarIsHashkeyEq(), SCIPvarGetHashkeyVal() in pub_var.h which can be used for `SCIP_HASHTABLE` of variables
    6859 - SCIPvarGetNBdchgInfosLb() and SCIPvarGetNBdchgInfosUb() in pub_var.h returning the number of lower or upper bound changes on the active path
    6860 - SCIPvarGetBdchgInfoLb() and SCIPvarGetBdchgInfoUb() returning the bound change information at the given position
    6861 - SCIPvarMarkDeletable() to mark a variable to be deletable completely from the problem (for
    6862 branch-and-price); can only be called before the variable is added to the problem
    6863 - SCIPvarMarkNotDeletable() that marks a variable to be non-deleteable (used within SCIP for forbidding
    6864 deletion of variables contained in solution, LP bases, (multi)aggregation, ...)
    6865 - SCIPvarIsDeletable() that returns whether a variable is marked to be deletable (each variable is per default non-deletable)
    6866
    6867- NLP:
    6868 - SCIPgetNLPVarsNonlinearity() to get for each variable in the NLP the number of NLP rows in which this variable appears in a nonlinear way
    6869 - SCIPnlrowGetDualsol(), SCIPgetNLPVarsLbDualsol(), SCIPgetNLPVarsUbDualsol() to retrieve dual values from an NLP solution
    6870 - SCIPgetNLPFracVars() to get the fractional variables in an NLP solution
    6871
    6872- Propagator:
    6873 - SCIPpropSetPresolPriority() which changes the presolving priority of a given propagator
    6874 - SCIPpropGetPresolPriority(), SCIPpropGetPresolTime(), SCIPpropWasPresolDelayed(), SCIPpropGetNFixedVars(),
    6875 SCIPpropGetNAggrVars(), SCIPpropGetNChgVarTypes(), SCIPpropGetNChgBds(), SCIPpropGetNAddHoles(), SCIPpropGetNDelConss(),
    6876 SCIPpropGetNAddConss(), SCIPpropGetNUpgdConss(), SCIPpropGetNChgCoefs(), SCIPpropGetNChgSides(), SCIPpropGetTimingmask(),
    6877 SCIPpropDoesPresolve() which return corresponding presolving information
    6878 - SCIPpropGetNRespropCalls() and SCIPconshdlrGetNRespropCalls() which return the number of times a
    6879 propagator or a constraint handler was called for resolving a propagation
    6880 - SCIPpropGetRespropTime() and SCIPconshdlrGetRespropTime() which return time spent for resolving a
    6881 propagation within a propagator or a constraint handler
    6882 - SCIPcheckCumulativeCondition(), SCIPpropCumulativeCondition() and SCIPrespropCumulativeCondition() in
    6883 cons_cumulative.h; these methods can be used to check, propagate, or resolve the propagation of a cumulative condition
    6884 - SCIPpropagateCutoffboundVar() in prop_pseudoobj.h which can be used to propagate the cutoff bound for the given variables
    6885
    6886- Constraints:
    6887 - added to linear constraint handler SCIPsetUpgradeConsLinear(), which (de-)activates the possibility to
    6888 upgrade a linear constraint to a specialized linear constraint (e.g. knapsack)
    6889 - SCIPconvertCutsToConss() and SCIPcopyCuts() to scip.{c,h} for copying cuts to linear constraints
    6890 - SCIPaddCoefLogicor() to add a variable to a logic or constraint
    6891 - SCIPfindOrigCons() which return a original constraint with the given name or `NULL`
    6892 - SCIPconshdlrGetNAddConss() which returns the number of added constraints during presolving by a given constraint handler
    6893 - SCIPpresolGetNAddConss() which returns the number of added constraints during presolving by a given presolver
    6894
    6895### Command line interface
    6896
    6897- New funtionalities in the interactive shell (modify current CIP instance, write NLP relaxation)
    6898- added dialog `write nlp` to write current NLP relaxation to a file
    6899- new dialog `change freetransproblem` to free transformed problem in the interactive shell before changing the problem
    6900- it is possible to change bounds of a variable in the interactive shell
    6901- it is possible to add a constraint to a problem in the interactive shell
    6902
    6903### Interfaces to external software
    6904
    6905- Improved SOPLEX interface (LP simplifier)
    6906- Improved CPLEX interface, including measures for numerical stability
    6907
    6908### Changed parameters
    6909
    6910- change default value of parameter `nodeselection/restartdfs/selectbestfreq` 100
    6911- moved parameters for pseudoboolean constraints from opb-reader to pseudoboolean constraint handler
    6912- changed possible parameter values of `branching/pscost/strategy` from `bri` to `cdsu`: default is now `u`, i.e., to
    6913 estimate the LP gain by a branching for external branching candidates (esp. continuous variables) the same way as
    6914 their pseudo costs are updated
    6915- added possible value `d` for `constraints/soc/nlpform` to choose a convex division form for SOC constraint
    6916 representation in NLP
    6917- renamed parameter `constraints/quadratic/linearizenlpsol` to `constraints/quadratic/linearizeheursol` and do
    6918 linearizations in every solution found by some heuristic
    6919- renamed parameter `constraints/quadratic/mincutefficacyenfo` to `constraints/quadratic/mincutefficacyenfofac` and
    6920 interpret it as a factor of the feasibility tolerance
    6921- removed fastmip setting 2, which means the dualsolution would not be calculated but because SCIP always asks for the
    6922 dual solution, the lp would be reoptimized to calculate them; so it had no real effect
    6923- all parameters in cons_indicator and cons_sos1 have been converted to lower case!
    6924- changed default value of parameter `separating/gomory/maxroundsroot` to 10
    6925- changed default value of parameter `separating/gomory/maxsepacutsroot` to 50
    6926- removed parameter `heuristics/subnlp/nlpsolver`, use `nlp/solver` instead
    6927
    6928### New parameters
    6929
    6930- `branching/delaypscostupdate` to delay the update of pseudo costs for continuous variables behind the separation round: default is TRUE
    6931- `branching/lpgainnormalize` to set the strategy how the LP gain for a continuous variable is normalized when updating the
    6932 variables pseudocosts: default is to divide LP gain by reduction of variable's domain in sibling node
    6933- `branching/pscost/nchildren` and `branching/pscost/nary*` to enable and customize n-ary branching on
    6934 external branching candidates (e.g., in spatial branching for MINLP)
    6935- `conflict/bounddisjunction/continuousfrac` which defines the maximum percantage of continuous variables
    6936 within a conflict create by the bounddisjunction conflict handler
    6937- `conflict/separate` which enables or disables the separation of conflict constraints
    6938- `constraints/{nonlinear,quadratic,soc,abspower}/sepanlpmincont` to specify minimal required fraction
    6939 of continuous variables in problem to enable linearization of convex constraints in NLP relaxation solution in root
    6940- `constraints/indicator/forcerestart` and `constraints/indicator/restartfrac` to control forced restart in cons_indicator
    6941- `constraints/indicator/generatebilinear` to generate bilinear (quadratic) constraints instead of indicator constraints
    6942- `constraints/indicator/maxconditionaltlp` to enable a quality check for the solution of the alternative LP
    6943- `constraints/indicator/removeindicators` to remove indicator constraints if corresponding vub has been added
    6944- `constraints/linear/nmincomparisons` and `constraints/linear/mingainpernmincomparisons` to influence
    6945 stopping criterium for pairwise comparison of linear constraints
    6946- `constraints/pseudoboolean/decompose`, for pseudoboolean constraints to transform pseudoboolean constraints into linear- and and-constraints
    6947- `constraints/quadratic/binreforminitial` to indicate whether linear (non-varbound) constraints added due to reformulation of products with
    6948 binary variables in a quadratic constraints should be initial (if the quadratic constraint is initial), default is FALSE
    6949- `constraints/quadratic/checkfactorable` to disable check for factorable quadratic functions (xAx = (ax+b)*(cx+d)) in quadratic constraints
    6950 and not to use of this information in separation (generates lifted tangent inequalities according to Belotti/Miller/Namazifar if also
    6951 linear vars are present)
    6952- `constraints/quadratic/disaggregate` to split a block-separable quadratic constraint into several quadratic constraint
    6953- `constraints/quadratic/maxproprounds` and `constraints/quadratic/maxproproundspresolve` to limit the
    6954 number of propagations rounds for quadratic constraints within one propagation round of SCIP solve or during SCIP presolve
    6955- `constraints/varbound/presolpairwise` that allows pairwise presolving of varbound constraints, default is TRUE
    6956- `heuristics/shiftandpropagate/onlywithoutsol` to switch whether the heuristic should be called in case a primal solution is already present
    6957- `limit/maxorigsol` which defines the size of the solution candidate store (default value is 10)
    6958- `lp/resolverestore` controlling how LP solution is restored after diving: if TRUE by resolving them,
    6959 if FALSE by buffering them; if `lp/freesolvalbuffers` is TRUE, we free the buffer memory each time (FALSE by default)
    6960- `lp/clearinitialprobinglp` to clear LP state at end of probing mode, if LP was initially unsolved
    6961- `lp/resolveitermin` and `lp/resolveiterfac` to limit the number of LP iterations in resolving calls:
    6962 resolveiterfac is a factor by which the average number of iterations per call is multiplied to get the limit, but the
    6963 limit is at least resolveitermin; default is -1 (no limit) for resolveiterfac and 1000 for resolveitermin
    6964- `lp/resolverestore` and `lp/freesolvalbuffers` possibility to buffer and restore LP solution after diving without
    6965 having to resolve the LP; currently turned off, because performance impact is unclear;
    6966- `misc/improvingsols` which states whether only solutions which have a better (or equal) primal bound
    6967 as the best known are checked; this is of interest if the check of a solution is expensive; default value is FALSE
    6968- `misc/resetstat` which state if the statistics should be reseted if the transformed problem is freed
    6969 (in case of a benders decomposition this parameter should be set to FALSE) default value is TRUE
    6970- `nodeselection/restartdfs/countonlyleafs` in node selector restart dfs which can be used to select the counting process of processed nodes
    6971- `presolving/donotaggr` to deactivate aggregation of variables globally
    6972- `pricing/delvars` and `pricing/delvarsroot` that define, whether variables created at a node / the
    6973 root node should be deleted when the node is solved in case they are not present in the LP anymore
    6974- `propagating/%s/maxprerounds` for all propagators which allows to change to maximal number of rounds
    6975 of presolving where this propagator participates in
    6976- `propagating/%s/presoldelay` for all propagators which allows to change if the presolving call of the given propagator should be delayed
    6977- `propagating/%s/presolpriority` for all propagators which allows to change the priority of calling the given propagator
    6978- `propagating/pseudoobj/propfullinroot` for allowing to propagate all variables in the root node,
    6979 instead of stopping after `maxcands` which is set by a parameter as well
    6980- `reading/gmsreader/bigmdefault` and `reading/gmsreader/indicatorreform` reader_gms is now able to write indicator
    6981 constraints (reformulated either via big-M or sos1)
    6982- `reading/gmsreader/signpower` to enable writing sign(x)abs(x)^n as the rarely used gams function signpower(x,n)
    6983- `separating/closecuts/maxunsucessful` to turn off separation if we can not find cuts
    6984- `timing/reading` to add reading time to solving time
    6985
    6986### Data structures
    6987
    6988- split off `PARAMEMPHASIS` from `PARAMSETTING` (in pub_paramset.c/paramset.c)
    6989- new data structure `SCIP_STAIRMAP`
    6990- add expression graph data structures and methods for reformulation, domain propagation, simple convexity check on
    6991 nonlinear expressions and simplification for expression trees and graphs
    6992
    6993Testing
    6994-------
    6995
    6996- New scripts for running tests with GAMS
    6997- added scripts check_gams.sh, evalcheck_gams.sh and check_gams.awk and target `testgams` in Makefile
    6998- adjusted all test scripts to use the same new optimality gap computation as in SCIP
    6999- added Makefile option `VALGRIND=true` to enable running the SCIP checks (make test) through valgrind; valgrind errors
    7000 and memory leaks are reported as fails
    7001- moved *.test and *.solu files to subdirectory testset in check directory and adjusted test scripts
    7002
    7003Build system
    7004------------
    7005
    7006### Makefile
    7007
    7008- Variables:
    7009 - via `PARASCIP=true` as a `Makefile` option it is possible to compile SCIP threadsafe in DEBUG-mode, (in OPT-mode it's
    7010 only necessary if non-default messagehandler or CppAD is used)
    7011 - the `make` parameter `PARASCIP=true` leads to threadsafe message handlers where you need to call
    7012 SCIPcreateMesshdlrPThreads() and SCIPmessageSetHandler()/SCIPmessageSetDefaultHandler() and SCIPfreeMesshdlrPThreads();
    7013 therefore we need to link with pthread library
    7014 - new variable $(INSTALLDIR) in Makefile which define installation directory for the libraries, $(INSTALLDIR)/lib/,
    7015 binary, $(INSTALLDIR)/bin and include headers, $(INSTALLDIR)/include, the default value is the empty string
    7016
    7017- Linking:
    7018 - Linking against Clp and Ipopt has been simplified. Only the directory where the
    7019 package has been installed need to be provided now. For details see the INSTALL file.
    7020 - to link against IPOPT, only the base directory of an Ipopt installation need to be specified now; additionally, if
    7021 building with gnu compilers, the Ipopt libraries directory is stored in the SCIP binary, which should make it easier
    7022 to run with Ipopt shared libraries
    7023 - to link against Clp, only the base directory of an Clp installation needs to be specified now
    7024
    7025- Targets:
    7026 - New targets `(un)install` in Makefile, support for valgrind in testing environment
    7027 - new target `make libs` which compiles only the libraries
    7028 - new target in Makefile `install` performs `make` and copies using the install command the include headers, binary, and
    7029 libraries
    7030 - new target in Makefile `uninstall` removes libraries, binary and include headers form `INSTALLDIR`
    7031 - removed target `lintfiles`, this target is now imitated by the `lint` target and a none empty variable `FILES`
    7032
    7033Fixed bugs
    7034----------
    7035
    7036- 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
    7037- fixed bug trying to print big messages bigger than `SCIP_MAXSTRLEN`
    7038- fixed bug w.r.t. counting feasible solutions and turned of sparse solution test
    7039- LP solution status is now checked when checking root LP solution. Otherwise, due to different time measurements, it
    7040 might happen that the LP solving was stopped due to the time limit, but SCIP did not reach the limit, yet.
    7041- fixed bug trying to tighten multiaggregated variables, which have only one active representation and this variable is already tightened
    7042- fixed possible buffer overrun in tclique_graph.c
    7043- fixed issue with interactive shell in case (user) plugins are included after the default plugins
    7044- fixed bug where mutiaggregating leads to an aggregation and both variables were of implicit or integral type
    7045- fixed bug in conflict.c, where LPi was manipulated, but not marked as not solved
    7046
    7047- Tree:
    7048 - fixed assertion in tree.c w.r.t. node estimation
    7049 - 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
    7050
    7051- Bounds:
    7052 - fixed bug which occured when changing a bound in the solving stage when this variables got upgraded from continuous to
    7053 a integer type, where the bounds of this variable were still not integral; due to that SCIPchgVarType() has changed (see above)
    7054 - fixed bug in handling of lazy bounds that resulted in putting the bounds explicitly into the LP
    7055
    7056- Separation:
    7057 - fixed assert in sepa_clique.c which is currently not valid because implicit binary variables in cliques are ignored
    7058 - fixed bug in sepa_zerohalf.c concerning inconsistent construction of solution array of variables and fixed wrong assert about variable bounds
    7059
    7060- Constraints:
    7061 - fixed not correct merging of variable in logicor constraint handler and changed the name of the method to a common
    7062 name used by other constraint handlers too(findPairsAndSets->mergeMultiples)
    7063 - fixed bugs in changing the initial and checked flags for constraints in original problem
    7064 - fixed bug in cons_linear.c, when scaling a constraint maxabscoef was not set correctly, furthermore the correction of
    7065 maxabscoef was not handled correctly
    7066 - fixed bug in cons_indicator.c trying to copy a constraint where the pointer to the linear constraint did not point to
    7067 the already transformed linear constraint (, happend when SCIPcopy() is used after transforming before presolving)
    7068 - fixed numerical bug in linear constraint handler: polishing of coefficients after fixing variables led to wrong
    7069 results for continuous variables fixed to a close-to-zero value.
    7070 - fixed bug in cons_bounddisjunction where branching on multiaggregated variables was tried while all aggregation variables are fixed
    7071 - fixed bug in presolving of cons_logicor.c: adding variable implications can lead to further reductions; added call to applyFixings()
    7072 - fixed bug in cons_countsols.c w.r.t. none active variables
    7073 - fixed bug in cons_linear.c, scaling could have led to wrong values
    7074
    7075- Reader:
    7076 - fixed bug in reader_fzn.c w.r.t. cumulative constraints
    7077 - fixed bug in reader_mps.c: if a variables first occurence is in the bounds section, then the corresponding variable bound was lost
    7078 - fixed several issues in flatzinc reader
    7079 - deactived checking of zero solution in Zimpl reader when no starting values are provided
    7080 - reader_lp is now able to read lines longer than 65534 characters
    7081
    7082- Memory:
    7083 - fixed bug in copying NLPI interfaces that use block-memory (NLPI copy used block memory from source SCIP)
    7084 - fixed memory leak in reader_pip.c
    7085 - fixed memory leak in coloring part of maximum clique algorithm (tclique_coloring.c)
    7086 - fixed memory leak in coloring part of maximum clique algorithm (tclique_coloring.c) in a better way
    7087
    7088- Numerics:
    7089 - fixed bug which occured when the dual farkas multipliers were not available in the lpi because the LP could only be
    7090 solved with the primal simplex due to numerical problems
    7091 - fixed bug in ZI round heuristic that led to infeasible shiftings for numerically slightly infeasible rows with close-to-zero coefficients
    7092 - fixed numerical issue in octane heuristic: close-to-zero values for ray direction could have led to bad computations
    7093
    7094- Propagation:
    7095 - fixed bug in propagation of indicator constraints: cannot fix slack variable to 0 if linear constraint is disabled/not active
    7096 - fixed bug in cons_linear.c while sorting the eventdatas during the binary variable sorting for propagation
    7097 - fixed bug and wrong assert in heur_shiftandpropagate.c when relaxing continuous variables from the problem
    7098 - fixed bug in cons_orbitope:resprop() for the packing case
    7099 - fixed wrong changing of wasdelayed flag for propagators
    7100 - fixed bug using wrong sign in infinity check in prop_pseudoobj
    7101 - fixed bug in redcost propagator: can only be called if the current node has an LP
    7102 - fixed bug w.r.t. infinity loop during propagation
    7103
    7104Miscellaneous
    7105-------------
    7106
    7107- The interface contains several additional callback functions and parameters for plugins. Some effort may be required to compile your old
    7108 projects with SCIP 2.1. For details see section `Changes between version 2.0 and 2.1` in the doxygen documentation.
    7109
    7110@page RN2_0 Release notes for SCIP 2.0
    7111
    7112@section RN202 SCIP 2.0.2
    7113*************************
    7114
    7115Performance improvements
    7116------------------------
    7117
    7118- improved twoopt-heuristic by considering larger search domains
    7119- 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)
    7120- calculation of node priority now also works when variable's relaxation value is equal to a bound
    7121- fixed issue w.r.t. calling primal heuristics after presolving detected infeasibility
    7122
    7123- Constraints:
    7124 - fasten propagation in cons_knapsack.c due to negated clique partitions
    7125 - recalculating only needed partitions in cons_knapsack.c, not always both
    7126
    7127- Memory:
    7128 - reduced memory usage of shift-and-propagate heuristic
    7129 - knapsack constraints are now separated faster; SCIPsolveKnapsackExactly() now works faster and requires less memory
    7130 - fasten knapsack separation by replacing SCIPallocBuffer(Array) through SCIPallocBlockMemory(Array)
    7131 - improved runtime and memory consumption in SCIPsolveKnapsackExactly() in cons_knapsack.c
    7132
    7133Fixed bugs:
    7134----------
    7135
    7136- fixed `make/make.project`
    7137- fixed wrong assert in plugins that use SCIPcopy()
    7138- fixed bug in DINS w.r.t. column generation
    7139- fixed bug in var.c where a possible multiaggregation was resolved to an aggregation but the variables types were not
    7140 checked to prefer more general types for aggregating; possible memory loss removed
    7141- fixed bug in prop_vbounds.c w.r.t. infinity lower and upper bound of variable bound variables
    7142- fixed bug w.r.t. setting wall clocks
    7143- fixed wrong assert in var.c (replaced `==` through SCIPsetIsEQ()), real values do not have to be exactly the same when
    7144 computed in different function
    7145- fixed bug in SCIPsolveIsStopped() where it could happen that TRUE was reported if a nodelimit was reached but
    7146 checknodelimits had been set to FALSE
    7147- fixed three bugs when writing in fzn format (wrongly splitted writing buffer, wrong variables was used, floats were printed to short)
    7148- fixed bug in conflict.c, infeasibility analysis with big values led to wrong result
    7149
    7150- Heuristics:
    7151 - fixed bug in DINS heuristic that occured when the incumbent solution value is outside the variable's current domain
    7152 - fixed behavior of LNS heuristics when the subproblem aborts: continue in optimized mode, stop in debug mode
    7153 - fixed segmentation fault in heur_subnlp.c which occured if resolving the NLP with a tighter feasibility tolerance
    7154 failed with a solver error
    7155 - fixed bug in heur_subnlp.c where constraints forbidding variable fixations where added if a cutoff was used in the subproblem
    7156 - fixed bug in heur_subnlp.c where wrong constraints forbidding variable fixations where added in case of general integers
    7157
    7158- NLP:
    7159 - fixed bug in changing quadratic coefficients of a row in the NLP
    7160 - fixed various small bugs in nonlinear expressions code
    7161 - fixed removal of fixed linear variables from a nonlinear row: a fixed variable may have not been removed if there was
    7162 also a multiaggregated variable
    7163
    7164- LP:
    7165 - implemented SCIPlpiGetPrimalRay() in SoPlex interface that has become available with SoPlex version 1.5.0.2
    7166 - fixed two bugs at nodes with unbounded LP relaxation: don't check lp rows of infinite solution; don't analyze conflict
    7167 due to primal cutoff bound of -infinity
    7168 - fixed wrong assumption that an optimal LP solution in the root is optimal for the problem if there are no active
    7169 pricers, need to check also whether all variables are in the LP
    7170
    7171- Constraints:
    7172 - fixed bug in reader_cip regarding reading of very long constraints
    7173 - fixed bug while after restarting possible the aggregted variables were not removed in setppc constraints
    7174 - fixed bug in cons_knapsack: in seldom circumstances the relaxation of a linear constraint can detect infeasibility,
    7175 which was not handled properly
    7176 - fixed bug w.r.t. to pricing variables in case new initial constraints come in during the price and cut loop
    7177 - fixed bug in cons_soc.c w.r.t. upgrading from quadratic constraints with finite left-hand-side
    7178 - fixed bug caused by not (correctly) counting boundchanges in cons_varbound.c
    7179 - fixed bug in sorting mechanism in cons_xor.c
    7180 - fixed wrong (neg)cliquepartition check in cons_knapsack.c when deleting a coefficient
    7181 - fixed bug in cons_quadratic: in seldom cases, fixed variables may have been substituted out wrongly in presolve
    7182 - fixed bugs in cons_countsols.c w.r.t. collecting feasible solutions and forbidding a found solution
    7183 - fixed bug in cons_linear.c: multiaggregated variables were not removed when adding during solve, leading to a failing
    7184 assert in tightenBounds due to an unsuccessful bound tightening
    7185
    7186- Memory:
    7187 - fixed bug concerning overflow in memsize calculation in set.c
    7188 - fixed memory leak in SoPlex LP interface when requesting an unbounded solution
    7189 - fixed memory leak in SoPlex LP interface when solving with LP scaling
    7190 - fixed memory leaks in reader of TSP example
    7191
    7192@section RN201 SCIP 2.0.1
    7193*************************
    7194
    7195Performance improvements
    7196------------------------
    7197
    7198- SCIP with SoPlex as LP solver now uses auto pricing by default (start with devex, switch to steepest
    7199 edge after some iterations); this fixes timeouts on instances where devex converges very slowly
    7200- fixing lifting of new knapsack items which are negated items of already included items, this could lead to very long presolving
    7201- fixed performance issue in presolving w.r.t. to computing the number of new fixings, aggregated,
    7202 and so on before a constraint handler presolver is called
    7203- in case of adding constraints during pricing with initial flag set to
    7204 TRUE, we add now these constraints after the pricing round to the LP
    7205- changed parameter values in clique separator in order to avoid very large branch-and-bound trees
    7206
    7207Interface changes
    7208-----------------
    7209
    7210### New and changed callbacks
    7211
    7212- allow access of transformed constraints in `SCIP_STAGE_TRANSFORMED`
    7213
    7214### Changed parameters
    7215
    7216- replaced parameter `constraints/quadratic/minefficacy` by `constraints/quadratic/minefficacysepa` and `constraints/quadratic/minefficacyenfo`
    7217- added possible values `a` and `e` for `constraints/soc/nlpform` to enable automatic choice and convex exponential-sqrt
    7218 form for SOC constraint representation in NLP
    7219
    7220Fixed bugs
    7221----------
    7222
    7223- fixed bug w.r.t. looseobjval; the counting of number of loose variables in the LP data structure was incorrect in case
    7224 a variable got aggregated or multi-aggregated
    7225- fixed bug in copy method of objvardata which should only create a new `SCIP_VARDATA` if the implemented subclass create
    7226 a copy of the given objvardata object
    7227- fixed bug in lp.c where in case of objlimit reached and fastmip not all variables where priced because of an incorrect
    7228 dual solution
    7229- fixed bugs in binpacking example w.r.t. empty struct and not initializing an array
    7230- fixed bugs in sepa_clique.c concerning incorrect way to ignore implicit binary variables in cliques and non-active
    7231 variables in implications
    7232- fixed some bugs w.r.t. to casting pointer arrays
    7233- fixed bug in vars.c which handled arrays with parts of original variables during resolving to active variables (using
    7234 SCIPvarsGetProbvarBinary) wrong
    7235- fixed bug in nlp.c: nlrowSearchQuadElem was using SCIPquadelemSortedFind() incorrectly
    7236
    7237- Branching:
    7238 - fixed assertion w.r.t. to probing during the propagation round of a branch-and-bound node
    7239 - fixed computation of node's objective value estimate when branching on continuous variables (see
    7240 SCIPtreeCalcChildEstimate(), SCIPtreeBranchVar())
    7241 - fixed bug in statistic w.r.t. number of calls for external branching candidates
    7242 - fixes to branching on continuous variables
    7243
    7244- Reader:
    7245 - fixed bug in reader_gms.c: linear coefficients for quadratic variables were not printed if they had no
    7246 square-coefficient
    7247 - fixed bug in reader_mps: indicator constraints do not output the slack variables anymore
    7248
    7249- Constraints:
    7250 - fixed bugs in SCIPcopyConss: copy all active constraints (including disabled ones), *valid was not initialized to TRUE
    7251 - fixed bug in debug.c w.r.t. checking of constraints and continuous variables
    7252 - fixed bug in cons.c which didn't allow the changing of the separation and enforcement flag of a constraint in the
    7253 problem stage
    7254 - corrected behavior of the copy function in cons_indicator.c: create artificial linear constraint if linear constraint
    7255 was deleted
    7256 - fixed bug in cons_indicator.c: presolving cannot delete linear constraints; several other minor bugfixes
    7257 - fixed bugs in cons_bounddisjunction where the branching during the constraint enforcement was done incorrectly
    7258 - fixed bugs in cons_orbitope.c: orbitopal fixing for the packing case had two bugs; also fixed one wrong assert
    7259 - fixed bugs in cons_sos?.c: take average of objestimate
    7260 - fixed bug in cons_logicor, implications on none `SCIP_VARTYPE_BINARY` variable were handled wrong
    7261 - fixed bug in cons_linear while trying to add a conflict without any variables
    7262 - fixed bug in cons_indicator.c: creating constraints in transformed stage is now possible
    7263
    7264- LP Interface:
    7265 - fixed bug w.r.t. memory allocation for all values of a column in lpi_cpx.c
    7266 - fixed bugs in SCIPnlpiOracleChgLinearCoefs() and SCIPnlpiOracleChgQuadCoefs() for the case where new coefficients where
    7267 added
    7268 - fixed bugs in lpi_none.c w.r.t. debug and opt mode
    7269 - fixed bug in lpi_cpx.c w.r.t. to wrong handling in case the crossover did not succeed
    7270
    7271- Heuristics:
    7272 - fixed bug in heur_subnlp when initialized starting values of a fixed variable in the NLP of the subscip
    7273 - fixed bug in heur_undercover: removed option globalbounds, since we are not allowed to relax bounds at a probing node
    7274 - fixed bug in heur_shiftandpropagate where some variables were initialized too late
    7275 - fixed numerical issue in some heuristics: nearly-integral values that are between the feasibility and the integrality
    7276 tolerance might not have been rounded correctly
    7277 - fixed bug in heur_guideddiving: best solution is now copied to avoid deletion in case of many new solutions
    7278 - fixed bug in DINS heuristic, information storage for binary variables could lead to bad memory access in column
    7279 generation applications
    7280 - fixed bug in heur_shiftandpropagate.c: Now, the heuristic checks rows for global infeasibility at the beginning. This
    7281 check is only relevant if presolving is disabled.
    7282 - fixed bug in heur_subnlp when forbidding a particular combination of integer variables in the main problem
    7283
    7284@section RN200 SCIP 2.0.0
    7285*************************
    7286
    7287Features
    7288--------
    7289
    7290- added relaxation structure to SCIP, it represents global relaxation information independent from a specific relaxator;
    7291 at the moment, it contains information about the relaxation solution stored in the variables: objective value and
    7292 validness
    7293- SCIP may now be manually restarted
    7294- SCIPsolveKnapsackExactly() got a new 12. parameter `SCIP_Bool* success` which stores if an error occured during
    7295 solving(normally a memory problem)
    7296- SCIP can now handle problems with continuous variables w.r.t. to counting (the projection to the integral variables
    7297 are counted)
    7298- an XML-parser is available in the src/xml subdirectory
    7299- We do not distinguish between block memory for the original and the transformed problem anymore. The same
    7300 block memory is now used in both problem stages.
    7301- added new sorting method SCIPsortLongPtr(), SCIPsortDownLongPtr() and all corresponding methods
    7302- added new sorting method SCIPsortRealIntPtr(), SCIPsortDownRealIntPtr() and all corresponding methods
    7303
    7304- Heuristics:
    7305 - SCIP can now copy instances (e.g. for heuristics)
    7306 - new undercover heuristic for MINLPs: fixes variables such as to obtain a linear or convex subproblem and solves this
    7307 - primal heuristics may now already be called before presolving, using the new timing point
    7308 `SCIP_HEURTIMING_BEFOREPRESOL`. Note that solutions that are added before/during presolving, will be retransformed to
    7309 the original space.
    7310 - primal heuristics may now be called during presolving, using the new timing point `SCIP_HEURTIMING_DURINGPRESOLLOOP`
    7311 - added heuristic zirounding (heur_zirounding.{c,h})
    7312 - added heuristic twoopt (heur_twoopt.{c,h})
    7313 - added new NLP heuristic (heur_subnlp.{c,h}) which solves the sub-NLP that is obtained by fixing all discrete variables
    7314 in the CIP and applying SCIP's presolving
    7315 - feasibility pump heuristic now implements all functionality for feasibility pump 2.0
    7316
    7317- Reader:
    7318 - can now read XML-solution files as used by CPLEX
    7319 - the MPS reader can now read MIQPs and MIQCPs where a quadratic objective function can be specified by a QMATRIX or
    7320 QUADOBJ section and the quadratic part of a quadratic constraint by a QCMATRIX
    7321 - the MPS reader can now write quadratic and SOC constraints
    7322 - the GAMS reader can now write SOC constraints
    7323 - added support for bool_gt, bool_lt, bool_ge, bool_le, bool_ne, bool_not, int_times, int_minus, int_plus, int_negate,
    7324 float_times, float_minus, float_plus, float_negate constraints to flatzinc reader
    7325 - the LP reader (.lp files) can now read MIQPs and MIQCPs and write quadratic and SOC constraints
    7326 - the LP reader (.lp files) and MPS reader can now read semicontinuous variables, they are handled by creating bound
    7327 disjunction constraints
    7328 - added new reader for polynomial mixed-integer programs (reader_pip.{c,h}) as used in the POLIP
    7329
    7330- Indicator constraints:
    7331 - SCIP can now handle indicator constraints (reading (from LP, ZIMPL), writing, solving, ...) see \ref cons_indicator.h.
    7332 - the indicator constraint can now decompose the problem, i.e., not add the linear constraint to the problem if all of
    7333 its variables are continuous
    7334 - can now read and write indicator constraints in the (extended) MPS format
    7335 - cons_indicator tries to adapt solutions to get feasible during check
    7336 - cons_indicator allows to store information on other linear constraints that might help to separate cuts
    7337
    7338- Constraint handlers:
    7339 - Solution counting extended to constraint integer programs, this also
    7340 includes constraint integer programs which contain continuous variables
    7341 - The solution behavior of SCIP can be diversified by randomly permuting constraints and variables or randomly
    7342 determining a set of branching variables with a unique high priority
    7343 - `negated cliques` (1<=i<=n : sum (x_i) >= n-1) were added and we are using them now inside the knapsack constraint
    7344 handler, the cliquepartitioning which is returned by SCIPcalcCliquePartition() contains now integer != 0, negatives ones
    7345 indicates a negated clique and positive ones indicates a normal clique
    7346 - SCIP is now able to detect in DEBUG-mode whether a constraint or variables which will be added, was also created in
    7347 the same scip instance, if not an error is thrown
    7348 - cons_knapsack is now able to detect negated cliques due to negated cliques on knapsack constraints
    7349 - SCIP is now able to write non-linear opb-files(linear instances with and-constraints)
    7350 - New constraint handlers for linking constraints (only Beta), cumulative constraints, and for breaking orbitopal symmetries
    7351 - `negated cliques` handling in knapsack constraint handler got changed due to the new method
    7352 SCIPcalcNegatedCliquePartition() resulting in new consdata members `negcliquepartition`, `negcliquepartitioned` and
    7353 `nnegcliques`; changed SCIPcalcCliquePartition() so all cliquepartitions (calculated by SCIPcalcCliquePartition() or
    7354 SCIPcalcNegatedCliquePartition(), which uses the first one) contain again not negative integers
    7355 - `and`, `knapsack`, `linear`, `logic`, `or`, `quadratic`, `setpp`, `varbound`, `xor` and `clique` constraint handlers
    7356 can handle implicit binary variables
    7357 - knapsack constraint handler is now able to pairwise presolving constraints
    7358 - constraint handlers `logicor`, `and`, `or` can parse their output
    7359 - constraint handler `or` can copy its constraints
    7360 - added packing/partitioning orbitope constraint handler for symmetry handling (cons_orbitope.{c,h})
    7361 - added constraint handler for second order cone constraints (cons_soc.(c|h))
    7362 - added constraint handler cons_linking.{c,h} (see cons_linking.c for more details)
    7363 - cons_quadratic can make solutions in CONSCHECK feasible for the quadratic constraints by moving values of linear
    7364 variables and passing the modified solution to the trysol heuristic
    7365 - constraint handler can now register their upgrade functions for quadratic constraints to cons_quadratic (similar to
    7366 LINCONSUPGD)
    7367
    7368- Separation:
    7369 - New separators for oddcycle cuts and Chvatal-Gomory cuts using sub-MIPs
    7370 - modified implementation of separation algorithms in cons_knapsack.c according to results of diploma thesis; including
    7371 super-additive lifting (disabled)
    7372 - uncommented decomposeProblem() in sepa_zerohalf.c (in default settings, not used anyway): was not adapted to the case
    7373 that contiuous variables are allowed in a row
    7374 - new separator rapid learning (sepa_rapidlearning.{c,h}) that produces conflicts, global bound changes, primal
    7375 solutions and initializes inference values for branching
    7376 - added Chvatal-Gomory cuts separated with a sub-MIP (sepa_cgmip.{c|h})
    7377 - added reader for 'Weigted Boolean Optimization': problems (reader_wbo.{c,h}), this reader needs the reader_opb files
    7378 - new separator oddcycle (sepa_oddcycle.{c,h}) separates oddcycle inequalities using the implication/conflict graph and
    7379 dijkstra-algorithm based on binary heaps (dijkstra/dijkstra_bh.{c,h})
    7380
    7381- Branching:
    7382 - Branching on externally given candidates, the \ref BRANCH 'branching rules' have a second new callback method
    7383 (see type_branch.h for more details): SCIP_DECL_BRANCHEXECEXT(x) can be used to branch on external branching candidates,
    7384 which can be added by a user's `relaxation handler` or `constraint handler` plugin, calling SCIPaddExternBranchCand().
    7385 - added branchcands for relaxator solution, that can be added by the relaxator and used by branching rules
    7386 - added relaxsol to variables, s.t. a relaxator can store a solution on which branching or separation can be done
    7387 - SCIP can now branch on relaxation solutions that are either installed to the relaxsol field of the variables or added
    7388 to the list of relaxation candidates, e.g., by constraint handlers. Branching on relaxation solutions is performed if
    7389 the enforcement resulted in an unresolved infeasibility and there are no LP branching candidates, but before pseudo
    7390 solution branching. The branching rules leastinf, mostinf, random and pscost implement the callback for branching on
    7391 relaxation candidates.
    7392 - SCIP can branch on continuous variables. The branching value x' must not be one of the bounds. Two children (x <= x',
    7393 x >= x') will be created.
    7394 - the vbc visualization adds the branching type (lower or upper bound change) and the new bound to the node information
    7395 - the vbc visualization adds the new bound of the branched variable to the node information
    7396
    7397- Statistic:
    7398 - added statistic information about the first primal solution to SCIP statistic; in the statistic output a new line
    7399 appears with this information
    7400 - now the statistic displays the number of calls of the feasibility checking method of each constraint handler and the
    7401 running time of it
    7402
    7403- Propagation:
    7404 - New rounding and propagation heuristics
    7405 - New propagator for variable bounds
    7406 - primal heuristics may now be called directly after the node's propagation loop, using the new timing point
    7407 `SCIP_HEURTIMING_AFTERPROPLOOP`
    7408 - following methods SCIPinferVarUbProp(), SCIPinferVarLbProp(), SCIPinferVarLbCons(), SCIPinferVarUbCons() have a new 6th
    7409 parameter `SCIP_Bool force` which allows bound tightening even if the difference to the newbound is below bound
    7410 strengthening tolerance
    7411 - added propagator for variable lower and upper bounds (prop_vbounds.{c,h}); adjusted cons_varbound.c, var.c, and,
    7412 implics.c to work correctly with the new propagator
    7413
    7414- Nonlinear CIPs:
    7415 + Improved constraint handler for quadratic constraints
    7416 + New constraint handler for second order cone constraints
    7417 + New MINLP heuristics (undercover, subnlp)
    7418 + Preliminary support for non-linear relaxations (via expression trees)
    7419 + Automatic branching on solutions from arbitrary relaxations and on continuous variables
    7420
    7421Performance improvements
    7422------------------------
    7423
    7424- improved `settings/emphasis/cpsolver.set` to decrease time per node
    7425- reworked access to pseudo solution and inference value of variables in order to reduce function calls
    7426- changed default value of parameter `nodeselection/restartdfs/selectbestfreq` to 0; this means if the current node has
    7427 no children the node with the best bound is selected (SCIPgetBestboundNode())
    7428- added a dual reduction step in cons_knapsack.c
    7429- fasten check for common cliques in SCIPcliquelistsHaveCommonClique
    7430- SCIP with CPLEX as LP solver now uses quickstart steepest edge pricing as default instead of steepest edge pricing
    7431- avoid unnecessary domain propagation and LP resolve at nodes with infeasible LP relaxation
    7432- improved zerohalf cut separator: more than one delta is tested for MIR cuts, better handling of dense base
    7433 inequalities, faster scaling of fractional coefficients in rows (now enabled), improved parameter settings (presolving)
    7434
    7435- LP solution:
    7436 - in root node, first LP solution is checked for feasibility to avoid expensive setup
    7437 - avoided restarting if LP solution is feasible
    7438 - separators are not called any longer for an integral initial LP solution
    7439
    7440Examples and applications
    7441-------------------------
    7442
    7443- New branch-and-price example which includes Ryan/Foster branching (binpacking example)
    7444- New example illustrating the use of an event handler (`example/Eventhdlr`)
    7445
    7446Interface changes
    7447-----------------
    7448
    7449- Enhanced user interface for callable library: manual restarts, predefined settings and many other features
    7450- Support of wbo format for weighted PBO problems, IBM's xml-solution format and pip format for polynomial mixed-integer programs
    7451- Extended reader for Flatzinc models
    7452- new API for 'expressions interpreter': code that evaluates expression trees, including first and second derivatives
    7453- NLP solver interface (NLPI) now independent of SCIP like LPI
    7454- SCIP can now maintain a central NLP relaxation of the problem (similar to LP)
    7455- SCIP can now manage a list of external codes (e.g., LP or NLP solver, ZIMPL)
    7456- lp.h/lp.c and the lpi's were changed according to the changes mentioned below.
    7457- adding and deletion of rows to the separation storage and to the LP can now be catched by events
    7458 (`SCIP_EVENTTYPE_ROWADDEDSEPA`, `SCIP_EVENTTYPE_ROWDELETEDSEPA`, `SCIP_EVENTTYPE_ROWADDEDLP`, `SCIP_EVENTTYPE_ROWDELETEDLP`)
    7459
    7460### New and changed callbacks
    7461
    7462- new callback SCIP_DECL_BRANCHEXECRELAX(), together with new parameter in SCIPincludeBranchrule() for branching on a
    7463 relaxation solution
    7464
    7465- Copying a SCIP instance:
    7466 - Constraint handlers have two new callback methods. One for copying the constraint handler plugins
    7467 SCIP_DECL_CONSHDLRCOPY() and the other for copying a constraint itself, SCIP_DECL_CONSCOPY().
    7468 - All plugins, like \ref BRANCH `branching rules` and \ref HEUR `primal heuristics`, have a new callback method (see, e.g.,
    7469 type_branch.h and type_heur.h for more details):
    7470 - SCIP_DECL_BRANCHCOPY(x), SCIP_DECL_HEURCOPY(x) etc.
    7471 - When copying a SCIP instance, these methods are called to copy the plugins.
    7472 - The main problem has a new callback method (see type_prob.h for more details) SCIP_DECL_PROBCOPY(x) when copying a
    7473 SCIP instance, this method is called to copy the problem's data.
    7474 - Variables have a new callback method (see type_var.h for more details) SCIP_DECL_VARCOPY(x) when copying a SCIP
    7475 instance, this method is called to copy the variables' data.
    7476
    7477- Restarts:
    7478 - The callback SCIP_DECL_PROBEXITSOL(x) in the main problem has one new parameter (see type_prob.h for more details):
    7479 - The parameter `restart` is `TRUE` if the callback method was triggered by a restart.
    7480
    7481### Deleted and changed API functions
    7482
    7483- All C++ objects and constructors have a SCIP pointer, now.
    7484- added parameter scip to ObjCloneable::clone()
    7485- changes in a row can now be catched via row events (SCIPcatchRowEvent(), SCIPdropRowEvent(),
    7486 `SCIP_EVENTTYPE_ROWCOEFCHANGED`, `SCIP_EVENTTYPE_ROWCONSTCHANGED`, `SCIP_EVENTTYPE_ROWSIDECHANGED`)
    7487- added new parameter `varcopy` to SCIPcreateVar() to add the function for copying variable data
    7488- in case of using SCIPwriteTransProblem() the currently (locally) valid problem is written this now also includes the
    7489 local constraints
    7490
    7491- Settings:
    7492 - The predefined setting files like `settings/cuts/off.set,aggressive.set,fast.set` have been replaced by
    7493 interface methods like SCIPsetHeuristics(), SCIPsetPresolving(), SCIPsetSeparating(), and SCIPsetEmphasis() in
    7494 \ref scip.h and by user dialogs in the interactive shell like
    7495 `SCIP> set {heuristics|presolving|separating} emphasis {aggressive|fast|off}` or
    7496 `SCIP> set emphasis {counter|cpsolver|easycip|feasibility|hardlp|optimality}`
    7497 - All functions for setting user parameters of different types like SCIPparamSetBool(), SCIPparamSetChar(),
    7498 SCIPparamSetInt(), SCIPparamSetLongint(), and SCIPparamSetString() in pub_paramset.h have a new parameter
    7499 `quiet` it prevents any output during the assign to a new value.
    7500
    7501- NLP:
    7502 - NLPIs can now be used without generating a SCIP instance (i.e., do not require a SCIP pointer), code moved into src/nlpi
    7503 - NLPIs can now be managed like other SCIP plugins, i.e., they can be included into the SCIP core and accessed by
    7504 methods SCIPincludeNlpi(), SCIPfindNlpi(), SCIPgetNNlpis(), SCIPgetNlpis(), SCIPsetNlpiPriority()
    7505
    7506- Intervalarithmetic:
    7507 - method SCIPgetVarPseudocostCurrentRun() now returns the pseudocost value of one branching direction, scaled to a unit
    7508 interval, old method now called SCIPgetVarPseudocostValCurrentRun()
    7509 - renamed SCIPintervalScalarProductRealsIntervals()/SCIPintervalScalarProduct() by
    7510 SCIPintervalScalprodScalars()/SCIPintervalScalprod() and redesigned them in intervalarith.c including new methods
    7511 SCIPintervalScalprodScalarsInf/Sup()
    7512
    7513- Branching:
    7514 - The usage of strong branching changed. Now, SCIPstartStrongbranch() and SCIPendStrongbranch() must be
    7515 called before and after strong branching, respectively.
    7516 - The methods SCIPgetVarPseudocost() and SCIPgetVarPseudocostCurrentRun() in \ref scip.h now return the pseudocost value of
    7517 one branching direction, scaled to a unit interval. The former versions of SCIPgetVarPseudocost() and
    7518 SCIPgetVarPseudocostCurrentRun() are now called SCIPgetVarPseudocostVal() and SCIPgetVarPseudocostValCurrentRun(), respectively.
    7519 - The methods SCIPgetVarConflictScore() and SCIPgetVarConflictScoreCurrentRun() in \ref scip.h are now called
    7520 SCIPgetVarVSIDS() and SCIPgetVarVSIDSCurrentRun(), respectively.
    7521 - The methods SCIPvarGetNInferences(), SCIPvarGetNInferencesCurrentRun(), SCIPvarGetNCutoffs(), and
    7522 SCIPvarGetNCutoffsCurrentRun() are now called SCIPvarGetInferenceSum(), SCIPvarGetInferenceSumCurrentRun(),
    7523 SCIPvarGetCutoffSum(), and SCIPvarGetCutoffSumCurrentRun(), respectively. Furthermore, they now return
    7524 `SCIP_Real` instead of `SCIP_Longint` values.
    7525 - The method SCIPgetVarStrongbranch() has been replaced by two methods SCIPgetVarStrongbranchFrac() and
    7526 SCIPgetVarStrongbranchInt().
    7527
    7528- Copying a SCIP instance:
    7529 - Every new callback method resulted in a new parameter of the include function for the corresponding plugin,
    7530 e.g., SCIPincludeBranchrule() has two new parameters `SCIP_DECL_BRANCHCOPY((*branchcopy))` and
    7531 `SCIP_DECL_BRANCHEXECREL((*branchexecrel))`. In the same fashion, the new callbacks
    7532 `SCIP_DECL_VARCOPY` and `SCIP_DECL_PROBCOPY` led to new parameters in SCIPcreateVar() and SCIPcreateProb() in
    7533 scip.c, respectively.
    7534 - W.r.t. to copy and the C++ wrapper classes there are two new classes. These are `ObjCloneable` and `ObjProbCloneable`.
    7535 The constraint handlers and variables pricers are derived from `ObjProbCloneable` and all other plugin are derived from `ObjCloneable`.
    7536 Both classes implement the function `iscloneable()` which return whether a plugin is clone able or not. Besides that each class has a
    7537 function named `clone()` which differ in their signature. See objcloneable.h, objprobcloneable.h, and the TSP example for more details.
    7538 - SCIPincludeHeur() and SCIPincludeSepa() in \ref scip.h, as well as scip::ObjSepa() and scip::ObjHeur(), have a new parameter:
    7539 `usessubscip`: It can be used to inform SCIP that the heuristic/separator to be included uses a secondary SCIP instance.
    7540 - The argument success in `SCIP_DECL_CONSCOPY` has been renamed to valid.
    7541
    7542- Heuristics:
    7543 - SCIPcutGenerationHeuristicCmir() in sepa_cmir.h has three new parameters:
    7544 - `maxmksetcoefs`: If the mixed knapsack constraint obtained after aggregating LP rows contains more
    7545 than `maxmksetcoefs` nonzero coefficients the generation of the c-MIR cut is aborted.
    7546 - `delta`: It can be used to obtain the scaling factor which leads to the best c-MIR cut found within
    7547 the cut generation heuristic. If a `NULL` pointer is passed, the corresponding c-MIR cut will already be
    7548 added to SCIP by SCIPcutGenerationHeuristicCmir(). Otherwise, the user can generate the cut and add it to SCIP
    7549 on demand afterwards.
    7550 - `deltavalid`: In case, the user wants to know the best scaling factor, i.e., `delta` passed is not `NULL`,
    7551 `deltavalid` will be `TRUE` if the stored scaling factor `delta` will lead to a violated c-MIR cut.
    7552
    7553### New API functions
    7554
    7555- added SCIPcalcNegatedCliquePartition() to scip.c to calculate a clique partition on negations of all given binary
    7556 variables
    7557- SCIPpermuteArray() that randomly shuffles an array using the Fisher-Yates algorithm
    7558- SCIPgetRandomSubset() that draws a random subset of disjoint elements from a given set of disjoint elements
    7559- SCIPswapPointers()
    7560- SCIPlpiGetSolverDesc() to get a descriptive string of an LP solver (developer, webpage, ...)
    7561- SCIPholelistGetNext() to get the next hole of the hole list
    7562- SCIPlpRecalculateObjSqrNorm() which is used when the old calculated square norm was unreliable
    7563- SCIPpricerIsDelayed() which returns if the pricer is delayed (see pub_pricer.h)
    7564
    7565- Variables:
    7566 - SCIPvarIsBinary() which checks if a variable is (implicit) binary (see var.c for more details)
    7567 - SCIPvarGetHolelistOriginal(), SCIPvarGetHolelistGlobal(), SCIPvarGetHolelistLocal() to get the original, global and local holes, respectively
    7568 - SCIPvarGetProbvarHole() to tranform a given domain hole to the corresponding active, fixed, or multi-aggregated variable
    7569
    7570- Restart:
    7571 - allow user to trigger a restart during presolving SCIPrestartSolve()
    7572 - SCIPrestartSolve() that allows the user to manually restart the solving process
    7573 - SCIPisInRestart() to detect whether we are currently restarting
    7574
    7575- Heuristics:
    7576 - for heuristics SCIPheurSetFreq() to change the frequency of the heuristic (pub_heur.h, heur.c)
    7577 - SCIPsepaUsesSubscip(), SCIPheurUsesSubscip()
    7578
    7579- Intervalarithmetic:
    7580 - SCIPeventGetHoleLeft() and SCIPeventGetHoleRight() for accessing the left right interval bound of a domain hole added or removed event
    7581 - SCIPholelistGetLeft() and SCIPholelistGetRight()to get the left and right interval bounds of the open hole interval
    7582 - SCIPintervalAddInf/Sup/Vectors(), SCIPintervalMulInf/Sup() in intervalarith.c
    7583
    7584- Sorting:
    7585 - added SCIPsortPtrPtrLongIntInt(), SCIPsortLongPtrPtrIntInt() and corresponding sorting/inserting/deleting methods in
    7586 pub_misc.h and necessary defines in misc.c
    7587 - added SCIPsortLongPtrInt() and corresponding sorting/inserting/deleting methods in pub_misc.h and necessary defines in misc.c
    7588 - added SCIPsortPtrPtrInt() (and various other) and corresponding sorting/inserting/deleting methods in pub_misc.h and
    7589 necessary defines in misc.c
    7590 - SCIPsortPtrBool() and corresponding sorting/inserting/deleting methods in pub_misc.h and necessary defines in misc.c
    7591
    7592- Constraint Handlers:
    7593 - SCIPconshdlrGetEnfoConss(), SCIPconshdlrGetNEnfoConss()
    7594 - can now forbid upgrading of individual linear constraints (SCIPmarkDoNotUpgradeConsLinear())
    7595 - SCIPpermuteProb() that randomly permutes constraints and variables
    7596 - SCIPgetResultantOr() which returns the resultant of an `or` constraint
    7597 - SCIPmarkDoNotUpgradeConsLinear() in cons_linear.?, which allows to forbid upgrading of linear constraints
    7598 - SCIPgetNUpgrConss() which returns the number of upgraded constraints
    7599 - SCIPconshdlrGetCheckTime() and SCIPconshdlrGetNCheckCalls() which returns the running time in the feasibility checking of the
    7600 corresponding constraint handler respectively the number of calls of the checking method (implemented in cons.c)
    7601
    7602- Copy:
    7603 - SCIPcopy() to clone a SCIP instance
    7604 - SCIPcopyPlugins(), SCIPcopyParamSettings(), SCIPcopyVars(), SCIPcopyConss(), SCIPgetVarCopy() to copy
    7605 individual parts of a SCIP instance separately.
    7606 - SCIPcopyProbData() and SCIPprobCopyProbData() which copies the probdata from a sourcescip to a targetscip
    7607
    7608- Branching:
    7609 - two new functions SCIPgetVarsStrongbranchesFrac()/SCIPgetVarsStrongbranchesInt() for computing strong branching
    7610 information for several variables
    7611 - SCIPbranchruleGetNRelaxCalls() to get the total number of times, a particular branching rule was called on a relaxation solutions
    7612 - SCIPbranchRelax() to branch on a relaxation solution
    7613 - SCIPbranchVarVal() to branch on an arbitrary value within the variable's bounds
    7614 - SCIPbranchGetBranchingPoint() and SCIPgetBranchingPoint() to select branching point for a variable, e.g.,
    7615 ensure branching point is inside the interval for a continuous variable
    7616 - SCIPexecRelpscostBranching() in branch_relpscost.{c,h}; this method allows of calling the reliability
    7617 pseudo cost branching algorithm for given set of branching candidates from the outside
    7618 - SCIPinitVarBranchStats() to initialize the branching statistics (such as pseudo costs, VSIDS, inference values) of a variable
    7619 - SCIPselectBranchVarPscost() in branch_pscost.{c,h}; this method selects from a given candidate array a
    7620 branching variable w.r.t. pseudo cost branching for relax candidates
    7621
    7622- Reading, Writing and Parsing:
    7623 - SCIPparseVarName() which parses a string in cip-format as a variable name
    7624 - SCIPparseVarList() which parses a string as a variable list in cip-format
    7625 - the Flatzinc reader can now handle the output annotations of the Flatzinc format; the method SCIPprintSolReaderFzn()
    7626 outputs the given solution in Flatzinc format w.r.t. the output annotations
    7627 - SCIPprintSolReaderFzn() which prints the best solution in Flatzinc format w.r.t. to the output annotations
    7628 in the input file of the flatzinc model
    7629 - SCIPwriteVarName() which writes a variable in cip-format to given stream
    7630 - SCIPwriteVarsList() which writes an array of variables in cip-Format to given stream
    7631 - SCIPwriteVarsLinearsum() which writes an array of variables and coefficients as linear sum in cip-Format to given stream
    7632
    7633- Copying a SCIP instance:
    7634 - SCIPapplyRens() in \ref heur_rens.h has a new parameter `uselprows`. It can be used to switch from LP rows
    7635 to SCIP constraints as basis of the sub-SCIP constructed in the RENS heuristic.
    7636
    7637- Parameters:
    7638 - SCIPsetParamsCountsols() which sets the parameter for a valid counting process
    7639 - SCIPsetEmphasis() which sets parameter to detect feasibility fast, handle hard LP, solves easy CIPs fast, behaves like a
    7640 CP solver, set parameter for a valid counting process; the desired behavior is triggered via a parameter of the function
    7641 - SCIPresetParam() to reset the value of a single parameter to its default value
    7642
    7643- Settings:
    7644 - added SCIPsortRealRealRealPtr() and corresponding sorting/inserting/deleting methods in pub_misc.h and necessary defines in misc.c
    7645 as basis for the subSCIP, setting ist to TRUE (uses LP rows) will lead to same version as before
    7646 - SCIPsetHeuristics(), SCIPsetSeparating(), SCIPsetPresolving() which set the heuristics to aggressive, fast, off, or
    7647 default settings, depending on the `SCIP_PARAMSET` parameter
    7648 - SCIPsetSubscipsOff() which disables all plugins that uses subscips
    7649 - SCIPsepaSetFreq() to set the calling frequency of a separator
    7650
    7651### Command line interface
    7652
    7653- added new dialog for setting the SCIP parameters for hardlp, optimality, easy CIP, CP like search
    7654- added new dialog for setting the SCIP parameters for feasibility problems `SCIP> set emphasis feasibility`
    7655- added new dialog for setting the SCIP parameters for counting `SCIP> set emphasis counting`
    7656- added new dialog for setting presolving to aggressive, fast, or off in interactive shell
    7657- added new dialog for setting separation to aggressive, fast, or off in interactive shell
    7658- added new dialog for writing all solutions which are collected during the counting process (see cons_countsols.{c,h})
    7659- added new dialog for setting heuristics to aggressive, fast, or off in interactive shell
    7660- added new dialog `display pricers` which displays all included pricers
    7661
    7662### Interfaces to external software
    7663
    7664- added interface to CppAD (nlpi/exprinterpret_cppad.cpp)
    7665- Improved Xpress, CPLEX, SoPlex interfaces
    7666- the SoPlex interface now includes equilibrium scaling on lp's solved from scratch without starting basis
    7667- the SoPlex interface can now double check each SoPlex result against CPLEX (lpi_spx.cpp)
    7668- the SoPlex interface has the option to restore basis only after entire strong branching phase instead of after each
    7669 strong branch (off, because it mostly appears to increase strong branching time and iterations) (lpi_spx.cpp)
    7670
    7671### Changed parameters
    7672
    7673- removed parameter `constraints/knapsack/maxnumcardlift` and adapted setting files
    7674- changed parameter `lp/fastmip` from boolean to integer, possible values are 0 (off), 1 (medium, default), 2 (full,
    7675 must not be used with branch-and-price).
    7676
    7677### New parameters
    7678
    7679- `branching/clamp` to set the minimal fractional distance of a branching point to a continuous variable' bounds
    7680- `branching/random/seed` to change the initial seed value of the branching rule random
    7681- `constraints/indicator/addCouplingCons` that allows to add variable upper bounds if addCoupling is true
    7682- `constraints/indicator/enforceCuts` that allows to check for violated cust in enforcement
    7683- `constraints/indicator/maxCouplingValue` for the maximal value of the coefficient in a coupling inequality/constraint
    7684- `constraints/indicator/noLinconsCon` which controls whether the linear constraint is not explicitly
    7685 added to the problem. default is FALSE
    7686- `constraints/knapsack/dualpresolving` to switch dualpresolving on/off inside the knapsack constraint handler, default is TRUE
    7687- `constraints/knapsack/presolpairwise` that allows pairwise presolving of knapsack constraints, default is TRUE
    7688- `constraints/knapsack/presolusehashing` that allows fast pairwise presolving of knapsack constraints, default is TRUE
    7689- `heuristics/crossover/dontwaitatroot` that allows to call crossover at root node independently from nwaitingnodes
    7690- `heuristics/rens/uselprows` that allows to switch between LP row and SCIP constraints as basis for the
    7691 subSCIP, default is TRUE (uses LP rows)
    7692- `lp/rowrepswitch` telling simplex solver to switch to row representation of the basis (if possible),
    7693 if number of rows divided by number of columns exceeds this value (default value infinity, i.e. never switch)
    7694- `lp/threads` to change the number of threads used to solve the LP relaxation (default is 0: automatic)
    7695- `misc/lexdualstalling` that turns on the lex dual algorithm if the separation process is stalling
    7696- `misc/usevartable` and `misc/useconstable` which turns on/off the usage of hashtables mapping from
    7697 variable/constraint names to the variables/constraints; when turned off, SCIPfindVar() and SCIPfindCons() may not be
    7698 used; the hashtables can be turned off for subMIPs to improve the performance, default value TRUE
    7699- `misc/usesmalltables` which results in using smaller tables for names, cliques and cuts and improves
    7700 the performace for smaller instances, default value FALSE
    7701- `misc/permutationseed` to change the permutation seed value for permuting the problem after the
    7702 problem is transformed (-1 means no permutation)
    7703- `reading/zplreader/usestartsol` which allows to switch ZIMPL start solutions off, default value TRUE
    7704- `vbc/dispsols` to propose if the nodes where solutions are found should be visualized in the branch and bound tree
    7705
    7706### Data structures
    7707
    7708- implemented the data structure and events for global and local domain holes added and removed
    7709- new data structures and methods to handle nonlinear expressions in NLPI ({type_, struct_, pub_}expression.{h,c}):
    7710 nlpioracle can store and evaluate general NLPs now, nlpi_ipopt can solve general NLPs now
    7711
    7712Testing
    7713-------
    7714
    7715- minor changes on several evaluation scripts (new statuses: better, solved, sollimit, gaplimit) and short-mode for cmpres.awk
    7716- support for FreeBSD (32- and 64-bit) including minor changes in several scripts in the check-directory
    7717
    7718Build system
    7719------------
    7720
    7721### Makefile
    7722
    7723- added scripts check_*.sh, evalcheck_*.sh and check_*.awk for blis, glkp, gurobi and symphony (including targets in
    7724 Makefile) and slightly modified scripts for cplex, cbc and mosek and cmpres-script
    7725- added target `lintfiles` which allows to call flexelint with a list of file, for example, make lintfiles
    7726 `FILES=src/scip/prop_vbounds.c`
    7727- the NLP solver interfaces and expression interpreter are located in a separate library (libnlpi.*; similar to the lpi
    7728 library) and is required to link against the SCIP library also projects that use SCIP via `make/make.project` need to
    7729 change their Makefile (!!!): in the $(MAINFILE) target, add $(NLPILIBFILE) behind $(LPILIBFILE) in the dependencies
    7730 and add $(LINKCXX_l)$(NLPILIB)$(LINKLIBSUFFIX) to the linker flags
    7731- The additional NLPI library requires a change in the Makefile of SCIP's project:
    7732 The $(MAINFILE) target now has $(NLPILIBFILE) as additional dependency and the linking
    7733 command requires $(LINKCXX_l)$(NLPILIB)$(LINKLIBSUFFIX) as additional argument.
    7734- A bug in the Makefiles of older versions of the SCIP examples may cause
    7735 data loss. If you have a custom Makefile, please ensure that the target
    7736 `clean` is changed as described here:
    7737 http://scipopt.org/download/bugfixes/scip-1.2.0/make.txt.
    7738
    7739Fixed bugs
    7740----------
    7741
    7742- fixed bug in conflict.c in the method conflictsetAddBound()
    7743- fixed `bug` in projects Makefiles w.r.t. `make clean`
    7744- fixed bug in rapid learning with wrong ordering of dual and primal bound update, primal bound is now updated inside
    7745 rapid learning
    7746- fixed potential bug in rapid learning with dual reductions
    7747- fixed potential bug where SCIPselectSimpleValue() returns a value slightly outside of the given bounds due to rounding
    7748 errors (probably cancelation in subtraction in SCIPfindSimpleRational), now use rounding control and check result
    7749- fixed bug that SCIP could not be continued after it has been stopped due to a limit
    7750- fixed bug in var.c: SCIPvarChgLbOriginal() and SCIPvarChgUbOriginal() cannot access original bounds if the variable is
    7751 negated
    7752- fixed potential bug with pseudo solution branching on free variables
    7753- fixed bug with multiaggregations whose infimum and supremum are both infinite: in such a case multiaggregation is now
    7754 forbidden
    7755- fixed numerical issue with multiaggregations which are infinite in one direction: value of multiaggregated variable
    7756 could have been larger then inifinity
    7757- fixed bug w.r.t. of adding a variable bound variable to its self
    7758- fixed bug concering the incorrect assumption that every solution computed in SCIPlpGetUnboundedSol() is integral (we
    7759 will not branch but return `infeasible or unbounded` like in presolving)
    7760- fixed bug while breaking an clique down to their impications (in SCIPcliquetableCleanup() in implics.c) where the
    7761 variable was not of vartype `SCIP_VARTYPE_BINARY`, instead of adding an implication we add a variable bound
    7762- fixed bug with debugging a solution: during restarts erroneously it was claimed that the primal solution is cut off
    7763
    7764- Interface:
    7765 - fixed bug w.r.t. ObjDialog and displaying the description of the dialog
    7766 - fixed bug when aborting pricing with Ctrl-C
    7767
    7768- LP:
    7769 - fixed bug in scip.c w.r.t. to call of conflict analysis for LPs which reached the objective limit in case of diving
    7770 - fixed bug with resolving LPs at infeasible root node
    7771 - fixed bug in lp.c: in sumMIRRow() rowtoolong was not set correctly
    7772 - fixed bug in lp.c w.r.t. objective limit reached and the chosen comparison (fixed buglist entry 40)
    7773 - fixed bug in lp.c: if in SCIPlpSolveAndEval() the LP has to be solved from scratch due to numerical troubles, reset
    7774 `SCIP_LPPARAM_FROMSCRATCH` to `FALSE` afterwards
    7775 - fixed bug in lp.c SCIProwGetObjParallelism() due to a wrong parallelism value which arised from cancellations during
    7776 calculation of squared euclidean norm of objective function vector of column variables
    7777 - fixed bug in lp.c: SCIPlpGetUnboundedSol() did not ensure that unbounded solution lies withing the bounds of the
    7778 variables
    7779 - fixed bug in lp.c w.r.t. to the number of `active` pricer
    7780
    7781- Solve:
    7782 - fixed bug in solve.c where relaxation branching candidates were cleared, but the relaxation was still marked solved
    7783 and not called again, furthermore, adjusted criterions for solving a relaxation again
    7784 - fixed bugs in solve.c: even with LP solving disabled, the root LP was solved in case continous variables are
    7785 contained; setting pricing/maxvars(root) to 1 resulted in not calling the pricers
    7786 - fixed bug in solve.c: make sure SCIP terminates correctly also when a user interrupt or gap limit is reached, i.e.,
    7787 avoid error `pricing was aborted, but no branching could be created!`
    7788
    7789- Tree:
    7790 - fixed bug in tree.c: if an explicit branching point is given, we may not recompute a better centering point
    7791 - fixed bug in tree.c: propagate implications on multi-aggregated should not be performed
    7792
    7793- Constraints:
    7794 - corrected several asserts in linear and quadratic constraint handler concerning parsing of CIP format
    7795 - fixed bug while deleting redundant variables, which have no influence on changing the feasibility of the linear
    7796 constraints, we need to update the sides of the constraint at each step, bug number 51 in bugzilla
    7797 - fixed bug in copy procedure of AND constraint handler, negated variables have been copied to their originals
    7798 - fixed bug when deleting a constraint where the update was delayed and not processed yet (in cons.c)
    7799 - fixed bug in cons_linear.c: binary variables should not be multi-aggregated
    7800 - fixed bug in cons_quadratic.c: curvature of bivariate quadratic constraints was not detected correctly
    7801 - fixed bug in cons_sos2.c: the branching position was sometimes mistakenly increased
    7802 - fixed bug in propagation of cons_sos2.c: the node can be cut off at more places: the previous version was not
    7803 sucessfull in this respect
    7804 - fixed bug in cons_linear.c:applyFixings() which could lead to lhs/rhs smaller/larger than -/+infinity
    7805 - fixed bug in cons_linear.c in detectRedundantConstraints() and corrected old bug fix in SCIProwCreate(): we want lhs
    7806 <= rhs to be satisfied without numerical tolerances in order to avoid numerical problems in the LP solver
    7807
    7808- Knapsack Constraint Handler:
    7809 - fixed bug in cons_knapsack.c: mergeMultiples() now detects whether a node can be cut off
    7810 - fixed bug in cons_knapsack.c w.r.t. to items with zero weight
    7811 - fixed bug in cons_knapsack.c: In SCIPseparateRelaxedKnapsack() not all variables need to be active in deeper regions
    7812 of the tree
    7813 - fixed bug in cons_knapsack.c and sepa_clique.c: the assumption that implications are always nonredundant and contain
    7814 only active variables is not correct anymore as the corresponing vbound might be missing because of numerics
    7815
    7816- Separation and Cuts:
    7817 - fixed bug in cutpool.c: the hashkey computation was not constant over time
    7818 - fixed bug in cutpool.c: hashkey of a row changed during the solving process (if a row is made integral after creation,
    7819 maxabsval can be invalid when adding it to the pool, but might be recomputed later on)
    7820 - fixed bug in sepa_rapidlearning.c, stop processing if there are no binary variables left
    7821 - fixed bug in sepa_rapidlearning.c, corrected computation of right dualbound
    7822 - fixed bugs in sepa_zerohalf.c, e.g., handling of intscaling and substitution of variable bounds
    7823 - fixed bug in sepastore.c in sepastoreApplyLb/Ub being to hard on feasibility decisions
    7824 - fixed bug in sepa_flowcover.c: numerical issues while computing candidate set for lambda
    7825
    7826- LP Interfaces:
    7827 - fixed bug in SoPlex autopricing due to which autopricing had behaved like steepest edge pricing so far
    7828 - fixed bug in lpi_clp.cpp: SCIPlpiChgBounds() checks if the column status exists in Clp before using it
    7829 - fixed wrong assert in Cplex LPI: Due to numerical inaccuracies, a few pivots might be performed after refactorization
    7830 - fixed bug concerning assert(!SCIPlpDivingObjChanged(lp)) which was caused by wrong infinity double parameters for
    7831 cplex
    7832 - fixed makefile system for `OSTYPE=darwin` w.r.t. to CPLEX as LP solver
    7833
    7834- Presolving:
    7835 - fixed bug in cons_setppc: aggregated variables were not correctly removed in presolving
    7836 - fixed bug in presolving of linear constraint handler: in redundancy detection, two different numerical epsilons were used
    7837 - fixed bug in presolving while not applying a bound change on a variable in a single-variable constraint (e.g. x1 =
    7838 0.03) in cons_linear which is too small, that lead to another bound change in presol_trivial which is not allowed, so
    7839 now this bound change will be forced
    7840 - fixed SCIPvarIsTransformedOrigvar() in var.c (variables generated by presol_inttobinary returned false)
    7841 - fixed bug w.r.t. an assert in presol_inttobinary.c; it was assumed that the aggregation which is performed there will
    7842 never lead to an infeasibility, this is not true, see comment in presol_inttobinary.c
    7843 - fixed bug in presol_trivial.c trying to fix continuous variables, now uses a less stricter comparison to fix variables
    7844 - fixed bug in cons_bounddisjunction.c: presolve may have tried to tighten bounds on a multiaggregated variable (now
    7845 upgrades to linear constraint)
    7846
    7847- Reading, Writing and Messages:
    7848 - fixed bug while trying to write a MIP where SCIP needs to flush the lp changes first
    7849 - fixed potential resource leak when running out of memory while writing files
    7850 - fixed bug in reader_zpl.c which appeared using the parameter `reading/zplreader/parameters`
    7851 - fixed bugs in flatzinc readers with constraints that exclusively consist of constants
    7852 - fixed bug in reader_gms: correct handling of nonstandard bounds on general integer variables
    7853 - fixed buglist entry 35, which was caused by a wrong read in correction when the reading buffer was full in
    7854 reader_opb.c
    7855 - fixed bugs in reader_fzn.c w.r.t. parsing and solution output in Flatzinc format
    7856 - fixed bug in reader_fzn.c w.r.t. comment lines
    7857 - fixed bug in reader_opb.c w.r.t. comment lines
    7858 - fixed bug in message handler w.r.t. to messages which are longer then `SCIP_MAXSTRLEN`
    7859
    7860- Heuristics:
    7861 - fixed bugs do to `HEUR_TIMING SCIP_HEURTIMING_AFTERPROPLOOP` which appeared during repropagation
    7862 - fixed bug in trivial heuristic: the locking solution might have falsely initialized some values to zero
    7863 - fixed bug in heur_oneopt.c w.r.t. to SCIPtrySol(); it is necessary that the bound of the solution is check otherwise,
    7864 infeasible solution could be accepted as feasible
    7865 - fixed bug in heur_trivial.c w.r.t. to debug messages after a solution was freed
    7866 - fixed bug for `HEUR_TIMING SCIP_HEURTIMING_BEFOREPRESOL` and modifiable constraints
    7867 - corrected wrong assert in DINS heuristic when called for an empty problem
    7868 - fixed potential bug in OCTANE heuristic with nonbasic solutions
    7869 - fixed bug in sub-MIP heuristics with parameter change if some default plugins are not included
    7870 - fixed bug in trivial heuristic with bounds that are greater than the heuristic's infinity value
    7871
    7872Miscellaneous
    7873-------------
    7874
    7875- As the interface contains several additional callback functions and
    7876 parameters for plugins, some effort may be required to compile your
    7877 own projects with SCIP 2.0. See also `Changes between version 1.2 and 2.0` in the doxygen
    7878 documentation for additional information.
    7879
    7880@page RN1_2 Release notes for SCIP 1.2
    7881
    7882@section RN120 SCIP 1.2.0
    7883*************************
    7884
    7885Features
    7886--------
    7887
    7888- adjusted hard memory limit to (soft memory limit)*1.1 + 100mb in check.sh, checkcount.sh, check_cplex.sh,
    7889 check_cluster.sh and check_cbc.sh
    7890- new presolving step in cons_knapsack.c, same like `simplifyinequalities` in cons_linear.c
    7891- now it's possible to write strings with more than `SCIP_MAXSTRLEN` amount of characters in all message.c functions
    7892- the current/root lp can be marked to be no relaxation of the current/root problem
    7893- added new preprocessing step (mergeMultiples) in cons_setppc.c where equal variables are merged
    7894- Black-box lexicographic dual simplex algorithm; can now run lexicographical dual algorithm (parameter `lp/lexdualalgo`)
    7895
    7896- Bounds:
    7897 - SCIP now has `lazy bounds`, which are useful for column generation: see @ref PRICER_REMARKS `pricer remarks` for an explanation.
    7898 Each variable has now two additional `SCIP_Real` parameter which define a lazy lower and upper bound; lazy means that
    7899 there exists constraints which implies these (lazy) bounds. If the lazy lower or upper bound is greater or less than
    7900 the local lower or upper bound, respectively, then the corresponding bound is not put into the LP. The bounds are set
    7901 to minus and plus infinity per default which yields the same behavior as before. With the methods SCIPchgVarLbLazy()
    7902 and SCIPchgVarUbLazy() these bounds can be set. This is of interest if SCIP gets used as a branch-and-price
    7903 framework. Attention! The lazy bounds need to be valid for each feasible LP solution. If the objective function
    7904 implies bounds on the variables for each optimal LP solution, but these bounds may be violated for arbitrary LP
    7905 solutions, these bounds must not be declared lazy!
    7906 - interval arithmetic functions can work with unbounded intervals added new functions to allow more operations on
    7907 intervals, including solving quadratic interval equations
    7908
    7909- Branching:
    7910 - extended hybrid relpscost branching rule by usage of the average length of conflicts a variable appears in
    7911 - `early branching`-functionality added: in a branch-and-price code, the user can stop pricing at a node although there
    7912 may exist variables with negative reduced costs. In this case, the lp-lowerbound will not be used. The pricer has,
    7913 however, the option to return a lower bound. This can be useful for column generation.
    7914
    7915- Constraints:
    7916 - Copy constructors and i/o functionality for constraints: all linear type constraint handlers are able to copy
    7917 constraints using the function SCIPgetConsCopy() in scip.h
    7918 - the linear constraint handler is able to parse a string in CIP format and create a corresponding linear constraint
    7919 - Constraint handler for indicator constraints and parsing them from *.lp and *.zpl files
    7920 - the indicator constraint can now try to produce a feasible solution (via heur_trysol)
    7921 - one can now write indicator constraints in LP-format
    7922 - added constraint handler for quadratic constraints
    7923
    7924- Cuts:
    7925 - added new version of zerohalf cuts from Manuel Kutschka
    7926 - added multi-commodity-flow cut separator
    7927
    7928- Heuristics:
    7929 - Heuristics which are applied before root LP
    7930 - added heuristic that performs a local search in an NLP (takes only linear and quadratic constraints into account so far)
    7931 - added heuristic that gets a solution from other components and tries it (heur_trysol.?)
    7932 - new trivial heuristic: tries zero solution, lower and upper bound solution and some variable lock based fixing
    7933 - added new timing point, `SCIP_HEURTIMING_DURINGPRICINGLOOP`, for calling heuristics; If this timing point is used the
    7934 corresponding heuristics is called during the pricing loop of variables; we also added this timing point to
    7935 heur_simplerounding.{h,c} which has the effect that a LP solution which satisfies all integrality conditions during
    7936 the pricing loop is detected
    7937
    7938- Interfaces:
    7939 - 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)
    7940 - Preliminary support of non-convex MIQCPs: Constraint handler for quadratic constraints, NLP heuristic and
    7941 Ipopt interface, see \ref cons_quadratic.h.
    7942 - There are LP-interfaces to QSopt and Gurobi (rudimentary).
    7943
    7944- Reader and Writer:
    7945 - added reader and writer for FlatZinc models (reader_fzn.{c,h})
    7946 - added writer for GAMS models (reader_gms.{c,h})
    7947
    7948Performance improvements
    7949------------------------
    7950
    7951- Enhanced MCF cuts: stable version, used by default
    7952- replaced some function calls in loop conditions
    7953- in sepa_cmir.c, if mksetcoefs is invalid for delta=1 no other values of delta are tested anymore
    7954- changed the timing of the feasibility pump in case of pricing
    7955- removed changing of update rule to `ETA` from standard soplex update `Forrest-Tomlin` in lpi_spx.cpp
    7956- improved memory usage in heur_octane.c
    7957- improved reading time of opb-files, due to using a hashtable for all `and`-constraints
    7958- improved performance of merging variables in mergeMultiples() in cons_knapsack.c
    7959- improved performance in tightenWeightsLift() and SCIPseparateRelaxedKnapsack() in cons_knapsack.c, due to now
    7960 sparse-cleaning `global` arrays instead of using BMSclearMemory... functions for cleaning local arrays each time
    7961- improved performance in SCIPcliquelistRemoveFromCliques()
    7962- improved performance in SCIPcalcCliquePartition()
    7963- improved performance in SCIPvarGetActiveRepresentatives() in var.c
    7964
    7965- Presolving:
    7966 - improved pairwise presolving in cons_and.c due to using a hashtable
    7967 - improved pairwise presolving in cons_xor.c due to using a hashtable
    7968
    7969Interface changes
    7970-----------------
    7971
    7972- A significant change for C++ users is that all include files of SCIP
    7973 automatically detect C++ mode, i.e., no `extern `C`` is needed anymore.
    7974- Reader for Flatzinc and GAMS models
    7975
    7976### New and changed callbacks
    7977
    7978- The callback SCIP_DECL_PRICERREDCOST(x) in the \ref PRICER `pricers` has two new parameters:
    7979 + A `result` pointer determines whether the pricer guarantees that there exist no more variables. This allows for early branching.
    7980 + A pointer for providing a lower bound.
    7981
    7982- The \ref CONS `constraint handlers` have two new callback methods (see type_cons.h for more details):
    7983 + SCIP_DECL_CONSCOPY(x): this method can be used to copy a constraint.
    7984 + SCIP_DECL_CONSPARSE(x): this method can be used to parse a constraint in CIP format.
    7985
    7986### Deleted and changed API functions
    7987
    7988- SCIPcalcMIR() in scip.h has two new parameter `mksetcoefsvalid` and `sol`. The parameter `mksetcoefsvalid` stores
    7989 whether the coefficients of the mixed knapsack set (`mksetcoefs`) computed in SCIPlpCalcMIR() are valid. If the mixed
    7990 knapsack constraint obtained after aggregating LP rows is empty or contains too many nonzero elements the generation of the
    7991 c-MIR cut is aborted in SCIPlpCalcMIR() and `mksetcoefs` is not valid. The input parameter `sol` can be used to separate a
    7992 solution different from the LP solution.
    7993- new parameter `set` in SCIPconsSetInitial().
    7994- some interval arithmetic method take an additional argument to denote which value stands for infinity in an interval
    7995
    7996- Variables:
    7997 - SCIPgetVarClosestVlb() and SCIPgetVarClosestVub() in scip.h have a new parameter `sol`. It can be used to obtain the closest
    7998 variable bound w.r.t. a solution different from the LP solution.
    7999 - new parameters `lowerbound` and `result` in type_pricer.h: lowerbound can save a lower bound computed by the pricer,
    8000 result indicates whether the pricer guarantees that there exist no more variables if no variable was found
    8001
    8002### New API functions
    8003
    8004- new methods to deactivate a pricer SCIPdeactivatePricer() in scip.c
    8005- 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
    8006- SCIPsetProbName() to set problem name in scip.h/c (SCIPprobSetName() in prob.h/c)
    8007
    8008- Objective:
    8009 - SCIPgetTransObjscale() and SCIPgetTransObjoffset() in scip.c
    8010 - SCIPaddObjoffset() in scip.h; sets offset of objective function
    8011 - SCIPgetOrigObjoffset() in scip.h; returns the objective offset of the original problem
    8012 - SCIPgetOrigObjscale() in scip.h; returns the objective scale of the original problem
    8013
    8014- Constraints:
    8015 - detectRedundantConstraints() in cons_xor.c and necessary hash-functions for fast pairwise presolving
    8016 - SCIPparseCons() in scip.h; parses constraint information (in cip format) out of a string
    8017 - SCIPgetConsCopy() in scip.h; which copies a constraint of the source SCIP
    8018
    8019- Relaxation:
    8020 - SCIPisLPRelax() and SCIPisRootLPRelax() in scip.c and scip.h returning whether the current/root LP is a
    8021 relaxation of the current/root problem and thus defines a valid lower bound
    8022 - SCIPlpSetIsRelax() and SCIPlpSetRootLPIsRelax() in lp.c and lp.h to set the information, whether the lp is a valid relaxation;
    8023 this information is per default set to true and constraint be used. The aggregated version has only 2 linear constraints the
    8024 default linearization has nvars + 1
    8025
    8026- Sort:
    8027 - extended the sort template functions in sorttpl.c with a `five` array; now it possible to used this template to sort
    8028 up to five arrays
    8029 - new interface methods SCIPcolSort(), SCIProwSort(), SCIPcolGetIndex()
    8030 - added SCIPsortPtrPtrLongInt() and corresponding sorting/inserting/deleting methods in pub_misc.h and necessary defines
    8031 in misc.c
    8032
    8033- Variables:
    8034 - SCIPprintNodeRootPath() in scip.h This method prints all branching decisions on variables from the root to the given node
    8035 - SCIPnodeGetParentBranchings(), SCIPnodeGetAncestorBranchings(), SCIPnodeGetAncestorBranchingPath(); These methods return
    8036 the set of variable branchings that were performed in the parent node / all ancestor nodes to create a given node
    8037 - SCIPchgVarLbLazy() and SCIPchgVarUbLazy() in scip.h; These methods can be used to change the lazy lower or
    8038 upper bound of a variable; This might has the consequences that the bounds of the corresponding variable is not in
    8039 LP. This is the case if the lazy lower or upper bound is greater or less than the local lower or upper bound, respectively
    8040 - SCIPvarGetLbLazy() and SCIPvarGetUbLazy() in pub_var.h; These methods return the lazy lower or upper bound, respectively
    8041 - SCIPvarCompareActiveAndNegated() and SCIPvarCompActiveAndNegated() in pub_var.h for comparing variables
    8042 negated, active or fixed the same way
    8043 - SCIPparseVars() in scip.h; parses variable information (in cip format) out of a string
    8044 - SCIPgetNFixedonesSetppc() and SCIPgetNFixedzerosSetppc() in cons_setppc.{h,c}; these methods returns
    8045 current (local) number of variables fixed to one/zero in the given setppc constraint
    8046 - SCIPgetVarConflictlengthScore(), SCIPgetVarAvgConflictlength(), SCIPgetAvgConflictlengthScore() and their pendants for the current run
    8047 - added function SCIPvarsGetProbvarBinary() in pub_var.h; gets active, fixed, or multi-aggregated problem variables of
    8048 binary variables and corresponding negated status
    8049
    8050### Interfaces to external software
    8051
    8052- LP Interfaces:
    8053 - heavily revised Mosek interface
    8054 - new interface to QSopt due to Daniel Espinoza
    8055 - First version of LP interfaces to Gurobi and QSopt
    8056 - Major performance improvements in LP interfaces to Clp, Mosek and SoPlex
    8057
    8058- External Software:
    8059 - adjusted interface to ZIMPL (reader_zpl.{c,h} for ZIMPL version 2.10; this interface should also work with older ZIMPL versions
    8060 - Adjusted interface to Zimpl version 3.0.0
    8061 - added first version of an interface to Ipopt (only QCP, no deletion of vars/cons allowed; nlpi_ipopt.(h|c))
    8062
    8063- SCIP Interfaces:
    8064 - On http://code.google.com/p/python-zibopt/source/checkout you find a beta
    8065 version of a python interface to SCIP implemented by Ryan J. O'Neil.
    8066
    8067### Changed parameters
    8068
    8069- removed parameter `constraints/and/initiallp` since it is not needed anymore;
    8070- set parameter `constraints/and/sepafreq` default value to 1
    8071- display character of oneopt heuristic changed to `b`
    8072
    8073### New parameters
    8074
    8075- `branching/relpscost/advanced/conflenscore`, default value 0.001
    8076- `constraints/and/aggrlinearization` in cons_and.c, aggregated version of the linearization
    8077- `constraints/and/enforcecuts` in cons_and.c, should cuts be separated during LP enforcing?
    8078- `constraints/and/presolusehashing` in cons_and.c, should pairwise presolving use hashing?, default TRUE
    8079- `constraints/countsols/sollimit` in cons_countsols.c, counting stops, if the given number of solutions were found (-1: no limit)
    8080- `constraints/xor/presolusehashing` in cons_xor.c, should pairwise presolving use hashing?, default TRUE
    8081- `heuristics/oneopt/duringroot`, default value TRUE
    8082
    8083Build system
    8084------------
    8085
    8086### Makefile
    8087
    8088- extend Makefile to link against Ipopt if `IPOPT=true` is set
    8089
    8090Fixed bugs
    8091----------
    8092
    8093- fixed wrong use of pointer in lp.c
    8094- fixed bug with array dimension not reset to zero when array is freed in pseudoobj propagator
    8095- fixed bug with enforcement of pseudo solutions: if pseudo solution is choosen because LP hit a limit, it has to be
    8096 enforced in any case
    8097- fixed potential bug in coloring example: SCIPcreateChild() is now given an estimate in terms of the transformed
    8098 problem by SCIPgetLocalTransEstimate(), no longer the estimated original problem value. Also clarified this in the
    8099 comments for SCIPcreateChild()
    8100- fixed compiler warning `warning: dereferencing type-punned pointer will break strict-aliasing rules` which resuts in
    8101 scip-crashes with gcc version 4.4.0
    8102- adjusted assert in var.c
    8103- fixed bug in SCIPvarGetActiveRepresentatives() in var.c
    8104- fixed bug with objective limit in lp.c: previously the infinity value of SCIP was used as default - now the value of
    8105 LPI is used. In the earlier version in many cases the problems where never infeasible.
    8106- added and adjusted some asserts, initialized some values
    8107- increased the numerical stability of coefficient tightening for Big M formulations
    8108- fixed bug with incorrect pseudo activities when objective of a variable switches sign in linear constraint handler
    8109- fixed bug with empty constraints in several writing routines
    8110- fixed `GGT-Kaibel-Bug` in var.c, prop_pseudoobj.c and cons_varbound.c that occured while computing new values using
    8111 infinity values
    8112
    8113- Bounds:
    8114 - fixed bug in coefficient tightening with infinite bounds
    8115 - fixed bug in solve.c: in case lowerbound >= upperbound, SCIPsolveIsStopped() returned `SCIP_STATUS_GAPLIMIT`
    8116
    8117- Nodes:
    8118 - fixed bug in SCIPsolveNode() concerning the case that the time limit was hit while solving the LP relaxation of a
    8119 subproblem which is already an LP (branching on pseudo solution is not possible)
    8120 - fixed bug in vbc tools concerning of marking probing nodes
    8121 - fixed bug in solve.c with nodes which are marked to be repropagated while enforcement
    8122
    8123- Variables:
    8124 - fixed possible infinite loop while multiaggregating a variable in var.c
    8125 - fixed bug in SCIPgetSolVals() similar to SCIPgetSolVal(): try to get original variables of transformed ones if the
    8126 solution lives in original space
    8127
    8128- Pricing:
    8129 - fixed potential bug: restarts are now only done if no active pricers exist
    8130 - fixed bug in SCIPlpSolveAndEval(): if fastmip and pricers enabled and objlimit was reached but CPLEX did not perform
    8131 the final pivot step in order to exceed the objlimit, do one additional simplex step with pricing strategy steepest
    8132 edge, if this doesn't suffice, turn off fastmip temporarily and solve again. Also consider solstat of the new
    8133 solution.
    8134 - fixed bug with invalid pseudo solution (lower bound was always >= 0) when using pricing.
    8135 - fixed bug in SCIPfreeProb() in scip.c: all pricers are deactivated now
    8136
    8137- Memory:
    8138 - now frees debug memory
    8139 - fixed bug with exponential complexity for reallocating memory in SCIPvarGetActiveRepresentatives() in var.c
    8140 - fixed casting of void* pointers in memory.h for C++, adjusted the same for C in memory.h and due to that adjusted all
    8141 header files(set whole files in extern `C`) and cpp-files(removed unnecessary extern `C` lines)
    8142 - removed memory leak in connection with freeing branch and bound nodes: focusnode was not freed if both children could
    8143 be cut off due to bounding
    8144
    8145- Reading and Writing:
    8146 - corrected bug in reader_lp.c: earlier read bounds were thrown away (implementation was not conforming to standard)
    8147 - fixed bug in reader_lp.c with respect to constraint and variable names which start with two or more dots `..`
    8148 - fixed bug in all readers w.r.t. SCIPgetProbvarLinearSum()
    8149 - fixed bug in reader_mps.c with respect to corrupted files
    8150 - fixed bug in reader_mps.c with respect to writing transformed problems
    8151 - changed wrong writing of mps files due to constraints without any name
    8152 - fixed a bug during reading debug solution file
    8153 - fixed bug in case of reading an objective function in opb format with multiple occurrences of the same variable
    8154 - fixed bug in case of reading an objective function in lp format with multiple occurrences of the same variable
    8155 - fixed a wrong fix of a reading bug, which was in reality a writing bug in MPS format; integer variables in mps format
    8156 without bounds are binary variables, if the bound of an integer variable is infinity you have to write this bound
    8157
    8158- Separation:
    8159 - fixed bug in sepa_cmir.c, sepa_mcf.c and sepa_flowcover.c: sol different to LP solution is now separated
    8160 - corrected two asserts in sepa_redcost.c (reduced costs can be negative for fixed variables: qsopt uses this)
    8161 - fixed bug in sepa_zerohalf.c; replacement of own sorting functions by template functions was incorrect
    8162 - fixed bug in var.c, cons_knapsack.c and sepa_flowcover.c: variable bounds corresponding to implication are not
    8163 generated if coefficient is large, variable bounds with large coefficients are ignored for construction of knapsack
    8164 and snf relaxations
    8165 - fixed bug in sepa_impliedbound.c concerning redundant implications
    8166
    8167- Cuts:
    8168 - fixed bug in sepa_cmir.c concerning uninitialized mksetcoefs (if MIR-cut generation is aborted because the aggregated
    8169 constraint is empty or contains too many nonzero elements mksetcoefs is invalid)
    8170 - interrupts optimization process if a node will be cutoff, which allows the solution
    8171 - fixed bug in sepa_impliedbounds.c and sepa_intobj.c: if separating a sol, this sol is now also given to SCIPaddCut()
    8172 so that the efficacy of the cut is now computed correctly
    8173 - fixed bug in solve.c caused by integer overflow due to setting the number of cuts to INT_MAX
    8174
    8175- Presolving:
    8176 - fixed wrong result in check.awk, if infeasible problems are stopped in presolving
    8177 - fixed exponential calculation of solution values during check of original solution, therefore changed
    8178 SCIPvarGetActiveRepresentatives() in var.c and flattened all multiaggregated vars at the end of presolving in
    8179 exitPresolve()
    8180 - fixed bug with wrong abort criterion in presolving
    8181 - fixed bug in presol.c caused by not reseting presolver-wasdelayed status
    8182 - fixed bug in SCIPconsSetInitial() that occurred in pairwise presolving: add or delete constraint in initconss when
    8183 changing the initial flag
    8184
    8185- Constraints:
    8186 - fixed bug in cons.c caused by not resetting conshdlr data after restart
    8187 - fixed memory error in cons_countsols.c
    8188 - fixed assert in cons_and.c method SCIP_DECL_CONSINITSOL(consInitsolAnd)
    8189 - fixed bug in cons_countsols.c we respect to warning message that `The current parameter setting might cause ...`
    8190
    8191- Knapsack Constraint Handler:
    8192 - fixed wrong assert in cons_knapsack.c and handled a special this case in simplifyInequalities()
    8193 - fixed some bugs in simplifyInequalities() in cons_knapsack.c
    8194 - fixed bug in mergeMultiples() in cons_knapsack.c
    8195 - adjusted ConsData and ConsHdlrData in cons_knapsack.c
    8196 - fixed compiler warning caused by no initialization of two integer in cons_knapsack.c
    8197 - fixed bug in cons_knapsack.c caused by having a multi-aggregated variable in a knapsack constraint, now applyFixing is
    8198 able to resolve a binary multi-aggregation with integral values
    8199
    8200- Linear Constraint Handler:
    8201 - fixed infinity loop in simplify inequalities in cons_linear.c
    8202 - fixed bug in cons_linear.c: do not select variable as slack variable for multiaggregation in convertLongEquality if it
    8203 has been marked as not-multiaggregable
    8204 - fixed bug in cons_linear.c: also do not multiaggregate variables in dual preproccessing if it has been marked as
    8205 not-multiaggregable
    8206 - fixed bug in cons_linear.c: slight decrease of epsilon in order to make sure that scaled coefficients are really
    8207 integral
    8208 - fixed bug in chgRhs() and chgLhs() of cons_linear.c: after changing lhs or rhs of a constraints lhs <= rhs has to be
    8209 satisfied without numerical tolerances
    8210
    8211- Heuristics:
    8212 - added and changed some SCIPisStopped() calls in several heuristics
    8213 - fixed bug in oneopt heuritic with start solution which has become infeasible due to global bound changes
    8214
    8215- Interfaces:
    8216 - corrected several bugs in the Clp-interface concerning return values
    8217 - fixed potential interface bug: time limits of 0.0 are not anymore passed to the LP solver, which may have caused
    8218 errors
    8219
    8220@page RN1_1 Release notes for SCIP 1.1
    8221
    8222@section RN110 SCIP 1.1.0
    8223*************************
    8224
    8225Features
    8226--------
    8227
    8228- SCIP can now count integer feasible solutions for IPs/CIPs (without continuous variables) (see SCIPcount())
    8229- check.awk now uses TeX package supertabular which supports automatic pagebreak
    8230- struct `SCIP_Stat` has now two additional variables: `nprobboundchgs`, `nprobholechgs`; these are used to fix the domain
    8231 reduction counts in sepa.c, cons.c, branch.c and prop.c; this means, that now the domain reduction counts are reduced
    8232 by those domain reduceds which are preformed during probing
    8233- added capabilities to flatten the (multi)-aggregation graph of variables
    8234- pseudoobj propagator now also propagates the global lower (dual) bound
    8235- new heuristic DINS (distance induced neighborhood search by Ghosh)
    8236
    8237- Output:
    8238 - SCIP can now output a picture of the constraint matrix in PPM format.
    8239 - output of real values is now done with 15 digits after the decimal point
    8240 - Extended the capabilities of SCIP to output problems in different formats (LP, MPS, CIP, ...). You can output the original and
    8241 transformed problem. Furthermore, generic names can be given to the variables and constraints.
    8242 - The feasibility test for solutions at the end of the execution now outputs more useful information.
    8243 This made some changes in the interface of constraint handlers necessary.
    8244
    8245- Presolving:
    8246 - added predefined settings file presolving/aggressive.set
    8247 - new presolver boundshift (presol_boundshift.{c,h}); this presolver is currently turned off with default parameter setting
    8248
    8249- Constraints:
    8250 - linear constraint handler now detects continuous variables that are implicit integer in dual presolve
    8251 - replaced some old sorting methods in cons_knapsack.c, heur_octane.c, sepa_flowcover.c and presol_probing.c through
    8252 SCIPsort...() interfaces, adjusted misc.{c,h} and pub_misc.h for these changes
    8253 - cons_countsols.c is now able to store the collected solution if required
    8254 - added first version of SOS type 1 constraint handler (cons_sos1.{c,h})
    8255 - added first version of SOS type 2 constraint handler (cons_sos2.{c,h})
    8256 - less aggressive scaling in linear constraint handler presolve to improve numerics
    8257 - added first version of constraint handler cons_countsols.{c,h}
    8258
    8259- Reader:
    8260 - added ccg-reader (weighted column connectivity graph)
    8261 - added reader for pseudo-Boolean problems (reader_opb.{c,h})
    8262 - the ZPL reader is now able to pass a starting solution to SCIP
    8263 - the MPS reader is now able to write a problem in MPS format
    8264 - the ZIMPL reader now understands SOS type 1 and 2 constraints
    8265 - the LP reader reads SOS constraints of type 1 and 2
    8266 - the MPS reader reads the SOS section (but cannot yet handle `MARKERS`)
    8267
    8268- LPI:
    8269 - The SoPlex LPI can now write basis files.
    8270 - revised lpi_clp.cpp (many small changes, in particular writing and reading of bases)
    8271 - added FASTMIP settings in lpi_clp.cpp that try to improve the performance of Clp as much as possible
    8272
    8273- Cuts and Separation:
    8274 - the c-MIR separator now also tries to get rid of implicit integer variables by aggregation
    8275 - allow cut selection based on support of inequality in orthogonality computation
    8276 - disabled zerohalf cuts by default
    8277 - adjusted all predefined settings files, e.g., `settings/cuts/fast.set`, such that they are consistent wrt removed,
    8278 added and changed parameter values of scip.
    8279 - New cutting plane separator MCF (beta version).
    8280 - new separator sepa_zerohalf.{c,h}; separates {0,1/2}-Cuts according to Caprara and Fischetti
    8281
    8282Performance improvements
    8283------------------------
    8284
    8285- heavily decreased the usage of SCIPisStopped(), which costs system time
    8286- small performance improvement of c-MIR aggregation heuristic
    8287- reworked strong branching in lpi_clp.cpp (scaling works now, bounds can be trusted)
    8288
    8289- Constraints:
    8290 - The preprocessing has been revised. It now applies bound computations in a numerically more stable way. The pairwise
    8291 comparison of linear, logicor, and setppc constraints has been improved.
    8292 - better branching in SOS1/SOS2 constraints
    8293 - fixed performance bug with large number of unnamed constraints that will kill the name hash table (now, unnamed
    8294 constraints are not put into the hash table)
    8295
    8296- Cuts and Separation:
    8297 - improved the performance of SCIPcalcMIR() and SCIPcalcStrongCG() by exploiting sparsity
    8298 - improved performance of SCIPvarGetLPSol(), which affects many parts of the code, in particular Gomory and strong CG cuts
    8299 - do not calculate MIR and StrongCG cut aggregations if number of nonzeros in aggregated row is too large
    8300
    8301- Presolving:
    8302 - improved pairwise presolving in cons_linear.c: reduced cache misses, reduced number of SCIPisStopped() calls and
    8303 included detecting of redundant constraints with hash table in advance
    8304 - tighter memory limits in knapsack presolve lifting procedure to avoid overly expensive presolving
    8305 - included detecting of redundant constraints with hash table in advance in cons_logicor.c and limit other pairwise
    8306 presolving
    8307 - included detecting of redundant constraints with hash table in advance in cons_setppc.c and limit other pairwise
    8308 presolving
    8309 - limit pairwise presolving in cons_linear.c
    8310
    8311Examples and applications
    8312-------------------------
    8313
    8314- Added an example for the graph coloring problem in `examples/Coloring`, showing the usage of column generation.
    8315- added SOS2 example
    8316- extended TSP example
    8317
    8318Interface changes
    8319-----------------
    8320
    8321### New and changed callbacks
    8322
    8323- New callback method SCIP_DECL_READERWRITE(x) in type_reader.h; this method is called to write a problem to file
    8324 stream in the format the reader stands for; useful for writing the transformed problem in LP or MPS format. Hence,
    8325 also SCIPincludeReader() has changed.
    8326- The callback \ref CONSCHECK (SCIP_DECL_CONSCHECK()) in the constraint handlers now has a new parameter `printreason` that tells
    8327 a constraint handler to output the reason for a possible infeasibility of the solution to be checked using
    8328 SCIPinfoMessage(). Have a look at one of the constraint handlers implemented in SCIP to see how it works. This
    8329 methodology makes it possible to output the reason of a violation in human readable form, for instance, for the check
    8330 at the end of a SCIP run, where the obtained best solution is checked against the original formulation.\n This change
    8331 often has little effect on C-implementations, since this parameter can be safely ignored with respect to the
    8332 correctness of the code. The corresponding C++ method scip::ObjConshdlr::scip_check(), however, has to be extended
    8333 and will not compile otherwise.
    8334- added new LPI pricing option `SCIP_PRICING_LPIDEFAULT`, such that every LP interface can set the default pricing
    8335 strategy on its own (`auto` is not useful for this, because for CPLEX, for example, SCIP seems to be worse with `auto`
    8336 then with `steepest edge`)
    8337- Added user pointer to callback methods of hash table, see pub_misc.h.
    8338
    8339### Deleted and changed API functions
    8340
    8341- SCIPgetVarRedcost() now returns 0 for variables that have been aggregated out or removed in presolving.
    8342 reduced cost in case of infeasible LPs)
    8343- new parameter `maxfrac` for SCIPcalcStrongCG()
    8344- new parameter `maxmksetcoefs` for SCIPcalcMIR() and SCIPcalcStrongCG() methods
    8345- new parameter `conshdlrname` in SCIPincludeLinconsUpgrade()
    8346
    8347- Problem:
    8348 - new parameters `extension` in SCIPreadProb() defining a desired file format or `NULL` if file extension should be use
    8349 - New parameters `extension` and `genericnames` in SCIPprintTransProblem(), SCIPprintOrigProblem(),
    8350 SCIPwriteOrigProblem(), and SCIPwriteTransProblem() defining the requested format or `NULL` for default CIP format
    8351 and using generic names for the variables and constraints. Examples are
    8352 - SCIPprintTransProblem(scip, NULL, NULL, TRUE) displays the transformed problem in CIP format with
    8353 generic variables and constraint names
    8354 - SCIPprintOrigProblem(scip, NULL, `lp`, FALSE) displays the original problem in LP format with
    8355 original variables and constraint names.
    8356
    8357- Sorting:
    8358 - expand sorttpl.c by some parameters
    8359 - changed some names for sorting methods
    8360 - replaced sorting methods SCIPbsort...() by faster (quicksort/shellsort) algorithms SCIPsort...() Note that the order
    8361 of the parameters has been changed to simplify the template code in sorttpl.c!
    8362
    8363- Checking:
    8364 - SCIPcheckSolOrig() is restructured. The last two parameters have changed. They are now bools indicating
    8365 whether the reason for the violation should be printed to the standard output and whether all violations should be
    8366 printed. This reflects the changes in the constraint handlers above, which allow the automation of the feasibility
    8367 test. The pointers to store the constraint handler or constraint are not needed anymore.
    8368 - the parameter list of the method SCIPcheckCons() (scip.h) has changed; the new advatage is, that SCIP can print the
    8369 reason for the violation of a constraint as for as the constraint handler supports that
    8370 - the parameter list of the method scip_check() (objconshdlr.h) has an additional parameter `printreason` see for
    8371 explanation the previous point
    8372
    8373### New API functions
    8374
    8375- LPI now has a function SCIPlpiGetSolverPointer() that returns a solver dependent pointer. This can be used to directly
    8376 access the LP solver. This should, of course, only be used by people that know exactly what they are doing.
    8377- added capabilities to avoid multi-aggregation of a single variable by setting a corresponding flag (SCIPmarkDoNotMultaggrVar())
    8378- SCIPgetProbvarLinearSum()
    8379- SCIPgetResultantAnd() which returns the resultant variable of an `and` constraint
    8380- SCIPchgChildPrio() to change the node selection priority of the given child
    8381- SCIPconsGetPos()
    8382- SCIPrepropagateNode() to mark a node for repropagation
    8383- SCIPcount() (in cons_countsols.h) for counting all feasible solution of a given CIP
    8384- SCIPcreateRootDialog() (in dialog_default.h) which creates a root dialog
    8385- SCIPgetVectorEfficacyNorm()
    8386- SCIPseparateRelaxedKnapsack() in cons_knapsack.h
    8387- SCIPgetCutoffdepth() which returns the depth of first node in active path that is marked being cutoff
    8388- SCIPflattenVarAggregationGraph()
    8389- SCIPclockGetLastTime()
    8390- SCIPcalcHashtableSize() to get a reasonable hash table size
    8391- SCIPgetVarFarkasCoef() and SCIPgetColFarkasCoef() to get the farkas coefficient of a variable (analogon of
    8392- SCIPgetRepropdepth() to get the depth of first node in active path that has to be propagated again
    8393- SCIPmajorVersion(), SCIPminorVersion() and SCIPtechVersion() returning the corresponding version
    8394
    8395- Read, Write and Print:
    8396 - SCIPprintSysError() which encapsulates the strerror_r calls, the NO_STRERROR_R flag switches between the use
    8397 of strerror_r and strerror inside
    8398 - SCIPsnprintf() safe version of snprintf (and sprintf)
    8399 - SCIPreaderCanRead() and SCIPreaderCanWrite() in pub_reader.h, these return TRUE if the corresponding
    8400 reader is capable to read or write, respectively
    8401 - SCIPwriteOrigProblem(), e.g., SCIPwriteOrigProblem(scip, `orig.lp`, NULL, FALSE) prints the original
    8402 problem in LP format in the file `orig.lp`
    8403 - SCIPwriteTransProblem(), e.g., SCIPwriteTransProblem(scip, NULL, NULL, FALSE) displays the transformed problem in CIP format
    8404
    8405- Heuristics:
    8406 - SCIPcutGenerationHeuristicCmir() in sepa_cmir.h
    8407 - SCIPheurGetTimingmask() and SCIPheurSetTimingmask()
    8408
    8409- Sorting:
    8410 - added some downwards-sorting methods
    8411 - SCIPbsortInd()
    8412 - SCIPsortedvecInsert...(), SCIPsortedvecInsertDown...(), SCIPsortedvecDelPos...(),
    8413 SCIPsortedvecDelPosDown...(), SCIPsortedvecFind...() and SCIPsortedvecFindDown...() to manage sorted vectors or
    8414 groups of vectors of various data types that are sorted w.r.t. the first vector
    8415
    8416### Command line interface
    8417
    8418- advanced reading and writing dialog in interactive shell
    8419
    8420### Interfaces to external software
    8421
    8422- Many changes in the SoPlex interface: The current one is tailored towards SoPlex 1.4 (aka 1.3.3). All SoPlex functions
    8423 (where applicable) should now have an exception handling. The Bugfix for adding columns has been moved to SoPlex. One
    8424 can use ROW representation. Reading/writing of a basis has been implemented.
    8425
    8426### Changed parameters
    8427
    8428- changed default frequency parameters for RINS, Local Branching, Crossover and Mutation heuristic This should not
    8429 change the performance but happened just for consistency reasons
    8430- changed parameter default values for the priority of presolver `dualfix` and `inttobinary`
    8431- removed parameter `separating/cmir/maxtestdeltaroot`
    8432- new value `l` for parameter `lp/pricing`, which is the new default
    8433
    8434### New parameters
    8435
    8436- `constraints/and/linearize` to enable linearization of all <and> constraints (in presolving),
    8437- `constraints/and/initiallp` to turn on, off, or `auto` that the LP relaxation of the AND constraints are in the initial LP;
    8438- `constraints/countsols/collect` to enable the storing of the solutions; default value FALSE;
    8439- `constraints/indicator/addCoupling` to enable generation of relaxation
    8440- `constraints/indicator/branchIndicators` to decide whether it is branched on indicator constraints in enforcing
    8441- `constraints/indicator/genLogicor` to decide whether logicor constraints instead of cuts are generated
    8442- `constraints/indicator/sepaAlternativeLP` to decide whether separation takes place using the alternative LP
    8443- `constraints/linear/aggregatevariables` to search for aggregations in equations in the presolving step
    8444- `constraints/linear/dualpresolving` to disable dual presolving step in the linear constraint handler; default value is TRUE
    8445- `constraints/linear/simplifyinequalities` to enable a simplification step for inequalities; default value is set to FALSE = disabled
    8446- `constraints/linear/upgrade/binpack` to enable or disable the linear upgrading process
    8447- `constraints/linear/upgrade/eqknapsack` to enable or disable the linear upgrading process
    8448- `constraints/linear/upgrade/invarknapsack` to enable or disable the linear upgrading process
    8449- `constraints/linear/upgrade/knapsack` to enable or disable the linear upgrading process
    8450- `constraints/linear/upgrade/logicor` to enable or disable the linear upgrading process
    8451- `constraints/linear/upgrade/setppc` to enable or disable the linear upgrading process
    8452- `constraints/linear/upgrade/varbound` to enable or disable the linear upgrading process
    8453- `constraints/linear/presolusehashing` to use hashing comparison in cons_linear.c; default value is TRUE
    8454- `constraints/logicor/presolusehashing` to use hashing comparison in cons_logicor.c; default value is TRUE
    8455- `constraints/setppc/presolusehashing` to use hashing comparison in cons_setppc.c; default value is TRUE
    8456- `constraints/SOS1/branchNonzeros` to decide whether SOS1 constraint with largest number of nonzero variables is picked for branching
    8457- `constraints/SOS1/branchSOS` to enable or disable branching on SOS1 constraints
    8458- `heuristics/feaspump/beforecuts` to allow the feaspump to be called before cut separation
    8459- `heuristics/mutation/minimprove`
    8460- `presol/donotmultaggr` which disables multiaggregation for all variables of the problem
    8461- `separating/cmir/densityoffset` to allow for more c-MIR cuts on small models
    8462- `separating/orthofunc` to choose function for scalar product computation in orthogonality test
    8463
    8464Testing
    8465-------
    8466
    8467- updated mmm.{test,solu}, mittelmann.{test,solu}, miplib3.solu, miplib.solu, shortmiplib.test and added
    8468 mittelmann_current.test, mittelmann_old.test
    8469- added test scripts for testing counting (make testcount)
    8470- removed tag make testpre (useless without corresponding scripts)
    8471- added tag testcount (make testcount); this allows for testing counting problem
    8472- replaced tcsh by bash and gawk by awk in all check scripts to achieve higher compatibility
    8473
    8474Build system
    8475------------
    8476
    8477### Makefile
    8478
    8479- added `make/make.project` as default make include for external projects using SCIP
    8480- added possibility to compile shared libraries in makefiles (and added `make/make.linux.x86.gnu.opt-shared`)
    8481- replaced <string> by <cstring> in all C++-interfaces to get `strlen()` included (gcc-4.3 gave an error)
    8482- Moved -rpath option for ld to linux-specific Makefiles.
    8483- Re-activated readline library on darwin/ppc.
    8484
    8485- Flags:
    8486 - added in all `make/make.*` `GMP_FLAGS` and `GMP_LDFLAGS`
    8487 - new flag GMP with values (`auto`, `true and `false`); in case of `auto` the library gmp is linked if ZIMPL is
    8488 included
    8489 - adapted all makefiles of the examples accordingly
    8490
    8491- LP:
    8492 - modified makefiles to accept ZIMPLOPT and LPSOPT flags (with values `opt` or `dbg` and default being `opt`), and
    8493 removed `LPS=spxdbg` and `LPS=clpdbg`
    8494 - added target spx132 for SoPlex version 1.3.2
    8495
    8496Fixed bugs
    8497----------
    8498
    8499- fixed CTRL-C if NO_SIGACTION is set (e.g., for MinGW)
    8500- added checks whether a plugin (handler) has already been included to avoid later complications e.g. with parameters.
    8501- fixed bug with wrong `tightened` return value of some of the change bounds methods
    8502- forced full propagation in presolving -> this fixes a bug that implied that variable locks became inconsistent
    8503- replaced calls to perror() by SCIP error message using strerror(errno); this avoids problems with the error output
    8504 stream
    8505- fixed bug in method SCIPgetProbvarLinearSum()
    8506- fixed bug with errors occurring in sub-MIPs. Search is only aborted in dbg mode, in opt mode a warning will be printed
    8507- fixed bug in tclique-graph datastructure concerning insertion of edges into nonempty graph
    8508- corrected bug in SCIPtreeBranchVar() (tree.c): several comparison functions needed a `feas`.
    8509- fixed bug in SCIPtightenVarLb/Ub() in scip.c concering forcing a bound change (bound improvement is checked now)
    8510- improved stage checking for bound computation
    8511- fixed usage of command test for string comparison in check-scripts (now compatible with ubuntu)
    8512- replaced sprintf and snprintf by SCIPsnprintf() fixed potential bug with overlong strings
    8513- corrected bug in the case when soplex threw an exception in autopricing
    8514- fixed bug in SCIPvarGetOrigvarSum() concerning the corner case the a negated variable has no parent variable in
    8515 original problem
    8516
    8517- Aggregation:
    8518 - avoid aggregation of implicit integers with fractional aggregation scalars
    8519 - fixed bug in aggregateActiveIntVars(): If a < 0, multiply a*x + b*y == c by -1 (algo for finding initial solution does
    8520 only work for a > 0).
    8521 - avoiding aggregation that removes information about implicitly integer variables (removes bug)
    8522 - fixed bug with exponential running times due to complicated recursive multi-aggregation
    8523 - corrected bug in var.c occuring during applying boundchanges in varUpdateAggregationBounds method
    8524
    8525- Constraints:
    8526 - fixed bug that a missing CONSTRANS in constraint handler leads to `NULL` pointer as constraint data for the copied
    8527 constraints instead of pointer copies of the consdata (as explained in the constraint handler `HowTo`)
    8528 - fixed bugs in second part of consdataTightenCoefs(): Removed min/maxleftactisinfinity (definition was not correct),
    8529 fixed calculation of min/maxleftactivity and removed asserts concerning whether all redundant vars were deleted (led
    8530 to different behavior in debug and opt mod).
    8531 - fixed typo in documentation: default value for `dynamic` parameter is FALSE for all constraint handlers!
    8532 - fixed bug in preprocessing of SOS2 constraints (cons_sos2.c)
    8533 - fixed bug in cons_countsols.c concerning variable locking
    8534 - fixed bug in cons_varbounds.c, concerning SCIPaddVarVlb() and SCIPaddVarVub()
    8535 - fixed bug in applyFixings() in cons_varbound.c concerning tightening the bound of a variable left in a redundant
    8536 constraint (bound change is forced now)
    8537
    8538- Heuristics:
    8539 - fixed bug with useless objective cutoff in LNS heuristics
    8540 - removed bug for values greater than (-)infinity, heur_shifting.c, heur_intshifting.c, heur_rounding.c, heur_oneopt.c
    8541 - fixed bug with errors occurring in heuristic LPs. In opt mode a warning will be printed, abort in dbg mode
    8542
    8543- Linear Constraints:
    8544 - fixed bug with wrong update of activities in linear constraints after global upper bound changes
    8545 - fixed bug in preprocessConstraintPairs() in cons_linear.c concerning updating the flags of the constraint that stayes
    8546 in the problem (nonredundant information were lost before)
    8547 - fixed bug in cons_linear.c caused by comparing two infinity values during checking of using variable as slackvariable
    8548 - removed bug for rhs/lhs greater than (-)infinity, cons_linear.c
    8549 - removed bug caused by hashcomparison for non-sorted constraints, cons_linear.c
    8550 - fixed bugs with wrong presolving due to cancellation in (res-)activities in cons_linear.c
    8551 - removed BOUNDSCALETOL adjustment in cons_linear.c. This fixes bug with slightly infeasible variable fixings in
    8552 presolving; reliable resactivities should make the BOUNDSCALETOL relaxation redundant.
    8553 - removed `epsilontic` bug in cons_linear.c due to adjusting left/right hand side in applyfixing
    8554 - fixed bug with multi-aggregated variables in cons_logicor: instead of fixing them, a linear constraint will be created
    8555 - corrected bug in cons_linear.c:applyFixings() [if variable was fixed to infinity the rhs/lhs were wrong]
    8556 - fixed bugs in pairwise presolving of cons_linear.c concerning deletion of upgraded constraints and inconsistent update
    8557 of nchgsides in case of coefsequal and coefsnegated
    8558 - fixed false assert and corrected a bug caused by deleting a constraint on `firstchanged` position in pairwise
    8559 presolving with hashing in cons_linear.c
    8560
    8561- LP:
    8562 - fixed handling of unbounded variables with 0 objective in SCIPlpGetModifiedPseudo[Proved]Objval() (lp.c)
    8563 - fixed bug with uncatched LPSOLSTAT after hitting a time or iteration limit
    8564 - corrected bug in SCIPlpGetState() if the LP is empty
    8565 - fixed bug in SCIPlpSolveAndEval(): added extra simplex step if objlimit reached, fastmip and pricers enabled in order
    8566 to get dual solution for pricing.
    8567 - weakened two too strong asserts in lp.c concerning the LP result OBJLIMIT
    8568 - fixed bug in SCIPlpSolveAndEval(): allow more than one extra simplex step for getting an objlimit exceeding solution
    8569 with fastmip
    8570
    8571- Memory:
    8572 - corrected invalid memory access in tcliqueIsEdge: added check whether node1 has no neighbors (tclique_graph.c)
    8573 - removed memory leak detected with the help of coverity in dialog.c
    8574 - fixed bug with memory reallocation in SCIPgetProbvarLinearSum()
    8575 - tried to fix memory leak in dialog.c occuring from different versions of the readline/history libraries
    8576 - removed possible memory leak in objdialog.cpp
    8577
    8578- Numerical:
    8579 - fixed numerical issue in linear constraint propagation: need slightly more aggressive tightening such that probing
    8580 does not choose a wrong value for fixing inside an epsilon interval
    8581 - fixed numerical bug in dual presolving of linear constraint handler
    8582 - avoid fixing variables to infinity in order to get rid of numerical inconsistencies in the original model
    8583
    8584- Objective:
    8585 - added handling of the case of roundable variables with 0 objective in presol_dualfix.c
    8586 - fixed bug with writing the MIP relaxation to a file concerning the objective function; in case the original objective
    8587 function is requested, the transformed objective function gets re-transformed (scaling, offset)
    8588 - fixed bug with wrong objective sense output for transformed problem. The transformed problem is always a minimization
    8589 problem!
    8590 - fixed bug with objective scaling after restart
    8591
    8592- Reading:
    8593 - fixed bug with reading empty lines in TSP example
    8594 - fixed bug with non-conformal parameter name in reader_ppm
    8595 - fixed infinite loop in LP file reader if a line exceeds the character limit
    8596 - fixed bug in reader_ppm while appending strings for output file
    8597 - fixed some `SCIP_RETCODE` bugs in reader_fix.c, reader_sol.c, reader_sos.c and reader_zpl.c
    8598 - fixed docu in type_reader.h
    8599 - fixed bug with multi-aggregated variables which are de facto aggregated or fixed after flattening the aggregation tree
    8600 - fixed bug with bound changes of variables in modifiable constraints during full dual presolving of linear conshdlr
    8601 - increased compiler compatibility for C++ wrapper classed by adding extern `C` in obj*.cpp files and changing strlen
    8602 calls to std::strlen
    8603
    8604- Separation:
    8605 - corrected bug in priceAndCutLoop(): separation was aborted if domain reduction was applied
    8606 - fixed bug in sepa_mir.c: size of testeddeltas-array was too small
    8607 - corrected imlementation of SCIPlpiGetBasisInd() in lpi_clp.cpp (this fixes the bug that almost no Gomory cuts are
    8608 found with Clp).
    8609
    8610- Sorting:
    8611 - fixed bugs in sorttpl.c: fixed wrong arraysize in shellsort; in case an has at most one element, then no sorting is
    8612 applied
    8613 - fixed wrong if condition for function call in sorttpl.c
    8614 - fixed obvious bug in linear constraint data sorting. Most part of the code assumed pure index sorting, but in fact, it
    8615 was sorted by variable type as first criterion and index as second criterion.
    8616
    8617@page RN1_0 Release notes for SCIP 1.0
    8618
    8619@section RN100 SCIP 1.0.0
    8620*************************
    8621
    8622Features
    8623--------
    8624
    8625- SCIP now has a couple of specialized settings, all called scip_*.set
    8626- SCIP is now compatible to the Exception branch of SoPlex
    8627- if possible, objective function is scaled to make objective value integral with gcd 1
    8628- slightly modified automatic constraint aging strategy
    8629- new C templates disp_xxx.h and dialog_xxx.h and C++ wrapper classes objdisp.h and objdialog.h, respectively
    8630- modified reader `sol`, st. files which where created via typing the order of commands `set log *.sol`,
    8631 `disp sol var -`, `set log cplex.log` in Cplex can now be read
    8632- new dummy LP interface `lpi_none.c`; useful for running SCIP without a LP solver
    8633
    8634- Presolver:
    8635 - modified probing presolver to do multiple cycles if called in subsequent runs
    8636 - changed sort algorithm in probing presolver
    8637
    8638- Node selection:
    8639 - new node selection rule `estimate` (best estimate search)
    8640 - new node selection rule `hybridestim`
    8641
    8642- Documentation:
    8643 - the doxygen documentation now has HowTo's for all plugin types
    8644 - the doxygen documentation now contains a FAQ
    8645 - the documentation has now a TAB Modules; there you can find list of available constraint handles, presolvers,
    8646 propagators, lpi interfaces, file readers and so on
    8647
    8648- Time:
    8649 - time limit is now forwarded to lp solving algorithm
    8650 - presolving, cut separation, primal heuristics and strong branching now better respect time limit
    8651
    8652- Heuristics:
    8653 - best estimate search is now used in all large neighborhood search heuristics
    8654 - new improvement heuristic `oneopt`
    8655 - new heuristic `actconsdiving` following an idea of John Chinneck
    8656
    8657- Separation and Cuts:
    8658 - modified cut selection code
    8659 - cut conversion into linear constraints after a restart now works better
    8660 - added flow cover separator
    8661 - gomory cuts are now also separated for integral slack variables
    8662 - less aggressive in Gomory cut separation
    8663 - strong CG cuts are now also separated for integral slack variables
    8664
    8665Performance improvements
    8666------------------------
    8667
    8668- greatly improved performance of LP file reader by replacing string copies with pointer copies
    8669- removed performance bottleneck with non-bfs based node selectors and large leaf queues at the cost of a small memory
    8670 overhead (2 ints per node in the leaf queue); this improves performance quite a bit on instances that take a large
    8671 number of branching nodes
    8672- improved performance of linear constraint propagation by delaying some floor/ceil calculations
    8673- improved performance of clique cut separator
    8674
    8675Interface changes
    8676-----------------
    8677
    8678### New and changed callbacks
    8679
    8680- new callback method SCIPdialogFree()
    8681
    8682### Deleted and changed API functions
    8683
    8684- slightly modified bound substitution heuristic in SCIPcalcMIR() and SCIPcalcStrongCG()
    8685- slightly less conservative in numerics for SCIPmakeRowIntegral()
    8686- linear and knapsack constraint handler may now deal with coefficients of value zero
    8687- new parameter `maxbounddist` for SCIPincludeSepa() and constructor ObjSepa()
    8688- new parameter `restart` for method SCIPfreeSolve()
    8689- calling SCIPwriteLP() is now possible in Solved Stage
    8690- SCIPwrite{LP,MIP} may no longer be called after solving, since the LP data structures may not be valid
    8691- All functions SCIP<datatype>Param() got a new parameter `isadvanced`.
    8692 This does not influence the performance of SCIP, but the position of the parameter in the settings menu.
    8693 Hence, if you do not care about this, you can assign any value to it.
    8694 You should add the corresponding flag to the SCIP<datatype>Param() calls in your own source code.
    8695
    8696- Version:
    8697 - modified `SCIP_SUBVERSION` to be a number instead of a string (to be able to use `SCIP_SUBVERSION >= ...`)
    8698 - SCIPsubversion() now returns an int instead of a const char*
    8699
    8700- Tree and Nodes:
    8701 - new parameter `estimate` for SCIPcreateChild() giving an estimate for value of best feasible solution in the subtree to
    8702 be created. One possibility is to use SCIPgetLocalOrigEstimate() for this value.
    8703 - removed method SCIPnodeGetPriority()
    8704 - removed parameter `lowestboundfirst` from SCIPincludeNodesel()
    8705
    8706- Branching:
    8707 - removed parameter `branchdir` from SCIPbranchVar()
    8708 - new parameters `leftchild`, `eqchild` and `downchild` for SCIPbranchVar()
    8709 - SCIPgetVarStrongbranch() now also returns lperror == TRUE if the solving process should be stopped, e.g., because of a
    8710 time limit
    8711
    8712- Variable tightening:
    8713 - replaced methods SCIPvarGetClosestVlb() and SCIPvarGetClosestVub() from pub_var.h by new methods
    8714 SCIPgetVarClosestVlb() and SCIPgetVarClosestVlb() in scip.h
    8715 - new parameter `force` for SCIPtightenVarLb() and SCIPtightenVarUb()
    8716
    8717### New API functions
    8718
    8719- SCIPreadSol()
    8720- SCIPwriteMIP()
    8721- SCIPgetLocalOrigEstimate() and SCIPgetLocalTransEstimate()
    8722- SCIPisStopped()
    8723- SCIProwIsInGlobalCutpool()
    8724- SCIPresetParams()
    8725- SCIPgetVarRedcost()
    8726- SCIPtightenVarLbGlobal() and SCIPtightenVarUbGlobal()
    8727- SCIPsepaGetMaxbounddist()
    8728- SCIPboundchgGetNewbound(), SCIPboundchgGetVar(), SCIPboundchgGetBoundchgtype(),
    8729 SCIPboundchgGetBoundtype(), SCIPboundchgIsRedundant(), SCIPdomchgGetNBoundchgs(), SCIPdomchgGetBoundchg()
    8730- SCIPnodeUpdateLowerboundLP()
    8731- SCIPcalcNodeselPriority()
    8732- SCIPnodeGetEstimate()
    8733- SCIPnodeGetDomchg()
    8734- SCIPgetRootNode() (in combination with SCIPcutoffNode(), this allows the immediate finishing of the optimization)
    8735
    8736### Command line interface
    8737
    8738- default dialog menu now includes the commands `set default` and `display parameters`
    8739- added option to write node LP and MIP relaxations to LP file from interactive shell
    8740
    8741### Changed parameters
    8742
    8743- parameters are now separated into basic and advanced, the latter ones have been moved to extra submenus
    8744- priority parameters are now restricted to be in [INT_MIN/4,INT_MAX/4] to avoid overflow errors in comparison methods
    8745- increased priority of `estimate` node selector, such that this is the new default node selector
    8746- changed meaning of parameter setting `nodeselection/childsel = l`; old meaning is now called `r`
    8747- changed default value of `conflict/maxvarsfac` to 0.1
    8748- changed default value of `conflict/useprop` to TRUE
    8749- changed default value of `conflict/useinflp` to TRUE
    8750- changed default value of `conflict/usepseudo` to TRUE
    8751- changed default value of `conflict/maxlploops` to 2
    8752- changed default value of `conflict/lpiterations` to 10
    8753- changed default value of `conflict/interconss` to -1
    8754- changed default value of `conflict/reconvlevels` to -1
    8755- changed default value of `conflict/settlelocal` to FALSE
    8756- changed default value of `constraints/linear/propfreq` to 1
    8757- changed default values of `heuristics/∗diving/backtrack` to TRUE
    8758- changed default value of `nodeselection/restartdfs/stdpriority` to 10000
    8759- changed default value of `numerics/boundstreps` to 0.05 in order to avoid very long propagation loops on continuous variables
    8760- changed default value of `presolving/restartfac` to 0.05
    8761- changed default value of `presolving/restartminred` to 0.10
    8762- changed default value of `separating/objparalfac` to 0.01 for performance reasons
    8763- changed default value of global `separating/maxbounddist` to 1.0
    8764- changed default value of `separating/objparalfac` to 0.0001
    8765
    8766### New parameters
    8767
    8768- `conflict/enable` to globally enable or disable conflict analysis
    8769- `constraints/linear/maxcardbounddist` and `constraints/knapsack/maxcardbounddist`
    8770- `heuristics/∗diving/backtrack` to activate 1-level backtracking for most of the diving heuristics
    8771- `heuristics/feaspump/maxstallloops`
    8772- `nodeselection/childsel` to control the child selection
    8773- `presolving/immrestartfac`
    8774- `separating/∗/maxbounddist` to have individual maxbounddist parameters per separator
    8775- `separating/clique/backtrackfreq` to speed up clique cut separation in heuristic fashion
    8776- `separating/redcost/continuous`
    8777
    8778Build system
    8779------------
    8780
    8781### Makefile
    8782
    8783- added version numbers to library files (There will be a softlink generated in the lib/ and bin/ directories without
    8784 version number that point to the latest compiled version.)
    8785- added .exe extension to binaries of MinGW
    8786- removed the `.static` extension associated to the LINK variable from the Makefile system (If you want to build
    8787 makefiles for shared library generation, use the OPT variable. For example, you could create a makefile
    8788 `make/make.linux.x86.gnu.opt-shared` and compile it with `make OPT=opt-shared`.)
    8789
    8790- Defaults and Options:
    8791 - modified the default LP solver to be SoPlex instead of CPLEX
    8792 - added `LPS=none` for compiling SCIP without a LP solver
    8793 - made `ZIMPL=true` the default; if you do not want to include ZIMPL support, call `make ZIMPL=false`
    8794
    8795Fixed bugs
    8796----------
    8797
    8798- fixed bug in rowScale() concerning deletion of almost zero coefficients
    8799- weakened assert in primal.c in order to avoid numerical troubles
    8800- fixed bug with too long variable names
    8801- fixed bug with strange user descriptions of plugins
    8802- changed position of some asserts to prevent segmentation faults
    8803- SCIPgetAvgPseudocostCount() and SCIPgetAvgPseudocostCountCurrentRun() now return the average over all integer
    8804 variables instead of all variables, since pseudo costs are not recorded for continuous variables
    8805- fixed wrong sorting of plugins with priorities close to INT_MIN or INT_MAX
    8806- replaced `line` by `read` in Makefile, since `line` is non-standard
    8807- fixed bug with branching rules that produce only one child with no changes to the problem
    8808- fixed bug that external relaxator is not reset appropriately for a new problem instance
    8809- removed wrong assert in function paramWrite()
    8810- fixed bug with uninitialized in check.awk
    8811- fixed bug in ZIMPL file reader for multiple occurrences of a single variable in the objective function
    8812- fixed bug with deleting variables from the transformed problem that are contained in the implication graph
    8813- fixed bug in root reduced cost fixing propagator that leads to an empty domain for a variable as a proof of optimality
    8814 of the current incumbent
    8815- fixed bug with fractional coefficients of binary variables in cont --> impl int upgrading
    8816
    8817- Solution:
    8818 - fixed bug with aggregated variables in debug solution test
    8819 - now it is possible to add original solutions
    8820 - fixed bugs with SCIPgetBestsol() returning `NULL` after a restart with user objective limit
    8821 - fixed wrong status code in presence of user objective limit and a feasible solution that is not better than the limit
    8822
    8823- Bounds:
    8824 - fixed bug with wrong bound changes of loose variables
    8825 - changed wrong assert in SCIPnodeAddBoundinfer()
    8826 - fixed bug in variable bounds search and insertion method
    8827 - fixed bug regarding modifying bounds in original problem if negated original variables exist
    8828 - fixed bug with multiple pending bound changes on some variable
    8829
    8830- Separator:
    8831 - fixed bug in integer objective separator with restarts
    8832 - fixed bug in integer objective separator with dynamic columns
    8833
    8834- Cuts:
    8835 - fixed bug that cut age was not reset to zero for violated cuts
    8836 - fixed bug in SCIPcutpoolAddNewRow() concerning update of minidx and maxidx of added row
    8837 - fixed numerical bug in rowScaling of lp.c, which possibly cut off feasible solutions
    8838 - significantly improved performance of c-MIR and Gomory cuts by caching closest VLB and VUB info
    8839
    8840- LP:
    8841 - fixed numerical buf with slightly different LP optimum after resolving due to probing/diving
    8842 - fixed bug in cmir and flowcover separator with variables which are currently not in the LP
    8843 - fixed bug with LP size management in probing if column generation is used
    8844 - fixed bug in LP file reader with row names identical to section keywords
    8845 - fixed potential bugs due to errors in resolving the LP after diving or probing
    8846 - fixed potential bugs in SCIPpriceLoop() and priceAndCutLoop(), st. now all LP solution stati are handled appropriately
    8847 - fixed potential bug with non-existent LP in SCIPwrite{LP,MIP}
    8848
    8849- Constraint handler:
    8850 - removed wrong assert in bounddisjunction constraint enforcement
    8851 - fixed numerical bug in propagator of varbound constraint handler
    8852 - fixed bug in variable bound constraint handler with changing bounds on multi-aggregated variables
    8853 - fixed bug in linear constraint handler: only tight cuts are transformed into linear constraints after restart
    8854 - fixed bug in bounddisjunction constraint handler with propagation of multi-aggregated variables
    8855 - fixed bug with numerics in linear constraint handler due to non-representable `BOUNDSCALETOL`
    8856 - fixed bug with almost integral multi-aggregation in dual presolve of linear constraint handler
    8857 - fixed bug with numerics in update of min/maxactivity in linear constraint handler
    8858
    8859- Heuristics:
    8860 - fixed bug in intshifting and oneopt heuristic with variables which are currently not in the LP
    8861 - fixed bug with primal heuristics reducing the cutoff bound such that the current node is cut off
    8862 - fixed bug in oneopt heuristic: must not be called on pseudo nodes if continuous variables are present
    8863
    8864@page RN0_9 Release notes for SCIP 0.9
    8865
    8866@section RN090 SCIP 0.9.0
    8867*************************
    8868
    8869Features
    8870--------
    8871
    8872- the EXITSOL callback of the plugins is now called before the LP and the global cut pool are freed
    8873
    8874- Primal Heuristics:
    8875 - new primal heuristics `rens`, `mutation` and `veclendiving`
    8876 - primal heuristics that run before the node is solved now know already whether the LP will be solved at the current
    8877 node or not
    8878
    8879- Heuristics:
    8880 - new heuristic `intshifting` (ID character `i`)
    8881 - in the root node of the very first run, heuristics with timing `AFTERNODELPNODE`, `AFTERLPPLUNGE`, `AFTERPSEUDONODE`, and
    8882 `AFTERPSEUDOPLUNGE` are now called before the enforcement of the constraint handlers, in particular before the branching
    8883 rules; in this way, the branching rule can already benefit from a tighter primal bound
    8884 - if a heuristic found a better solution after the LP loop (and in particular the `AFTERNODE` heuristics in the root node
    8885 of the very first run, see above), domain propagation and LP solving is triggered again; this allows for additional
    8886 reduced cost tightening and other dual propagations
    8887 - slightly modified `crossover` and `rins` heuristics
    8888 - improved performance of intdiving heuristic
    8889 - improved heuristic `octane` and `shifting`
    8890 - slightly modified rens and localbranching heuristics
    8891 - modified guided diving heuristic such that it equals the original version of the heuristic (i.e., round in direction of the
    8892 current incumbent solution instead of the average of all primal feasible solutions)
    8893 - ID character for intdiving heuristic is now `I`
    8894
    8895- Separation and Cuts:
    8896 - c-MIR cuts try now to scale the cut to integral values; however, cuts are still generated if this fails
    8897 - hard-coded relative objective gain to consider a separation loop to be stalling is now changed from 1e-3 to 1e-4,
    8898 which means that separation is not aborted as early as before
    8899 - modified c-MIR cut separator to more closely resemble the original version of Marchand and Wolsey
    8900
    8901- Constraint:
    8902 - possibility of SAT-like restarts after a number of conflict constraints have been found
    8903 - improved presolving of and, or and xor constraints
    8904 - implemented additional dual presolving in linear constraint handler
    8905 - slightly modified presolving of varbound constraint handler
    8906
    8907Interface changes
    8908-----------------
    8909
    8910### New and changed callbacks
    8911
    8912- new parameter `solinfeasible` for constraint handler callback methods `ENFOLP` and `ENFOPS`
    8913- replaced callback parameter `inlploop` and `inplunging` by `heurtiming` in `SCIP_DECL_HEUREXEC`
    8914- slightly changed the meaning of the result codes returned by external relaxators: if they modify the LP or tighten
    8915 bounds of variables, they are not automatically be called again (it is assumed that they already made use of these
    8916 changes). They are only called again, if they returned `SCIP_SUSPENDED` or if some other plugin modified the LP.
    8917
    8918### Deleted and changed API functions
    8919
    8920- new parameter `escapecommand` for SCIPdialoghdlrAddHistory()
    8921- removed method SCIPgetVarData(); use SCIPvarGetData() from pub_var.h instead
    8922- new calls SCIPgetLPBInvCol() and SCIPgetLPBInvACol() to access the basis inverse and simplex tableau columnwise
    8923- new parameter `ndomredsfound` of SCIPpropagateProbing()
    8924- new parameters `fixintegralrhs`, `maxfrac`, `mksetcoefs` and `fracnotinrange` in SCIPcalcMIR()
    8925- modified SCIPfixVar() such that in problem creation stage it will change the bounds as requested even if the fixing
    8926 value is outside of the current bounds
    8927- replaced parameters `pseudonodes`, `duringplunging`, `duringlploop` and `afternode` by `timingmask` in
    8928 SCIPincludeHeur() and constructor of ObjHeur() class use the following table to translate old settings into the new
    8929 timingmask:
    8930
    8931| PSEUDONODES | DURINGPLUNGING | DURINGLPLOOP | AFTERNODE | timingmask |
    8932|-------------|----------------|--------------|-----------|---------------------------------------------------------------|
    8933| FALSE | FALSE | FALSE | FALSE | SCIP_HEURTIMING_BEFORENODE |
    8934| TRUE | FALSE | FALSE | FALSE | SCIP_HEURTIMING_BEFORENODE |
    8935| FALSE | TRUE | FALSE | FALSE | SCIP_HEURTIMING_BEFORENODE |
    8936| TRUE | TRUE | FALSE | FALSE | SCIP_HEURTIMING_BEFORENODE |
    8937| FALSE | FALSE | TRUE | FALSE | SCIP_HEURTIMING_BEFORENODE \| SCIP_HEURTIMING_DURINGLPLOOP |
    8938| TRUE | FALSE | TRUE | FALSE | SCIP_HEURTIMING_BEFORENODE \| SCIP_HEURTIMING_DURINGLPLOOP |
    8939| FALSE | TRUE | TRUE | FALSE | SCIP_HEURTIMING_BEFORENODE \| SCIP_HEURTIMING_DURINGLPLOOP |
    8940| TRUE | TRUE | TRUE | FALSE | SCIP_HEURTIMING_BEFORENODE \| SCIP_HEURTIMING_DURINGLPLOOP |
    8941| FALSE | FALSE | FALSE | TRUE | SCIP_HEURTIMING_AFTERLPPLUNGE |
    8942| TRUE | FALSE | FALSE | TRUE | SCIP_HEURTIMING_AFTERPLUNGE |
    8943| FALSE | TRUE | FALSE | TRUE | SCIP_HEURTIMING_AFTERLPNODE |
    8944| TRUE | TRUE | FALSE | TRUE | SCIP_HEURTIMING_AFTERNODE |
    8945| FALSE | FALSE | TRUE | TRUE | SCIP_HEURTIMING_AFTERLPPLUNGE \| SCIP_HEURTIMING_DURINGLPLOOP |
    8946| TRUE | FALSE | TRUE | TRUE | SCIP_HEURTIMING_AFTERPLUNGE \| SCIP_HEURTIMING_DURINGLPLOOP |
    8947| FALSE | TRUE | TRUE | TRUE | SCIP_HEURTIMING_AFTERLPNODE \| SCIP_HEURTIMING_DURINGLPLOOP |
    8948| TRUE | TRUE | TRUE | TRUE | SCIP_HEURTIMING_AFTERNODE \| SCIP_HEURTIMING_DURINGLPLOOP |
    8949
    8950- Constraints:
    8951 - renamed all occurences of `removeable` by the correct English word `removable`: SCIPconsIsRemovable(),
    8952 SCIPsetConsRemovable(), SCIPvarIsRemovable(), SCIPcolIsRemovable(), SCIProwIsRemovable()
    8953 - new parameter `sticktonode` in SCIPcreateCons(), SCIPcreateConsAnd(), SCIPcreateConsBounddisjunction(),
    8954 SCIPcreateConsKnapsack(), SCIPcreateConsLinear(), SCIPcreateConsLogicor(), SCIPcreateConsOr(),
    8955 SCIPcreateConsVarbound(), SCIPcreateConsXor(), SCIPcreateConsSetpart(), SCIPcreateConsSetpack(),
    8956 SCIPcreateConsSetcover(): usually, you should set this to FALSE; if you want to add constraints as node markers with
    8957 node data and, e.g., use the `activate` and `deactivate` callbacks to get informed about the activation and
    8958 deactivation of the node, you should set this flag to TRUE in order to make sure, that the constraint will always be
    8959 associated to the node and not moved to a more global node if this would be possible
    8960 - slightly changed semantics of SCIPaddConsNode() and SCIPaddConsLocal(), such that a constraint which is added to the
    8961 root node now enters the global problem (and is still existing after a restart)
    8962
    8963### New API functions
    8964
    8965- SCIPgetVerbLevel()
    8966- SCIPescapeString()
    8967- SCIPgetGlobalCutpool(), SCIPgetPoolCuts(), SCIPcutpoolGetCuts(), SCIPcutGetRow() and SCIPcutGetAge()
    8968- SCIPconsGetNLocksPos() and SCIPconsGetNLocksNeg()
    8969
    8970### Command line interface
    8971
    8972- command shell now understands escape characters `\``,`'` and `\` which makes it possible to read in files with spaces in the
    8973 name
    8974
    8975### Interfaces to external software
    8976
    8977- updated XPress interface to XPress-MP 17 (contributed by Michael Perregaard)
    8978
    8979### Changed parameters
    8980
    8981- changed default value of `heuristics/octane/usediffray` to FALSE
    8982- removed parameter `heuristics/octane/usediffbwray`
    8983- renamed parameter `heuristics/octane/useavgray` to `heuristics/octane/useavgnbray`
    8984- changed default value of `heuristics/rens/binarybounds` to TRUE
    8985- changed default value of `heuristics/octane/freq` to -1 in order to deactivate Octane
    8986- parameter `heuristics/feaspump/maxsols` is now strict, i.e., if n solutions were already found, the feasibility pump
    8987 starts to work only if `maxsols <= n`, instead of `maxsols < n`
    8988
    8989### New parameters
    8990
    8991- `conflict/restartnum` and `conflict/restartfac`
    8992- `heuristics/octane/useavgray`
    8993- `heuristics/octane/useavgwgtray`
    8994- `limits/absgap` to define an absolute gap limit
    8995- `separating/cmir/aggrtol`
    8996- `separating/cmir/densityscore`
    8997- `separating/cmir/fixintegralrhs`
    8998- `separating/maxruns`
    8999- `presolving/restartminred` which forbids another restart if the last one was not successful enough
    9000- `propagating/abortoncutoff`
    9001- `reading/zplreader/changedir` to control behavior of path switching of ZIMPL file reader
    9002- `reading/zplreader/parameters` to pass additional parameters to ZIMPL
    9003
    9004Build system
    9005------------
    9006
    9007### Makefile
    9008
    9009- added ncurses to the readline entries in the `make/make.*` files
    9010- added quotes to sed expressions in Makefile (needed under Windows)
    9011- modified makefiles for Windows/Intel
    9012- added automatic query script in the Makefile for soft-link names
    9013
    9014Fixed bugs
    9015----------
    9016
    9017- fixed bug with string pointer copy instead of string content duplication in constructors of C++ wrapper classes
    9018- fixed bug in CPLEX interface with basis access methods that dualopt has to be called for more error status codes
    9019- fixed bug with inserting two variable bounds of the same type on the same variable with the same bounding variable but
    9020 with different sign of coefficient (e.g., `x <= 10*z + 5` and `x <= -5*z + 10`); in previous version, one of the two was
    9021 removed, although both have a useful meaning; now, we keep both and detect a stronger global bound in the implication graph presolving
    9022- objective function is now also checked for integrality after problem transformation (fixed a bug that a solution which
    9023 was generated between transformation and presolving for an integral objective function did not reduce the cutoff bound by one)
    9024- fixed a bug with cmir cut efficacy calculation (however, on my first tests, the performance reduced slightly!)
    9025- fixed bug that SCIPvarGetAvgSol() always returned the upper bound (affected guided diving heuristic)
    9026- fixed bug in RENS, RINS, Local Branching, Crossover and Mutation heuristics with wrong variable-subvariable assignments
    9027- fixed bug in infeasible/bound-exceeding LP conflict analysis if the bounds were relaxed in diving (happens in intshifting heuristic)
    9028
    9029- Separation:
    9030 - fixed bug with adding constraints with `INITIAL=true` and separating them afterwards, which lead to a second addition of
    9031 the constraint's relaxation in the child node
    9032 - separation LPs are now immediately resolved after a bound change was generated by a cut separator; before, the
    9033 separation round was prematurely aborted, which means that a separation round limit was sometimes reached very quickly
    9034 and some of the separators were not even called a single time
    9035
    9036- Cmir Cut Separator:
    9037 - too large deltas are now also rejected in c-MIR cut separation
    9038 - fixed bug in cmir cut separator, that 8*delta was not tried
    9039 - fixed bug in cmir cut separator with wrong sign of slack in row score function
    9040 - fixed bug in cmir cut separator with weights fixed to zero, thus making the current aggregation invalid
    9041 - fixed bug in cmir cut separator with wrong calculation of cut efficacies
    9042
    9043@page RN0_8 Release notes for SCIP 0.8
    9044
    9045@section RN082 SCIP 0.8.2
    9046*************************
    9047
    9048Features
    9049--------
    9050
    9051- additional flag `delay` for pricers
    9052- new propagator `rootredcost` which applies reduced cost fixing at the root node whenever a best new primal solution was found
    9053- new separator `redcost` which replaces the internal reduced cost strengthening
    9054
    9055- LP:
    9056 - 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
    9057 numerically instable, the extensions of the current node are still discarded
    9058 - added removal of bound-redundant rows from the LP during root node LP solving loop
    9059 - new display column `lpobj`
    9060
    9061- Constraints:
    9062 - slightly changed priorities of constraint handlers
    9063 - now, conflict constraints are also created if they were generated in strong branching or diving with insertion depth
    9064 equal to the current depth
    9065 - new constraint handler `bounddisjunction`
    9066
    9067- Readers:
    9068 - renamed `sol` file reader to `fix` file reader (reads partial solution files and fixes variables to the given values)
    9069 - added `sol` file reader which reads complete solution files and adds the solutions to the solution pool
    9070 - LP and MPS file readers are now able to parse lazy constraints and user cuts sections
    9071
    9072- Presolver:
    9073 - knapsack presolver now generates cliques in the clique table (this essentially solves `neos1.mps`)
    9074 - new presolver `inttobinary`
    9075
    9076- Heuristics:
    9077 - new primal heuristic `shifting`
    9078 - diving heuristics abort earlier (did not come back in reasonable time on `fast0507`)
    9079
    9080Interface changes
    9081-----------------
    9082
    9083- new solution status code `SCIP_STATUS_STALLNODELIMIT`
    9084
    9085### New and changed callbacks
    9086
    9087- slightly modified semantics of the `CONSINITLP` callback in the constraint handlers
    9088
    9089### Deleted and changed API functions
    9090
    9091- methods SCIPisLbBetter() and SCIPisUbBetter() have an additional parameter and slightly different meaning (they now
    9092 compare the bound improvement *relatively* to the width of the domain and the bound itself)
    9093- SCIPgetNSols() now returns an int instead of `SCIP_Longint`
    9094- method SCIPreadProb() does not call SCIPfreeTransform() anymore; file readers that want to extend the existing problem
    9095 must now call SCIPfreeTransform() themselves before modifying the original problem
    9096- method SCIPgetBinvarRepresentative() can now also be called in problem creation stage
    9097- additional parameter `maxpricerounds` in method SCIPsolveProbingLPWithPricing()
    9098- changed name of method SCIPpresolGetNVarTypes() to SCIPpresolGetNChgVarTypes()
    9099- method SCIPsplitFilenames() now treats both versions of slashes, `/` and `\`, as directory delimiters (under MinGW and
    9100 CygWin, both are valid; so, we cannot treat file names anymore where the other slash is used as a regular character)
    9101
    9102- Constraints:
    9103 - marking a constraint to be `initial` now means in addition, that if the constraint is added to a local node it will
    9104 enter the LP at the time the node is first processed, even if parameters forbid separation at this node
    9105 - changed name of method SCIPconshdlrGetNVarTypes() to SCIPconshdlrGetNChgVarTypes()
    9106
    9107- Conflicts:
    9108 - method SCIPgetNConflictClausesFound() renamed to SCIPgetNConflictConssFound()
    9109 - method SCIPgetNConflictClausesFoundNode() renamed to SCIPgetNConflictConssFoundNode()
    9110 - method SCIPgetNConflictClausesApplied() renamed to SCIPgetNConflictConssApplied()
    9111
    9112### New API functions
    9113
    9114- SCIPsolveProbingLPWithPricing()
    9115- SCIPchgVarLbRoot() and SCIPchgVarUbRoot()
    9116- SCIPinRepropagation()
    9117- SCIPaddDialogInputLine() and SCIPaddDialogHistoryLine()
    9118- SCIPtransformProb() to create the transformed problem; enables the user, e.g., to add primal solutions before the presolving begins
    9119- SCIPcreateSolCopy()
    9120- SCIPareSolsEqual()
    9121
    9122- Getters:
    9123 - SCIPgetRowKnapsack(), SCIPgetRowLinear(), SCIPgetRowLogicor(), SCIPgetRowSetppc(), and
    9124 SCIPgetRowVarbound() for obtaining the linear relaxation of a corresponding constraint
    9125 - SCIPgetLhsVarbound(), SCIPgetRhsVarbound(), SCIPgetVarVarbound(), SCIPgetVbdvarVarbound(), and
    9126 SCIPgetVbdcoefVarbound()
    9127 - SCIPgetLPRootObjval(), SCIPgetLPRootColumnObjval() and SCIPgetLPRootLooseObjval()
    9128 - SCIPcolGetMinPrimsol() and SCIPcolGetMaxPrimsol()
    9129 - SCIPgetFocusDepth()
    9130
    9131- Score:
    9132 - SCIPgetAvgPseudocostScore()
    9133 - SCIPgetAvgPseudocostScoreCurrentRun()
    9134 - SCIPgetAvgConflictScore()
    9135 - SCIPgetAvgConflictScoreCurrentRun()
    9136 - SCIPgetAvgInferenceScore()
    9137 - SCIPgetAvgInferenceScoreCurrentRun()
    9138 - SCIPgetAvgCutoffScore()
    9139 - SCIPgetAvgCutoffScoreCurrentRun()
    9140
    9141- Reduced Cost:
    9142 - SCIPgetColRedcost()
    9143 - SCIPvarGetRootRedcost()
    9144
    9145- Variables:
    9146 - SCIPgetNVarsAnd() and SCIPgetVarsAnd()
    9147 - SCIPgetWeightsKnapsack(), SCIPgetNVarsKnapsack(), SCIPgetVarsKnapsack() and SCIPgetWeightsKnapsack()
    9148 - SCIPgetNVarsLinear(), SCIPgetVarsLinear() and SCIPgetValsLinear()
    9149 - SCIPgetNVarsOr() and SCIPgetVarsOr()
    9150 - SCIPgetNVarsXor() and SCIPgetVarsXor()
    9151
    9152### Command line interface
    9153
    9154- command line syntax changed to support batch modus without piping stdin with `<` or `|` operators
    9155- advanced command line syntax:
    9156 - `-l <logfile> `: copy output into log file
    9157 - `-q `: suppress screen messages
    9158 - `-s <settings> `: load parameter settings (.set) file
    9159 - `-f <problem> `: load and solve problem file
    9160 - `-b <batchfile>`: load and execute dialog command batch file (can be used multiple times)
    9161 - `-c <command> `: execute single line of dialog commands (can be used multiple times)
    9162
    9163### Interfaces to external software
    9164
    9165### Changed parameters
    9166
    9167- removed parameter `propagating/redcostfreq`, because reduced cost strengthening is now an external separator plugin
    9168- removed parameter `conflict/maxunfixed`
    9169- parameter `conflict/maxclauses` renamed to `conflict/maxconss`
    9170- parameter `conflict/interclauses` renamed to `conflict/interconss`
    9171- parameter `conflict/reconvclauses` replaced by `conflict/reconvlevels`
    9172- parameter `conflict/uselp` replaced by `conflict/useinflp` and `conflict/useboundlp`
    9173- changed default value of `constraints/obsoleteage` to -1
    9174- changed default value of `branching/relpscost/conflictweight` to 0.01
    9175- changed default value of `branching/relpscost/inferenceweight` to 0.0001
    9176- changed default value of `branching/relpscost/cutoffweight` to 0.0001
    9177- in bfs node selector, parameter `minplungedepth` is now stronger than `maxplungedepth` if they conflict
    9178
    9179### New parameters
    9180
    9181- `constraints/linear/separateall`
    9182- `conflict/lpiterations`
    9183- `conflict/keepreprop`
    9184- `branching/relpscost/conflictweight`, `branching/relpscost/inferenceweight`,
    9185 `branching/relpscost/cutoffweight` and `branching/relpscost/pscostweight`
    9186- `conflict/settlelocal`
    9187- `conflict/depthscorefac`
    9188- `limits/stallnodes`
    9189
    9190Build system
    9191------------
    9192
    9193### Makefile
    9194
    9195- removed ncurses and pthread libraries from the Makefile; pthread is now only linked if CPLEX is used
    9196
    9197Fixed bugs
    9198----------
    9199
    9200- fixed numerical bug in SCIPrealToRational() [thanks to Anders Schack-Nielsen]
    9201- fixed bug in crossover heuristic with negative timelimit
    9202- removed bug in conflict analysis with wrong redundancy check
    9203- fixed bug that unexpected end of stdin (Ctrl-D or piped-in file without `quit` command) gives a segmentation fault
    9204- fixed bug with inconsistent data structures after a global bound was changed at a local subproblem and the local
    9205 bounds are not contained anymore in the new global bounds
    9206- fixed dependency generation in example Makefiles
    9207
    9208- Knapsack:
    9209 - fixed bug in knapsack presolving with redundancy check after applyFixings() [thanks to Anders Schack-Nielsen]
    9210 - fixed bug in knapsack separator with empty initial covers
    9211 - fixed bug in knapsack constraint disaggregation that may lead to acceptance of infeasible solutions
    9212 - fixed bug in knapsack constraint handler where a modifiable constraint may be declared redundant
    9213
    9214- LP:
    9215 - fixed bug with missing LP size updates after pricing or cut separation in probing [thanks to Marc Nuenkesser]
    9216 - fixed bug in CPLEX interface with getting basis information after the LP was modified and restored
    9217 - fixed bug with updating LP size in probing
    9218 - fixed bug that SCIPgetLPSolstat() returns a valid status code even if the LP was not yet constructed for the current node
    9219
    9220- Variables:
    9221 - fixed bug with invalid lazy updates after a restart where the LP is not solved again (e.g., due to all variables being fixed)
    9222 - fixed bugs resulting from inactive general integer variables being member of the variable bounds array of a variable
    9223 - fixed bug in updatePseudocost() with wrong lpgain distribution on multiple branching variables [thanks to Anders Schack-Nielsen]
    9224 - fixed bug in objconshdlr.h where member variable scip_maxprerounds_ was declared as an `SCIP_Bool` instead of an int
    9225 - branching on nearly-integral variables is now avoided in relpscost branching, which lead to a numerical assertion
    9226
    9227- Implication:
    9228 - fixed bug with adding implications that fix the implication variable to the opposite value (due to the bug, it was
    9229 returned that the whole problem is infeasible)
    9230 - removed wrong assert in varRemoveImplicsVbs()
    9231
    9232- Cliques:
    9233 - fixed bug in SCIPcliqueSearchVar() [thanks to Anders Schack-Nielsen]
    9234 - fixed bug in SCIPcliqueAddVar() [thanks to Anders Schack-Nielsen]
    9235
    9236- Readers:
    9237 - fixed bug in MPS file reader with `OBJSENSE`
    9238 - fixed bug in LP reader with potentially uninitialized pointers [thanks to Martin Mueller]
    9239
    9240- Constraints:
    9241 - it is now possible to branch on constraints without the risk of going into an infinite loop, because constraints marked as `initial`
    9242 will be put to the LP relaxation (of the child nodes) even if separation is prohibited by the parameter settings
    9243 - fixed bug that locally valid varbound constraints produce VLB/VUB entries [thanks to Anders Schack-Nielsen]
    9244
    9245@section RN081 SCIP 0.8.1
    9246*************************
    9247
    9248Features
    9249--------
    9250
    9251- improved performance of the priority queue in conflict analysis
    9252- slightly modified restartdfs node selector
    9253
    9254- Presolving:
    9255 - new presolver `implics` to find bound changes and aggregations out of the implication graph
    9256 - modified probing order in probing presolver
    9257
    9258- Constraints:
    9259 - changed handling of added constraints in separation calls
    9260 - modified bookkeeping of locally added and disabled constraints such that the order of enabling and disabling constraints stays the same
    9261 - logic or constraint handler now adds implications on clauses with 2 literals to the implication graph
    9262 - and/or constraint handlers now add implications to the implication graph
    9263 - xor constraint handler now uses stronger LP relaxation without auxiliary variable for xor constraint with 2 operands
    9264
    9265- Heuristics:
    9266 - added preliminary version of `intdiving` heuristic (disabled in default settings)
    9267 - added crossover heuristic
    9268
    9269- Readers:
    9270 - LP file reader now accepts the keyword `Integer` for defining the start of the integer variables section
    9271 - new file reader for (partial) solutions
    9272
    9273Examples and applications
    9274-------------------------
    9275
    9276- added two small pricer examples (for C and C++)
    9277- updated example code (s.t. it compiles again)
    9278
    9279Interface changes
    9280-----------------
    9281
    9282### New and changed callbacks
    9283
    9284- callback method `CONSSEPA` of constraint handler was split into two methods `CONSSEPALP` and `CONSSEPASOL`
    9285- callback method `SEPAEXEC` of separator was split into two methods `SEPAEXECLP` and `SEPAEXECSOL`
    9286
    9287### Deleted and changed API functions
    9288
    9289- replaced method SCIPsepaWasDelayed() by SCIPsepaWasLPDelayed() and SCIPsepaWasSolDelayed()
    9290- additional parameter `sol` for methods SCIPaddCut(), SCIPgetCutEfficacy() and SCIPisCutEfficacious()
    9291- additional parameter `sol` for method SCIPseparateKnapsackCover()
    9292- primal solutions may now contain values marked to be unknown (value is `SCIP_UNKNOWN`); unknown values don't contribute
    9293 to the objective value of the solution; an unknown solution value should be treated as an arbitrary value in the
    9294 variable's bounds, e.g., in the calculation of the feasibility of a constraint, a value inside the variable's bounds
    9295 should be selected that makes the constraint as feasible as possible
    9296- new parameter `printzeros` for methods SCIPprintSol(), SCIPprintTransSol(), SCIPprintBestSol() and SCIPprintBestTransSol()
    9297
    9298- Constraints:
    9299 - replaced method SCIPconshdlrWasSeparationDelayed() by two methods SCIPconshdlrWasLPSeparationDelayed() and
    9300 SCIPconshdlrWasSolSeparationDelayed()
    9301 - renamed method SCIPgetNGlobalConss() to SCIPgetNConss()
    9302
    9303### New API functions
    9304
    9305- SCIPgetCuts()
    9306- SCIPgetVarConflictScore() and SCIPgetVarConflictScoreCurrentRun()
    9307- SCIPvarSetData()
    9308- SCIPcreateUnknownSol()
    9309- SCIPgetNConflictClausesFoundNode()
    9310- SCIPvarSetDelorigData(), SCIPvarSetTransData() and SCIPvarSetDeltransData()
    9311- SCIPvarHasBinaryImplic()
    9312- SCIPgetFixedVars() and SCIPgetNFixedVars()
    9313- SCIPgetConss(), SCIPgetNOrigConss() and SCIPgetOrigConss()
    9314- SCIPsepaGetNConssFound() and SCIPsepaGetNDomredsFound()
    9315- SCIPconstructLP() to force constructing the LP of the current node
    9316- SCIPisLPConstructed()
    9317
    9318### Command line interface
    9319
    9320- added `write statistics` command to default user dialogs
    9321
    9322### Changed parameters
    9323
    9324- modified meaning of parameter `presolving/probing/maxtotaluseless`
    9325- heuristics with `freq = 0` and `freqofs > 0` are now called in depth level freqofs instead of being called in the root
    9326 node
    9327- added some parameters in local branching and RINS heuristic
    9328- new parameter values `p`rimal simplex and `d`ual simplex in `lp/initalgorithm` and `lp/resolvealgorithm`
    9329
    9330### New parameters
    9331
    9332- `branching/inference/conflictweight`
    9333
    9334Build system
    9335------------
    9336
    9337### Makefile
    9338
    9339- included version number in binary file name
    9340- tried to make the code Windows compatible
    9341
    9342Fixed bugs
    9343----------
    9344
    9345- also removed history_length, if `NO_REMOVE_HISTORY` is defined to support older versions of the readline library
    9346- hopefully fixed bug with wrong path slash `/` under Windows
    9347- fixed bug with aggregating fixed variables
    9348
    9349- Implications:
    9350 - fixed bug in transitive implication addition
    9351 - fixed wrong assert with implications that imply a fixed variable
    9352 - removed bug in implication addition
    9353
    9354- Readers:
    9355 - fixed bug in ZIMPL model reader with wrong chdir, if .zpl file is in current directory
    9356 - fixed bug in LP file reader with signed values without space between sign and value (e.g. `+2x` instead of `+ 2x`)
    9357 - fixed various bugs in LP file reader
    9358 - fixed bug in LP file reader with explicit zero coefficients
    9359
    9360- Numerics:
    9361 - fixed numerics in probing and linear constraint handler (rentacar was detected to be infeasible in presolving)
    9362 - fixed numerics in check method of linear constraint handler
    9363 - fixed bug with numerical error in LP resolve after probing or diving
    9364
    9365- Heuristics:
    9366 - fixed bug with calling heuristics in depths smaller than their frequency offset
    9367 - fixed bugs in local branching and RINS heuristic
    9368
    9369Known bugs
    9370----------
    9371
    9372- if one uses column generation and restarts, a solution that contains variables that are only present in the
    9373 transformed problem (i.e., variables that were generated by a pricer) is not pulled back into the original space
    9374 correctly, since the priced variables have no original counterpart
    9375
    9376@section RN080 SCIP 0.8.0
    9377*************************
    9378
    9379Features
    9380--------
    9381
    9382- adding variable bounds automatically adds the corresponding implication
    9383- changed restart dfs nodeselector to sort leaves by node number instead of node depth to aviod jumping around in the
    9384 search tree after a restart was applied and the current dive ended due to infeasibility
    9385- new Message Handler plugin
    9386- added file reader for LP format
    9387- introduced subversion string
    9388- replaced all abort() calls by SCIPABORT(); this is defined in def.h to be `assert(FALSE)`
    9389- added possibility to disable certain features by using `make USRFLAGS=-DNO_REMOVE_HISTORY`, `make
    9390 USRFLAGS=-DNO_SIGACTION`, `make USRFLAGS=-DNO_RAND_R`, or `make USRFLAGS=-DNO_STRTOK_R`
    9391- improved preprocessing abort criteria
    9392- added zlib support
    9393
    9394- Conflict Analysis:
    9395 - conflict clauses are now collected in a conflict store, redundant clauses are eliminated and only the best `conflict/maxclauses`
    9396 clauses are added permanently to the problem; the remaining clauses are only added temporarily, if they can be used for repropagation
    9397 - modified the influence of the depth level in conflict analysis
    9398 - slightly changed LP resolving loop in conflict analysis
    9399 - if CPLEX returns that the LP exceeds the bound and if no additional LP solves are allowed in conflict analysis, we
    9400 have to perform one additional simplex iteration to get the dual solution that actually violates the objective limit
    9401
    9402- Constraints:
    9403 - reactivated multiaggregation in cons_linear.c on binary variables again (possible due to bug fix below)
    9404 - improved preprocessing of variable bounds constraints
    9405 - linear constraint handler now catches events of variables after the problem was completely transformed in order to
    9406 avoid the whole bunch of `LOCKSCHANGED` events that are generated at problem transformation stage
    9407 - added redundancy detection for pairs of constraints in setppc constraint handler
    9408
    9409- Presolving and Cliques:
    9410 - changed linear constraint presolving s.t. redundant sides are not removed if constraint is an equality
    9411 - new event type `SCIP_EVENTTYPE_PRESOLVEROUND`
    9412 - modified probing presolver to not add implications that are already included in the implication graph and clique table
    9413 - incorporated clique and implication information in knapsack constraint presolving
    9414 - removed transitive clique generation, because this produces way too many cliques
    9415
    9416- Heuristics:
    9417 - diving heuristics now apply propagation at each step
    9418 - removed `objfeaspump` heuristic, because the functionality can be achieved by using the `feaspump` heuristic
    9419 - diving heuristics are now applying propagation after each bound change
    9420 - new primal heuristic `octane`
    9421 - slightly changed feaspump heuristic, s.t. after finding a new best solution the target integral solution is modified randomly
    9422
    9423- Separation and Cuts:
    9424 - improved debugging for infeasible cuts and propagations, given a primal feasible solution
    9425 - improved knapsack cover separation
    9426 - improved performance of c-MIR separator
    9427 - cut pool is now also separated in root node (to find cuts again that were removed from the LP due to aging)
    9428
    9429Interface changes
    9430-----------------
    9431
    9432- new event type `SCIP_EVENTTYPE_VARDELETED`
    9433- new event `SCIP_EVENTTYPE_IMPLADDED`
    9434- new event types `SCIP_EVENTTYPE_GLBCHANGED` and `SCIP_EVENTTYPE_GUBCHANGED`
    9435
    9436### New and changed callbacks
    9437
    9438- new callback parameter `validnode` for the `CONFLICTEXEC` method of conflict handlers, which should be passed to
    9439 SCIPaddConsNode()
    9440
    9441### Deleted and changed API functions
    9442
    9443- additional parameter `validnode` for SCIPaddConsLocal() and SCIPaddConsNode()
    9444- SCIPhashtableRemove() can now also be called, if the element does not exist in the table
    9445- SCIPhashmapRemove() can now also be called, if the element does not exist in the map
    9446- additional parameter `branchdir` for SCIPbranchVar()
    9447- replaced method SCIPmessage() by SCIPverbMessage() with additional parameter `file`
    9448- put block memory shell and tclique algorithm into separate subdirectories
    9449- new parameter `duringlploop` of SCIPincludeHeur(): heuristics can now run during the price-and-cut loop at a node
    9450
    9451### New API functions
    9452
    9453- SCIPgetNConflictClausesApplied()
    9454- SCIPgetNConflictClausesApplied()
    9455- SCIPhashtableExists()
    9456- SCIPhashmapExists()
    9457- SCIPnodeGetNumber()
    9458- SCIPsolveProbingLP() to solve the LP in a probing node (enables mixing of propagation and LP solving for diving heuristics)
    9459- SCIProwGetDualfarkas()
    9460- SCIPgetCurrentNode()
    9461- SCIPinterruptSolve()
    9462- SCIPpropagateProbingImplications()
    9463- SCIPgetLPI() which makes all methods in scip/lpi.h available to the user
    9464- SCIPgetRandomInt() and SCIPgetRandomReal()
    9465- SCIPstrtok()
    9466- SCIPheurGetNBestSolsFound()
    9467
    9468- Variables:
    9469 - SCIPdelVar()
    9470 - SCIPgetVarStrongbranchLPAge()
    9471 - SCIPvarIsTransformedOrigvar()
    9472 - SCIPvarIsDeleted()
    9473
    9474- Messages and IO:
    9475 - SCIPerrorMessage()
    9476 - SCIPwarningMessage()
    9477 - SCIPdialogMessage()
    9478 - SCIPinfoMessage()
    9479 - SCIPsetMessagehdlr()
    9480 - SCIPsetDefaultMessagehdlr()
    9481 - SCIPgetMessagehdlr()
    9482 - new file i/o methods SCIPfopen(), SCIPfclose(), SCIPfprintf(), ... that operate on the data type `SCIPFILE`; these
    9483 methods automatically use zlib methods if the zlib is enabled
    9484
    9485- Cliques:
    9486 - SCIPvarGetNCliques()
    9487 - SCIPvarGetCliques()
    9488 - SCIPvarsHaveCommonClique()
    9489 - SCIPvarHasImplic()
    9490 - SCIPcliqueGetNVars()
    9491 - SCIPcliqueGetVars()
    9492 - SCIPcliqueGetValues()
    9493 - SCIPcliqueGetId()
    9494 - SCIPaddClique()
    9495 - SCIPcalcCliquePartition()
    9496
    9497- Constraint handler:
    9498 - SCIPgetDualfarkasLinear() of linear constraint handler
    9499 - SCIPgetDualfarkasLogicor() of logicor constraint handler
    9500 - SCIPgetDualfarkasSetppc() of setppc constraint handler
    9501 - SCIPgetDualsolKnapsack() of knapsack constraint handler
    9502 - SCIPgetDualfarkasKnapsack() of knapsack constraint handler
    9503 - SCIPgetDualsolVarbound() of varbound constraint handler
    9504 - SCIPgetDualfarkasVarbound() of varbound constraint handler
    9505 - SCIPconsGetValidDepth()
    9506 - SCIPsetConsInitial()
    9507 - SCIPsetConsSeparated()
    9508 - SCIPsetConsEnforced()
    9509 - SCIPsetConsChecked()
    9510 - SCIPsetConsPropagated()
    9511 - SCIPsetConsLocal()
    9512 - SCIPsetConsDynamic()
    9513 - SCIPsetConsRemoveable()
    9514
    9515### Command line interface
    9516
    9517- added command `write solution` to default dialog
    9518- added commands `write problem` and `write transproblem` to default dialog
    9519
    9520### Changed parameters
    9521
    9522- additional setting `SCIP_VERBLEVEL_DIALOG` in `display/verblevel` parameter
    9523- additional LP pricing setting `partial`
    9524- replaced parameter `presolving/restartbdchgs` with parameters `presolving/maxrestarts` and `presolving/restartfac`
    9525- replaced parameter `constraints/linear/maxpresolaggrrounds` with `constraints/linear/maxpresolpairrounds`
    9526- parameters `constraints/agelimit` and `constraints/obsoleteage` now iterprete the value 0 as a dynamic setting
    9527- number of fractional variables included in parameter `separating/maxstallrounds`
    9528
    9529- Changed default values:
    9530 - changed default values of `heuristics/∗/maxdiveavgquot` and `heuristics/∗/maxdiveavgquotnosol` to 0
    9531 - changed default values of `constraints/agelimit` and `constraints/obsoleteage` to 0
    9532 - changed default values of `heuristics/objpscostdiving/maxsols` and `heuristics/rootsoldiving/maxsols` to -1
    9533 - changed default value of `separating/strongcg/maxroundsroot` to 20
    9534 - changed default value of `separating/cmir/maxroundsroot` to 10
    9535 - changed default value of `constraints/linear/maxaggrnormscale` to 0.0, which means to not apply aggregation
    9536 - changed default value of `separating/maxstallrounds` to 5
    9537 - changed default value of `presolving/probing/maxfixings` to 50
    9538 - changed default parameter values to MIP settings:
    9539 + `conflict/useprop` = FALSE
    9540 + `conflict/usepseudo` = FALSE
    9541 + `display/verblevel` = 4
    9542 + `separating/poolfreq` = 0
    9543 + `constraints/linear/sepafreq` = 0
    9544 + `constraints/and/sepafreq` = 0
    9545 + `constraints/conjunction/sepafreq` = 0
    9546 + `constraints/knapsack/sepafreq` = 0
    9547 + `constraints/knapsack/sepacardfreq` = 0
    9548 + `constraints/logicor/sepafreq` = 0
    9549 + `constraints/or/sepafreq` = 0
    9550 + `constraints/setppc/sepafreq` = 0
    9551 + `constraints/varbound/sepafreq` = 0
    9552 + `constraints/xor/sepafreq` = 0
    9553 + `separating/clique/freq` = 0
    9554 + `separating/cmir/freq` = 0
    9555 + `separating/gomory/freq` = 0
    9556 + `separating/impliedbounds/freq` = 0
    9557 + `separating/strongcg/freq` = 0
    9558
    9559### New parameters
    9560
    9561- `branching/fullstrong/reevalage`
    9562- `conflict/maxclauses`
    9563- `conflict/allowlocal`
    9564- `constraints/knapsack/disaggregation`
    9565- `presolving/probing/maxtotaluseless`
    9566- `separating/cmir/maxfails`, `separating/cmir/maxfailsroot` and `separating/cmir/trynegscaling`
    9567
    9568### Data structures
    9569
    9570- MAJOR CHANGE: preceeded all data types with `SCIP_`: you may use shell script reptypes_scip.sh to rename the SCIP
    9571 data types in your own source code (But use with care! Create a backup copy of your source first!)
    9572
    9573Build system
    9574------------
    9575
    9576### Makefile
    9577
    9578- modified the Makefile to accept an additional parameter `VERBOSE={true,false}`
    9579- added flags `READLINE=true/false`, `ZLIB=true/false`, `ZIMPL=true/false` to Makefile
    9580
    9581Fixed bugs
    9582----------
    9583
    9584- fixed minor bugs in debug code of primal.c and sol.c
    9585- variables that are being multiaggregated are now automatically removed from all other variables' variable bound and
    9586 implication arrays; this fixes bugs with methods, that rely on the fact, that the entries in the variable bound and
    9587 implication arrays are active variables only
    9588- aggregations are now always performed in a way, such that the variable of more general type is aggregated (with type
    9589 generality being cont > implint > int > bin); in this way, a binary variable's representant is always binary (which
    9590 was not the case before and resulted in a bug in SCIPgetBinvarRepresentative())
    9591- removed bug in presol_probing.c: the vars of the sorted variables array have to be captured
    9592- fixed bug in the output of solutions with priced variables
    9593- fixed bug in propagation with parameters prop_maxrounds and prop_maxroundsroot
    9594- conflict analysis can now handle errors in LP solving calls
    9595- removed bug in SCIPvarAddVlb() and SCIPvarAddVub() with fractional vlb/vubcoefs
    9596- fixed bug that primal or dual rays might not be available because the wrong solver was used
    9597- included message.o in LPI library, s.t. one can link this library indepentent of SCIP
    9598- fixed bug that if diving heuristic that changes the objective values finds a solution, the cutoff is reinstalled in
    9599 the LP solver (although the objective value has no meaning due to the objective function modification)
    9600
    9601- Feasibiltiy:
    9602 - 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),
    9603 that an LP with an integral variable fixed to a large value yields an accepted solution with that variable slightly different than the fixed
    9604 value; the integrality feasibility condition is measured with absolute differences, which leads to the fixed integer variable being fractional;
    9605 this leads to an error if branching is performed on this variable
    9606 - fixed bug with redundant self implications that wrongly lead to the detection of infeasibility
    9607 - fixed bug with potential infinite loop if a separator is delayed and the LP is infeasible
    9608
    9609- Asserts:
    9610 - removed wrong asserts from lpi_cpx.c
    9611 - removed wrong assertion in varAddImplic()
    9612
    9613- Numerics:
    9614 - locally fixed variables are no longer used as branching candidates even if their LP solution value is fractional (due
    9615 to numerical reasons, see above)
    9616 - fixed numerical bug in pseudo objective propagator with only slightly tightened bounds
    9617 - removed bug that an LP might be declared to be solved even if it was marked erroneous due to numerical problems
    9618
    9619- Constraint Handlers:
    9620 - fixed bug in linear constraint handler with variables fixed to infinity
    9621 - fixed bug with constraint handlers that can only enforce their constraints by adding cuts, but the maximal number of
    9622 cuts to separate is set to 0; now, cuts that are generated in the constraint enforcement are used in any case
    9623 - fixed bug in knapsack constraint presolving with tightening coefficients and capacity
    9624 - fixed bug with modifiable constraints in linear constraint handler preprocessing
    9625 - fixed bug in linear constraint handler that global activities are not updated after global bound changes
    9626
    9627- Separation and Cuts:
    9628 - global bound changes now lead to the removal of redundant implications (such that the asserts in sepa_implbounds.c are now correct)
    9629 - due to usage of variable bounds, SCIPcalcMIR() may return LOOSE variables in the cut -> modified sepa_cmir.c, sepa_gomory.c and
    9630 sepa_strongcg.c to use SCIPcreateEmptyRow() and SCIPaddVarsToRow() instead of SCIPcreateRow() which only works for COLs
    9631 - fixed bug in clique separator that reduced performance
    9632 - increased performance of clique separator by allowing only a certain number of zero-weighted fill ins
    9633
    9634@page RN0_7 Release notes for SCIP 0.7
    9635
    9636@section RN079 SCIP 0.7.9
    9637*************************
    9638
    9639Features
    9640--------
    9641
    9642- aging and cleanup now only remove non-basic columns and basic rows, s.t. resolving can be applied with 0 simplex iterations
    9643- it is now possible to create subnodes in probing and use backtracking to undo probing changes
    9644- bounds of variables are included in the feasibility checks for solutions
    9645- support for barrier algorithm
    9646- changed implementation of automatic minplungedepth and maxplungedepth calculation in bfs node selector
    9647
    9648- Presolving:
    9649 - new plugin: probing presolver
    9650 - probing is now also possible in presolving stage
    9651 - it is now possible to interrupt and continue presolving
    9652
    9653- Separation and Cuts:
    9654 - new plugin: clique separator for clique cuts with at least 3 elements
    9655 - new plugin: implied bound cuts separator
    9656 - included debugging module to check whether cutting planes cut off the optimal solution
    9657
    9658- Branching:
    9659 - changed implementation of reliability value calculation in reliability branching; slightly modified influence of
    9660 maximal total number of strong branching LP iterations in reliability branching
    9661 - changed implementation of maximal strong branching iterations calculation in reliability branching
    9662
    9663- Constraints:
    9664 - if verblevel is at least `NORMAL`, an automatical check of the best solution is performed in the original problem, and
    9665 an error message is displayed, if it violates an original constraint
    9666 - due to the new constraint handler `cons_cumulative.{c,h}` SCIP can resource-constraint scheduling problem
    9667 - during probing, propagation of bounds is now always performed in linear constraint handler, ignoring the parameter `tightenboundsfreq`
    9668 - new implementation of the clique graph construction method in clique separator
    9669 - new constraint handler `cons_cumulative.{c,h}`
    9670
    9671- Heuristics:
    9672 - new implementation of the feasibility pump heuristic by Timo Berthold (replaces old implementation); old
    9673 implementation is now called `objfeaspump`; parameter names have been changed accordingly
    9674 - diving heuristics now compare their number of LP iterations with the number of node LP iterations instead of the total
    9675 number (including their own) LP iterations
    9676 - modified the automatic objfactor setting of feaspump heuristic to let the objective function have stronger influence
    9677
    9678Examples and applications
    9679-------------------------
    9680
    9681- added TSP example in `examples/TSP`
    9682
    9683Interface changes
    9684-----------------
    9685
    9686### New and changed callbacks
    9687
    9688- new callback methods `INITSOL` and `EXITSOL` for variable pricers, primal heuristics, conflict handlers, relaxators,
    9689 separators, propagators, event handlers, node selectors and display columns
    9690- callback method `CONFLICTEXEC` of conflict handlers receive additional parameters `dynamic` and `removeable`
    9691- constraint handler callback methods `CONSLOCK` and `CONSUNLOCK` are replaced by a single method `CONSLOCK` with the number
    9692 of locks being positive or negative
    9693
    9694### Deleted and changed API functions
    9695
    9696- calling SCIPaddCut() with `forcecut=TRUE` will add the cut to the LP even if it is redundant
    9697- SCIPreadProb() does not free the current problem, this is done in SCIPcreateProb() now, which is usually
    9698 called by a problem reader; in this way, a reader can generate `extra information` for the current problem, s.t. the
    9699 full problem information can be distributed to different files read by different readers
    9700- SCIPgetVarStrongbranch() and SCIPgetVarStrongbranchLast() now have two additional parameters that can be used
    9701 to check, whether the returned values are correct dual bounds
    9702- SCIPgetBinvarRepresentative() now returns the fixed or multi-aggregated variable instead of returning `NULL` or
    9703 aborting with an error message
    9704- SCIPdispDecimal() is replaced by SCIPdispInt() and SCIPdispLongint()
    9705- additional parameter `maxproprounds` in SCIPpropagateProbing()
    9706- changed memory interface (see memory.h), `MEMHDR` is now called `BLKMEM`
    9707- source code was moved into subdirectories: replace includes `scip.h` by `scip/scip.h` and
    9708 `objscip.h` by `objscip/objscip.h`; This should allow a user to have include files of the same name as the ones
    9709 of SCIP, e.g. `tree.h` or `var.h`.
    9710- event handlers are now available as C++ wrapper class
    9711- new flag `afterrelaxation` for primal heuristics
    9712
    9713- Solution:
    9714 - removed method SCIPsolGetObj(), use SCIPgetSolOrigObj() or SCIPgetSolTransObj() instead
    9715 - additional parameter `checkbounds` for SCIPtrySol(), SCIPtrySolFree(), SCIPcheckSol()
    9716
    9717- Variables:
    9718 - SCIPvarLock(), SCIPvarLockDown(), SCIPvarLockUp(), SCIPvarLockBoth(), SCIPvarUnlock(), SCIPvarUnlockDown(),
    9719 SCIPvarUnlockUp() and SCIPvarUnlockBoth() are replaced by SCIPaddVarLocks() which returns a `RETCODE`
    9720 - SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), SCIPvarGetLbLocal() and SCIPvarGetUbLocal() now return the
    9721 corresponding values of the transformed problem or current subproblem even for original problem variables
    9722 - SCIPvarGetProbvar(), SCIPvarGetProbvarBinary() now return the fixed or multi-aggregated variable instead of
    9723 returning `NULL` or aborting with an error message; in SCIPvarGetProbvarBinary(), the fixing of a fixed variable does
    9724 not influence the negation status anymore
    9725 - SCIPvarGetProbvarBound() returns the multi-aggregated variable instead of aborting with an error message
    9726 - SCIPvarGetProbvarSum() does not set *var to `NULL` for fixed variables anymore; it may also return a
    9727 multi-aggregated variable instead of aborting with an error message
    9728 - SCIPaddVarImplication() now also adds variable lower and upper bounds, if the implied variable is non-binary
    9729 - additional parameter `aggregated` in SCIPmultiaggregateVars()
    9730
    9731- Constraints:
    9732 - SCIPvarLockDownCons(), SCIPvarLockUpCons(), SCIPvarUnlockDownCons() and SCIPvarUnlockUpCons() are replaced by
    9733 SCIPlockVarCons() and SCIPunlockVarCons() which return a `RETCODE`
    9734 - SCIPlockConsVars() and SCIPunlockConsVars() replaced with method SCIPaddConsLocks()
    9735 - SCIPconshdlrGetNConss() is replaced by SCIPconshdlrGetNActiveConss() (returning the number of active
    9736 constraints); method SCIPconshdlrGetNConss() does now return the total number of existing constraints, active and inactive
    9737 - SCIPconshdlrGetStartNConss() is now called SCIPconshdlrGetStartNActiveConss()
    9738 - SCIPconshdlrGetMaxNConss() is now called SCIPconshdlrGetMaxNActiveConss()
    9739 - SCIPdisableConsNode() is replaced by SCIPdelConsNode()
    9740 - SCIPdisableConsLocal() is replaced by SCIPdelConsLocal()
    9741 - added new parameter `dynamic` to SCIPcreateCons() and all plugin methods SCIPcreateCons...()
    9742
    9743### New API functions
    9744
    9745- SCIPgetObjNorm()
    9746- SCIPcreateOrigSol()
    9747- SCIPwriteImplicationConflictGraph()
    9748- SCIPinProbing()
    9749- SCIPgetProbName()
    9750- SCIPgetVarNStrongbranchs()
    9751- SCIPcolGetNStrongbranchs()
    9752- SCIPfindSimpleRational()
    9753- SCIPselectSimpleValue()
    9754
    9755- Variables:
    9756 - SCIPvarGetLbOriginal()
    9757 - SCIPvarGetUbOriginal()
    9758 - SCIPvarGetImplIds()
    9759 - SCIPvarGetOrigvarSum()
    9760
    9761- Constraints:
    9762 - SCIPenableCons()
    9763 - SCIPdisableCons()
    9764 - SCIPenableConsSeparation()
    9765 - SCIPdisableConsSeparation()
    9766 - SCIPconsIsSeparationEnabled()
    9767
    9768- Averages:
    9769 - SCIPgetAvgPseudocost()
    9770 - SCIPgetAvgPseudocostCurrentRun()
    9771 - SCIPgetAvgPseudocostCount()
    9772 - SCIPgetAvgPseudocostCountCurrentRun()
    9773 - SCIPgetAvgInferences()
    9774 - SCIPgetAvgInferencesCurrentRun()
    9775 - SCIPgetAvgCutoffs()
    9776 - SCIPgetAvgCutoffsCurrentRun()
    9777
    9778- LPs:
    9779 - SCIPisLPSolBasic() to check, whether the current LP solution is basic (i.e. due to a simplex algorithm or barrier with crossover)
    9780 - SCIPgetNPrimalLPs()
    9781 - SCIPgetNPrimalLPIterations()
    9782 - SCIPgetNDualLPs()
    9783 - SCIPgetNDualLPIterations()
    9784 - SCIPgetNBarrierLPs()
    9785 - SCIPgetNBarrierLPIterations()
    9786 - SCIPgetNPrimalResolveLPs()
    9787 - SCIPgetNPrimalResolveLPIterations()
    9788 - SCIPgetNDualResolveLPs()
    9789 - SCIPgetNDualResolveLPIterations()
    9790
    9791- Delayed:
    9792 - SCIPsepaIsDelayed()
    9793 - SCIPsepaWasDelayed()
    9794 - SCIPpropIsDelayed()
    9795 - SCIPpropWasDelayed()
    9796 - SCIPpresolIsDelayed()
    9797 - SCIPpresolWasDelayed()
    9798 - SCIPconshdlrIsSeparationDelayed()
    9799 - SCIPconshdlrIsPropagationDelayed()
    9800 - SCIPconshdlrIsPresolvingDelayed()
    9801 - SCIPconshdlrWasSeparationDelayed()
    9802 - SCIPconshdlrWasPropagationDelayed()
    9803 - SCIPconshdlrWasPresolvingDelayed()
    9804
    9805### Command line interface
    9806
    9807- command line history in interactive shell now only stores useful commands
    9808
    9809### Interfaces to external software
    9810
    9811- removed storing of dual norms in LPI state of CPLEX interface (too memory consuming)
    9812
    9813### Changed parameters
    9814
    9815- default frequency offset of fracdiving heuristic changed to 3
    9816- default frequency offset of (new) feaspump heuristic changed to 0
    9817- default frequency offset of objfeaspump heuristic changed to 8
    9818- changed default priority of primal heuristics
    9819- renamed parameter `limits/sol` to `limits/solutions`
    9820- changed default check priority of knapsack constraint handler to -600000
    9821- changed default priority of Gomory cut separator to -1000 (will now be called after constraint handlers!)
    9822- changed default priority of strong CG cut separator to -2000
    9823- changed default priority of cmir cut separator to -3000
    9824- changed default of parameter `lp/pricing` to `s`teepest edge pricing
    9825- default parameter `branching/relpscost/minreliable` changed to 1.0
    9826- default parameter `branching/relpscost/maxlookahead` changed to 8
    9827- default parameter `branching/relpscost/sbiterofs` changed to 100000
    9828- default parameter `heuristics/coefdiving/maxlpiterquot` changed to 0.05
    9829- default parameter `heuristics/fracdiving/maxlpiterquot` changed to 0.05
    9830- default parameter `heuristics/guideddiving/maxlpiterquot` changed to 0.05
    9831- default parameter `heuristics/linesearchdiving/maxlpiterquot` changed to 0.05
    9832- default parameter `heuristics/pscostdiving/maxlpiterquot` changed to 0.05
    9833- default parameter `heuristics/feaspump/freq` changed to 20
    9834- default parameter `heuristics/objfeaspump/freq` changed to 20
    9835- default parameter `heuristics/objpscostdiving/freq` changed to 20
    9836- default parameter `heuristics/rootsoldiving/freq` changed to 20
    9837- default parameter `separating/clique/maxtreenodes` changed to -1
    9838
    9839### New parameters
    9840
    9841- new parameter delay for presolvers
    9842- new parameter delaypresol for constraint handlers
    9843- `branching/scorefunc`
    9844- `constraints/.../delaypresol`
    9845- `constraints/.../delayprop`
    9846- `constraints/.../delaysepa`
    9847- `conflict/dynamic`
    9848- `conflict/removeable`
    9849- `heuristics/coefdiving/maxlpiterofs`
    9850- `heuristics/feaspump/maxlpiterofs`
    9851- `heuristics/feaspump/maxsols`
    9852- `heuristics/fracdiving/maxlpiterofs`
    9853- `heuristics/guideddiving/maxlpiterofs`
    9854- `heuristics/linesearchdiving/maxlpiterofs`
    9855- `heuristics/objfeaspump/maxlpiterofs`
    9856- `heuristics/objfeaspump/maxsols`
    9857- `heuristics/objpscostdiving/maxlpiterofs`
    9858- `heuristics/objpscostdiving/maxsols`
    9859- `heuristics/pscostdiving/maxlpiterofs`
    9860- `heuristics/rootsoldiving/maxlpiterofs`
    9861- `heuristics/rootsoldiving/maxsols`
    9862- `heuristics/fixandinfer/proprounds` and `heuristics/fixandinfer/minfixings`
    9863- `lp/cleanupcolsroot` and `lp/cleanuprowsroot` to distinguish cleanup settings between root node and other nodes
    9864- `lp/checkstability` to disable stability check of LP solver's result code
    9865- `lp/initalgorithm` and `lp/resolvealgorithm` for switching between simplex and barrier algorithm
    9866- `lp/pricing` to set the pricing strategy used in the LP solver
    9867- `numerics/barrierconvtol` to set the convergence tolerance in the barrier algorithm
    9868- `presolving/.../delay`
    9869- `propagating/.../delay`
    9870- `reading/cnfreader/dynamicconss`
    9871- `reading/mpsreader/dynamicconss`
    9872- `separating/.../delay`
    9873
    9874### Data structures
    9875
    9876- new possible result `SCIP_DELAYED` for `EXEC` method of separators, presolvers and propagators and `SEPA`, `PROP` and
    9877 `PRESOL` methods of constraint handlers
    9878
    9879Fixed bugs
    9880----------
    9881
    9882- fixed bug in MPS file reader
    9883- removed bug with applying reduced cost strengthening before pricing in all necessary variables
    9884- negated variables must also be reset in SCIPvarInitSolve()
    9885- fixed documentation of `CONSLOCK`-method (missing parameter `scip` in SCIPaddVarLocks())
    9886- included missing `objrelax.h` in includes of objscip.h
    9887- fixed bug that after a resolve and further preprocessing, existing primal solutions may get corrupted due to
    9888 aggregations or fixings that are possible due to the primal bound (given by the best solution)
    9889- fixed bug with primal bound becoming wrong, if in a prior run the optimal solution was found and the cutoff bound was
    9890 thereby reduced due to further domain propagation w.r.t. the objective function
    9891- fixed bug in SCIPisObjIntegral()
    9892- fixed bug in SCIPprintError() with `file == NULL`
    9893- heuristic's display character is now only shown the first time, the new solution was found
    9894- fixed bug that SCIPreadProb() doesn't discard the transformed problem
    9895- fixed bug with wrong euclidean norm calculation of row, if multiple coefficients for the same variable are added and
    9896 the sorting of the row was delayed with SCIProwDelaySort()
    9897- fixed bug with adding implications: wrong insertion position, if only the lower bound change was present but not the
    9898 upper bound change
    9899- fixed bug in SCIPvarAddImplics() with wrong variable used in varAdjustBd()
    9900- fixed bug in method reduced() of tclique_branch.c with sorting nodes in V
    9901
    9902- LP:
    9903 - removed bug with objective norm calculation and column variables not in the LP (pricing)
    9904 - LP error on forced LP resolve (due to 0 unfixed integers) now leads to an error (instead of accepting the pseudo
    9905 solution as feasible)
    9906 - fixed bug in CPLEX LP interface with dual norms
    9907
    9908- Presolving:
    9909 - fixed bug that presolving time is not counted to solving time, if presolving is called explicitly with SCIPpresolve()
    9910 - fixed bug where presolving fixings are counted even if the variable was already fixed
    9911 - removed bug with dual presolver, that declared a problem to be unbounded or infeasible, if it could fix a variable to
    9912 infinity even if its objective value is zero
    9913 - fixed bug in knapsack constraint handler that fixed variables are sometimes not removed in presolving
    9914
    9915- Numerics:
    9916 - fixed bug with unresolved numerical troubles in LP that don't render the LP useless at the current node
    9917 - fixed numerical bugs in rounding heuristic and rootsoldiving heuristic
    9918
    9919- Separator:
    9920 - fixed bugs in separation store with single coefficient cuts that are converted into bound changes
    9921 - at least one cut per separation round is added to the LP to avoid cycling, even if the cut is redundant
    9922 - fixed bug in SCIProwCalcIntegralScalar() with rows consisting of only continuous variables (appeared in gomory cut
    9923 separator on miplib/dcmulti.mps)
    9924 - fixed bug in linear constraint handler's knapsack relaxation separator
    9925 - fixed bugs in intobj separator
    9926 - fixed bug in cmir separator with empty rows
    9927 - fixed bug in implied bound cut separator: only implications between binary variables were generated before
    9928
    9929- Constraint Handlers:
    9930 - removed bug in knapsack constraint handler with merging multiple items if more than two items of the same variable
    9931 appear in the constraint
    9932 - removed bug in knapsack constraint handler with merging negated variables of equal weight at the end of the variables' array
    9933 - fixed bug in linear constraint handler with eventdatas, if the original constraint has no variables
    9934 - fixed bug that `CONSLOCK` method of constraint handlers that don't need constraints is not called
    9935 - fixeg bug in setppc constraint handler with pairs of aggregated variables in the same constraint
    9936 - fixed bug with globally deleting constraints, that have attached rows which are therefore not released in exitsol methods
    9937
    9938- Conflict analysis:
    9939 - removed conflict analysis of infeasible diving LP if pricing is activated
    9940 - made conflict analysis available in presolving stage (for probing conflicts)
    9941
    9942@section RN078 SCIP 0.7.8
    9943*************************
    9944
    9945Features
    9946--------
    9947
    9948- changed SCIProwCalcIntegralScalar() to a slightly different algorithm
    9949- improved knapsack relaxation in linear constraint handler separator to scale the constraint in order to get integral
    9950 coefficients instead of just rounding down all coefficients
    9951- improved presolving of linear constraint handler: aggregation of two constraints with equal coefficient vector into
    9952 single constraint
    9953- improved presolving of knapsack constraint handler: aggregation of equal or negated variables in same constraint
    9954
    9955- Plugins:
    9956 + priority of separators, propagators and presolvers decide whether the plugin is called before the corresponding
    9957 constraint handler methods or after: plugins with nonnegative priorities are called before, plugins with negative
    9958 priorities are called after the constraint handlers
    9959 + new plugin class for relaxators (external relaxations, that can be used in parallel with LP relaxations)
    9960 + if more than one result code applies to a plugin's execution, it should return the one that is higher in the call's
    9961 documentation list
    9962
    9963Interface changes
    9964-----------------
    9965
    9966- even in optimized mode, the simple functions that are implemented as defines in the include files exist in the
    9967 library, s.t. one can include the include files without `NDEBUG` and use the optimized library
    9968
    9969### New and changed callbacks
    9970
    9971- new branching rule plugin methods `INITSOL` and `EXITSOL`
    9972
    9973### Deleted and changed API functions
    9974
    9975- removed SCIPisFeasible(); use !SCIPisFeasNegative() instead
    9976- SCIPisIntegral(), SCIPisFracIntegral(), SCIPfloor(), SCIPceil() and SCIPfrac() don't use the feasibility
    9977 tolerance anymore (default: 1e-06); instead, they are using epsilon (default: 1e-09); instead, for handling
    9978 integrality of a variable `in feasibility tolerances`, new methods SCIPisFeasIntegral(), SCIPisFeasFracIntegral(),
    9979 SCIPfeasFloor(), SCIPfeasCeil() and SCIPfeasFrac() should be used
    9980- in LPI, the semantics of SCIPlpiHasPrimalRay() and SCIPlpiHasDualRay() changed: methods return TRUE, if a ray exists
    9981 and the solver can return it; new methods SCIPlpiExistsPrimalRay() and SCIPlpiExistsDualRay() check whether a ray
    9982 exists without checking, if the solver knows and can return the ray
    9983
    9984### New API functions
    9985
    9986- SCIPvarIsInLP()
    9987- SCIPgetLPColumnObjval() and SCIPgetLPLooseObjval()
    9988- SCIPcalcIntegralScalar() with arbitrary array of Real values
    9989- SCIPaddCoefKnapsack() in knapsack constraint handler
    9990- SCIPisScalingIntegral() to check, whether the scaling of a value would lead to an integral value, measured
    9991 against epsilon which is also scaled by the same scalar
    9992- SCIPgetRealarrayMinIdx(), SCIPgetRealarrayMaxIdx(), SCIPgetIntarrayMinIdx(), SCIPgetIntarrayMaxIdx(),
    9993 SCIPgetBoolarrayMinIdx(), SCIPgetBoolarrayMaxIdx(), SCIPgetPtrarrayMinIdx() and SCIPgetPtrarrayMaxIdx()
    9994- SCIPbsortPtrInt() and SCIPbsortPtrIntInt()
    9995- SCIPvarWasFixedAtIndex()
    9996- SCIPaddConflictBd()
    9997- SCIPprintMemoryDiagnostic()
    9998- SCIPfindObj...() and SCIPgetObj...() in C++ wrapper interface to get the corresponding plugin object
    9999
    10000### Changed parameters
    10001
    10002- slightly changed the meaning of parameter `presolving/abortfac` a value of 0 now means to abort presolving only after
    10003 no more change has been found
    10004
    10005Fixed bugs
    10006----------
    10007
    10008- assigning a value to a fixed variable in a solution with SCIPsetSolVal() does not return an error anymore, if the
    10009 value is equal to the fixed value of the variable
    10010- removed bug in SCIPisScalingIntegral()
    10011- removed bugs with calling SCIPtightenVarLb(), SCIPtightenVarUb(), SCIPinferVarLbCons(), SCIPinferVarUbCons(),
    10012 SCIPinferVarLbProp() and SCIPinferVarUbProp() in `PROBLEM` stage
    10013
    10014- (Re)solving:
    10015 - solving loop is now immediately aborted, if a node on the active path is marked to be cut off
    10016 - removed bug in resolving an interrupted problem, after the last solved node was cut off
    10017 - removed bug with infinite solving loop if LP solving is turned off
    10018 - removed bug with aborted solving in root node (e.g. due to time limit) that is tagged to be restarted
    10019
    10020- Branching:
    10021 - fixed bug in all-fullstrong branching with getting strong branching information for columns not in current LP
    10022 - implemented missing case in solve.c with branching rules that add constraints
    10023
    10024- Numerics:
    10025 - changed numerics for integrality check of coefficients (fixed bug with accumulated errors in rows s.t. the row's
    10026 activity is no longer integral although the row is marked being integer)
    10027 - slightly changed numerics in linear constraint handler presolving to fix a bug with coefficients detected to be scaled
    10028 to an integral value, that are not integral after scaling due to a large scalar that increased the integrality gap to
    10029 a value larger than epsilon
    10030
    10031- Constraint handlers:
    10032 - fixed bugs in consdataSwitchWatchedVars() of `or` and `and` constraint handlers
    10033 - fixed wrong assertion in xor constraint handler with switching both watched variables to unwatched
    10034 - fixed bugs in constraint handlers (and, logicor, or, setppc, xor) with calling conflict analysis during presolving
    10035 - removed bug in knapsack constraint handler that appears if a variable is fixed to zero in knapsack presolving, which
    10036 triggers a variable of the same knapsack to be fixed to one due to aggregation
    10037
    10038- Presolving:
    10039 - removed bug in knapsack presolver
    10040 - fixed bug in presolving with wrong number of newly fixed/aggregated/... variables/bounds/... after a restart
    10041
    10042@section RN077 SCIP 0.7.7
    10043*************************
    10044
    10045Features
    10046--------
    10047
    10048- infeasible LPs in diving now produce conflict clauses (if LP conflict analysis is enabled)
    10049- conflict analysis was slightly modified
    10050- slightly changed aging strategy of logic or constraint handler
    10051
    10052Interface changes
    10053-----------------
    10054
    10055### Deleted and changed API functions
    10056
    10057- method SCIPgetGap() and SCIPgetTransGap() now return infinity, if primal and dual bound have opposite sign (this
    10058 removes the oddness with the gap increasing while the dual bound approaches zero)
    10059
    10060### New API functions
    10061
    10062- added methods SCIPgetVarsLogicor() and SCIPgetNVarsLogicor() in logic or constraint handler
    10063
    10064### Changed parameters
    10065
    10066- `lp/colagelimit` and `lp/rowagelimit` may now be set to -1 to disable deletion of columns/rows due to aging
    10067
    10068Build system
    10069------------
    10070
    10071### Makefile
    10072
    10073- the file names in the archive file are now preceeded with a directory `scip-<version>/`
    10074- the compiler is now also represented in the LP solver library names (e.g. you have to rename the softlink
    10075 `libcplex.linux.x86.a` to `libcplex.linux.x86.gnu.a`)
    10076
    10077Fixed bugs
    10078----------
    10079
    10080- removed bug in conflict analysis that appears if the conflict is only active at the current depth level
    10081- missing SCIPlpiIsPrimalFeasible() and SCIPlpiIsDualFeasible() implemented in lpi_spx.cpp and lpi_spx121.cpp
    10082- removed preprocessing of linear constraint pairs with modifiable constraints
    10083
    10084- Asserts:
    10085 - removed wrong assert `assert(eventfilter->len == 0 || eventfilter->eventmask != 0x00000000)` from event.c
    10086 - removed wrong assert in conflict analysis (appeared on analyzing diving LP conflicts with both bounds of a non-binary variable changed)
    10087
    10088@section RN076 SCIP 0.7.6
    10089*************************
    10090
    10091Features
    10092--------
    10093
    10094- creation of reconvergence clauses in conflict analysis
    10095- first node of each plunging is not treated as plunging node w.r.t. calling primal heuristics
    10096- improved performance of logic or constraint handler due to better watched variables handling
    10097
    10098Interface changes
    10099-----------------
    10100
    10101### Deleted and changed API functions
    10102
    10103- changed SCIPcatchVarEvent() and SCIPdropVarEvent()
    10104- SCIPstage() is now called SCIPgetStage()
    10105- SCIPprintStatus() is now called SCIPprintStage()
    10106
    10107### New API functions
    10108
    10109- SCIPgetActivityLinear() in linear constraint handler
    10110- SCIPgetFeasibilityLinear() in linear constraint handler
    10111- SCIPchgVarBranchDirection()
    10112- SCIPvarGetBranchDirection()
    10113- SCIPgetStatus() returns the solution status
    10114- SCIPprintStatus() outputs the solution status (beware, that the old SCIPprintStatus() method is now called SCIPprintStage())
    10115
    10116### Changed parameters
    10117
    10118- changed default frequency offset of pscostdiving `heuristics/pscostdiving/freqofs` to 2 and frequency offset of fracdiving
    10119 `heuristics/feaspump/freqofs` to 0 in order to not call pscostdiving in root node, where nearly all pseudo costs are uninitialized.
    10120
    10121### New parameters
    10122
    10123- new parameter `separating/efficacynorm` to choose between Euclidean, maximum, sum and discrete norm in efficacy
    10124 calculation
    10125
    10126### Data structures
    10127
    10128- new possible result code `SCIP_DELAYED` for primal heuristics
    10129
    10130Fixed bugs
    10131----------
    10132
    10133- removed bugs in CLP Solver interface
    10134- SCIP returned `gap limit reached` even if the problem was solved to optimality, if the optimal solution was found at a
    10135 node with lower bound equal to the global lower bound
    10136- after conversion of the focus node into a junction (e.g. in case of numerical troubles while solving the node's LP), the child
    10137 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)
    10138
    10139- Variables:
    10140 - bug reconvergence clauses in conflict analysis if bounds on non-binary variables were the reason for the fixing of the
    10141 uip to create a reconvergence clause for
    10142 - wrong sub calls in SCIPvarGet...CurrentRun() for aggregated variables
    10143 - variables' conflict set counter was not reset when the problem was resolved again
    10144
    10145Known bugs
    10146----------
    10147
    10148- unbounded models lead to an error
    10149- air04 and air05 return wrong optimal value (1 too large): possibly due to strong branching or setppc propagation?
    10150
    10151@section RN075 SCIP 0.7.5
    10152*************************
    10153
    10154Miscellaneous
    10155-------------
    10156
    10157- started change log*/