CHANGELOG
Go to the documentation of this file.
9- fixed that parameters passed on as variadic arguments to SCIPsolveNLP() and SCIPsolveNlpi() were ignored when compiling with MS compilers without -Zc:preprocessor
11- turn off detection of definitional constraints in CONOPT for now, to work around a related issue in CONOPT 4.39.0
12- fixed call of SCIPcreateConsBasicSOCNonlinear() with coefs being NULL, and fixed check for offsets being finite
14- fixed that variable removal in IIS cleanup tried to delete variables that were marked as not deletable
18- correct memory reallocation in storeSubproblemMasterVar() of benders.c to avoid errors when freeing memory
20- handle exact solutions in SCIPsolCheckOrig(), SCIPcheckSolOrig(), and SCIPrecomputeSolObj() to correctly check exact initial solutions in SCIPtransformProb()
24- signal extreme estimations in timeSeriesEstimate() and skip pruning estimations in eventExecEstim() to avoid unstable restarting
25- fixed parallelism computation of dynamic cut selector to use Euclidean norm instead of unsupported argument
26- fixed that non-efficacious cuts were not filtered out before checking dynamic parallelism in dynamic cut selector
29- adjust conflictAnalyzeLP() to inability of row aggregation to handle a change in the number of variables
45- added numerically exact solving mode for mixed-integer linear programs to the core framework including certification of branch-and-bound phase
47 - new wrapper struct SCIP_RATIONAL for rational arithmetic currently based on Boost, GMP, and MPFR
48 - new data structure SCIP_LPEXACT for handling rational LP relaxation and computing safe dual bounds
53 - new constraint handler "exactlinear" for handling linear constraints with rational data
54 - new constraint handler "exactsol" to post-process and repair solutions from floating-point heuristics
58 - adjusted constraint handler "integral" and default reliability pseudo-cost branching rule "relpscost"
64- added more techniques to handle reflection symmetries, in particular, for orbitopes with column reflections and matrices whose rows and columns can be permuted by a symmetry
65- Dejavu can be used to compute symmetries; the source code is shipped with SCIP and incorporates sassy
68- improve memory usage by introducing different constraint handlers for full orbitopes and packing/partitioning orbitopes
69- symmetry detection no longer treats implicit integer variables separately, but computes symmetries based on the variable type inferred from variable bounds and implied integrality
70- extended the statistics to also include information about the number of variables (per type) affected by symmetry
72- cons_orbisack, cons_orbitope_full, cons_orbitope_pp, and cons_symresack now try to replace the stored aggregated variables by active ones at the end of presolving;
77- distinguish implicit integrality of variables into strong and weak type, depending on whether integrality is implied for all feasible or only at least one optimal solution
78- added a new presolver "implint", which detects implied integral variables by detecting (transposed) network submatrices in the problem; for now, this plugin is disabled by default
80- allow multi-aggregation of unbounded slack variables, which may enable more bound tightening due to a reduction in the number of unbounded variables
84- added generalized resolution conflict analysis that operates directly on linear constraints instead of conflict graphs
89- added a new separator "flower" to generate flower cuts from AND constraints and nonlinear product expressions
90- added functionality to deal with hypergraphs by means of efficient access to vertices, edges, and intersections edges
93- added decomposition kernel search (DKS) heuristic (disabled by default), which implements a kernel search framework;
94 it can be used both as a construction heuristic as well as an improvement heuristic; existing decomposition information can be utilized
98- added a dynamic max-lookahead criterion for strong branching; a probability distribution is fitted to the observed candidate gains and
99 evaluating further candidates stops when the expected tree-size reduction no longer justifies the LP evaluation cost
100- added new fields in history to store ancestral pseudo cost updates, used in the pseudo costs branching rule to compute discounted pseudo costs
110- new iisfinder plugin "greedy", which implements a greedy addition and deletion based algorithm with dynamic batch sizing
113- when solving a problem with additional decomposition information (for example, when reading a DEC file) and enabling decomposition/applybenders,
114 the problem is now solved in a Benders' decomposition relaxator; instead of decomposing the original SCIP instance, the relaxator builds the decomposed problem in
115 sub-SCIPs and solves it via default Benders' Decomposition; a solution to the original (undecomposed) problem is now made available by the relaxator;
116 the SCIP shell dialog "display statistics" now also prints the statistics from solving the Benders' decomposition in the relaxator
117- adds objective types for Benders' decomposition; the choices are to sum the subproblems objectives (classical approach) and to use the maximum of the subproblems objectives
118- the linking master variables for each Benders' decomposition subproblem are now stored; these can be accessed for the generation of cuts and setting up the subproblems
121- added a new data structure SCIP_DATATREE that holds serializable data and a function to export to a JSON file
124- added writing support for AMPL NL writer: currently only general and specialized linear and nonlinear constraints can be written
126- simplify expressions of nonlinear constraints in MPS and LP writing to increase chance that they are recognized as quadratic
129- New application "PBSolver" to solve pseudoboolean instances in OPB and WBO format while complying with PB competition rules
130- Coloring: new parameter branching/coloring/strategy to choose the least/most fractional variable for branching
134- reimplemented SCIPvarGetActiveRepresentatives() by using dense arrays to avoid repeated resorting
135- avoid unnecessary calls of constraint handlers components, benders, benderslp, propagator genvbounds, and heuristics ofins, subnlp, nlpdiving, indicator
145- The variable type \ref SCIP_VARTYPE_IMPLINT is deprecated in favor of a new enum \ref SCIP_IMPLINTTYPE that indicates if a
155 SCIP 10 still supports using `SCIP_VARTYPE_IMPLINT` for backward compatibility, see SCIPcreateVar() and SCIPchgVarType() for more details.
161- added SCIP_DECL_IISFINDERCOPY(), SCIP_DECL_IISFINDERFREE(), and SCIP_DECL_IISFINDEREXEC() for iisfinder implementations
162- added a new callback SCIP_DECL_TABLECOLLECT() for the table plugin that collects the data for the specific statistics table in a SCIP_DATATREE object
163- for a table plugin, only one of the callbacks SCIP_DECL_TABLECOLLECT() or SCIP_DECL_TABLEOUTPUT() needs to be implemented, but implementing both is preferred;
164 if SCIP_DECL_TABLEOUTPUT() is omitted, then SCIP tries to print a table from the data given by SCIP_DECL_TABLECOLLECT()
165- the callback SCIP_DECL_EXPRINTEGRALITY(), which returns the integrality of an expression, had its fourth argument changed from `SCIP_Bool*` to `SCIP_IMPLINTTYPE*` to represent implied integrality in nonlinear expressions,
166 that is, an implied integral type of an auxiliary variable if the expression were assigned to it
168- the callback SCIP_DECL_READERWRITE() is equipped with `objoffset`, `objscale`, `objoffsetexact`, and `objscaleexact` as arguments 9 through 12 to write the exact objective offset and scale in exact mode
172- SCIPgetProbvarLinearSum(): remove parameter `mergemultiples`, which is now automatically true with the new implementation of SCIPvarGetActiveRepresentatives()
173- `SCIPcreateRow*()`, SCIPaddVarToRow(), SCIPaddVarsToRow(), SCIPaddVarsToRowSameCoef() can now only be called in the solving stage, because otherwise the LP is not yet available and the row data is invalid
174- SCIPcreateConsPseudobooleanWithConss(), SCIPcreateConsPseudoboolean(), and SCIPcreateConsBasicPseudoboolean(): removed `intvar` from arguments because the non-linear objective reformulation with pseudoboolean constraints did not work
175- SCIPcleanupConssLinear() and SCIPcleanupConssKnapsack(): added argument `ndelconss` to directly delete empty redundant constraints before creating problem matrix
179- SCIPpermuteProb(): argument `permuteimplvars` has been replaced by new arguments `permutebinimplvars`, `permuteintimplvars`, and `permutecontimplvars`
180- SCIPgetLPBranchCands(): implied integral variables with integrality constraints are included in `nlpcands` count and stored at the end of `lpcands`
182- SCIPgetSolVarsData(): argument `nimplvars` has been replaced by new arguments `nbinimplvars`, `nintimplvars`, and `ncontimplvars`
183- SCIPexprSetIntegrality(): replaced argument `SCIP_Bool integral` by `SCIP_IMPLINTTYPE integrality` (4th position)
184- SCIPcreateVar() (temporarily for SCIP 10 only): attempting to create a variable with type \ref SCIP_VARTYPE_IMPLINT creates a variable of type \ref SCIP_VARTYPE_CONTINUOUS and implied integral type \ref SCIP_IMPLINTTYPE_WEAK
185- SCIPchgVarType() (temporarily for SCIP 10 only): attempting to change a variable type to \ref SCIP_VARTYPE_IMPLINT leads to a call of SCIPchgVarImplType() with type \ref SCIP_IMPLINTTYPE_WEAK
186- `SCIPapplyBendersDecomposition()` has been removed; this was originally used to apply Benders' decomposition from a supplied decomposition structure; the application of Benders' decomposition now occurs in relax_benders
187- SCIPcalcMIR(), SCIPcutGenerationHeuristicCMIR(), SCIPcalcStrongCG(): replaced boolean argument `usevbds` by an integer argument `vartypeusevbds`, which indicates for which variables variable bound substitution should be performed
188- `SCIPchgAndConsCheckFlagWhenUpgr()`, `SCIPchgAndConsRemovableFlagWhenUpgr()`: removed to keep upgrade flags consistent; use SCIPconsAddUpgradeLocks() to control upgrades instead
189- SCIPaddConflict(): argument `cons` changed to type `SCIP_CONS**` to release the conflict constraint in a clean way
190- SCIPprintOrigProblem() and SCIPprintTransProblem(): moved declaration moved from scip_solvingstats.h to scip_prob.h
191- `SCIPnlpiOracleGetJacobianSparsity()`: renamed to SCIPnlpiOracleGetJacobianRowSparsity() and added arguments `colnlflags` and `nnlnz`
192- SCIPnlpiOracleGetHessianLagSparsity(), SCIPnlpiOracleEvalHessianLag(): added argument `colwise`
193- SCIPxmlProcess(), SCIPxmlNewNode(), SCIPxmlNewAttr(), SCIPxmlAddAttr(), SCIPxmlAppendChild(), SCIPxmlFreeNode(), SCIPxmlShowNode(), SCIPxmlGetAttrval(), SCIPxmlFirstNode(), SCIPxmlNextNode(), SCIPxmlFindNode(), SCIPxmlFindNodeMaxdepth(), SCIPxmlNextSibl(), SCIPxmlPrevSibl(), SCIPxmlFirstChild(), SCIPxmlLastChild(), SCIPxmlGetName(), SCIPxmlGetLine(), SCIPxmlGetData(), SCIPxmlFindPcdata(): renamed XML functions by adding `SCIP` prefix to avoid name clash with libxml2
195 `SCIPgetRandomInt()`, `SCIPgetRandomReal()`, `SCIPgetRandomSubset()`, `SCIPpermuteIntArray()`, `SCIPpermuteArray()`,
196 `SCIPvarGetLbAtIndex()`, `SCIPvarGetUbAtIndex()`, `SCIPvarGetBdAtIndex()`, `SCIPvarWasFixedAtIndex()`,
197 `SCIPaddCut()`, `SCIPcreateRow()`, `SCIPcreateEmptyRow()`, `SCIPlpfeastol()`, `SCIPchgLpfeastol()`,
198 `SCIPsolveParallel()`, `SCIPwriteImplicationConflictGraph()`, `SCIPallowDualReds()`, `SCIPallowObjProp()`,
199 `SCIPcreateConsQuadratic()`, `SCIPcreateConsBasicQuadratic()`, `SCIPaddConstantQuadratic()`, `SCIPaddLinearVarQuadratic()`, `SCIPaddQuadVarQuadratic()`, `SCIPaddQuadVarLinearCoefQuadratic()`, `SCIPaddSquareCoefQuadratic()`, `SCIPaddBilinTermQuadratic()`, `SCIPgetNlRowQuadratic()`, `SCIPchgLhsQuadratic()`, `SCIPchgRhsQuadratic()`,
201 `SCIPcreateConsSOC()`, `SCIPcreateConsBasicSOC()`, `SCIPgetNlRowSOC()`: removed, previously deprecated
202- `SCIP_NLPTERMSTAT_TILIM`, `SCIP_NLPTERMSTAT_ITLIM`, `SCIP_NLPTERMSTAT_LOBJLIM`, `SCIP_NLPTERMSTAT_NUMERR`, `SCIP_NLPTERMSTAT_EVALERR`, `SCIP_NLPTERMSTAT_MEMERR`, `SCIP_NLPTERMSTAT_LICERR`: removed, these NLP termination status codes were previously deprecated
203- `SCIPselectPtrRealReal()`, `SCIPselectWeightedPtrRealReal()`, `SCIPsortPtrRealReal()`, `SCIPreoptAddGlbCons()`, `SCIPreoptnodeGetSplitCons()`, `SCIPcomprInitsol()`, `SCIPcomprExitsol()`,
204 `SCIPcertificatePrintSolExact()`, `SCIPincludeExLinconsUpgrade()`, `SCIPupgradeConsExactLinear()`, `SCIPgetRunningErrorStatsExactLinear()`, `SCIPcolExactGetMinPrimsol()`, `SCIPrationalarrayClear()`, `SCIPgetRowActivityExact()`, `SCIPgetRowFeasibilityExact()`, `SCIPvalsExactFree()`,
205 `SCIPbendersApplyDecomposition()`, `SCIPgetExprsdataBilinear()`, `SCIPgetVarCoefChg()`, `SCIPvarGetOrigIndex()`, `SCIPallocateSymgraphConsnodeperm()`, `SCIPwriteSto()`: removed the declaration because there was no implementation
210- SCIPenableExactSolving(): enable and disable exact solving mode; see below for a list of many new API functions added to support exact solving
213- SCIPstrToRationalValue(), SCIPrationalStrLen(), SCIPrationalToString(): handle string conversion of a rational number
214- SCIPrationalChgInfinity(), SCIPrationalGetInfinity(): handle infinity threshold of rational numbers
223- SCIPconsGetLhsExact()`, SCIPconsGetRhsExact(), SCIPgetConsValsExact(): query exact sides and coefficients of a linear constraint
228- SCIPchgVarLbExactDive(), SCIPchgVarUbExactDive(), SCIPisExactDivePossible(), SCIPinExactDive(), SCIPstartExactDive(), SCIPendExactDive(), SCIPsolveExactDiveLP(): handle exact LP diving
235- SCIPgetLPExactSolstat(), SCIPgetLPExactObjval(): query solution status and objective value of the exact LP
236- SCIPaddOrigObjoffsetExact(), SCIPgetOrigObjoffsetExact(): add and query exact objective offset of the original problem
245- SCIPcalcIntegralScalarExact(): compute a scalar so that all given values become exactly integral
247- SCIPgetCutoffboundExact(), SCIPgetLowerboundExact(), SCIPgetUpperboundExact(), SCIPgetDualboundExact(), SCIPgetPrimalboundExact(): query exact best bounds on optimal value
252- SCIPcreateVarImpl(), SCIPcreateObjVarImpl(): behave identically to SCIPcreateVar() and SCIPcreateObjVar(), respectively, but have an additional argument for the new implied integral type flag (8th position)
253- SCIPchgVarImplType(), SCIPvarGetImplType(), SCIPvarIsImpliedIntegral(), SCIPcolIsImpliedIntegral(): control and query implied integrality
255- SCIPgetNOrigBinImplVars(), SCIPgetNOrigIntImplVars(), SCIPgetNOrigContImplVars(): query the number of implied integral variables of each type in original problem;
256 note that SCIPgetNOrigBinVars(), SCIPgetNOrigIntVars(), and SCIPgetNOrigContVars() no longer include the implied integral variables in their counts
257- SCIPgetNBinImplVars(), SCIPgetNIntImplVars(), SCIPgetNContImplVars(): query the number of implied integral variables of each type in current problem;
258 note that SCIPgetNBinVars(), SCIPgetNIntVars(), and SCIPgetNContVars() no longer include the implied integral variables in their counts
261- SCIPeventGetOldImplType(), SCIPeventGetNewImplType(): query implication type change for the new event \ref SCIP_EVENTTYPE_IMPLTYPECHANGED
262- SCIPexprGetIntegrality(): provides information about the presence of weakly implied integral variables, in addition to the existing function SCIPexprIsIntegral()
265- SCIPincludeConshdlrOrbitopePP(), SCIPcreateConsOrbitopePP(), SCIPcreateConsBasicOrbitopePP(), SCIPincludeConshdlrOrbitopeFull(), SCIPcreateConsOrbitopeFull(), SCIPcreateConsBasicOrbitopeFull()
266- SCIPdisplaySymmetryGenerators(), SCIPdialogExecDisplaySymmetry(): display generators of symmetry group
267- SCIPclearSymgraph(), SCIPcopySymgraphAsSubgraph(): clear and copy a symmetry detection graph, respectively
270- SCIPgetNResConflictConssApplied(): return the number of generalized resolution conflict constraints added to the problem
274- SCIPhistoryUpdateAncPseudocost(), SCIPvarUpdateAncPseudocost(): update the ancestral pseudo cost fields in variable history
275- SCIPhistoryGetAncPseudocost(), SCIPhistoryGetAncPseudocostCount(), SCIPhistoryIsAncPseudocostEmpty(), SCIPgetVarAncPseudocostVal(), SCIPvarGetAncPseudocost(): retrieve values related to ancestral pseudo cost fields in variable history
276- SCIPgetAvgDPseudocostScore(), SCIPgetVarDPseudocostScore(): compute discounted pseudo cost scores using ancestral pseudo costs
282- SCIPcreateRowKnapsack(), SCIPcreateRowLinear(), SCIPcreateRowLogicor(), SCIPcreateRowSetppc(), SCIPcreateRowVarbound(): create and get the row of linearly representable constraints
286- SCIPgetMasterProblemRelaxBenders(): retrieve master problem SCIP instance from the Benders' decomposition relaxator
287- SCIPbendersGetSubproblemMasterVars(), SCIPbendersGetNSubproblemMasterVars(), SCIPbendersGetSubproblemMasterVarsData(): get the linking master variables for each subproblem and details about the number of binary and integer variables
288- SCIPsetBendersObjectiveType(), SCIPbendersGetObjectiveType(): set and get the objective type for the aggregation of the Benders' decompostion subproblems
290- SCIPfreeReaderdataCor(), SCIPfreeReaderdataTim(), SCIPfreeReaderdataSto(): free the data for the COR, TIM, and STO readers, respectively; these readers are all used when reading an SMPS instance
293- SCIPincludeIISfinder(), SCIPincludeIISfinderBasic(), SCIPsetIISfinderCopy(), SCIPsetIISfinderFree(), SCIPgenerateIIS(), SCIPfindIISfinder(), SCIPgetIISfinders(), SCIPgetNIISfinders(), SCIPsetIISfinderPriority(), SCIPgetIIS()
294- SCIPiisfinderGetName(), SCIPiisfinderGetData(), SCIPiisfinderGetDesc(), SCIPiisfinderGetPriority(), SCIPiisfinderSetData(), SCIPiisfinderGetTime(), SCIPiisfinderInfoMessage(), SCIPiisGetTime(), SCIPiisIsSubscipInfeasible(), SCIPiisIsSubscipIrreducible(), SCIPiisGetNNodes(), SCIPiisSetSubscipInfeasible(), SCIPiisSetSubscipIrreducible(), SCIPiisAddNNodes(), SCIPiisGetRandnumgen(), SCIPiisGetSubscip(), SCIPiisGreedyMakeIrreducible()
297- SCIPhypergraphCreate(), SCIPhypergraphClear(), SCIPhypergraphFree(), SCIPhypergraphAddVertex(), SCIPhypergraphAddEdge(), SCIPhypergraphIsValid(), SCIPhypergraphComputeVerticesEdges(): build and delete hypergraphs
298- SCIPhypergraphComputeOverlaps(), SCIPhypergraphOverlapFind(), SCIPhypergraphIntersectEdges(), SCIPhypergraphComputeOverlapsEdges(), SCIPhypergraphComputeVerticesOverlaps(), SCIPhypergraphOverlapsDisjoint(): handle pair-wise intersections of hyperedges
299- SCIPhypergraphIterInit(), SCIPhypergraphIterClear(), SCIPhypergraphIterStart(), SCIPhypergraphIterValid(), SCIPhypergraphIterNext(), SCIPhypergraphIterBase(), SCIPhypergraphIterAdjacent(), SCIPhypergraphIterMinVertex(), SCIPhypergraphIterOverlap(): iterate over adjacent edges
300- SCIPhypergraphHasVertexEdges(), SCIPhypergraphHasOverlaps(), SCIPhypergraphHasOverlapsEdges(), SCIPhypergraphHasVertexOverlaps(), SCIPhypergraphGetNVertices(), SCIPhypergraphGetNEdges(), SCIPhypergraphBlkmem(), SCIPhypergraphGetNOverlaps(),
301 SCIPhypergraphVertexData(), SCIPhypergraphEdgeData(), SCIPhypergraphEdgeSize(), SCIPhypergraphEdgeVertices(), SCIPhypergraphVertexEdgesFirst(), SCIPhypergraphVertexEdgesBeyond(), SCIPhypergraphVertexEdgesGetAtIndex(), SCIPhypergraphOverlapData(),
302 SCIPhypergraphOverlapSize(), SCIPhypergraphOverlapVertices(), SCIPhypergraphEdgesOverlapsFirst(), SCIPhypergraphEdgesOverlapsBeyond(), SCIPhypergraphEdgesOverlapsGetAtIndex(), SCIPhypergraphOverlapsEdgesFirst(), SCIPhypergraphOverlapsEdgesBeyond(),
303 SCIPhypergraphOverlapsEdgesGetAtIndex(), SCIPhypergraphVertexOverlapsFirst(), SCIPhypergraphVertexOverlapsBeyond(), SCIPhypergraphVertexOverlapsGetAtIndex(): query information about vertices, edges, and overlaps as well as their incidences
307- SCIPnetmatdecTryAddCol(), SCIPnetmatdecTryAddRow(): add columns and rows to a matrix decomposition
308- SCIPnetmatdecContainsRow(), SCIPnetmatdecContainsColumn(): check if a matrix decomposition contains the given row or columns
311- SCIPnetmatdecIsMinimal(), SCIPnetmatdecVerifyCycle(): check whether certain invariants of a matrix decomposition are satisfied and used in tests
314- functions to create, modify, and free SCIP_DATATREE objects and to print as JSON or table (see pub_datatree.h and scip_datatree.h)
319- SCIPincludeNlpSolverConopt(), SCIPsetLicenseConopt(), SCIPgetSolverNameConopt(), SCIPgetSolverDescConopt(), SCIPisConoptAvailableConopt(): interact with the new CONOPT interface
320- SCIPnlpiOracleGetConstraintLinearCoef(): get a linear coefficient of a variable in a given constraint in the NLP oracle
321- SCIPnlpiOracleGetJacobianColSparsity(): get the column-wise sparsity pattern of the Jacobian from the NLP oracle
328- SCIPdialogIsHidden(), SCIPdialogSetHidden(): determine whether a dialog should be hidden in help list
330- SCIPconshdlrSetNeedsCons(): set whether constraint handler callbacks should also be called if there are no constraints
333- SCIPvarGetMinAggrCoef(), SCIPvarGetMaxAggrCoef(): get bounds on absolute aggregation coefficients for a loose variable
334- SCIPisVarAggrCoefAcceptable(): check whether bounds on aggregation coefficients would exceed thresholds when using a loose variable in another aggregation
336- SCIPcollectMemoryGarbage(): explicitly trigger garbage collection on block memory; before SCIP 10, this was done in SCIPtransformProb()
345- added struct \ref SCIP_DATATREE to model generic serializable data; new enum \ref SCIP_DATATREE_VALUETYPE
350- `SCIP_EVENTTYPE_IMPLTYPECHANGED`: new event that is generated if a variable is declared implied integral, this event is included in the set \ref SCIP_EVENTTYPE_VARCHANGED
351- `SCIP_EVENTTYPE_DUALBOUNDIMPROVED`: new event that is generated whenever the global dual bound is improved
355- `strcasecmp`, `strncasecmp` (Windows builds): removed `#define` from scip/def.h; use SCIPstrcasecmp() and SCIPstrncasecmp() instead
371- `heuristics/scheduler/heurtimelimit` removed to avoid indeterministic behavior of scheduler heuristic, uses main time limit instead
372- removed parameters `constraints/orbitope/checkpporbitope`, `constraints/orbitope/sepafullorbitope`, `constraints/orbitope/forceconscopy`, which became superfluous
374- removed `benders/default/numthreads`: multi-threading support for Benders' decomposition has been temporarily disabled
375- restricted range of parameter `propagating/symmetry/sstleadervartype` to [1,7]; its new default value is 6
377- changed defaults of `constraints/components/propfreq` and `constraints/components/maxdepth` to -1 and 2147483647, respectively, to avoid unnecessary calls of components propagator by default
378- changed frequencies for the following heuristics: shifting, gins, crossover, rins, randrounding
379- changed default `maxlpiterquot` to 0.05 for all LP diving heuristics and feaspump, whereas adaptivediving uses 0.15 and rootsoldiving remains at 0.01
390- `exact/interleavedbstrat`: interleaving strategy between safe dual bounding and exact LP solving
392- `exact/cutapproxmaxboundval`: maximal absolute bound for which coefficients in exact cuts should be approximated
396- `constraints/exact{linear,sol}/{sepafreq,propfreq,proptiming,eagerfreq,maxprerounds,delaysepa,delayprop,presoltiming}`: functionality of constraint handlers exactlinear and exactsol
397- `constraints/exactlinear/sortvars`: whether binary variable coefficients should be sorted with decreasing absolute value in exactlinear constraints
398- `constraints/exactlinear/{tightenboundsfreq,propcont,limitdenom,boundmaxdenom}`: propagation of exactlinear constraints
399- `constraints/exactlinear/{maxrounds,maxroundsroot,maxsepacuts,maxsepacutsroot}`: separation of exactlinear constraints
401- `constraints/exactsol/{minimprove,checkfpfeasibility,checkcontimplint,abortfrac,unfixfrac}`: solution processing in exactsol handler
402- `constraints/exactsol/maxstalls`: maximal number of consecutive unsuccessful reparations in exactsol handler
404- `branching/pscost/discountfactor`, `branching/relpscost/discountfactor`: discount factor for ancestral pseudo costs in pscost and relpscost branching rules
406- `branching/relpscost/dynamiclookahead`, `branching/relpscost/dynamiclookaheadquot`, `branching/relpscost/dynamiclookdistribution`, `branching/relpscost/minsamplesize`:
407 configure the dynamic max-lookahead criterion for strong branching: enable flag, fraction threshold, distribution choice, and minimum sample size
408- `constraints/cumulative/maxtime`: limit the time horizon and avoid integer overflow for unbounded variables
409- `constraints/orbitope_full/forceconscopy`, `constraints/orbitope_pp/forceconscopy`: whether non-model constraints of type full orbitope and packing/partitioning orbitope are copied to sub-SCIPs, respectively
410- `propagating/symmetry/handlesignedorbitopes`: whether to apply special symmetry handling techniques for orbitopes whose columns can be (partially) reflected
411- `propagating/symmetry/usesimplesgncomp:` whether symmetry components all of whose variables are simultaneously reflected by a symmetry shall be handled by a special inequality
412- `propagating/symmetry/dispsyminfo`: whether to print information about applied symmetry handling methods
414- `presolving/implint/convertintegers`: whether implied integrality should also be detected for enforced integral variables
415- `presolving/implint/columnrowratio`: ratio of rows/columns where the row-wise network matrix detection algorithm is used instead of the column-wise network matrix detection algorithm
416- `presolving/implint/numericslimit`: limit for absolute integral coefficients beyond which the corresponding rows and variables are excluded from implied integrality detection
417- `write/implintlevel`: whether integrality constraints should be written for implied integral variables (regarded by cip, mps, lp, rlp, pip, fzn, and gms writers)
420- `presolving/milp/maxedgesparallel`: maximal number of edges in the parallel clique merging graph
421- `presolving/milp/maxedgessequential`: maximal number of edges in the sequential clique merging graph
425- `relaxing/benders/continueorig`: whether original problem should continue solving after the completion of the Benders' decomposition algorithm in the Benders' relaxator, if the problem is not solved to optimality
426- `relaxing/benders/nodelimit`: node limit for the Benders' decomposition master problem in the Benders' relaxator; by default the limits from the original SCIP instance are copied
427- `conflict/usegenres`, `conflict/reduction`, `conflict/mbreduction`, `conflict/maxvarsfracres`, `conflict/resfuiplevels`, `conflict/fixandcontinue`, `conflict/maxcoefquot`: control generalized resolution conflict analysis
432- `randomization/randomseedshiftmultiplier`: multiplier for the shift set by `randomization/randomseedshift`;
433 the shift is multiplied by (6*`randomseedshiftmultiplier`+1), with the default value for `randomseedshiftmultiplier` set to 10 now;
434 this default value is expected to change with every major release; setting the parameter to 0 restores SCIP 9 behavior
438- removed LP solver interface `lpi_spx1`, which used the old SoPlex interface; renamed `lpi_spx2` to `lpi_spx`
448- removed previously deprecated `PARASCIP` option, use `THREADSAFE=false` instead to disable thread-safety
452- added build flag `EXACTSOLVE=<true|false|auto>` to turn exact solving mode on, off, or turn it on if all necessary dependencies are available
453- added build flag `MPFR` (default: false) to link with the multiprecision floating-point library, needed when SoPlex is also built with `MPFR=true` for precision boosting in rational solving mode
455- link-time-optimization can be enabled on Linux and macOS with gcc and clang by setting `LTO=true`, default is false
456- revised `SANITIZE` options: removed `SANITIZE=full`, added `SANITIZE=thread`, `SANITIZE=address`, and `SANITIZE=memory` to enable thread, address, and memory sanitizers, respectively, in addition to undefined behavior sanitizer;
458- default settings for makefile variables in `make.project` are now only used if variable hasn't been set already
459- the symlink `$(LIBDIR)/include/papilo` should now point to the `src` subdirectory of a PaPILO repository or the headers directory of a PaPILO installation without TBB; pointing to the directory of a PaPILO repository still works, but is deprecated
460- removed option to link TBB library, as this is not used by default when PaPILO has not been built via cmake (use `USRCXXFLAGS=-DPAPILO_TBB USRLDFLAGS=-ltbb` to enable TBB for PaPILO)
461- `LPS=spx` is no longer mapped to `LPS=spx2`, which changes the name of the generated LPI libraries and binaries when using SoPlex
466- added build flag `EXACTSOLVE=<on|off|auto>` to turn exact solving mode on, off, or turn it on if all necessary dependencies are available
467- added build flag CONOPT (default: off) to link to the CONOPT NLP solver and variable `CONOPT_DIR` to specify the path to CONOPT
468- link-time-optimization can be enabled if supported by compiler by using `-DLTO=on`, default is `off`
472- scip-config.cmake now defines a variable `SCIP_COMPILE_FLAGS`, which could be used to compile code that builds against SCIP via cmake;
474- removed automatic download and build of Bliss during cmake configuration when `-DSYM=(s)bliss`;
481- fixed bug related to unreleased data for the Benders' decomposition framework; when reading an SMPS file and applying
482 Benders' decomposition, data is created that was not correctly released; also, data within the Benders' decomposition
484- to fix a bug where duplicate cuts from different constraint handlers were not recognized, `SCIPrealHash()` was changed
485 to be stable around shortly representable numbers, and a numerical tolerance for comparing cutting plane efficacy for the aggregation
489- avoid integer overflow in cumulative constraints triggered by unbounded variables, see new parameter `constraints/cumulative/maxtime`
492- removed erroneous catching of objective-changed events in intobj separator; instead, the separator no longer executes within probing with changed objective function
493- propagator dualfix no longer fixes variables to infinity to avoid issues when transferring the solution to the original problem
494- track and check bounds on the coefficients that is used for a variable in aggregations of other variables to improve numerical stability
495- corrected the upgrade of full orbitopes to packing/partitioning orbitopes in case the orbitopal symmetries form a proper subgroup of a component's symmetry group
496- aggregate integer variable to not in clique variable in cliquePresolve() of xor constraints to avoid infeasible solutions
498- fixed issue with file existence check in XML parser when SCIP was build with ZLIB support on Windows
508- the CIP reader now sets an objective offset instead of adding a variable fixed to the objective offset
511- the internal limit `MAXGENNUMERATOR` has been increased to allow more generators of symmetry groups, especially for problems with many variables
521- fixed bugs with counting changes in presolving of nonlinear and setppc constraints, which resulted in negative values
523- no longer construct and flush the LP in SCIPwriteLP() and SCIPwriteMIP() to avoid unexpected side effects
524- apply multi-aggregations before detecting redundancy in propagation of varbound constraints to keep bound implications
527- skip attempting to free transformed problem if SCIPtransformProb() failed with an error in SCIPpresolve(), since freeing
530- fixed stopping when there is a candidate with a change in the LP bound for both children in strong branching of branch_fullstrong
532- fixed memory allocation when adding strong SBCs for enclosing orbit of symmetric subgroups (disabled by default)
534- fixed rare invalid memory access when collecting symmetry information for indicator constraints
535- recompute activity bounds before checking infeasibility and redundancy in linear constraint presolving
536- skip integer variables with fractional value in reference solution when finding additional variable fixings in ALNS heuristic
538- fixed bug with concurrent solve w.r.t. variable indices that led to segmentation faults and fix termination test
539- adjust further bounds before checking feasibility in SCIPvarAddVlb() and SCIPvarAddVub() to detect integrality cutoff
540- fixed that the last fixed binary variable was not set after binary variables were created for linking constraints
541- fixed that when a linking constraint with only one binary variable was added during solving, it was not disabled
562- avoid hashmap key error in removal of doubletons and singletons in dual presolve of setppc constraints by skipping tripleton locks
564- provide the depth of the applied effective root with SCIPtreeGetEffectiveRootDepth() to avert invalid globalization of constraint set changes
566- declare infinite bound inference infeasible in SCIPinferVarLbCons() and SCIPinferVarUbCons() to maintain correct loose LP values
567- fixed update of consssorted flags in a variable expressions data when adding an additional constraint using this variable
570- correct comparison conditions in checkRedundancySide() of cons_varbound.c to ensure pair redundancy
571- also for the initial LP solve force acceptance of Farkas row in SCIPlpGetDualfarkas() if all other means for obtaining a reliable Farkas proof have failed
572- avoid overwriting the cutoff flag in tightenCoefs(), preprocessConstraintPairs(), and applyFixings() of cons_varbound.c to reject infeasible solutions
574- adjust bound before checking feasibility in SCIPvarAddVlb() and SCIPvarAddVub() to detect integrality cutoff
575- choose incumbent solution as reference in varFixingsRins() and varFixingsDins() of ALNS heuristic to ensure integrality
576- consider variable type in selectInitialVariableRandomly() of GINS heuristic to count integral variables
577- correct fractionality sign when standardizing bounds in simplifyInequalities() of cons_linear.c
584- disable setting the boolean variable MACOSX_RPATH to a string value to actually enable @rpath usage
590- when writing a problem with non-generic names, warnings are printed if variable or constraint names are not unique
598- fixed definition of slack variables of >= constraints and ranged rows in LP interface to Gurobi
600- use epsilon tolerance for bound implications of dual substitutions in dualPresolve() of cons_linear
602- fixed issues with indexing of concurrent solvers when a solver finishes (because SCIP is too fast) before others have been created when using TPI=tny
604- fixed reading mps files with short row and column names and some fixed-form mps files with spaces in row names
619- use relative epsilon tolerance to check Farkas row in SCIPlpGetDualfarkas() to avoid invalid cutoff
630- prioritize local includes for unittests, examples, and applications to link the intended SCIP version
635- fix use of SANITIZE=full for debug builds with GCC on Linux: removed -fsanitize=leak because it cannot be used together with -fsanitize=address
645- check variable cancellation in SCIPvarAddVlb() and SCIPvarAddVub() to avert wrong infeasibility
647- fixed bug in calculation of "fractionality score" for spatial branching candidates in cons_nonlinear
649- added copy callbacks for presolvers dualagg and redvub, branching rules lookahead and cloud, primal heuristics dualval and repair, propagator nlobbt, and separators gauge and convexproj
650- respect maximal separation rounds setting by running remaining delayed separators in last round
658- fix SCIP Optimization Suite build with -DSYM=(s)bliss and bliss being downloaded and built during configuration by cmake
659- fix use of a bliss cmake installation (from https://github.com/scipopt/bliss) specified via BLISS_DIR if -DSYM=(s)bliss
668- the output precision for writing CIP/OPB files has been increased at several places for nonlinear constraints
678- added check for absolute and relative gap limits at end of synchronization in concurrent solving mode, in order to terminate earlier;
679 note that if the concurrent solve is stopped due to a gap limit, the "winner" solver will have an interrupted solution status and
680 its primal and dual bounds may not be the best possible ones (use SCIPgetConcurrentPrimalbound() and SCIPgetConcurrentDualbound() instead)
687- reoptimization now also stores propagations from propagators if reoptimization/saveconsprop is enabled;
689- imposed stricter limits on the size of disconnected components which may be solved separately during presolve
690- use individual slack variables also for constraints indicated by a common binary variable to use tighter formulation by default
691- when computing symmetries using Nauty, iteration limits are now available to terminate Nauty early
696- Benders' decomposition subproblems that are always infeasible are correctly handled and the complete problem is declared infeasible
699- skip aggregations on fixed variables in milp presolver to avoid errors for earlier versions of PaPILO
700- use indices of negation counterparts and accept fixings when ordering and-resultants of pseudoboolean constraints
702- reformulate soft pseudoboolean constraints with linear constraints if the indicator decomposition is disabled
703- add workaround for recent HiGHS versions resetting the model status when changing the presolve option after a solve
704- avoid hashmap key error in removal of doubletons and singletons in dual presolve of setppc constraints by updating constraints and corresponding hashmaps after each multi-aggregation
711- added SCIPtpiIsAvailable() to check whether a working task processing interface is available (TPI != none)
715- added SCIPbendersSubproblemsAreInfeasible() to return if at least one subproblem has been identified as being
720- presolving/milp/abortfacexhaustive to control the abort threshold for exhaustive presolving in PAPILO
723- constraints/components/maxcompweight to determine the maximum weight for a disconnected component that is solved during presolve
724- constraints/components/contfactor counts the contributing factor of a single continuous variables with respect to the weight limit specified by constraints/components/maxcompweight
725- constraints/indicator/usesameslackvar to decide whether the same slack variable should be used for indicators constraints with common binary variable
726- propagating/symmetry/nautymaxncells and propagating/symmetry/nautymaxnnodes to set iteration limits in Nauty (only available if build with SYM=nauty or SYM=snauty)
743- added parameter FILTER for tests/Makefile to run only tests with a specific pattern (ctest with -R FILTER)
749- reordered events: BESTSOLFOUND/NODE_FEASIBLE are now processed before the nodes are cut off and before NODE_DELETE events are processed
751- the `#define` of `strcasecmp` and `strncasecmp` (in case of Windows builds) in scip/def.h will be removed with SCIP 10;
760- fix bug in separator aggregation that caused incorrect terminations when for an integral objective the objective limit was set to a fractional value
762- store relevance flags in consdataTightenCoefs() of cons_linear.c to avoid dropping variables unintentionally due to numerical changes
763- fix possible segmentation fault when resetting local and global bounds of original variables after abnormal termination
764- compare coefficient scales to detect parallelism to avoid integral relaxations in detectRedundantConstraints() of cons_linear.c
765- remove coefficient information from linear constraint hashes in order to compare keys with tolerances
766- fixed NULL pointer dereference in SCIPtpiGetNumThreads() of TinyCThread interface if called before SCIPtpiInit(); now returns 0 in this case
767- calling SCIPsolveConcurrent() when SCIP was compiled without a TPI now results in a plugin-not-found error
769- check cuts for redundancy after scaling in cutTightenCoefs() and cutTightenCoefsQuad() of cuts.c
770- maintain definition of artificial integral variables in xor constraints to avoid invalidation of conflict constraints
771- free childless nodes only after the deactivation of the old focus path in treeSwitchPath() of tree.c
772- only normalize rows for column norm evaluations in shift-and-propagate heuristic to avoid unscaled violations
773- expression handler for absolute value computes now also a cut when one of the bounds is infinite as long as the sign of the argument is known
774- check for more data to be freed before modifying nonlinear constraints in SCIPaddExprNonlinear()
776- do not abort writing of constraints to lp/pip files (and forget to free buffer memory) when encountering unsupported nonlinear constraint
778- fixed decision on when to enforce nonlinear constraints on relaxation solutions if integer variables are present
780- fixed write of strings with at least 1024 characters when compiling with MSVS 2015 (14.0) or later (still an issue with earlier MSVS, which will not be fixed)
781- keep epsilon coefficients in applyFixings() of cons_linear.c until multiples are merged to avoid loss of relevant contributions
782- fixed that some variable type changes were not accounted correctly in presolve of linear constraints
785- use original and-constraints of an untransformed pseudoboolean constraint when copying original problems to avert segmentation faults
786- sort and-constraints of a pseudoboolean constraint with respect to the resultant problem indices to avoid shuffled copies
787- treat pseudoboolean constraints as nonlinear constraints in OPB reader to prevent duplication mistakes
792- in example Binpacking implement Farkas pricing for packings because branching can actually lead to infeasible restricted master LPs
804- fixed compilation and linking with HiGHS; to use HiGHS, cmake now requires to specify the directory containing the `highs-config.cmake` file via `-DHIGHS_DIR`
805- extended identification of Ipopt library on Windows to also look for ipopt.dll.lib, as this is used since Ipopt 3.13.0 (2019)
814- added constraint handler that checks and enforces bounds on original variables which have been fixed or aggregated in the transformed problem
817- added option to consider enforcement of nonlinear constraints (including spatial branching) before integrality has been enforced
822- make sure that, in dual proof analysis, upgraded constraints can report their number of variables
823- check knapsack constraints as linear constraints to avoid violations based on implicit integrality
825- make arithmetics in cuts.c more robust to avoid invalid scg cuts due to numerical rounding sensitivity
826- allow to copy pseudoboolean constraints even if no AND constraints are present in order to avoid a warning
827- set value for variable that is introduced to reformulate nonlinear objective function when reading .nl files with initial solution
828- fixed that multi-aggregations from PaPILO were accepted without ensuring that their bounds hold
840- SCIP_DECL_NLHDLRENFO takes additional parameter branchcandonly to indicate whether only branching candidates should be registered,
846- new function SCIPincludeConshdlrFixedvar() to include new constraint handler that checks bounds on fixed original variables
850- limits/primal to terminate the solve as soon as the primal bound is at least as good as this value, same as limits/objectivestop (deprecated)
852- presolving/milp/internalmaxrounds to control the maximal rounds for each call of the milp presolver (PaPILO)
853- constraints/fixedvar/∗ to control the new constraint handler that checks bounds on fixed original variables
854- constraints/nonlinear/branching/mixfractional to specify minimal average pseudo cost count for discrete variables
855 at which to start considering spatial branching before branching on fractional integer variables
857- constraints/nonlinear/branching/fracweight to specify weight of fractionality of integer variables in spatial branching
861- enum SCIP_Status has been extended by SCIP_STATUS_PRIMALLIMIT and SCIP_STATUS_DUALLIMIT to indicate termination at limits/primal and limits/dual respectively
866- bliss source is no longer included in the source tree, but can be linked as external library (https://github.com/ds4dm/Bliss)
867- cmake now automatically downloads and installs the latest release version of SoPlex from GitHub if it is not found directly
882- fixed bug where parameter `limits/objectivestop` was copied to subscips in plugins which have different objectives
885- fixed bug where conflict analysis in strong branching tried to analyze an unsuccessful LP solve
887- handle normalizing linear constraints in presolving with more caution to avoid numerical difficulties for integer variables with large coefficients
888- use quad precision to calculate residual activity bounds to reduce numerical errors for large variable bounds in cons_linear.c
889- in SCIPsolveProbingLP() when objective has been changed do not return cutoff due to exceeding the cutoff bound
892- reject farkas solution with large values to bound magnification of errors in SCIPgetFarkasProof()
893- if all variables are fixed, apply relative feasibility tolerance to avoid invalid infeasibility in applyFixings() of cons_linear.c
895- cleanup first constraints in SCIPcleanupConssVarbound(), SCIPcleanupConssSetppc(), and SCIPcleanupConssLogicor()
896- symmetry handling methods have not been added immediately after computing symmetries, which has been fixed
897- delay checking node limits after presolving to correctly continue up to the exceeding main node
915- add compile option -ffp-contract=off or /fp:precise to enhance reproducibility across different systems
919- add flags -ffp-contract=off and /fp:precise to enhance reproducibility across different systems
926- added parameter "propagating/symmetry/symtiming" to determine when symmetries are computed and handled
940- in expression simplification, added possibility to expand power of sum with exponents larger than 2 (simplify rule POW7)
941- in expression simplification, added possibility to expand products with sums as factor when there are more than two factors (simplify rule SP12b)
942- in expression simplification, added possibility to allow expanding power of products with fractional exponent (simplify rule POW5a)
943- can now build with Lapack (used for solving nonlinear problems) explicitly; if IPOPT is used, then Lapack is accessed through it;
945- added support for logical constraints in binary variables and basic logical operators (and, or, not, equal) to AMPL .nl reader
946- indicator constraints now use the same slack variable for the linear constraints if binary variables are used multiple times
948- new diving heuristic indicatordiving that focuses on indicator variables which control semicontinuous variables
952- The symmetry detection code has been completely restructured. Instead of completely encoding symmetry information in
953 prop_symmetry.c, there is a new callback for constraint handlers, which returns symmetry relevant information by
954 encoding a constraint as a node and edge colored graph. This way, also custom constraint handlers can provide
956- added special presolving step for logicor and set covering/packing for constraints with two variables and one independent variable
957- increased the depth field of the tree structure from 16 to 30 bits and the max depth of the search tree from 65534 to 1073741822
958- added new cut selector plugin called cutsel_ensemble. Performs a superset of hybrid cutsel. Implements new filtering methods and scoring options.
961- added new cut selector plugin called cutsel_dynamic. Performs a superset of hybrid cutsel. Implements new filtering methods and scoring options.
963- extended heuristic dps to run after processing the node and to use strict limits for the reoptimization step
964- extended obbt propagator to handle variables of the linear constraints corresponding to indicator constraints
965- added new heuristic heur_scheduler that models the selection of LNS and diving heuristics as a multi-armed bandit problem
966- added nonlinear handler for signomial expressions: adds cuts based on a difference of convex functions representation
967- Delayed separators are now called if no other cuts have been found. Previously, such separators were only called near stalling or when the separation rounds limit was reached.
968- added a new separator sepa_lagromory to generate Lagromory cuts in a relax-and-cut framework, i.e., GMI cuts generated
969 at different bases that are explored in the process of solving the Lagrangian dual problem at a node. This separator
971- when parsing nonlinear constraints from CIP files, the * after the number in a term is now optional if followed by a variable,
972 i.e., instead of 3*<x>*<y>, now also 3<x>*<y> can be read, but 3<x><y> is not supported;
974- when running bliss, we now limit the number of actually created generators and not the ones considered by bliss
979- Variable conflict-based addition of Schreier-Sims cuts for symmetry handling in prop_symmetry.c does no longer use
982- Propagation of indicator constraints propagates maximal activity of linear constraint to upper bound of slack variable.
985- If differentation of convex expression fails in convex nlhdlr, then a perturbed point is tried.
998 The nonlinear handler may use this callback to add tight cuts that use the given solution as reference point to the cutpool.
1000- The callback for copying problem data SCIP_DECL_PROBCOPY() now has a parameter "original" indicating whether the original
1001 or transformed problem should be copied. Similarly, SCIPprobCopy() in prob.h/c has such a parameter.
1002- Added CONSGETPERMSYMGRAPH and CONSGETSIGNEDPERMSYMGRAPH callback for constraint handlers, which provides symmetry information about constraints to SCIP.
1006- SCIPtpiInitLock(), SCIPtpiDestroyLock(), SCIPtpiInitCondition(), SCIPtpiDestroyCondition() now take a double
1009- SCIPcreateConsIndicatorLinCons(), SCIPcreateConsIndicatorGenericLinCons() do not allow binvar to be NULL anymore
1014- SCIPincludeObjConshdlr(), SCIPincludeConshdlr(), SCIPconshdlrCreate() receive two more arguments for the
1024- new functions for interfacing with Lapack: SCIPlapackIsAvailable(), SCIPlapackIsAvailable(), SCIPlapackComputeEigenvalues(), and SCIPlapackSolveLinearEquations
1025 These functions should be used instead of SCIPisIpoptAvailableIpopt(), SCIPcallLapackDsyevIpopt(), and
1026 SCIPsolveLinearEquationsIpopt() in the context of computing eigenvalues or solving linear equations.
1031- new functions SCIPcreateConsIndicatorLinConsPure() and SCIPcreateConsIndicatorGenericLinConsPure() that
1036- new API functions SCIPlexicographicReductionGetStatistics(), SCIPlexicographicReductionPrintStatistics(),
1037 SCIPlexicographicReductionPropagate(), SCIPlexicographicReductionAddPermutation(), SCIPlexicographicReductionReset(),
1038 SCIPlexicographicReductionFree(), SCIPincludeLexicographicReduction(), for lexicographic reduction.
1039- new API functions SCIPorbitopalReductionGetStatistics(), SCIPorbitopalReductionPrintStatistics(),
1040 SCIPorbitopalReductionPropagate(), SCIPorbitopalReductionAddOrbitope(), SCIPorbitopalReductionReset(),
1041 SCIPorbitopalReductionFree(), SCIPincludeOrbitopalReduction(), SCIPorbitopalReductionGetDefaultColumnOrdering(),
1044 SCIPorbitalReductionPropagate(), SCIPorbitalReductionAddComponent(), SCIPorbitalReductionReset(),
1046- new API functions SCIPgetShadowTreeEventHandlerExecutionTime(), SCIPshadowTreeGetShadowNodeFromNodeNumber(),
1047 SCIPshadowTreeGetShadowNode(), SCIPgetShadowTree(), SCIPactivateShadowTree(), SCIPincludeEventHdlrShadowTree(),
1050- SCIPincludeCutselEnsemble(), SCIPselectCutsEnsemble() to include cutsel_ensemble or use the selection algorithm
1052- SCIPgetVarAvgGMIScore(), SCIPincVarGMISumScore(), SCIPgetVarLastGMIScore(), SCIPsetVarLastGMIScore() set historical values used by SCIP's default branching rule
1056- SCIPincludeCutselDynamic(), SCIPselectCutsDynamic() to include cutsel_dynamic or use the selection algorithm
1059- SCIPgetConsPermsymGraph() and SCIPgetConsSignedPermsymGraph() to access the (signed) permutation symmetry detection graph of a constraint
1060- SCIPsetConshdlrGetPermsymGraph() and SCIPsetConshdlrGetSignedPermsymGraph() to set the (signed) permutation symmetry detection graph of a constraint
1061- SCIPconshdlrSupportsPermsymDetection() and SCIPconshdlrSupportsSignedPermsymDetection() to access whether a conshdlr supports detection of (signed) permutation symmetries
1062- new API functions for creating and manipulating a symmetry detection graph: SCIPcreateSymgraph(), SCIPfreeSymgraph(), SCIPcopySymgraph(), SCIPextendPermsymDetectionGraphLinear(),
1063 SCIPaddSymgraphVarAggregation(), SCIPaddSymgraphOpnode(), SCIPaddSymgraphValnode(), SCIPaddSymgraphConsnode(), SCIPgetSymgraphVarnodeidx(), SCIPgetSymgraphNegatedVarnodeidx(),
1064 SCIPupdateSymgraphLhs(), SCIPupdateSymgraphRhs(), SCIPfixSymgraphVarnode(), SCIPaddSymgraphEdge(), SCIPcomputeSymgraphColors(), SCIPgetSymgraphSymtype(), SCIPgetSymgraphVars(),
1065 SCIPgetSymgraphNVars(), SCIPgetSymgraphNConsnodes(), SCIPgetSymgraphNNodes(), SCIPgetSymgraphNEdges(), SCIPgetSymgraphEdgeFirst(), SCIPgetSymgraphEdgeSecond(),
1066 SCIPgetSymgraphVarnodeColor(), SCIPgetSymgraphNodeType(), SCIPgetSymgraphNodeColor(), SCIPisSymgraphEdgeColored(), SCIPgetSymgraphEdgeColor(), SCIPgetSymgraphNVarcolors(),
1067 SCIPhasGraphUniqueEdgetype(), SCIPcreateSymgraphConsnodeperm(), SCIPgetSymgraphConsnodeperm(), SCIPfreeSymgraphConsnodeperm(),
1068 SCIPgetSymActiveVariables(), SCIPfreeSymDataExpr(), SCIPgetSymExprdataNConstants(), SCIPgetSymExprdataConstants(), SCIPgetCoefSymData(),
1070- SCIPexprhdlrSetGetSymdata(), SCIPexprhdlrHasGetSymData(), SCIPgetSymDataExpr(), SCIPcallExprGetSymData() to access symmetry data of expressions
1076- new members SYM_CONSOPTYPE_SUM, SYM_CONSOPTYPE_SLACK, SYM_CONSOPTYPE_COEF, SYM_CONSOPTYPE_RHS, SYM_CONSOPTYPE_LAST in SYM_CONSOPTYPE enum
1091- The AMPL interface now supports parameters specified in AMPL command scripts via option scip_options.
1092 The value of scip_options is expected to be a sequence of parameter names and values, separated by a space, e.g.,
1096- The solution status codes written to AMPL solution files now match those from https://mp.ampl.com/details.html#_CPPv4N2mp3sol6StatusE.
1101- Shrunk range of parameter "propagating/symmetry/sstleaderrule" from [0,3] to [0,2], removed "MAXCONFLICTS"-option.
1102- Removed reading/gmsreader/freeints. A default upper bound of +inf is now assumed for integer variables in GAMS (which is the case since GAMS 23.1).
1103- Disabled "propagating/symmetry/symfixnonbinaryvars" since it is not used in the new symmetry code.
1104- Replaced "propagating/symmetry/onlybinarysymmetry" with "propagating/symmetry/enforcecomputesymmetry" and set to FALSE by default.
1105- Disabled "propagating/symmetry/performpresolving" since running orbital reduction during presolving is not effective.
1106- Repurposed "propagating/symmetry/usedynamicprop" since it now also applies to lexicographic reduction.
1107- Changed default value of parameter "propagating/symmetry/addsymresacks" from FALSE to TRUE.
1111- separating/maxcutsgenfactor and separating/maxcutsrootgenfactor as factors (w.r.t. separating/maxcuts and
1112 separating/maxcutsroot) for limits on the number of cuts generated (which used to be constants '2')
1115- expr/product/expandalways to enable expanding any product with sums as factor (that is, also when more than two factors)
1117- benders/default/nlpiterlimit to adjust iteration limit for NLP solver for Benders' decomposition NLP subproblems
1120- heuristics/undercover/{coverand,coverind,covernl} to control which nonlinearities to consider (by default only "and" and nonlinear constraints)
1123- branching/relpscost/gmiavgeffweight specifies the weight in the relpscost branching score of the normalized efficacy of all generated GMI cuts (for a variable)
1124 branching/relpscost/gmilasteffweight specifies the weight in the elpscost branching score of the normalized efficacy of the last generated GMI cut (for a variable)
1125- nlhdlr/quadratic/usemonoidal to enable monoidal strengthening when separating quadratics with intersection cuts
1126- nlhdlr/quadratic/trackmore to collect more statistics for monoidal strengthening when separating quadratics with intersection cuts
1127- nlhdlr/quadratic/useminrep to use the minimal representation to compute cut coefficients when separating quadratics with intersection cuts
1132- nlhdlr/signomial/enabled, nlhdlr/signomial/maxnundervars, nlhdlr/signomial/mincutscale: parameters for the signomial nonlinear handler
1134- separating/lagromory/away to denote the minimal integrality violation of a basis variable to try separation
1135- separating/lagromory/dynamiccuts to denote whether the generated cuts be removed from LP if they are no longer tight
1136- separating/lagromory/maxroundsroot to denote the maximal number of separation rounds in the root node
1137- separating/lagromory/maxrounds to denote the maximal number of separation rounds in a non-root node
1138- separating/lagromory/nmaxcutsperlproot to denote, in the root node, the maximal number of Lagromory cuts that can be
1140- separating/lagromory/nmaxcutsperlp to denote, in a non-root node, the maximal number of Lagromory cuts that can be
1142- separating/lagromory/perroundnmaxlpiters to denote the maximal number of separating LP iterations that are allowed per
1144- separating/lagromory/dualdegeneracyratethreshold to denote the minimum dual degeneracy rate for the separator execution
1145- separating/lagromory/varconsratiothreshold to denote the minimum variable-constraint ratio on the optimal face for the
1147- many other advanced parameters for the Lagromory separator, which are also mentioned under separating/lagromory/∗
1153- replaced enum SYM_SYMTYPE by a complete new one; removed SYM_RHSSENSE, added SYM_NODETYPE and SYM_CONSOPTYPE
1158- deleted the now unused files: tpi_none.h, tpi_openmp.h, tpi_tnycthrd.h, type_tpi_none.h, type_tpi_openmp.h, type_tpi_tnycthrd.h
1163- new unittests for nlhdlr_quadratic that test monoidal strengthening and the use of the minimal representation to compute cut coefficients
1177- added flag option "SYM=sbliss" for using sassy/bliss as a graph automorphism package
1179- added flag option "SYM=snauty" for using sassy/nauty as a graph automorphism package
1183- added flag option "nauty" for SYM variable to specify which graph automorphism package should be used
1184- added flag option "sbliss" (sassy/bliss) for SYM variable to specify which graph automorphism package should be used
1185- added flag option "snauty" (sassy/nauty) for SYM variable to specify which graph automorphism package should be used
1194- Number of runs in which separation is enabled will now be correct as per "separating/maxruns" parameter. Earlier,
1195 separation was enabled for "maxruns + 1" number of runs, i.e., separation was enabled even when "maxruns = 0" was set.
1200- check absolute coefficients relative to extremal average to avoid invalid unifications in normalizeCons()
1201- enforce and check symmetry-based constraints to take their locks (in dual reductions) into account
1202- flush changes at the end of SCIPlpiSetBase() in lpi_grb.c to apply the newly set basis correctly
1207- The TPI has been changed to become mostly independent from the actual parallel interface during compile time.
1209- fixed that scip/def.h, the header for C preprocessor definition (`#define`'s), included headers for some SCIP type and function definitions
1221- fixed that scaling of rows in Gurobi interface (SCIPlpiScaleRow()) changed infinite sides to large finite ones (1e20) when scale factor is negative
1223- if an objective limit is set and Mosek claims that it is exceeded, check that this is indeed the case in SCIPlpiIsStable()
1224- the .mps file reader was extended to additionally accept .mps files with the objective sense section on one line
1226- fixed that a Gurobi or Mosek interface (LPI) could not be freed from a thread different than the one it was created in, which lead to problems when, e.g., using the concurrent optimizer
1227- in cons_varbound if both variables are fixed, instead of propagating the constraint check the feasibility of the constraint since propagating can lead to unnecessary numerical troubles
1229- fixed that undercover did not enforce that sufficiently many variables in an and-constraints were fixed to have it linearized in the generated sub-scip
1230- fixed two bugs in cons_varbound: avoid adding variable bounds if vbdcoef is infinite and unlock/lock variables if lhs/rhs/vbdcoef are changed
1231- globalize constraint changes before bound changes during the effective root shift in treeSwitchPath() to correctly update variable locks by avoiding global bounds with outstanding bound change events when deleting constraints
1233- remove integrality check for implicit integral variables in cons_integral.c, updated the definition for variable type implicit integer to be more explicit that these variables can take fractional values, and updated FAQ entry
1234- updated and, or, and pseudoboolean constraint handlers to better handle fractional implicit integer variables in enforcement
1235- avoid invalid strong Chvatal-Gomory cuts by ceiling with tolerance in the calculation of parameter k and flooring slack coefficients with standard epsilon tolerance as well as quad precision
1236- add missing row links to columns in SCIPflushRowExtensions() required to maintain correct row norms
1237- restrict separator intobj to solutions for which there can be no better feasible integral objective values to avoid cutting them off
1238- delay removal of clique lists from SCIPvarRemoveCliquesImplicsVbs() into cliqueCleanup() to avoid segmentation faults by incomplete cleanups after variable conversions
1239- reject sub-solutions with invalid objectives in SCIPtranslateSubSols() due to contradicting infinite contributions
1241- copy quiet flag from main scip's message handler to the one of solverscip in concurrent optimization
1242- avoid bound tightening cycles towards huge redundancy bounds in fullDualPresolve() to avert fatal numerical trouble in representing vertices of linear relaxations with unbounded domains
1244- update index of dominating variable on coefficient deletion in dualPresolving() of constraint handler logicor
1245- pass on flags from a redundant to the implying varbound constraint in preprocessConstraintPairs() to avoid suboptimal fixings by model relaxations
1247- before presolving is finished check solutions before retransforming them including tiny values to keep check flags consistent
1248- disable heuristics before and during presolving in benders decomposition to avoid messing up the objective structure in the solution store by dropping auxiliary variables in the required retransformations
1249- correct local flag of singleton conflict constraints in tightenSingleVar() against invalid bound globalization
1250- respect unboundedness in the computation of activity bounds in conflict.c to avoid invalid huge bounds due to small coefficients on unbounded variables
1251- ensure positive sides of a linear constraint when recognizing a set partition in rangedRowSimplify() to account for redundancy issues
1275- added flag option "SYM=sbliss" for using sassy/bliss as a graph automorphism package
1279- added flag option "nauty" for SYM variable to specify which graph automorphism package should be used
1280- added flag option "sbliss" for SYM variable to specify which graph automorphism package should be used
1300 given disjunction to be infeasible; it is now in the responsibility of the caller to act accordingly
1314- changed integer parameter "propagating/symmetry/recomputrestart" from range {0, 1, 2} to being fixed at value 0
1325- OPB reader: dynamically increase the size of the line buffer for reading in getMaxAndConsDim()
1326- Enabled the solution limit checks in SCIPsolveIsStopped in solve.c when in SCIP_STAGE_PRESOLVING
1331- orbitope detection: refine computation of overlap structure and fixed bug in finding orbitope generators
1333- when a row with invalid index range is added to the global cutpool, update the indices instead of failing with an assert
1334- update of watched literals in cons_xor.c and ensure that fixed variables are counted in propacateCons()
1335- avoid some numerical issue in check for redundant variables in linear constraints (introduced with version 8.0.2)
1338- avoid aggregation into a single linear constraint if they should not be upgraded (needed for indicator constraints)
1340- avoid invalid objective value for solutions generated from an unbounded LP relaxation in case of a nonlinear objective function
1344- fix in presolving of variable bound constraints to use absolute instead of relative difference
1350- fixed that presolve of logicor-constraints may have attempted to cutoff a root of the not yet existing branch-and-bound tree
1358- Extended documentation of the parameter limits/solutions to point out that the limit is first checked in presolving
1359- Added more information about using SCIPcache- and SCIPflushRowExtensions() to documentation and comments
1360- Extended the `how to add' sections of the documentation by adding information on how to include default plugins into SCIP
1375- When running the AMPL interface, the .nl filename extension does not need to be omitted for the input file anymore.
1391- the feasibility checker for integrality constraints now uses checkintegrality even for implied integers
1393- fixed an issue caused by aggregated variables not added to a hashmap in the xor constraint handler
1395- fixed that the implication presolver tried to aggregate or tighten bounds of multiaggregated variables
1397- fixed bug in Clp and lpi_clp with missing basis information when calling the barrier with crossover; needs new Clp version
1404- When an LP could not be solved accurately, scaling is now turned off as a last fall-back method.
1405- Functions for using the debug solution mechanism SCIPdebugAddSolVal, SCIPdebugGetSol, SCIPdebugGetSolVal,
1406 SCIPdebugSolIsValidInSubtree, SCIPdebugIsMainscip, SCIPdebugSolEnable, SCIPdebugSolDisable, SCIPdebugSolIsEnabled,
1419- replaced SCIPsepastoreGetNCutsFound with SCIPsepastoreGetNCutsAdded following the naming convention for the new statistics
1424- added SCIPsepastoreGetNCutsAdded, SCIPsepastoreGetNCutsAddedViaPool, SCIPsepastoreGetNCutsAddedDirect
1425- added SCIPsepaIncNCutsAdded, SCIPsepaDecNCutsAdded, SCIPsepaIncNCutsApplied, SCIPsepaGetNRootCalls, SCIPsepaGetNCutsAdded, SCIPsepaGetNCutsAddedViaPool, SCIPsepaGetNCutsAddedDirect, SCIPsepaGetNCutsAppliedViaPool, SCIPsepaGetNCutsAppliedDirect
1426- added SCIPcutpoolGetNRootCalls, SCIPcutpoolGetNCutsAdded, SCIPcutpoolAddMaxNCuts, SCIPcutpoolSetTime, SCIPcutpoolAddNCalls, SCIPcutpoolAddNRootCalls, SCIPcutpoolAddNCutsFound, SCIPcutpoolAddNCutsAdded,
1427- added SCIPcutselGetNCalls, SCIPcutselGetNRootCalls, SCIPcutselGetNRootCuts, SCIPcutselGetNRootForcedCuts, SCIPcutselGetNRootCutsFiltered, SCIPcutselGetNLocalCuts, SCIPcutselGetNLocalForcedCuts, SCIPcutselGetNLocalCutsFiltered,
1435- new parameters to turn on more statistics: misc/showdivingstats (diving heuristics), heuristics/alns/shownbstats (ALNS), estimation/showstats (tree size estimation)
1441- added ncalls, nrootcalls, nrootcutsselected, nrootcutsforced, nrootcutsfiltered, nlocalcutsselected, nlocalcutsforced, nlocalcutsfiltered to SCIP_Cutsel
1442- added ncutsadded, ncutsaddedviapool, ncutsaddeddirect, ncutsappliedviapool, ncutsapplieddirect, nrootcalls to SCIP_Sepa
1452 Packages like Ipopt, PaPILO, Readline, Zimpl, ZLIB, GMP, Worhp are automatically found and linked, otherwise ignored.
1453 The individual flags for these packages are ignored. This makes a quick build easier. It is by default set to off.
1459- Make sure that objective limit is disabled if not all variables are in the LP. If we would run into
1465- fixed bug in presolving of and constraints by merging variables with multiple occurrences before cliquePresolve()
1466- fixed bug in dual presolving of linear constraints by setting implicit integers to integers in multi-aggregation
1467- fixed update of presolve statistics on added constraints and changed coefficients in constraint handler for nonlinear constraints
1470- fixed check for unbounded solution constructed by SCIPlpGetUnboundedSol(): The constructed solution is very likely infeasible
1471 since scaling increases small numerical feasibility violations. Therefore, the solution is now always accepted. However, the
1472 feasibility of the ray is now checked. This fix now might lead to several rounds of separation in order to resolve unbounded solutions,
1479- Added extended cutselector statistics splitting between root node specific and general statistics
1480- Added extended and refined cutpool statistics showing the number of cuts added from the cutpool to the sepastore
1481- Added extended and refined separator statistics to get a better view of the individual generators performance
1485 misc/showdivingstats (diving heuristics), heuristics/alns/shownbstats (ALNS), estimation/showstats (tree size estimation)
1493- clique lifting in cons_setppc (parameter enablecliquelifting) is only disabled if it has been applied
1516- avoid warnings about unrecognized compiler warning silencing options when compilation with GCC fails
1522- avoid warnings about unrecognized compiler warning silencing options when compilation with GCC fails
1523- fixed that compilation with MS/Intel compilers on Windows and Cray compilers was broken when enabling PAPILO
1529- Fixed problem with reading long lines in LP/FZN/OPB/Diff-files. The buffer is now reallocated,
1534- made SCIPlpiGetSolverName()/SCIPlpiGetSolverDesc() thread-safe for LP Solvers (Cplex,Gurobi,Glop,Mosek,SoPlex,Xpress)
1538- Deactivated dual fixing of unlocked variables with zero objective in presol_milp that SCIP is unable to postsolve.
1540- fixed bug in propagation of indicator constraints (one case always reported a change through propagation)
1548- Variables that were marked as relaxation-only and that were not used in any solution (SCIP_SOL)
1550- New symmetry handling method, symmetry handling inequalities based on the Schreier Sims table,
1557- New separator to generate mixing cuts (works well for stochastic programming with probabilistic constraint).
1561- Added code to support debugging of catching or releasing of variables to var.c (prints backtrace
1565- Removed use of Hessian sparsity pattern for nonquadratic nonlinear constraints in undercover heuristic.
1568- New separator sepa_minor to compute cuts from 2x2 minors of a violated semidefiniteness constraint that is
1570- New separator sepa_interminor to compute intersection cuts from 2x2 (not only principle) minors of a violated
1572- Symmetry handling has been extended to detect also symmetries between variables that also appear in nonlinear constraints.
1573- Improved OBBT propagator by only considering variables that are contained in at least one nonconvex expression that has an auxiliary variable.
1576- Knapsack, linear, logicor, setppc, and varbound constraints now add themselves to the NLP relaxation, if enabled.
1577 And, linking constraints and bounddisjunctions in one variable are added to the NLP relaxation now.
1579- Extended data structure SCIP_ROWPREP and routines to assemble a linear inequality before it is turned into a SCIP row and
1583- New emphasis "benchmark" to avoid different solving paths that may come from checking remaining memory.
1584- New plugin type for cut selection: users can now include their own cut selection rules, default rule moved to cutsel_hybrid.
1585- New construction heuristic DPS which additionally needs a user-provided decomposition and splits the problem into several sub-SCIPs
1586 according to this decomposition. The sub-SCIPs are solved and updated repeatedly until a feasible solution of the original problem is found.
1589- Removed support for expression types min and max for now. Removed support for expression type sign.
1592- Added support for expression types sin, cos, and entropy. Added an expression type that stores a SCIP variable.
1596- Replaced expressions, expression trees, and expression graphs by a new implementation of expressions.
1600- Improved simplification of expressions and identification of common subexpressions, in particular terms that appear
1602- Expression simplification now expands powers also when the resulting exponents will be larger than 2.
1604- Removed interval-arithmetic evaluation from expression interpreter (interfaces to automatic differentiation codes).
1605- Hessians for user-provided expression handlers are not available in the NLP solver interfaces for now.
1609- cons_nonlinear has been completely rewritten and now handles constraints of the form lhs <= expr <= rhs, where
1610 expr is an expression using the new expression type. A linear part of a nonlinear constraint is no longer distinguished.
1611- Methods that work on a particular nonlinear structure are now implemented via nonlinear handlers (nlhdlr).
1612 These handlers are plugins of cons_nonlinear and interact with cons_nonlinear by detecting structures in expressions and
1614- Added nlhdlr "default" as a mandatory nlhdlr: this is a nlhdlr that gets active on expressions that no other nlhdlr handles.
1615 It then uses the callbacks implemented in expression handlers to provide domain propagation and linear under/overestimates.
1616- Added nlhdlr for quadratic expressions: domain propagation that was previously part of cons_quadratic; separation via intersection cuts (currently disabled).
1617- Added nlhdlr for bilinear expressions: collects bilinear products and provides under/overestimation of a product over a 2D-projection of the LP.
1618- Added nlhdlr for convex and concave expressions: detection of convex/concave subexpressions and linear under/overestimation.
1619- Added nlhdlr for quotients: detects quotients, provides specialized linear under/overestimation and domain propagation for univariate quotients.
1620- Added nlhdlr for perspective reformulations: detects expressions in semi-continuous variables and tightens linear
1622- Added nlhdlr for second-order cones: detects second-order cone constraints (as ||x|| <= t or a quadratic that can written like that) and
1627 Removed resolving of domain propagation (ConsResProp callback) and conflict analysis for abspower constraints.
1631 Removed possibility to add linearizations a la Glineur or BenTal&Nemirovski for SOC constraints.
1634 Removed option to project LP solution onto feasible region of a quadratic constraint via interior point or gauge function.
1643- Improved locking of nonlinear variables in nonlinear constraints by taking monotonicity into account.
1644- Improved mechanisms to detect and handle structures in nonlinear constraints, which allows for several algorithms
1646- Improved linearization of (sums of) products of binary variables, e.g., clique information is now taken into account.
1648- Nonlinear constraints with the same function (but possibly different left- or right-hand-side) are now merged.
1649- When a variable appears in only one concave less-or-equal constraint, it will be fixed to one of its bounds in more cases now.
1650- New branching rule for variables in nonlinear constraints (implemented in cons_nonlinear) that scores candidates
1658- Separate lifted cover cuts based on newer lifting function of Letchford and Souli (2019) in sepa_aggregation.c.
1663- Improved handling for expressions of type signpower in CppAD interface by making use of CppADs conditional expressions.
1667- Disabled branching on variables that are added for the extended formulation of a nonlinear constraint.
1668- Prefer branching on variables in nonconvex terms of nonlinear constraints also if a cut could be generated but would yield a small reduction in the convexification gap only.
1669- When violations of nonlinear constraints are tiny, the feasibility tolerance for the LP relaxation may now be reduced temporarily to allow for cuts to have an effect.
1670- Improved under/overestimation of multidimensional vertex-polyhedral (e.g., multilinear or concave) functions by use of scaling and keeping the cut-generating LP around.
1672- No longer relax bounds of integral variables when computing bounds on activity in nonlinear constraints.
1674- Revised and improved subNLP primal heuristic, in particular choice of iteration limit and starting condition and reuse of subSCIP.
1675- Merge strongcg into the gomory separator to avoid computing the same base equality twice. The files
1677- The RENS neighborhood in ALNS now fixes fractional variables if necessary for reaching its target fixing rate.
1679- If decomposition/maxgraphedge = 0, the computation of the block graph is completely turned off.
1680- Fixed a performance bug in cons_integral.c where rounding information was passed incorrectly to the generic diving algorithm.
1689 Two new problem classes are supported: maximum-weight connected subgraph problem with budget constraints, partial-terminal node-weighted Steiner tree problem.
1697- extend SEPAEXEC{LP,SOL} callbacks by parameter "depth", which should be used within separation instead of SCIPgetCurrentDepth()
1698- extend SCIPseparateSolCutpool() by parameter "pretendroot", which is passed to SCIPcutpoolSeparate() instead of SCIPtreeGetCurrentDepth(scip->tree) == 0
1699- removed SCIP_DECL_EXPRGRAPHVARADDED, SCIP_DECL_EXPRGRAPHVARREMOVE, SCIP_DECL_EXPRGRAPHVARCHGIDX
1700- removed SCIP_DECL_USEREXPRESTIMATE, SCIP_DECL_USEREXPREVAL, SCIP_DECL_USEREXPRINTEVAL, SCIP_DECL_USEREXPRCURV, SCIP_DECL_USEREXPRPROP, SCIP_DECL_USEREXPRCOPYDATA, SCIP_DECL_USEREXPRFREEDATA, SCIP_DECL_USEREXPRPRINT
1701- added SCIP_DECL_EXPR_OWNERFREE, SCIP_DECL_EXPR_OWNERPRINT, SCIP_DECL_EXPR_OWNEREVALACTIVITY, SCIP_DECL_EXPR_OWNERCREATE
1703- added SCIP_DECL_EXPRCOPYHDLR, SCIP_DECL_EXPRFREEHDLR, SCIP_DECL_EXPRCOPYDATA, SCIP_DECL_EXPRFREEDATA, SCIP_DECL_EXPRPRINT, SCIP_DECL_EXPRPARSE, SCIP_DECL_EXPRCURVATURE, SCIP_DECL_EXPRMONOTONICITY, SCIP_DECL_EXPRINTEGRALITY, SCIP_DECL_EXPRHASH, SCIP_DECL_EXPRCOMPARE, SCIP_DECL_EXPREVAL, SCIP_DECL_EXPRBWDIFF, SCIP_DECL_EXPRFWDIFF, SCIP_DECL_EXPRBWFWDIFF, SCIP_DECL_EXPRINTEVAL, SCIP_DECL_EXPRESTIMATE, SCIP_DECL_EXPRINITESTIMATES, SCIP_DECL_EXPRSIMPLIFY, SCIP_DECL_EXPRREVERSEPROP
1706- added argument nvarexprs to SCIP_DECL_NONLINCONSUPGD to inform upgrade method about number of variables in constraint
1708- added SCIP_DECL_NLHDLRCOPYHDLR, SCIP_DECL_NLHDLRFREEHDLRDATA, SCIP_DECL_NLHDLRFREEEXPRDATA, SCIP_DECL_NLHDLRINIT, SCIP_DECL_NLHDLREXIT, SCIP_DECL_NLHDLRDETECT, SCIP_DECL_NLHDLREVALAUX, SCIP_DECL_NLHDLRINTEVAL, SCIP_DECL_NLHDLRREVERSEPROP, SCIP_DECL_NLHDLRINITSEPA, SCIP_DECL_NLHDLREXITSEPA, SCIP_DECL_NLHDLRENFO, SCIP_DECL_NLHDLRESTIMATE
1709- replaced BMS_BLKMEM* blkmem argument of SCIP_DECL_NLPICOPY by SCIP* scip, removed targetnlpi argument
1711- added SCIP* scip to SCIP_DECL_NLPIGETSOLVERPOINTER, SCIP_DECL_NLPICREATEPROBLEM, SCIP_DECL_NLPIFREEPROBLEM, SCIP_DECL_NLPIGETPROBLEMPOINTER, SCIP_DECL_NLPIADDVARS, SCIP_DECL_NLPIADDCONSTRAINTS, SCIP_DECL_NLPISETOBJECTIVE, SCIP_DECL_NLPICHGVARBOUNDS, SCIP_DECL_NLPICHGCONSSIDES, SCIP_DECL_NLPIDELVARSET, SCIP_DECL_NLPIDELCONSSET, SCIP_DECL_NLPICHGLINEARCOEFS, SCIP_DECL_NLPICHGOBJCONSTANT, SCIP_DECL_NLPISETINITIALGUESS, SCIP_DECL_NLPISOLVE, SCIP_DECL_NLPIGETSOLSTAT, SCIP_DECL_NLPIGETTERMSTAT, SCIP_DECL_NLPIGETSOLUTION, SCIP_DECL_NLPIGETSTATISTICS
1713- removed nquadelems, quadelems, exprvaridxs arguments from SCIP_DECL_NLPIADDCONSTRAINTS, changed exprtrees argument to exprs
1714- removed nquadelems, quadelems, exprvaridxs arguments from SCIP_DECL_NLPISETOBJECTIVE, changed exprtree argument to expr
1720- When calling SCIPdelVar() in the SCIP_STAGE_PROBLEM stage, it is now documented as the user's responsibility to ensure
1721 the variable is not present in any constraints. Otherwise, SCIPsolve() now returns SCIP_INVALIDDATA.
1722- removed SCIPselectCuts(), replaced by SCIPselectCutsHybrid() of the hybrid cut selector plugin
1723- If SCIPvarMarkRelaxationOnly() is called for a variable, then this now need to happen before the
1726- SCIPcomputeOrbitsFilterSym() and SCIPcomputeComponentsSym(): Type of argument componentblocked
1729- SCIPcreateConsOrbitope() and SCIPcreateConsBasicOrbitope() have two new arguments "usedynamicprop"
1730 and "mayinteract" to encode whether a dynamic reordering of the orbitope rows shall be used in
1734- internal function SCIPgenerateOrbitopeVarsMatrix() has new arguments "storelexorder", "lexorder",
1735 "nvarsorder", "maxnvarsorder" to compute and store the lexicographic order defined by an orbitope
1737 SCIPcomputeArraysIntersectionInt() and SCIPcomputeArraysSetminusInt(), respectively, and changed
1739- removed SCIPincludeDialogDefault(), use SCIPincludeDialogDefaultBasic() instead and check whether you also need SCIPincludeDialogDefaultSet() and SCIPincludeDialogDefaultFix()
1745- removed SCIPconsNonlinearGetRhs(), SCIPconsNonlinearGetLhs(), SCIPconsNonlinearAddLinearCoef()
1746- removed arguments timelimit, minimprove, itercontingent, and iterused from SCIPapplyHeurSubNlp()
1747- removed SCIPresolveSolHeurSubNlp(), SCIPgetSubScipHeurSubNlp(), SCIPgetVarMappingScip2SubScipHeurSubNlp(), SCIPgetVarMappingSubScip2ScipHeurSubNlp()
1749- Added functions SCIPsetSepaIsParentsepa(), SCIPsetSepaParentsepa() [in scip_sepa.h], SCIPsepaSetIsParentsepa(), SCIPsepaSetParentsepa() [in sepa.h],
1751- Added function SCIPpruneTree() to immediately delete nodes that were marked to be deleted with SCIPcutoffNode
1754- SCIPhasNLPContinuousNonlinearity() now returns SCIP_RETCODE and has additional argument result
1755- removed SCIPnlrowGetNQuadVars(), SCIPnlrowGetQuadVars(), SCIPnlrowSearchQuadVar(), SCIPnlrowGetNQuadElems(), SCIPnlrowGetQuadElems(), SCIPnlrowGetQuadData()
1757- removed arguments nquadvars, quadvars, nquadelems, quadelems from SCIPcreateNlRow(); argument expr(ession) is now of type SCIP_EXPR*
1758- removed SCIPaddQuadVarToNlRow(), SCIPaddQuadVarsToNlRow(), SCIPaddQuadElementToNlRow(), SCIPaddQuadElementsToNlRow(), SCIPchgNlRowQuadElement(), SCIPsetNlRowExprtreeParam(), SCIPsetNlRowExprtreeParams()
1759- renamed SCIPsetNlRowExprtree() to SCIPsetNlRowExpr() and changed type of expr(tree) argument to SCIP_EXPR*
1762- SCIPhasNLPSolution() now returns true also if a infeasible solution to the NLP exists; SCIPcreateNLPSol() can now also be used when only an infeasible solution to the NLP exists
1767- removed SCIPnlpiCopy(), SCIPnlpiFree(), SCIPnlpiChgQuadCoefs(), SCIPnlpiChgNonlinCoef(), SCIPnlpiSetMessageHdlr()
1800 nlpicopy, nlpifree, nlpigetsolverpointer, nlpicreateproblem, nlpifreeproblem, nlpigetproblempointer, nlpiaddvars, nlpiaddconstraints, nlpisetobjective, nlpichgvarbounds, nlpichgconssides, nlpidelvarset, nlpidelconsset, nlpichglinearcoefs, nlpichgexpr, nlpichgobjconstant, nlpisetinitialguess, nlpisolve, nlpigetsolstat, nlpigettermstat, nlpigetsolution, nlpigetstatistics, nlpidata
1806- added argument SCIP* scip to SCIPnlpiOracleFree(), SCIPnlpiOracleSetProblemName(), SCIPnlpiOracleAddVars(), SCIPnlpiOracleAddConstraints(), SCIPnlpiOracleSetObjective(), SCIPnlpiOracleChgVarBounds(), SCIPnlpiOracleChgConsSides(), SCIPnlpiOracleDelVarSet(), SCIPnlpiOracleDelConsSet(), SCIPnlpiOracleChgLinearCoefs(), SCIPnlpiOracleChgObjConstant(), SCIPnlpiOracleGetEvalCapability(), SCIPnlpiOracleEvalObjectiveValue(), SCIPnlpiOracleEvalConstraintValue(), SCIPnlpiOracleEvalConstraintValues(), SCIPnlpiOracleEvalObjectiveGradient(), SCIPnlpiOracleEvalConstraintGradient(), SCIPnlpiOracleGetJacobianSparsity(), SCIPnlpiOracleEvalJacobian(), SCIPnlpiOracleGetHessianLagSparsity(), SCIPnlpiOracleEvalHessianLag(), SCIPnlpiOraclePrintProblem(), SCIPnlpiOraclePrintProblemGams()
1807- removed arguments nquadelems, quadelems, exprvaridxs, exprtrees from SCIPnlpiOracleAddConstraints(), added argument SCIP_EXPR** exprs
1808- removed arguments nquadelems, quadelems, exprvaridxs, exprtree from SCIPnlpiOracleSetObjective(), added argument SCIP_EXPR* expr
1809- replaced arguments isnewx of SCIPnlpiOracleEvalHessianLag() by two arguments isnewx_obj and isnewx_cons
1811- removed SCIPnlpiOracleSetInfinity(), SCIPnlpiOracleGetInfinity(), SCIPnlpiOracleChgQuadCoefs(), SCIPnlpiOracleChgExprParam(), SCIPnlpiOracleGetMaxDegree()
1812- removed SCIPnlpiOracleGetVarDegree() and SCIPnlpiOracleGetVarDegrees(), use SCIPnlpiOracleIsVarNonlinear() and SCIPnlpiOracleGetVarCounts(), respectively, instead
1813- removed SCIPnlpiOracleGetConstraintDegree(), use SCIPnlpiOracleIsConstraintNonlinear() instead
1814- removed argument messagehdlr from SCIPnlpiOraclePrintProblem() and SCIPnlpiOraclePrintProblemGams()
1820- removed SCIPnlpStatisticsCreate(), SCIPnlpStatisticsFree(), SCIPnlpStatisticsGetNIterations(), SCIPnlpStatisticsGetTotalTime(), SCIPnlpStatisticsSetNIterations(), SCIPnlpStatisticsSetTotalTime(), the struct is public now
1828- added SCIP* as first argument to SCIPexprintCompile(), changed third argument to SCIP_EXPR*, added fourth argument SCIP_EXPRINTDATA**
1829- added arguments SCIP*, SCIP_EXPRINT*, and SCIP_EXPR* as first arguments to SCIPexprintFreeData()
1831 added SCIP* as first argument, changed third argument to SCIP_EXPR*, added fourth argument SCIP_EXPRINTDATA*
1833- SCIPexprintEval(): added SCIP* as first argument, changed third argument to SCIP_EXPR*, added fourth argument SCIP_EXPRINTDATA*
1835- SCIPexprintGrad(): added SCIP* as first argument, changed third argument to SCIP_EXPR*, added fourth argument SCIP_EXPRINTDATA*
1837- removed SCIPexprintHessianSparsityDense() and SCIPexprintHessianDense, use SCIPexprintHessianSparsity() and SCIPexprintHessian() instead
1843- removed SCIPexprGetOpIndex(), SCIPexprGetOpReal(), SCIPexprGetOpData(), use SCIPexprGetData() instead
1844- removed SCIPexprGetRealPowerExponent(), SCIPexprGetIntPowerExponent(), SCIPexprGetSignPowerExponent(), use SCIPgetExponentExprPow() instead
1845- removed SCIPexprGetLinearCoefs(), SCIPexprGetLinearConstant(), use SCIPgetCoefsExprSum() and SCIPgetConstantExprSum() instead
1846- removed SCIPexprGetQuadElements(), SCIPexprGetQuadConstant(), SCIPexprGetQuadLinearCoefs(), SCIPexprGetNQuadElements(), use SCIPexprGetQuadraticData(), SCIPexprGetQuadraticQuadTerm(), SCIPexprGetQuadraticBilinTerm() instead
1847- removed SCIPexprGetMonomials(), SCIPexprGetNMonomials, SCIPexprGetPolynomialConstant(), SCIPexprGetMonomialCoef(), SCIPexprGetMonomialNFactors(), SCIPexprGetMonomialChildIndices(), SCIPexprGetMonomialExponents()
1858- removed SCIPexprCreatePolynomial(), SCIPexprAddMonomials(), SCIPexprChgPolynomialConstant(), SCIPexprMultiplyPolynomialByConstant(), SCIPexprMultiplyPolynomialByMonomial(), SCIPexprMultiplyPolynomialByPolynomial(), SCIPexprPolynomialPower()
1859- removed SCIPexprMergeMonomials(), SCIPexprFreeMonomial(), SCIPexprSortMonomialFactors(), SCIPexprFindMonomialFactor(), SCIPexprAreMonomialsEqual(), SCIPexprAddMonomialFactors(), SCIPexprChgMonomialCoef(), SCIPexprMultiplyMonomialByMonomial(), SCIPexprMonomialPower(), SCIPexprMergeMonomialFactors(), SCIPexprSortMonomials()
1877- removed SCIPexprtreeGetVars(), SCIPexprtreeSetVars(), SCIPexprtreeAddVars(), SCIPexprtreePrintWithNames(), SCIPexprtreeFindVar()
1878- removed SCIPexprtreeGetRoot(), SCIPexprtreeGetNVars(), SCIPexprtreeGetNParams(), SCIPexprtreeGetParamVals(), SCIPexprtreeSetParamVal(), SCIPexprtreeHasParam()
1879- removed SCIPexprtreeGetInterpreterData(), SCIPexprtreeSetInterpreterData(), SCIPexprtreeFreeInterpreterData()
1899- removed SCIPexprgraphGetNodeNParents(), SCIPexprgraphGetNodeParents(), SCIPexprgraphGetNodeDepth(), SCIPexprgraphGetNodePosition()
1901- removed SCIPexprgraphGetNodeOperatorIndex(), SCIPexprgraphGetNodeOperatorReal(), use SCIPexprGetData() instead
1903- removed SCIPexprgraphGetNodeRealPowerExponent(), SCIPexprgraphGetNodeIntPowerExponent(), SCIPexprgraphGetNodeSignPowerExponent(), use SCIPgetExponentExprPow() instead
1904- removed SCIPexprgraphGetNodeLinearCoefs(), SCIPexprgraphGetNodeLinearConstant(), use SCIPgetCoefsExprSum(), SCIPgetConstantExprSum() instead
1905- removed SCIPexprgraphGetNodeQuadraticConstant(), SCIPexprgraphGetNodeQuadraticLinearCoefs(), SCIPexprgraphGetNodeQuadraticQuadElements(), SCIPexprgraphGetNodeQuadraticNQuadElements(), use SCIPexprGetQuadraticData(), SCIPexprGetQuadraticQuadTerm(), SCIPexprGetQuadraticBilinTerm() instead
1906- removed SCIPexprgraphGetNodePolynomialMonomials(), SCIPexprgraphGetNodePolynomialNMonomials(), SCIPexprgraphGetNodePolynomialConstant(), SCIPexprgraphGetNodePolynomialMonomialCurvature()
1915- removed SCIPexprgraphCreateNodeUser(), removed SCIPexprgraphNodeSplitOffLinear(), SCIPexprgraphMoveNodeParents()
1919- removed SCIPexprgraphHasNodeSibling(), SCIPexprgraphAreAllNodeChildrenVars(), SCIPexprgraphHasNodeNonlinearAncestor()
1922- removed SCIPexprgraphUpdateNodeBoundsCurvature(), use SCIPevalExprActivity() and SCIPcomputeExprCurvature() instead
1923- removed SCIPexprgraphGetDepth(), SCIPexprgraphGetNNodes(), SCIPexprgraphGetNodes(), SCIPexprgraphGetNVars(), SCIPexprgraphGetVars()
1924- removed SCIPexprgraphGetVarNodes(), SCIPexprgraphSetVarNodeValue(), SCIPexprgraphSetVarsBounds(), SCIPexprgraphSetVarBounds(), SCIPexprgraphSetVarNodeBounds(), SCIPexprgraphSetVarNodeLb(), SCIPexprgraphSetVarNodeUb(), SCIPexprgraphGetVarsBounds()
1926- removed SCIPexprgraphAddNode(), SCIPexprgraphAddVars(), SCIPexprgraphAddConst(), SCIPexprgraphAddExprtreeSum()
1927- removed SCIPexprgraphReplaceVarByLinearSum(), SCIPexprgraphFindVarNode(), SCIPexprgraphFindConstNode()
1928- replaced SCIPexprgraphPrintDot() by SCIPprintExprDotInit[2](), SCIPprintExprDot(), SCIPprintExprDotFinal()
1933- removed SCIPexprgraphGetTree(), SCIPexprgraphGetSeparableTrees(), SCIPexprgraphGetSubtreeVarsUsage(), SCIPexprgraphGetSumTreesNSummands(), SCIPexprgraphGetSumTrees()
1937- deprecated SCIPcreateConsAbspower() and SCIPcreateConsBasicAbspower(), use SCIPcreateConsBasicSignpowerNonlinear() instead
1939- removed SCIPgetNonlinearVarAbspower(), SCIPgetLinearVarAbspower(), SCIPgetExponentAbspower(), SCIPgetOffsetAbspower(), SCIPgetCoefLinearAbspower(), SCIPgetLhsAbspower(), SCIPgetRhsAbspower()
1942- removed SCIPincludeConshdlrBivariate(), SCIPcreateConsBivariate(), SCIPcreateConsBasicBivariate()
1943- removed SCIPgetLinearVarBivariate(), SCIPgetLinearCoefBivariate(), SCIPgetExprtreeBivariate(), SCIPgetLhsBivariate(), SCIPgetRhsBivariate()
1947- deprecated SCIPcreateConsBasicQuadratic(), use SCIPcreateConsBasicQuadraticNonlinear() instead
1949- deprecated SCIPaddConstantQuadratic(), use SCIPgetLhsNonlinear() and SCIPgetRhsNonlinear() instead
1951- deprecated SCIPaddQuadVarQuadratic(), use SCIPaddLinearVarNonlinear() and SCIPaddExprNonlinear() instead
1958- removed SCIPgetNLinearVarsQuadratic(), SCIPgetLinearVarsQuadratic(), SCIPgetCoefsLinearVarsQuadratic(), SCIPgetNQuadVarTermsQuadratic(), SCIPgetQuadVarTermsQuadratic(), SCIPsortQuadVarTermsQuadratic(), SCIPfindQuadVarTermQuadratic(), SCIPgetNBilinTermsQuadratic(), SCIPgetBilinTermsQuadratic(), SCIPgetLhsQuadratic(), SCIPgetRhsQuadratic()
1960- removed SCIPcheckCurvatureQuadratic() and SCIPisConvexConsQuadratic(), use SCIPcomputeExprQuadraticCurvature() instead
1962- removed SCIPgetViolationQuadratic() and SCIPgetFeasibilityQuadratic(), use SCIPgetAbsViolationNonlinear() instead
1964- removed SCIPchgLinearCoefQuadratic(), SCIPchgSquareCoefQuadratic(), SCIPchgBilinCoefQuadratic()
1965- renamed SCIPgetNAllBilinearTermsQuadratic() to SCIPgetNBilinTermsNonlinear() and changed argument from SCIP* to SCIP_CONSHDLR*
1966- renamed SCIPgetAllBilinearTermsQuadratic() to SCIPgetBilinTermsNonlinear() and replaced arguments by SCIP_CONSHDLR* and changed return type to SCIP_CONSNONLINEAR_BILINTERM*
1968- renamed SCIPcreateConsQuadratic() to SCIPcreateConsQuadraticNonlinear() and removed argument stickingatnode
1973- removed SCIPgetNLhsVarsSOC(), SCIPgetLhsVarsSOC(), SCIPgetLhsCoefsSOC(), SCIPgetLhsOffsetsSOC(), SCIPgetLhsConstantSOC(), SCIPgetRhsVarSOC(), SCIPgetRhsCoefSOC(), SCIPgetRhsOffsetSOC(), use SCIPisSOCNonlinear() instead
1975- renamed SCIPincludeNonlinconsUpgrade() to SCIPincludeConsUpgradeNonlinear() and removed nodereform argument
1976- removed arguments nlinvars, linvars, lincoefs, nexprtrees, exprtrees, nonlincoefs, stickingatnode from SCIPcreateConsNonlinear() and added SCIP_EXPR* argument
1977- removed arguments nlinvars, linvars, lincoefs, nexprtrees, exprtrees, nonlincoefs from SCIPcreateConsBasicNonlinear() and added SCIP_EXPR* argument
1981- removed SCIPgetNLinearVarsNonlinear(), SCIPgetLinearVarsNonlinear(), SCIPgetLinearCoefsNonlinear()
1982- removed SCIPgetNExprtreesNonlinear(), SCIPgetExprtreesNonlinear(), SCIPgetExprtreeCoefsNonlinear(), SCIPgetExprgraphNodeNonlinear(), use SCIPgetExprNonlinear() instead
1984- removed SCIPcheckCurvatureNonlinear(), SCIPgetCurvatureNonlinear(), and SCIPgetExprtreeCurvaturesNonlinear(), use SCIPhasExprCurvature() instead
1986- added arguments var and coef to SCIPgetLinvarMayDecreaseNonlinear() and SCIPgetLinvarMayIncreaseNonlinear() and changed return type to void
1988- removed SCIPcomputeHyperplaneThreePoints(), use SCIPcomputeFacetVertexPolyhedralNonlinear() instead
1992- added SCIPallocClearMemory() and SCIPallocClearBlockMemory() to allocate a chunk of (block) memory
2003- added SCIPcomputeArraysIntersectionPtr() to compute intersection of two sorted arrays of pointers
2004- new function SCIPinterruptLP() (intended to be called from a different thread) that interrupts ongoing lp solve
2007 add an activeone argument to specify whether the indicator constraint should be activated on 0 or 1.
2008 SCIPcreateConsIndicator() also adds a lessthanineq flag to choose whether the linear constraint is a less-than or greater-than inequality.
2011- added SCIPdecompGetNBorderVars() and SCIPdecompGetNBorderConss() to get number of border variables/constraints
2012- added SCIPdecompGetVarsSize() and SCIPdecompGetConssSize() to get variable/constraint size for each block of a decomposition
2020 SCIProwprepGetNVars(), SCIProwprepGetVars(), SCIProwprepGetCoefs(), SCIProwprepGetSide(), SCIProwprepGetSidetype(), SCIProwprepIsLocal(), SCIProwprepGetName(), SCIProwprepGetNModifiedVars(), SCIProwprepGetModifiedVars(),
2021 SCIProwprepReset(), SCIProwprepAddSide(), SCIProwprepAddConstant(), SCIProwprepSetSidetype(), SCIProwprepSetLocal(), SCIProwprepRecordModifications(),
2022 SCIPprintRowprep(), SCIPprintRowprepSol(), SCIPensureRowprepSize(), SCIPaddRowprepTerm(), SCIPaddRowprepTerms(), SCIPgetRowprepViolation(), SCIPisRowprepViolationReliable(),
2023 SCIPmergeRowprepTerms(), SCIPcleanupRowprep(), SCIPcleanupRowprep2(), SCIPscaleupRowprep(), SCIPscaleRowprep(),
2029- moved SCIPhistoryGetInferenceSum() and SCIPhistoryGetAvgConflictlength() from internal to public API
2033- added SCIPgetExprhdlrVar(), SCIPgetExprhdlrValue(), SCIPgetExprhdlrSum(), SCIPgetExprhdlrProduct(), SCIPgetExprhdlrPower()
2034- added SCIPexprhdlrSetCopyFreeHdlr(), SCIPexprhdlrSetCopyFreeData(), SCIPexprhdlrSetPrint(), SCIPexprhdlrSetParse(), SCIPexprhdlrSetCurvature(), SCIPexprhdlrSetMonotonicity(), SCIPexprhdlrSetIntegrality(), SCIPexprhdlrSetHash(), SCIPexprhdlrSetCompare(), SCIPexprhdlrSetDiff(), SCIPexprhdlrSetIntEval(), SCIPexprhdlrSetSimplify(), SCIPexprhdlrSetReverseProp(), SCIPexprhdlrSetEstimate()
2035- added SCIPexprhdlrGetName(), SCIPexprhdlrGetDescription(), SCIPexprhdlrGetPrecedence(), SCIPexprhdlrGetData(), SCIPexprhdlrHasPrint(), SCIPexprhdlrHasBwdiff(), SCIPexprhdlrHasFwdiff(), SCIPexprhdlrHasIntEval(), SCIPexprhdlrHasEstimate(), SCIPexprhdlrHasInitEstimates(), SCIPexprhdlrHasSimplify(), SCIPexprhdlrHasCurvature(), SCIPexprhdlrHasMonotonicity(), SCIPexprhdlrHasReverseProp()
2037- added SCIPexprhdlrGetNIntevalCalls(), SCIPexprhdlrGetIntevalTime(), SCIPexprhdlrGetNReversepropCalls(), SCIPexprhdlrGetReversepropTime(), SCIPexprhdlrGetNCutoffs(), SCIPexprhdlrGetNDomainReductions(), SCIPexprhdlrIncrementNDomainReductions(), SCIPexprhdlrGetNEstimateCalls(), SCIPexprhdlrGetEstimateTime(), SCIPexprhdlrGetNBranchings(), SCIPexprhdlrIncrementNBranchings(), SCIPexprhdlrGetNSimplifyCalls(), SCIPexprhdlrGetSimplifyTime(), SCIPexprhdlrGetNSimplifications()
2044- added SCIPcreateExprPow(), SCIPcreateExprSignpower(), SCIPincludeExprhdlrPow(), SCIPincludeExprhdlrSignpower(), SCIPisExprSignpower(), SCIPgetExponentExprPow(), SCIPisExprPower()
2045- added SCIPincludeExprhdlrProduct(), SCIPcreateExprProduct(), SCIPgetCoefExprProduct(), SCIPisExprProduct()
2046- added SCIPincludeExprhdlrSum(), SCIPcreateExprSum(), SCIPsetConstantExprSum(), SCIPappendExprSumExpr(), SCIPmultiplyByConstantExprSum(), SCIPgetCoefsExprSum(), SCIPgetConstantExprSum(), SCIPisExprSum()
2047- added SCIPincludeExprhdlrSin(), SCIPcreateExprSin(), SCIPincludeExprhdlrCos(), SCIPcreateExprCos(), SCIPisExprSin(), SCIPisExprCos()
2048- added SCIPincludeExprhdlrValue(), SCIPcreateExprValue(), SCIPgetValueExprValue(), SCIPisExprValue()
2050- added SCIPincludeExprhdlrVaridx(), SCIPcreateExprVaridx(), SCIPisExprVaridx(), SCIPgetIndexExprVaridx(), SCIPsetIndexExprVaridx()
2056- added SCIPevalExprGradient(), SCIPevalExprHessianDir(), SCIPexprGetDerivative(), SCIPexprGetDot(), SCIPexprGetBardot(), SCIPexprGetDiffTag()
2057- added SCIPevalExprActivity(), SCIPexprGetActivity(), SCIPexprGetActivityTag(), SCIPexprSetActivity()
2060- added SCIPcheckExprQuadratic(), SCIPfreeExprQuadratic(), SCIPevalExprQuadratic(), SCIPprintExprQuadratic(), SCIPcomputeExprQuadraticCurvature()
2061- added SCIPexprGetQuadraticData(), SCIPexprGetQuadraticQuadTerm(), SCIPexprGetQuadraticBilinTerm(), SCIPexprAreQuadraticExprsVariables()
2062- added SCIPcreateExpr(), SCIPcreateExpr2(), SCIPcreateExprQuadratic(), SCIPcreateExprMonomial()
2067- added SCIPprintExprDotInit(), SCIPprintExprDotInit2(), SCIPprintExprDot(), SCIPprintExprDotFinal(), SCIPshowExpr()
2071- added SCIPcallExprPrint(), SCIPcallExprCurvature(), SCIPcallExprMonotonicity(), SCIPcallExprEval(), SCIPcallExprEvalFwdiff(), SCIPcallExprInteval(), SCIPcallExprEstimate(), SCIPcallExprInitestimates(), SCIPcallExprSimplify(), SCIPcallExprReverseprop()
2077- added SCIPexpriterRestartDFS(), SCIPexpriterSetStagesDFS(), SCIPexpriterGetCurrent(), SCIPexpriterGetStageDFS(), SCIPexpriterGetChildIdxDFS(), SCIPexpriterGetChildExprDFS(), SCIPexpriterGetParentDFS()
2078- added SCIPexpriterGetCurrentUserData(), SCIPexpriterGetChildUserDataDFS(), SCIPexpriterGetExprUserData(), SCIPexpriterSetCurrentUserData(), SCIPexpriterSetExprUserData(), SCIPexpriterSetChildUserData()
2083- added SCIPgetCurBoundsTagNonlinear(), SCIPgetLastBoundRelaxTagNonlinear(), SCIPincrementCurBoundsTagNonlinear()
2087- added SCIPcollectBilinTermsNonlinear(), SCIPgetBilinTermIdxNonlinear(), SCIPgetBilinTermNonlinear(), SCIPevalBilinAuxExprNonlinear(), SCIPinsertBilinearTermExistingNonlinear(), SCIPinsertBilinearTermImplicitNonlinear()
2090- added SCIPcheckQuadraticNonlinear(), SCIPchgLhsNonlinear(), SCIPchgRhsNonlinear(), SCIPchgExprNonlinear(), SCIPaddExprNonlinear()
2092- added SCIPgetExprNLocksPosNonlinear(), SCIPgetExprNLocksNegNonlinear(), SCIPgetExprAuxVarNonlinear(), SCIPgetExprNEnfosNonlinear(), SCIPgetExprEnfoDataNonlinear(), SCIPsetExprEnfoAuxValueNonlinear()
2093- added SCIPgetExprNPropUsesActivityNonlinear(), SCIPgetExprNSepaUsesActivityNonlinear(), SCIPgetExprNAuxvarUsesNonlinear(), SCIPregisterExprUsageNonlinear()
2094- added SCIPgetExprAbsOrigViolationNonlinear(), SCIPgetExprAbsAuxViolationNonlinear(), SCIPgetExprRelAuxViolationNonlinear()
2095- added SCIPgetExprBoundsNonlinear(), SCIPtightenExprIntervalNonlinear(), SCIPmarkExprPropagateNonlinear()
2096- added SCIPaddExprViolScoreNonlinear(), SCIPaddExprsViolScoreNonlinear(), SCIPgetExprViolScoreNonlinear()
2099- added SCIPincludeNlhdlrNonlinear(), SCIPfindNlhdlrNonlinear(), SCIPgetNNlhdlrsNonlinear(), SCIPgetNlhdlrsNonlinear(), SCIPgetNlhdlrExprDataNonlinear()
2100- added SCIPcreateConsQuadraticNonlinear() and SCIPcreateConsBasicQuadraticNonlinear() to create a nonlinear constraint that is quadratic
2101- added SCIPcreateConsBasicSignpowerNonlinear() to create a nonlinear constraint that looks like the former abspower or signpower constraints
2104- added SCIPincludeNlhdlrBilinear(), SCIPgetExprsBilinear(), SCIPgetNExprsBilinear(), SCIPaddIneqBilinear()
2111- added SCIPnlhdlrSetCopyHdlr(), SCIPnlhdlrSetFreeHdlrData(), SCIPnlhdlrSetFreeExprData(), SCIPnlhdlrSetInitExit(), SCIPnlhdlrSetProp(), SCIPnlhdlrSetSepa()
2112- added SCIPnlhdlrGetName(), SCIPnlhdlrGetDesc(), SCIPnlhdlrGetDetectPriority(), SCIPnlhdlrGetEnfoPriority(), SCIPnlhdlrIsEnabled(), SCIPnlhdlrGetData()
2113- added SCIPnlhdlrHasIntEval(), SCIPnlhdlrHasReverseProp(), SCIPnlhdlrHasInitSepa(), SCIPnlhdlrHasExitSepa(), SCIPnlhdlrHasEnfo(), SCIPnlhdlrHasEstimate()
2117- added SCIPgetNlpiSolverPointer(), SCIPcreateNlpiProblem(), SCIPfreeNlpiProblem(), SCIPgetNlpiProblemPointer(), SCIPaddNlpiVars(), SCIPaddNlpiConstraints(), SCIPsetNlpiObjective(), SCIPchgNlpiVarBounds(), SCIPchgNlpiConsSides(), SCIPdelNlpiVarSet(), SCIPdelNlpiConsSet(), SCIPchgNlpiLinearCoefs(), SCIPchgNlpiExpr(), SCIPchgNlpiObjConstant(), SCIPsetNlpiInitialGuess(), SCIPsolveNlpiParam(), SCIPgetNlpiSolstat(), SCIPgetNlpiTermstat(), SCIPgetNlpiSolution(), SCIPgetNlpiStatistics()
2119- added SCIPincludeNlpSolverFilterSQP(), SCIPgetSolverNameFilterSQP(), SCIPgetSolverDescFilterSQP(), SCIPisFilterSQPAvailableFilterSQP()
2125- added SCIPnlpiOracleIsVarNonlinear(), SCIPnlpiOracleGetVarCounts(), SCIPnlpiOracleIsConstraintNonlinear()
2126- added SCIPnlpiGetNProblems(), SCIPnlpiGetProblemTime(), SCIPnlpiGetNSolves(), SCIPnlpiGetSolveTime(), SCIPnlpiGetEvalTime(), SCIPnlpiGetNIterations(), SCIPnlpiGetNTermStat(), SCIPnlpiGetNSolStat(), SCIPnlpiMergeStatistics()
2132- added SCIPincludeCutsel(), SCIPincludeCutselBasic(), SCIPsetCutselCopy(), SCIPsetCutselFree(), SCIPsetCutselInit(), SCIPsetCutselExit(), SCIPsetCutselInitsol(), SCIPsetCutselExitsol(), SCIPfindCutsel(), SCIPgetCutsels(), SCIPgetNCutsels(), SCIPsetCutselPriority()
2133- added SCIPcutselGetName(), SCIPcutselGetData(), SCIPcutselGetDesc(), SCIPcutselGetPriority(), SCIPcutselSetData(), SCIPcutselIsInitialized(), SCIPcutselGetSetupTime(), SCIPcutselGetTime()
2139 the removed interface was a poorly maintained copy of the GAMS/SCIP interface that is available at
2141- integrated AMPL interface into main SCIP executable, that is, added possibility to use SCIP executable as solver in AMPL
2142 (AMPL calls solver with name of .nl file and -AMPL as arguments; SCIP will then attempt to solve the problem and write an AMPL solution file)
2148- Extended range of parameter "misc/usesymmetry" from [0,3] to [0,7], changed default from 3 to 5
2150- changed type of parameter "propagating/symmetry/recomputerestart" from SCIP_Bool to int with range [0,2]
2153- removed constraints/nonlinear/linfeasshift, constraints/nonlinear/reformulate, constraints/nonlinear/maxexpansionexponent, constraints/nonlinear/sepanlpmincont
2155- removed constraints/nonlinear/upgrade/and, use constraints/nonlinear/reformbinprodsand instead
2161- removed constraints/quadratic/sepafreq, constraints/quadratic/propfreq, constraints/quadratic/proptiming, constraints/quadratic/eagerfreq, constraints/quadratic/maxprerounds, constraints/quadratic/delaysepa, constraints/quadratic/delayprop, constraints/quadratic/presoltiming
2162- removed constraints/quadratic/replacebinaryprod, use constraints/nonlinear/reformbinprodsfac instead
2163- removed constraints/quadratic/empathy4and, use constraints/nonlinear/reformbinprodsand instead
2164- removed constraints/quadratic/binreforminitial, constraints/quadratic/binreformbinaryonly, constraints/quadratic/binreformmaxcoef
2165- removed constraints/quadratic/cutmaxrange, constraints/quadratic/mincurvcollectbilinterms, constraints/quadratic/linearizeheursol, constraints/quadratic/checkcurvature, constraints/quadratic/checkfactorable, constraints/quadratic/checkquadvarlocks, constraints/quadratic/linfeasshift
2166- removed constraints/quadratic/maxdisaggrsize, constraints/quadratic/disaggrmergemethod, constraints/quadratic/maxproprounds, constraints/quadratic/maxproproundspresolve, constraints/quadratic/enfolplimit, constraints/quadratic/sepanlpmincont, constraints/quadratic/enfocutsremovable
2167- removed constraints/quadratic/gaugecuts, constraints/quadratic/interiorcomputation, constraints/quadratic/projectedcuts, constraints/quadratic/branchscoring, constraints/quadratic/usebilinineqbranch, constraints/quadratic/bilinineqmaxseparounds,
2169- removed constraints/quadratic/upgrade/linear, constraints/quadratic/upgrade/abspower, constraints/quadratic/upgrade/bivariate, constraints/quadratic/upgrade/bounddisjunction
2172- removed constraints/abspower/sepafreq, constraints/abspower/propfreq, constraints/abspower/proptiming, constraints/abspower/eagerfreq, constraints/abspower/maxprerounds, constraints/abspower/delaysepa, constraints/abspower/delayprop, constraints/abspower/presoltiming
2173- removed constraints/abspower/cutmaxrange, constraints/abspower/projectrefpoint, constraints/abspower/preferzerobranch, constraints/abspower/branchminconverror, constraints/abspower/addvarboundcons, constraints/abspower/linfeasshift, constraints/abspower/dualpresolve, constraints/abspower/sepainboundsonly, constraints/abspower/sepanlpmincont, constraints/abspower/enfocutsremovable
2174- removed constraints/bivariate/sepafreq, constraints/bivariate/propfreq, constraints/bivariate/proptiming, constraints/bivariate/eagerfreq, constraints/bivariate/maxprerounds, constraints/bivariate/delaysepa, constraints/bivariate/delayprop, constraints/bivariate/presoltiming
2175- removed constraints/bivariate/cutmaxrange, constraints/bivariate/linfeasshift, constraints/bivariate/maxproprounds, constraints/bivariate/ninitlprefpoints, constraints/bivariate/enfocutsremovable
2176- removed constraints/soc/sepafreq, constraints/soc/propfreq, constraints/soc/proptiming, constraints/soc/eagerfreq, constraints/soc/maxprerounds, constraints/soc/delaysepa, constraints/soc/delayprop, constraints/soc/presoltiming
2177- removed constraints/soc/projectpoint, constraints/soc/nauxvars, constraints/soc/glineur, constraints/soc/sparsify, constraints/soc/sparsifymaxloss, constraints/soc/sparsifynzgrowth, constraints/soc/linfeasshift, constraints/soc/nlpform, constraints/soc/sepanlpmincont, constraints/soc/enfocutsremovable, constraints/soc/disaggregate
2190- removed heuristics/subnlp/runalways, use heuristics/subnlp/nodesoffset=INT_MAX and heuristics/subnlp/successrateexp = 0.0 instead
2195- renamed separating/{minortho,minorthoroot,objparalfac,intsupportfac} to cutselection/hybrid/{minortho,minorthoroot,objparalweight,intsupportweight}
2203- new parameter "propagating/symmetry/sstleaderrule" to select a rule for selecting the
2205- new parameter "propagating/symmetry/ssttiebreakrule" to select a tiebreak rule for selecting the
2207- new parameter "propagating/symmetry/sstleadervartype" to select the possible variable types
2209- new parameter "propagating/symmetry/addconflictcuts" to control whether SST cuts are added if
2211- new parameter "propagating/symmetry/sstaddcuts" to control whether SST cuts are added
2212- new parameter "propagating/symmetry/sstmixedcomponents" to control whether SST cuts are added
2214- new parameter "propagating/symmetry/detectsubgroups" to search for orbitopes defined by subgroups
2215- new parameter "propagating/symmetry/addweaksbcs" to add Schreier Sims cuts for a single
2217- new parameter "propagating/symmetry/addstrongsbcs" to add symretope facets for a single
2219- new parameter "propagating/symmetry/maxnconsssubgroup" to control up to which number of
2221- new parameter "propagating/symmetry/preferlessrows" to control whether orbitopes with
2223- new parameter "propagating/symmetry/usedynamicprop" to control if rows of full orbitope
2228- if run from AMPL: display/logfile to specify name of file to write SCIP log to (additionally to writing to stdout)
2229- constraints/nonlinear/propauxvars, constraints/nonlinear/varboundrelax, constraints/nonlinear/varboundrelaxamount, constraints/nonlinear/conssiderelaxamount
2230- constraints/nonlinear/vpmaxperturb, constraints/nonlinear/vpadjfacetthresh, constraints/nonlinear/vpdualsimplex
2231- constraints/nonlinear/bilinmaxnauxexprs, constraints/nonlinear/forbidmultaggrnlvar, constraints/nonlinear/checkvarlocks, constraints/nonlinear/violscale
2232- constraints/nonlinear/reformbinprods, constraints/nonlinear/reformbinprodsand, constraints/nonlinear/reformbinprodsfac
2233- constraints/nonlinear/tightenlpfeastol, constraints/nonlinear/propinenforce, constraints/nonlinear/weakcutthreshold, constraints/nonlinear/strongcutmaxcoef, constraints/nonlinear/strongcutefficacy, constraints/nonlinear/forcestrongcut, constraints/nonlinear/enfoauxviolfactor, constraints/nonlinear/weakcutminviolfactor
2234- constraints/nonlinear/branching/aux, constraints/nonlinear/branching/external, constraints/nonlinear/branching/highviolfactor, constraints/nonlinear/branching/highscorefactor, constraints/nonlinear/branching/violweight, constraints/nonlinear/branching/dualweight, constraints/nonlinear/branching/pscostweight, constraints/nonlinear/branching/domainweight, constraints/nonlinear/branching/vartypeweight, constraints/nonlinear/branching/scoreagg, constraints/nonlinear/branching/violsplit, constraints/nonlinear/branching/pscostreliable
2237- nlhdlr/convex/enabled, nlhdlr/convex/detectsum, nlhdlr/convex/extendedform, nlhdlr/convex/cvxquadratic, nlhdlr/convex/cvxsignomial, nlhdlr/convex/cvxprodcomp, nlhdlr/convex/handletrivial
2238- nlhdlr/concave/enabled, nlhdlr/concave/detectsum, nlhdlr/concave/cvxquadratic, nlhdlr/concave/cvxsignomial, nlhdlr/concave/cvxprodcomp, nlhdlr/concave/handletrivial
2239- nlhdlr/bilinear/enabled, nlhdlr/bilinear/useinteval, nlhdlr/bilinear/usereverseprop, nlhdlr/bilinear/maxseparoundsroot, nlhdlr/bilinear/maxseparounds, nlhdlr/bilinear/maxsepadepth
2240- nlhdlr/perspective/enabled, nlhdlr/perspective/maxproprounds, nlhdlr/perspective/mindomreduction, nlhdlr/perspective/minviolprobing, nlhdlr/perspective/probingonlyinsepa, nlhdlr/perspective/probingfreq, nlhdlr/perspective/convexonly, nlhdlr/perspective/tightenbounds, nlhdlr/perspective/adjrefpoint
2241- nlhdlr/quadratic/enabled, nlhdlr/quadratic/useintersectioncuts, nlhdlr/quadratic/usestrengthening, nlhdlr/quadratic/useboundsasrays, nlhdlr/quadratic/ncutslimit, nlhdlr/quadratic/ncutslimitroot, nlhdlr/quadratic/maxrank, nlhdlr/quadratic/mincutviolation, nlhdlr/quadratic/minviolation, nlhdlr/quadratic/atwhichnodes, nlhdlr/quadratic/nstrengthlimit, nlhdlr/quadratic/ignorebadrayrestriction, nlhdlr/quadratic/ignorehighre
2246- separating/minor/priority, separating/minor/freq, separating/minor/maxbounddist, separating/minor/delay, separating/minor/expbackoff, separating/minor/maxminorsconst, separating/minor/maxminorsfac, separating/minor/mincutviol, separating/minor/maxrounds, separating/minor/maxroundsroot, separating/minor/ignorepackingconss
2247- separating/rlt/priority, separating/rlt/freq, separating/rlt/maxbounddist, separating/rlt/delay, separating/rlt/expbackoff, separating/rlt/maxncuts, separating/rlt/maxunknownterms, separating/rlt/maxusedvars, separating/rlt/maxrounds, separating/rlt/maxroundsroot, separating/rlt/onlyeqrows, separating/rlt/onlycontrows, separating/rlt/onlyoriginal, separating/rlt/useinsubscip, separating/rlt/useprojection, separating/rlt/detecthidden, separating/rlt/hiddenrlt, separating/rlt/addtopool, separating/rlt/goodscore, separating/rlt/badscore, separating/rlt/objparalweight, separating/rlt/efficacyweight, separating/rlt/dircutoffdistweight, separating/rlt/goodmaxparall, separating/rlt/maxparall
2248- separating/interminor/usestrengthening, separating/interminor/usebounds, separating/interminor/mincutviol, separating/interminor/maxrounds, separating/interminor/maxroundsroot
2249- table/cons_nonlinear/active, table/nlhdlr/active, table/exprhdlr/active, table/nlpi/active, table/nlhdlr_bilinear/active, table/nlhdlr_quadratic/active
2251- benders/default/maxslackvarcoef to specify maximal coefficient for slack variables; if exceeded, slack variables are fixed to zero
2253- nlpi/ipopt/print_level, nlpi/ipopt/hsllib, nlpi/ipopt/pardisolib, nlpi/ipopt/linear_solver, nlpi/ipopt/linear_system_scaling, nlpi/ipopt/nlp_scaling_method, nlpi/ipopt/mu_strategy, nlpi/ipopt/hessian_approximation
2259- new parameters "branching/inference/conflictprio" and "branching/inference/cutoffprio" that allow
2261- new parameters "heuristics/alns/nodesquotmin", "heuristics/alns/maxcallssamesol" and "heuristics/alns/initduringroot"
2263- new parameter "benders/default/benderscut/optimality/mir" to control whether mixed-integer rounding procedure is applied to Benders optimality cuts
2265- cutselection/hybrid/dircutoffdistweight, cutselection/hybrid/efficacyweight, cutselection/hybrid/intsupportweight, cutselection/hybrid/objparalweight, cutselection/hybrid/priority
2266- new parameter "decomposition/disablemeasures" to disable expensive measures in SCIPcomputeDecompStats()
2267- new parameter "presolving/milp/probfilename" filename to write the problem to a file before MILP presolving starts
2278- removed structs SCIP_QUADELEM, SCIP_EXPRDATA_QUADRATIC, SCIP_EXPRDATA_MONOMIAL, SCIP_EXPRDATA_POLYNOMIAL, SCIP_EXPRDATA_USER
2293- enum SCIP_NLPPARAM has been changed to a struct that holds values of parameters for an NLP solve
2295- added SCIP_NLPTERMSTAT_INTERRUPT to SCIP_NLPTERMSTAT enum; returned from NLP solver if SCIPinterruptSolve() has been called
2417- improved the likelihood that a solution that satisfies the nonlinear constraints in the transformed (presolved) problem is also feasible for the original problem
2419- fixed that setting of feasiblity and optimiality tolerance for NLP relaxation was overwritten with defaults when solving NLP
2420- fixed variance computation in t-value computation in hypothesis testing of reliability branching
2422- do not transfer dual reductions to main SCIP in sepa_rapidlearning if strong dual reductions are forbidden
2423- fixed a bug in cons_setppc.c:removeDoubleAndSingletonsAndPerformDualpresolve() which led to wrong variable aggregations
2424- added missing redundancy check to coefficient tightening routine in cons_varbound that led to wrong variable locks
2427- presol_milp.c handles variable fixings, suggested by PaPILO, more carefully to cover all cases that can appear
2428- fixed several reproducability bugs that led to different solving paths across multiple runs with one SCIP environment
2429- fixed check of limits/absgap, which was incorrectly applied to the scaled objective of the transformed problem
2434- in LP, use absolute instead of relative tolerances to check whether solutions from LP solver are primal feasible
2435- when a restart occurs, SCIP now asserts (during EXITSOLVE) that all relaxation-only variables are unlocked and
2439- Recompute activity of rows when checking LP solutions instead of trusting the value given by the LP solver
2441- Parameters are not reset to their default values before activating an emphasis setting; this now allows to combine
2443- If a lazy bound is set to a value that is tighter than the current global bound, then the global bound is now tightened accordingly.
2455- added function SCIPwithDebugSol() to determine whether SCIP was compiled with WITH_DEBUG_SOLUTION
2457- New function SCIPcreateConsBounddisjunctionRedundant() and SCIPcreateConsBasicBounddisjunctionRedundant() that allow
2463 this enables warnings about mismatches between format string and variadic function arguments if using GCC.
2476- Make find_package more verbose and require packages to be found. Now enabled packages that are not found result in an error.
2481- Fixed numerical bug by creating and checking the empty solution when problem vanishes in presolving.
2489- Safeguard some API functions for querying solving statistics against segmentation faults after SCIPpresolve()
2491- Make sure that logicor constraints are enforced/separated if genlogicor is true in cons_indicator.
2497- Avoid allowing the upgrade of linear constraints corresponding to indicators in propagation of nodes.
2499- Limit vbounds propagator to one sweep through all bounds per call in order to avoid an infinite loop.
2500- Fixed mismatches between formatter strings and arguments in calls to SCIP message printing functions.
2505- To avoid performance variablity during reoptimization, the active constraints are now stored in the same order as in the
2508- The original order of variables is now only restored after presolve if `randomization/permutevars` is set to FALSE.
2517- Indicator constraints now write the name of the linear constraint in CIP format. This avoids a complicated
2519- The objective scale and offset are now taken into account when reading/writing problems in lp/mps/fzn/pip format.
2539- new function SCIPcolGetVarProbindex() for accessing the probindex of a variable corresponding to a column
2548- Fixed aggregation heuristic in sepa_aggregation.c to not use local rows when that is requested nor modifiable rows
2560- Fixed bug in domain propagation for SOC constraints with negative coefficient for variable on right-hand-side.
2583- Add SANITZERFLAGS (only OPT=dbg) to LDFLAGS also if SHARED=true (and rename SANITZERFLAGS to SANITIZERFLAGS)
2594- Fixed problems for linking optimized code with debug library of SCIP (and vice versa) by moving debug-only members
2609- Using the parameter "propagating/symmetry/recomputerestart" one can now decide to recompute symmetries after a
2610 restart or not. Previously one could just turn off symmetry computation after a restart. If orbital fixing
2611 has found a reduction before the restart occured, symmetries have to be updated to ensure correctness.
2612 To this end, the user can decide via "propagating/symmetry/disableofrestart" whether orbital fixing is disabled or
2615- extended relaxators statistics in solve statistics about information on number of cutoffs, improved bounds, etc.
2617- extends SMPS file reader for the stochastic information, the sto files, to read a lower bound for the discrete
2618 scenarios. The lower bound is used when creating the auxiliary variables for Benders' decomposition.
2620- extended Benders framework to solve NLPs and generate optimality and feasibility cuts from their solution
2623- extended Benders framework to create copies of Benders decompositions that can be used in a multithreading environment
2625- additional functionality has been added to enable the transfer of Benders' decomposition cuts between different SCIP
2630- Trust region, a new LNS heuristic, has been added to SCIP as both a standalone primal heuristic heur_trustregion.c
2631 and as a neighborhood inside of Adaptive Large Neighborhood Search (heur_alns.c). This heuristic is designed to improve the
2632 heuristic performance of the Benders' decomposition algorithm. It builds upon the successful trust region approaches
2635- Modularity of symmetry handling has been increased. It is now possible to use orbitopes (i.e., polyhedral symmetry
2638- cut strengthening enabled within the Benders' decomposition framework. This uses a mix of the Improved Magnanti-Wong
2640 "benders/<bendersname>/cutstrengthenenabled" to TRUE. The parameters "cutstrengthenmult", "noimprovelimit" and
2641 "corepointperturb" control the behavior of the cut strengthening method. Additionally, the parameter
2642 "cutstrengthenintpoint" allows the user to specify the solution that is used to initialize the core point. The options
2643 are the first LP solution, the first integer feasible solution, a relative interior point, a solution vector of all
2644 ones and a solution vector of all zeros. Also, the core point can be reinitialized after each update to the incumbent
2647- added option to adjust weights of different scores in relpscost (hybrid) branching rule based on degeneracy information
2650- added new SCIP_DECOMP* object to store user decompositions. The user can specify one or several decompositions by assigning variable
2651 and/or constraint labels either through the API or by reading a file in DEC format (which is one of the formats that GCG writes).
2652 This format specifies constraint labels, variable labels are inferred from that. The decomposition is transformed after presolving.
2653- statistics regarding the number of blocks, the largest and smallest blocks, the border, and the constraint graph are printed for the original decomposition,
2659 1. by selecting a block of variables that maximizes the potential, and randomly selecting a start variable for the neighborhood and/or
2660 2. by selecting an interval of consecutive blocks as neighborhood, until fixing rate is reached. In this case, no variable is randomly selected.
2664- new primal heuristic Adaptive Diving, which registers all publicly available dive sets from other diving heuristics.
2665 At each call, it selects one of the available dive sets based on the user's score type choice (heuristics/adaptivediving/scoretype).
2666 During the solution process, the heuristics learns online which divesets reach the best score, and executes them more frequently.
2667 The statistic output for Diving heuristics has been extended to incorporate the statistics of each dive set within Adaptive diving.
2669- Added new penalty alternating direction method (PADM) primal heuristic that splits the problem into several sub-SCIPs
2670 according to a user-provided decomposition. The sub-SCIPs are solved on an alternating basis until a feasible solution of
2673- Symmetry handling constraints (cons_orbisack, cons_orbitope, cons_symresack) now have an additional parameter to encode
2674 whether they are model constraints, i.e., define the problem, or whether they are only present to handle symmetries.
2676- The symmetry code has been completely restructured. The presolvers presol_symbreak and presol_symmetry as well as the propagator
2677 prop_orbitalfixing have been merged into the single propagator prop_symmetry to avoid storing the same information
2678 multiple times. This propagator is now responsible for adding symmetry handling constraints as well as activating orbital
2679 fixing. Moreover, the new file symmetry.c contains general functions for symmetry computations like orbit computations.
2681- Variables can now be marked as "relaxation-only". This flag should be used to introduce new variables that are required
2682 to define a relaxation, but that are not part of any checked constraints. Essentially, these variables should only be used
2683 in the current SCIP solve and disregarded after a restart or in SCIP copies. Hence, these variables are not copied by SCIPcopy and
2684 SCIPgetVarCopy, they are currently not used in conflict constraints, and cuts involving them are not upgraded to linear constraints.
2689- Expressions of form abs(x)^p * x in a nonlinear constraint are now sometimes recognized and handled by abspower constraints.
2691- If polyhedral symmetry handling methods are used (cons_orbisack, cons_orbitope, cons_symresack), it is now possible to
2696 do not require bounds for variables that have a zero entry in the computed eigenvectors in the non-simple upgrade
2700- It is no longer necessary to provide a SCIP pointer for the subproblem in SCIPaddBendersSubproblem if custom solving
2701 methods are defined. A NULL pointer can be supplied to SCIPaddBendersSubproblem. In this case, no internal Benders'
2704- Using the parameter "constraints/symresack/checkmonotonicity" one can now decide to upgrade to packing/partitioning
2707- New branching rule `vanillafullstrong`, mostly for scientific purpose, with the following features:
2709 2) idempotent (optional): leave SCIP, as much as possible, in the same state before / after the strong branching calls
2711 3) donotbranch (optional): do no perform branching. So that the brancher can be called as an oracle only
2714 5) collectscores (optional): store the candidate scores from the last call, which can then be retrieved by calling SCIPgetVanillafullstrongData();
2718- If a reference value (misc/referencevalue) is given, the primal-reference and reference-dual integrals are calculated automatically and printed within the SCIP statistics.
2720- Locally valid cuts / rows are now considered for dual proof analysis when `conflict/uselocalrows` is set to TRUE.
2722- Linking variables in the linking constraint handler (cons_linking.{ch}) can now be integer or continuous. The coefficients of the binary variables are therefore now stored as SCIP_Real.
2724- To save memory, it is now possible to remove all variables from the internal symmetry data structures that are
2727- Allow to filter first variables from orbits and transfer pseudo cost information to variables in orbit
2729- Add integration of external MILP presolve library as a SCIP presolver plugin that runs on MILP problems
2731- Parallelisation can be used when applying Benders' decomposition. There are two different forms of parallelisation
2732 available. The first is applying Benders' decomposition within a parallel branch-and-bound. This is achieved through
2733 the integration with the UG framework. The second is the use of shared memory parallelisation for solving the Benders'
2736- The Benders' decomposition framework can handle MINLPs. If a convex relaxation of the MINLP exists, then this is
2739 - Modification to benderscut_opt and benderscut_feas to enable the generation of cuts from convex NLPs.
2740 - Addition of benderscut_feasalt to generate feasibility cuts from an alternative subproblem that minimises the
2744- Adds a feasibility phase to the Benders' decomposition subproblem solving methods. The feasibility phase adds slack
2745 variables to each of the constraints to ensure feasibility of the subproblem. A large coefficient is given to these
2746 slack variables in the objective function to penalise constraint violations. The coefficients are progressively
2749- Improved convexity check for Benders' decomposition subproblems. The constraints of the subproblem are now checked for
2750 convexity in the initialisation of the Benders' decomposition algorithm. This enables the solving of convex NLPs as
2753- Benders' decomposition can be applied using decomposition supplied in the DEC format. To apply Benders' decomposition
2756- new event handler event_estim.c/h that approximates search tree completion and estimates tree size
2757 to trigger restarts; many approximations of search tree completion and estimation, including WBE, SSG, and tree profile method
2758- new display column that reports approx. search tree completion during the search, and an overview in the statistics table
2759- added resources (script, tutorial, test data) to adapt tree size estimation to user instances.
2761- Orbital Fixing uses a list of variables that have been fixed globally since the computation of symmetries to filter
2764- A new presolver "dualsparsify" was added. It tries to combine columns (i.e. variables) to cancel nonzero coefficients in the constraint matrix.
2768- To be able to calculate better bounds for the dual variables, the presolver "dualinfer" was extended by the ability to perform convex combinations of continuous columns.
2779- Improved branching point selection when branching on externals branching candidates. Instead of using exactly the
2782- Matrix presolvers that do not work on incomplete matrices now skip matrix creation if unsupported constraint types are detected.
2784- consLockBenders callback implemented to add down locks on the Benders' decomposition auxiliary variables and
2785 up and down locks per subproblem for all master problem variables. This allows the use of presolving and propagation
2801- restrict the number of the clique table nonzeros relative to the number of problem nonzeros, which could be a performance bottleneck.
2803- variable fixings of LP face heuristic are now computed earlier; subproblem creation is skipped if not enough variables are fixed.
2805- Improved domcol presolver to not require a complete representation of all constraints in the matrix
2807- performance improvement of adaptive large neighborhood search heuristic on merely continuous problems. The heuristic
2808 stops if presolving in the sub-SCIP fixes less than 50 % of the current target fixing rate over all variables
2811- reduce memory usage in symmetry detection by a staggered allocation with decreasing overhead for larger instances
2813- improved full orbitope propagation using a static implementation or a dynamic reordering of orbitope rows by a global rank function
2817- enable an in-tree restart if after a reasonable initialization, the estimated size of the remaining tree is large.
2830- new optional callback `SCIP_DECL_DIVESETAVAILABLE` to check preconditions for this dive set, e.g., if an incumbent solution is available,
2831 which is passed as new argument to SCIPcreateDiveset(). SCIPcreateDiveset() has another new parameter "ispublic".
2833- new callback `SCIP_DECL_CONSHDLRCOPY` and `SCIP_DECL_CONSCOPY` in cons_orbisack and cons_symresack
2836 so that statistics are not updated during the call. Likewise, new `updatecol` and `updatestat` arguments to SCIPcolGetStrongbranch().
2838- callback `SCIP_DECL_CONSHDLRENFOLP` can now also return SCIP_SOLVELP as *result, which indicates to the SCIP core that the LP relaxation
2839 should be solved again because the primal feasibility tolerance of the LP has been tightened (using SCIPsetLPFeastol())
2841- extension of SCIP_PQUEUE by a new callback SCIP_DECL_PQUEUEELEMCHGPOS to catch swaps as well as functionality to delete arbitrary elements from the priority queue.
2852 + removed function SCIPseparateCoversOrbisack() in cons_orbisack.h since the orbitope constraint
2856 transposed permutations matrix as well as the (independent symmetry) components of a permutation group now.
2857 + arguments of functions SCIPcreateConsOrbisack(), SCIPcreateConsBasicOrbisack(), SCIPcreateConsOrbitope(),
2858 SCIPcreateConsBasicOrbitope(), SCIPcreateConsSymresack(), SCIPcreateConsBasicSymresack(), and SCIPcreateSymbreakCons() extended
2860 + the function SCIPgetSymmetry() no longer accepts the parameter recompute, but has parameter permvarmap as new input
2861 + removed SCIPgetPermvarsObjSymmetry(), SCIPsetSymmetryComponentblocked(), SCIPgetSymmetryComponentblocked(),
2862 SCIPgetSyminfoGloballyFixedVars(), SCIPcomputeGroupOrbitsSymbreak, SCIPincludePresolSymmetry(),SCIPincludePresolSymbreak(),
2864 + add function SCIPcomputeOrbitsComponentsSym() to compute orbits without filtering permutations and indices of orbits for each variable
2865- SCIPallowObjProp() and SCIPallowDualReds() are deprecated and replaced by SCIPallowWeakDualReds() and SCIPallowStrongDualReds(), respectively
2867 + changed SCIPstoreBenderscutCut() in scip_benders.c to SCIPstoreBendersCut(). Where this function used to take a
2869 + the functions SCIPsolveBendersSubproblem() no longer accepts the parameter type. The type is not a necessary
2871 + arguments of functions SCIPbendersSolveSubproblemLP(), SCIPbendersSolveSubproblemCIP(), and SCIPbendersOnlyCheckConvexRelax() changed
2877- new argument "onlyifcomplete" in SCIPmatrixCreate() to skip matrix creation right after detecting unsupported constraint types
2878 and new arguments to count statistics when doing a clean-up of inactive variables in the constraints before building the matrix
2880- new argument "threadsafe" in SCIPcopy(), SCIPcopyConsCompression(), SCIPcopyOrig(), SCIPcopyOrigConsCompression and
2881 SCIPcopyBenders(). This argument must only be set to TRUE if the source and target SCIP instances are to be solved in
2885- functions SCIPclearRelaxSolVals(), SCIPsetRelaxSolVal(), SCIPsetRelaxSolVals(), SCIPsetRelaxSolValsSol(), and SCIPmarkRelaxSolValid()
2886 receive an additional argument "relax" to store the relaxation handler as creator of the relaxation solution.
2889 - SCIProwGetOriginCons() now returns a SCIP_CONS* instead of a SCIP_CONSHDLR*, use SCIProwGetOriginConshdlr() for the previous behavior
2890 - SCIPcreateRowCons() and SCIPcreateEmptyRowCons() now expect a SCIP_CONS* instead of a SCIP_CONSHDLR*,
2891 use SCIPcreateRowConshdlr() and SCIPcreateEmptyRowConshdlr(), respectively, for the previous behavior
2892 - deprecated SCIPlpfeastol() and SCIPchgLpfeastol(), use SCIPgetLPFeastol() and SCIPsetLPFeastol()
2894- new parameter "divecontext" for every function that queries statistics for a diveset. The context can be used to distinguish between the dive set
2896- new parameters "divecontext" and "iterlim" to SCIPperformGenericDivingAlgorithm() to control in which context (single,adaptive) statistics are updated.
2898- SCIPcopyVars, SCIPcopy, SCIPcopyConsCompression, and SCIPgetVarCopy do not copy variables that are marked as relaxation-only,
2899 thus it cannot be assumed anymore that each active variable from the master SCIP also has a counterpart in the copy.
2900 SCIPcopy, SCIPcopyConsCompression, and SCIPcopyConss can now return *valid=TRUE if some non-checked and non-enforced constraints were not copied, e.g.,
2901 because they involved relaxation-only variables. Thus, a copy is already regarded as valid if all checked or enforced constraints were copied successfully.
2904 - changed type of vals argument from int* to SCIP_Real* in SCIPcreateConsLinking() and SCIPcreateConsBasicLinking()
2909- SCIPbendersCheckSubproblemOptimality() now returns a boolean indicating whether the subproblem is optimal or not.
2910 Previously this result was returned through a parameter. The change was required to facilitate the integration with
2913- deleted SCIPcombineTwoInt(), SCIPcombineThreeInt(), SCIPcombineFourInt(); use the appropriate SCIPhashTwo(), ..., SCIPhashSeven() function instead
2917- SCIPcreateNlpiProb takes a hashmap to store the map between the nlrows and the index in the nlrow array.
2921- SCIPallowWeakDualReds() and SCIPallowStrongDualReds() replace the deprecated SCIPallowObjProp() and SCIPallowDualReds(), respectively
2922- functions have been added to facilitate the transfer of Benders' decomposition cuts between solvers in UG. These include
2926- new functions SCIPsolGetType(), SCIPsolGetRelax(), SCIPsolSetRelax(), SCIPsolSetLPRelaxation(), SCIPsolSetStrongbranch(),
2927 SCIPsolSetPseudo to set or query the new type attribute of a primal solution. The type attribute gives information
2929 by the LP relaxation, by strong branching, by the current pseudo solution, or by a primal heuristic.
2930 The meaning of the argument 'heur' in all creation methods for primal solutions such as SCIPcreateSol() stays unchanged.
2932- new API functions SCIPsetCommonSubscipParams(), SCIPtranslateSubSol(), and SCIPtranslateSubSols() shared by several Large Neighborhood Search heuristics.
2933- new API function SCIPgetLPDualDegeneracy() to get two measures for the dual degeneracy of the current LP
2934- new API functions SCIPdivesetIsAvailable() to check preconditions of a dive set and SCIPdivesetIsPublic() to check if the dive set can be used
2936- new API functions SCIPcomputeOrbitsSym(), SCIPcomputeOrbitsFilterSym(), SCIPgetPropertiesPerm(), SCIPdetermineBinvarAffectedSym(),
2937 SCIPdetermineNVarsAffectedSym(), SCIPcomputeComponentsSym(), and SCIPextendSubOrbitope(), SCIPgenerateOrbitopeVarsMatrix() for symmetry computations
2938- new API functions SCIPvarIsRelaxationOnly() and SCIPvarMarkRelaxationOnly() to query and set, resp., whether a variable is marked as relaxation-only
2939- new API functions SCIPconshdlrGetNUpdateConss() and SCIPconshdlrGetUpdateConss(), for expert users only
2941- new API functions SCIPeventGetOldtype() and SCIPeventGetNewtype() for the new event when changing the variable type
2942- new API function SCIPisConvexConsQuadratic() to check whether a quadratic constraint is convex when a given set of variables would be fixed
2943- new API functions SCIPgetLPFeastol(), SCIPsetLPFeastol(), and SCIPresetLPFeastol() to get, set, and reset (to the default), respectively, the primal
2945- new API functions SCIPcleanupConss{Linear,Varbound,Setppc,Logicor,Knapsack}() to clean up inactive variables from those types of linear constraints
2946- new API function SCIPsetBendersSubproblemComp() used to add a custom comparison method for ordering the Benders'
2950- added SCIPhashThree(), SCIPhashFive(), SCIPhashSix(), and SCIPhashSeven() that complement SCIPhashTwo(), SCIPhashFour() to combine 32bit integers to
2952- new API function SCIPgenerateAndApplyBendersOptCut is used to generate a Benders' optimality cut using the dual
2953 solutions. This function can be supplied vectors for the primal and dual solution for generating an optimality cut.
2954 This avoids the need for a SCIP instance to solve the Benders' decomposition subproblem and generating cuts.
2956- new API functions SCIPconsNonlinearGetRhs, SCIPconsNonlinearGetLhs and SCIPconsNonlinearAddLinearCoef for getting the
2957 RHS and LHS from a nonlinear-type constraint and adding a linear coefficient to the constraint.
2958- new API function SCIPbendersSolSlackVarsActive for checking whether any slack variables from the feasibility phase are
2960- new API functions SCIPbendersSetSubproblemType and SCIPbendersGetSubproblemType sets and gets the subproblem type.
2966- new API functions SCIPbendersSetSubproblemIsNonlinear() and SCIPbendersSubproblemIsNonlinear() for setting and
2967 identifying whether the Benders' decomposition subproblems contain nonlinear constraints. Similarly, the functions
2968 SCIPbendersSetMasterIsNonlinear() and SCIPbendersMasterIsNonlinear() sets and identifies whether the Benders'
2970- new API function SCIPapplyBendersDecomposition for applying Benders' decomposition given a decomposition in the DEC
2972- new API function SCIPwasNodeLastBranchParent to query if a node has been the parent of the most recent branching in the tree
2973- new API functions SCIPtreemodelInit(), SCIPtreemodelFree(), SCIPtreemodelIsEnabled(), SCIPtreemodelSelectCandidate() related to the new
2974 treemodel way of comparing branching candidates. These functions are only currently used for reliability pscost branching, but they can be used
2977- new API functions SCIPisOrbitalfixingEnabled() and SCIPgetSymmetryNGenerators() to check whether orbital fixing is
2983- new event type SCIP_EVENTTYPE_NODEDELETE to react on nodes that are about to be deleted from the tree
2987- renamed parameter "propagating/orbitalfixing/enableafterrestart" to ".../symmetry/recomputerestart"
2990- changed default values of propagation (new value: 1, old value: 5) and separation frequency (new value: -1, old value: 5) in cons_orbitope.c
2991- all primal heuristics that use sub-SCIPs are disabled within the heuristics fast emphasis setting
2993- changed default value of "presolving/symbreak/detectorbitopes" (new value: TRUE, old value: FALSE)
3011- changed default value of "heuristics/conflictdiving/lockweight" (old: 1.0, new: 0.75)
3012- replaced parameter "numerics/lpfeastol" by "numerics/lpfeastolfactor" to specify which factor should be applied to the SCIP feasibility
3024- the possibility to define the Benders' decomposition auxiliary variables as implicit integer is provided. This
3026- added parameter benders/<bendersname>/cutcheck to enable the generation of Benders' decomposition cuts during solution
3028- constraints/orbitope/usedynamicprop: the possibility to propagate orbitope constraints by reordering the rows based on the
3031- new parameters heuristics/shiftandpropagate/minfixingratelp and heuristics/locks/minfixingratelp to stop the
3032 heuristics after propagating integer fixings if no sufficient fixing of the all variables (including continuous)
3033 could be achieved. These parameters help to avoid solving LP's that are comparable in hardness to the main root LP.
3035- Added parameters branching/midpull and branching/midpullreldomtrig to control by how much to move
3036 the branching point for an external branching candidate closer to the middle of the candidates domain. The
3037 default of 0.75 and 0.5, respectively, uses a point that is 75*alpha% closer to the middle of the domain, where
3038 alpha is the relative width of the candidates domain (width of local domain divided by width of global domain),
3039 if the latter is below 0.5, and alpha=1.0 otherwise. That is, with the default settings, a branching point is
3040 chosen closer to the middle of the candidates domain if the variables local domain is still similar to its
3041 global domain, but is chosen closer to the LP solution if the local domain is much smaller than the global
3044- Added parameter lp/minmarkowitz to set the Markowitz stability threshold (range 0.0001 to 0.9999).
3047- Added parameters benders/<bendersname>/lnsmaxcalls and benders/<bendersname>/lnsmaxcallsroot to the Benders'
3048 decomposition core. These parameters limit the number of Benders' decomposition subproblem checks, for the full
3049 branch-and-bound tree and root node respective, when solving the auxiliary problem of LNS hueristics. These
3052- Added parameter cons/linear/maxmultaggrquot to limit the maximum coefficient dynamism of an equation on which
3055- new global parameter heuristics/useuctsubscip that affects all LNS heuristics using common sub-SCIP parameters
3059- new parameter separation/rapidlearning/checkexec to check whether rapid learning is allowed to run locally
3060- new parameters separation/rapidlearning/check{degeneracy,dualbound,leaves,nsols,obj} to enable checking the respective feature for local rapid learning
3061- new parameter separation/rapidlearning/maxcalls to limit the number of rapid learning executions
3062- new parameter separation/rapidlearning/nwaitingnodes to set the number of waiting nodes before the dual bound is checked
3063- new parameter separation/rapidlearning/mindegeneracy to set the minimal threshold of degenerate basic-variables
3064- new parameters separation/rapidlearning/minvarconsratio to set the minimal ratio of unfixed variables in relation to basis size
3067 - constraints/benderslp/depthfreq: after the maxdepth is reached, then the two-phase method will only be called at
3069 - constraints/benderslp/stalllimit: after the maxdepth is reached, if there has been no improvement in the dual bound
3070 for stalllimit number of nodes, then the two-phase method is executed for the next fractional LP solution that is
3072 - constraints/benderslp/iterlimit: after the root node, only iterlimit fractional LP solutions are used at each node
3092- new parameter for enabling shared memory parallelisation for solving Benders' decomposition subproblems. The parameter
3093 benders/<bendersname>/numthreads sets the number of threads used for parallel subproblem solving.
3096 - benders/<bendersname>/execfeasphase: enables the feasibility phase for solving the Benders' decomposition
3098 - benders/<bendersname>/slackvarcoef: the initial coefficient of the slack variable for the feasibility phase
3099 - benders/<bendersname>/checkconsconvexity: should the constraints be checked for convexity. This can be set to FALSE
3102- new parameter presolving/clqtablefac (default value 2.0) as limit on number of entries in clique table relative to number of problem nonzeros
3104- new parameter conflict/uselocalrows (default: TRUE) to incorporate locally valid cuts / rows for dual proof analysis
3106- new return code SCIP_NOTIMPLEMENTED for functions, e.g., in the LPI that have not been implemented (yet)
3108- new parameter separating/cgmip/genprimalsols that allows to generate initial primal solutions from Gomory cuts
3135- new emphasis setting emphasis/numerics to increase numerical stability of (mostly) presolving operations such as (multi-)aggregations at the cost of performance.
3138 - new parameter branching/treemodel/enable to enable the treemodel in reliability pscost branching and possible
3140 - new parameter branching/treemodel/highrule to specify which branching rule to use when treemodel thinks the node
3142 - new parameter branching/treemodel/lowrule to specify which branching rule to use when treemodel thinks the node
3144 - new parameter branching/treemodel/height to specify at which (estimated) height a node is high or low in the tree.
3145 - new parameter branching/treemodel/filterhigh to specify whether to filter dominated candidates in nodes which are
3147 - new parameter branching/treemodel/filterlow to specify whether to filter dominated candidates in nodes which are
3149 - new parameter branching/treemodel/maxfpiter to specify the maximum number of fixed-point iterations to use when
3151 - new parameter branching/treemodel/maxsvtsheight to specify the maximum height to compute the SVTS score exactly
3153 - new parameter branching/treemodel/fallbackinf defines the fallback strategy to use when the tree size estimates
3155 - new parameter branching/treemodel/fallbacknoprim defines the fallback strategy to use when no primal bound is known
3157 - new parameter branching/treemodel/smallpscost defines the value under which pscosts are considered too small to be
3160- new parameters for symmetry handling constraint handlers to enforce that also non-model constraint are copied:
3170- extended SCIPpqueueCreate() by additional callback argument SCIP_DECL_PQUEUEELEMCHGPOS to catch position changes
3171- new methods SCIPpqueueDelPos() to delete elements at a specific position in the priority queue and SCIPpqueueFind() to
3172 find a specific position. It is recommended to track position changes using the new callback SCIP_DECL_PQUEUEELEMCHGPOS.
3173 In contrast, using SCIPpqueueFind() can be slow because it needs to compare the element it searches for
3178- The default value for DFLAGS in the non-cmake buildsystem has changed from -MM to -MMD. This will break the
3179 generation of depend.* files if that was done by a compiler call that relied on -MM. The new preferred way
3180 to handle compilation dependencies is to additionally use $(DFLAGS) when compiling the object files (.o) and
3181 to include the generated .d files in the Makefile, see also "Build system / Makefile" below.
3201- Removed static object compilation dependency files (depend.*). If using a GCC compatible compiler, then dependency
3202 files are now dynamically created and updated during build. The new dependency files (*.d) reside next to each object
3205- unify compiler switches for Intel compiler and avoid problem with doubly defined object together with CPLEX
3212- fix wrongly skipping strong branching call and using old information if LP was solved with 0 iterations
3215- small fix in cons_varbound.c to skip changing bounds of multi-aggregated variables in separation callback
3217- fixed rejecting minimal boundchange that changed sign of variable, even though SCIPisLb/UbBetter approved it
3218- fixed issue in generateCutNonConvex() which is triggered when adding quadratic constraints during the solving process
3221- fixed bug when freeing the transformed problem via interactive shell if reoptimization is enabled
3227- tighten sides of linear constraints before trying to upgrade them to more specialized constraints (knapsack, logic-or etc.) when calling SCIPupgradeConsLinear()
3230- fixed an issue in heur_completesol which is triggered during bound widening of unbounded continuous variables
3239- fixed update of watchedvars in logicor constraint handler in case of a restart during the tree
3243- fixed numerical issue related to very large greatest common dividers in linear constraint handler
3249- fix issue in printing solutions for variables that have been added by the dual sparsify presolver
3254- fixed bug in cons_knapsack where weight of clique was not reset after an infeasibility was detected
3255- fixed bug in presol_inttobinary which did not take into account that the aggregation could be rejected due to numerics
3256- fixed bug in debug solution mechanism in connection to variables created by presol_inttobinary
3257- fixed wrong indexing while undoing the implications from a redundant variable in SCIPshrinkDisjunctiveVarSet
3258- redundancy checks in SCIPnodeAddBoundinfer now take a possible change to an active variable into account
3264- fixed a case when activities of a linear constraint got unreliable but where still used for reductions
3278- modified display column for memory usage ("mem"), which reports the memory usage most of the time, but shows the creator name
3279 (heuristic, relaxation handler, LP relaxation, strong branching, pseudo solution) of every new incumbent solution. Together with this change,
3282- added assert that ensures that the locks of a variable have been decreased to 0 when it is freed
3284- checks in debug mode that clean buffer memory is really clean when being freed are now disabled by default
3286- prefer integral values when fixing an almost-fixed continuous variable in the trivial presolver
3287- changed the name of the variable that is added by the OSiL reader to represent the quadratic or nonlinear parts of the objective function
3288- SCIP_EXPORT is now defined as __attribute__((__visibility__("default"))) if GCC and no SCIP config header is used
3327- fixed SCIP-Jack presolving bug that could lead to wrong results for Steiner arborescence problems
3328- fixed wrong unboundedness result in case not all constraints were already in the LP and enforcement was
3333- aggregate non-artificial integer variable for XOR constraints with two binary variables and delete constraint
3340- fixed bugs that arise for multiaggregated indicator variables by disallowing multiaggregation for them
3346- fixed different behavior of SCIPisLbBetter and SCIPisUbBetter between having NDEBUG defined or not
3359- fixed behavior of SCIPfixVar() by setting infeasible pointer to TRUE if fixval lies outside variable domain
3363- fixed bug where the convexity of Benders' decomposition subproblems was checked even when users defined subproblem
3364 solving methods. Now, as per the documentation, the user must explicitly state whether the subproblem is convex
3373- message is now provided to the user to inform that automatic Benders' auxiliary variable lower bound computations are
3388- try greedy solution first before solving knapsack exactly using dynamic programming in SCIPsolveKnapsackExactly,
3411- SCIPhashmapInsertInt(), SCIPhashmapSetImageInt(), and SCIPhashmapGetImageInt() to use integer values as images in hashmaps
3415- warn about coefficients in MPS files with absolute value larger than SCIP's value for infinity
3439- fixed handling of unbounded LPs in SCIP and in several LPIs; added heuristic method to guess solution
3443- fixed recognition of variable with only one lock in cons_bivariate, cons_quadratic, and cons_nonlinear
3444- fixed update of constraint violations in solution repair in cons_bivariate, cons_quadratic, and cons_nonlinear
3445- print error message and terminate if matrix entries of a column are not consecutive in mps format
3446- fixed incorrect handling of fixed variables when transfer of cuts from LNS heuristic for Benders' decomposition
3447- fix returning local infeasible status by Ipopt interface if Ipopt finds problem locally infeasible
3448- skip attempt to apply fixings in linear constraint handler during solving stage as LP rows cannot change anymore
3450- fix issue with nodes without domain changes if we ran into solution limit in prop_orbitalfixing
3451- fixed unresolved reference to CppAD's microsoft_timer() function on builds with MS/Intel compilers on Windows
3452- ignore implications added through SCIPaddVarImplication() that are redundant to global bounds also in the
3453 special case of an implication between two binary variables; also, use implications instead of cliques in the case
3458- fixed the upgrade routine to XOR constraints: aggregate integer variable if its coefficient has the wrong sign
3464- fixed possible integer overflow, which led to wrong conclusion of infeasibility, in energetic reasoning of cons_cumulative.c
3477- new diving heuristic farkasdiving that dives into the direction of the pseudosolution and tries to construct Farkas-proofs
3479- restructuring of timing of symmetry computation that allows to add symmetry handling components within presolving
3481- new branching rule lookahead that evaluates potential child and grandchild nodes to determine a branching decision
3482- limits on the number of presolving rounds a presolver (maxrounds) or propagator/constraint handler (maxprerounds)
3483 participates in are now compared to the number of calls of the particular presolving method, not the number of
3485- new miscellaneous methods for constraints that have a one-row linear representation in pub_misc_linear.h
3486- a Benders' decomposition framework has been added. This framework provides the functionality for a user to solve a
3487 decomposed problem using Benders' decomposition. The framework includes classical optimality and feasibility cuts,
3501- constraint handler checking order for original solutions has been modified to check those with negative check priority
3502 that don't need constraints after all other constraint handlers and constraints have been checked
3508- new example `brachistochrone` in CallableLibrary examples collection; this example implements a discretized model to
3509 obtain the trajectory associated with the shortest time to go from point A to B for a particle under gravity only
3510- new example `circlepacking` in CallableLibrary examples collection; this example models two problems about packing
3513- new stochastic capacitated facility location example demonstrating the use of the Benders' decomposition framework
3520- added parameter locktype to `SCIP_DECL_CONSLOCK` callback to indicate the type of variable locks
3525 + removed function SCIPgetTimingSymmetry() in presol_symmetry.h since this presolver does not compute symmetries independent
3527 + additional argument `recompute` to SCIPgetGeneratorsSymmetry() to allow recomputation of symmetries
3531 + the seed of SCIPsetInitializeRandomSeed() is now an unsigned int and it returns an unsigned int
3532 + new parameter for SCIPcreateRandom() to specify whether the global random seed shift should be used in the creation of
3536 + additional arguments `preferrecent`, `decayfactor` and `avglim` to SCIPcreateBanditEpsgreedy() to choose between
3537 weights that are simple averages or higher weights for more recent observations (the previous default).
3539 + functions SCIPintervalSolveUnivariateQuadExpression(), SCIPintervalSolveUnivariateQuadExpressionPositive(), and
3540 SCIPintervalSolveUnivariateQuadExpressionPositiveAllScalar() now take an additional argument to specify already
3541 existing bounds on x, providing an entire interval ([-infinity,infinity]) gives previous behavior
3548- SCIPconsIsLockedTypePos(), SCIPconsIsLockedTypeNeg(), SCIPconsIsLockedType(), SCIPconsGetNLocksTypePos() and SCIPconsGetNLocksTypeNeg()
3554 - `heuristics/alns/stallnodefactor` as the stall nodes are now controlled directly by the target node limit within the heuristic
3555 - `presolving/symmetry/computepresolved` since this presolver does not compute symmetries independent of other components anymore
3561- `heuristics/alns/unfixtol` to specify tolerance to exceed the target fixing rate before unfixing variables, (default: 0.1)
3562- `propagating/orbitalfixing/symcomptiming` to change the timining of symmetry computation for orbital fixing
3563- `lp/alwaysgetduals` ensure that the dual solutions are always computed from the recent LP solve
3564- `display/relevantstats` indicates whether the small relevant statistics are displayed at the end of solving
3566- `presolving/symbreak/addconsstiming` to change the timining of symmetry computation for symmetry handling inequalities
3567- `propagating/orbitalfixing/enabledafterrestarts` to control whether orbital fixing is enabled after restarts
3568- `benders/∗` new submenu for Benders' decomposition related settings. This includes the settings related to the
3570- `benders/<decompname>/benderscuts/∗` submenu within each included Benders' decomposition to control the Benders'
3571 decomposition cuts. The cuts are added to each decomposition separately, so the setting are unique to each
3576- new enum `SCIP_LOCKTYPE` to distinguish between variable locks implied by model (check) constraints (`SCIP_LOCKYPE_MODEL`)
3584- separated scip.c into several smaller implementation files scip_*.c for better code overview; scip.c was removed,
3602- ensured that SCIPgetDualbound() returns global dual bound instead of the dual bound of the remaining search tree
3606- fixed handling of implicit integer variables when attempting to solve sub-MIP in nlpdiving heuristic
3607- added workaround for bug when solving certain bivariate quadratic interval equations with unbounded second variable
3609- fixed problem when writing MPS file with indicator constraints with corresponding empty linear constraints
3627- SCIP executable handles the `SIGTERM` signal. If the process receives a `SIGTERM`, SCIP terminates the solution process with a
3628 new `SCIP_STATUS` code `SCIP_STATUS_TERMINATE` and displays all relevant statistics before exiting.
3636- disable disaggregation of quadratic constraints by changing the default for `constraints/quadratic/maxdisaggrsize` to 1
3640 - increased threshold when to scale up cuts that are generated by nonlinear constraint handlers
3650- new methods SCIPtryTerminate() and SCIPterminated() in scip/interrupt.h for handling of SIGTERM signals.
3655- rename parameter `constraints/orbisack/orbisack/coverseparation` to `constraints/orbisack/coverseparation`
3660- `presolving/symmetry/displaynorbitvars` (whether we display the number of affected variables in the statistics)
3662- `separating/dircutoffdistfac` to change the weight of the directed cutoff distance in cut score calculation
3666- new `SCIP_STATUS` code `SCIP_STATUS_TERMINATE` in scip/interrupt.h for handling of SIGTERM signals.
3678- copy parameter settings to sub-SCIPs in SCIPcopyLargeNeighborhoodSearch() also when copying only LP rows
3686 - don't delete conflict constraints that were transformed into model constraints during a restart
3687 - fixed treatment of variable aggregations in knapsack constraint handler that led to wrong propagations
3692 - retrieve interior solution instead of (possibly non-existing) basic solution from mosek after using barrier without crossover in lpi_msk
3714 - add new heuristic MPEC that solves a MPEC reformulation of a mixed-binary nonlinear problem by regularized NLP reformulations
3721 - added presol_symbreak.c to detect special symmetry structures and to add symmetry handling constraints
3722 - SCIP can now automatically detect and compute symmetries in MIPs (if a graph automorphism code is linked in)
3723 - added cons_symresack.c to handle permutation symmetries in a binary programs via inequalities and propagation
3724 - added cons_orbisack.c to handle special permutation symmetries in a binary programs via inequalities and propagation
3729 - utilizing linear inequalities to compute stronger linearizations for bilinear terms; the inequalities are computed in
3733 - added API for aggregating rows for generating cuts which uses double-double arithmetic internally
3738 + new presolving plugin presol_sparsify that tries to cancel nonzero coefficients in linear constraints by adding
3744- use disjoint set to reduce peak memory usage and time to compute of clique table connectedness information
3748- removed bestrelaxsol and directly access relaxation solution instead to decrease overhead when using relaxation handlers
3750- use limit on the total number of nonzeros added to the clique table during the greedyCliqueAlgorithm of cons_knapsack.c
3751- revised disaggregation of quadratic constraints: the number of created constraints can now be controlled and the
3753- disabled reformulation of products of a binary variable with a linear term that does not solely involve binary variables
3768 - use LP solution polishing during probing and diving mode to activate it during many primal heuristics; remains disabled
3770 - improved versions of the clique and variable bound pre-root heuristics that are often able to fix many more variables
3785 - added parameter `objval` to `SCIP_DECL_NLPIGETSOLUTION` for returning the optimal objective value (can be set to `NULL`)
3788 - added parameter `allowlocal` to `SCIP_DECL_SEPAEXECLP` and `SCIP_DECL_SEPAEXECSOL` to switch generation of locally valid cuts
3794 - removed parameter `allowaddcons` from SCIPselectVarPseudoStrongBranching(), SCIPselectVarStrongBranching(), and
3798 - generalized SCIPcreateConsOrbitope() and SCIPcreateConsBasicOrbitope() method to three orbitope types (full, partitioning, packing)
3808 - replaced LP parameters `SCIP_LPPARAM_LOBJLIM` and `SCIP_LPPARAM_UOBJLIM` by `SCIP_LPPARAM_OBJLIM`
3811 - SCIPnlpStatisticsCreate() and SCIPnlpStatisticsFree() now require a pointer to blockmemory as parameter
3812 - added parameter `objval` to SCIPnlpiGetSolution() of NLPIs for returning the optimal objective value (can be set to `NULL`)
3818 - SCIPheurPassIndicator() has a new parameter which allows to pass the objective of the solution
3821 - added parameter `includeslp` to SCIPmarkRelaxSolValid(), SCIPsetRelaxSolVals() and SCIPsetRelaxSolValsSol();
3824 - replaced method SCIPgetRelaxFeastolFactor() by SCIPrelaxfeastol() and added SCIPchgRelaxfeastol()
3828 - removed SCIPvarGetCliqueComponentIdx(); the connectedness information of the clique table is now stored as a
3837- methods to display linear constraint classification types; use SCIPclassifyConstraintTypesLinear()
3840 perform breadth-first search on the variable constraint graph used by the GINS and ALNS heuristics
3842- SCIPbranchcandGetLPMaxPrio() and SCIPbranchcandGetExternMaxPrio() to query the maximal branching priority of given
3843 branching candidates; also added SCIPbranchcandGetNPrioLPCands() to access the number of LP candidates with this priority.
3844- SCIPupdateSolIntegralityViolation(), SCIPupdateSolBoundViolation(), SCIPupdateSolLPRowViolation(),
3845 SCIPupdateSolConsViolation() and SCIPupdateSolLPConsViolation() for updating numerical solution violations, as well as
3846 SCIPactivateSolViolationUpdates() and SCIPdeactivateSolViolationUpdates() for activating/deactivating violation updates globally
3849- SCIPnextafter() that wraps different nextafter methods to return the next representable value after a given value
3850- SCIPlinConsStats{Create,Free,GetTypeCount,GetSum}() and SCIPprintLinConsStats() to work with linear constraint classification through the C API
3855 - methods SCIPrandomCreate() and SCIPrandomFree() are no longer public and should be replaced by SCIPcreateRandom() and
3856 SCIPfreeRandom(), respectively (the new methods respect the global parameter `randomization/randomseedshift` automatically)
3857 - methods SCIPdigraphCreate() and SCIPdigraphCopy() are no longer public and should be replaced by SCIPcreateDigraph() and
3858 SCIPcopyDigraph(), respectively, which receive a SCIP argument and are more robust towards future interface changes
3861 - SCIPgetAllBilinearTermsQuadratic() to access data of all existing bilinear terms in quadratic constraints
3862 - SCIPaddBilinearIneqQuadratic() to propose an inequality with two variables that appear in a bilinear term
3863 - SCIPcomputeBilinEnvelope{1,2}() to compute a linearization of a bilinear term when considering at most two linear inequalities
3889- unify handling of objective limit in LPIs by replacing LPI parameters `SCIP_LPPAR_LOBJLIM` and `SCIP_LPPAR_UOBJLIM` by
3896- replaced `constraints/quadratic/disaggregate` by `constraints/quadratic/maxdisaggrsize` to bound
3898- new value 3 for parameter `lp/solutionpolishing` to enable LP polishing only during probing and diving mode
3899- parameter `conflict/useboundlp` has new values `d` (only dual solution analysis) and `b` (both, conflict and dual solution analysis)
3902 - fixed typo `heuristics/completesol/maxunkownrate` has changed to `heuristics/completesol/maxunknownrate`
3903 - replaced parameter `heuristics/{clique,vbounds}/minfixingrate` by `heuristics/{clique,vbounds}/minintfixingrate` and
3904 `heuristics/{clique,vbounds}/minmipfixingrate`, which check the fixing rate before LP solving and after sub-MIP presolve
3907 - parameter `separating/maxstallrounds` only applies to nodes in the tree (not the root node, anymore); use the new
3928- `constraints/indicator/maxsepanonviolated` to stop separation after separation of non violated cuts
3929- `constraints/orbisack/coverseparation` (whether orbisack cover inequalities should be separated)
3930- `constraints/orbisack/orbiSeparation` (whether facet defining inequalities for orbisack should be separated)
3931- `constraints/orbisack/coeffbound` (maximal value of coefficients in orbisack facet inequalities)
3932- `constraints/orbisack/checkpporbisack` (check whether orbisacks can be strengthened by packing/partitioning constraints)
3938- `constraints/quadratic/disaggrmergemethod` to change the strategy of how to merge independent blocks of quadratic constraints
3939- `constraints/quadratic/mincurvcollectbilinterms` to change the minimal curvature of constraints
3941- `constraints/quadratic/binreformbinaryonly` to disable reformulation of products of binary and non-binary variables
3942- `constraints/symresack/ppsymresack` (check whether symresacks can be strengthend by packing/partitining constraints)
3944- `expbackoff` to all separators which increases the frequency exponentially over the depth in the tree
3946- `heuristics/{clique,vbounds}/maxbacktracks` to limit the number of backtracks in the fix-and-propagate phase
3947- `heuristics/{clique,vbounds}/uselockfixings` to enable fixing of additional variables based on variable locks
3948- `heuristics/vbounds/{feasvariant,tightenvariant}` to specify the fixing variants used by the vbounds heuristic
3952- `presolving/symbreak/conssaddlp` (whether symmetry handling inequalities should be added to the LP)
3955- `presolving/symbreak/detectorbitopes` (whether it should be checked if some symmetries can be handled by orbitopes)
3957- `presolving/symmetry/maxgenerators` (maximal number of generators generated by symmetry detection)
3958- `presolving/symmetry/checksymmetries` (whether validity of computed symmetries should be verified)
3960- `propagating/vbounds/minnewcliques` to specify the minimum number of new cliques to trigger another clique table analysis
3961- `propagating/vbounds/{maxcliquesmedium,maxcliquesexhaustive}` to limit the number of cliques relative to the
3965- if PaPILO >= 2.1: `presolving/milp/maxbadgesizepar` to limit the maximal badge size if PaPILO is called in parallel mode
3966- if PaPILO >= 2.1: `presolving/milp/maxbadgesizeseq` to limit the maximal badge size if PaPILO is called in sequential mode
3970- new type `SCIP_Shortbool` (equal to uint8_t) for storing Boolean values in a more compact manner
3971- new disjoint set data structure `SCIP_DISJOINTSET` to incrementally update connectedness information for a graph on nodes {0,...,n-1}
3973- new object `SCIP_LINCONSSTATS`, see type_cons.h, to work with linear constraint classification through the C API
3981- added tests for the double double arithmetic, the new red black tree data structure, the nlpi, obbt, interval arithmetics,
3982 symmetry computation, objective function changes in probing, computing envelopes of bilinear function, relaxation enforcement
3988- added interface to the NLP solver FilterSQP; set `FILTERSQP=true` in order to link to FilterSQP
3992- added support for sanitizers in debug mode and options SANITIZE_ADDRESS, SANITIZE_MEMORY, SANITIZE_UNDEFINED, SANITIZE_THREAD
3993- added option SYM to specify which graph automorphism package (bliss, none) should be used, if available
3994- disable non-standard compliant floating point optimizations in combination with intel compilers
4014 - fix linear knapsack relaxation during separation if a binary variable does not have a solution value in [0,1].
4015 - fixed potential ressource leaks in SCIPsolveLinearProb(), expr.c, sepa_eccuts, cons_cumulative.c, cons_nonlinear.c
4030 - fixed bug in mps reader. Reader now prints `OBJSENSE` section and tries to generate unique names of constraints
4031 - fixed upgrade to a varbound constraint if abspower constraint contains a multi-aggregated variable
4036 - fixed releasing of variables in the genvbounds propagator in case the problem could be solved during presolving of a restart
4037 - fixed numerical issues in bound widening of variable bound constraint handler and vbound propagator during conflict analysis
4060 - unified and extended code that improves numerics of cuts generated by nonlinear constraint handlers
4071- SCIPvalidateSolve() to compare solving result with an external primal and dual reference value
4072- SCIPisObjChangedProbing() to check whether the objective function has changed during probing mode
4074- SCIPisLPPrimalReliable() and SCIPisLPDualReliable() to check whether the current primal / dual LP solution
4079- New option in the interactive shell to validate the solution against an external primal and dual reference value
4090- renamed parameter `heuristics/completesol/maxunkownrate` to `heuristics/completesol/maxunknownrate`
4113- fixed issue related to SCIPcreateFiniteSolCopy() not being able to remove all infinite fixings
4116- added workaround for bug in primal simplex of cplex 12.7.1.0 occuring when attempting to solve LPs without rows without presolving
4121- treat reopt bugs: Avoid numerical problems with changing objective; fix check for changed objective
4122- fixed reading issue in mps reader: integer variables fixed to 0 or 1 are treated as binaries now,
4124- afternode heuristics are now called even if the node limit was reached and the solving process will be stopped
4134 - fixed bug in shift and propagate--variable information with a negation transformation is correctly reset after backtracking
4138 - fixed bug in varbound coefficient tightening: if a varbound constraint only contained one variable afterwards,
4139 it may have been deleted without applying the induced bound, if the change was too small, this is now forced
4140 - fixed potential wrong locks update after a varbound constraint became redundant in coefficient tightening
4145 - improved handling of infinite values in a primal solution in quadratic and nonlinear constraints
4146 - fixed bug in computing violation and cut for certain nonlinear constraints when LP solution is slightly out of bounds
4147 - fixed debug solution check that appeared in probing mode when the objective function has changed
4156- Introduced support for partial or infeasible user solutions, which SCIP tries to complete/repair heuristically
4157- implemented linear time methods for (weighted) median selection for joint arrays of various types
4158- added adaptive solving behavior of SCIP based on solving phases and heuristic transitions, if enabled via `solvingphases/enabled`
4162- added possibility to use a reference value for advanced analysis of the tree search. If a finite reference value
4163 (an objective value in original objective space) is passed via misc/referencevalue, SCIP keeps track of the
4164 number of nodes exceeding the reference value and the number of early backtracks -- path switches in the tree when
4167- new global shift off all random seeds (randomization/randomseedshift) and unification of all existing random seeds
4168- use new macros SCIPdebugMsg(), SCIPsetDebugMsg(), SCIPstatDebugMsg() at all places where it makes sense
4174 - will now enforce relaxation solution instead of lp or pseudosolution if lowerbound is better and the whole lp is included in the relaxation
4185 - Improved conflict analysis through central conflict pool and dual ray analysis for primal infeasible LPs; can now analyze dual
4189 - New presolvers that disaggregate SOC constraints and reformulate QP's by adding KKT conditions
4190 - new presolving step for variables contained in a single quadratic constraint with proper square coefficients
4194 - new components constraint handler which replaces the components presolver; it searches for independent subproblems
4195 and solves small ones as sub-SCIPs during presolve, larger ones are solved alternatingly during the main solving process
4196 - new presolving timing FINAL: presolving methods with this timing are only called once after all other presolvers with timings
4197 FAST, MEDIUM and EXHAUSTIVE are finished; during this timing only reductions are allowed that are self-contained, e.g.,
4198 fixing all variables and deleting all constraints of an independent component; note that reductions found in this timing
4203 - add sepa_convexproj, a separator which projects onto convex relaxation and build gradient cuts at the projection
4204 - add sepa_gauge, a separator which computes an interior point of a convex relaxation and performs a binary search in the segment joining
4205 the interior point and the point to separate until it finds a point in the boundary of the feasible region where to build a gradient cut
4206 - changed handling of coupling constraints in cons_indicator; the cuts will not be added to the pool, but are separated by default
4207 - concurrent solving mode that allows to run multiple SCIP instances, that share solutions and global variable bounds, in parallel
4213 In addition, the heuristic supports a rolling horizon-like procedure to solve auxiliary problems
4215 - new primal heuristic LP face that tries to find an integer solution inside the optimal LP face.
4217 - the subnlp heuristic now gives ownership of a found solution to the heuristic that constructed the starting point, if any;
4218 as a consequence, MIP heuristics may now be shown more frequently for having found a solution when solving MINLPs, even
4223 - add prop_nlobbt, a nonlinear optimization-based bound propagator solving two convex NLP relaxations for each variable
4224 - nodes can now be postponed; currently, this can only be triggered by BEFORELP propagation callbacks
4228 + new statistic computed: `Root LP Estimate` that shows the root LP best-estimate with every pseudo-cost update
4229 + added leaf statistics about LP objective limit|feasible|infeasible leaves to the statistics output and
4230 to the callable library: SCIPgetNObjlimLeaves(), SCIPgetNFeasibleLeaves(), SCIPgetNInfeasibleLeaves()
4231 + next to the number of found solution, also the number of new best solutions is now printed for each heuristic
4239- use connectedness information of the clique table to speed up the clique partitioning algorithm
4240- knapsack approximation algorithms use linear-time weighted median selection instead of sorting
4242- reduce performance variability by using random numbers as tie-breaker for external branching candidates
4245 - adjusted most Large Neighborhood Search heuristics such that they collect their variable fixings first in an array,
4253 - SCIP supports constraint compression for problem copies; constraint compression denotes the immediate
4254 removal of fixed variables from constraint data at creation time to reduce memory requirements.
4257 - rewrote the propagate-and-cut-and-price loop so that successful propagations with DURINGLPLOOP timing, bound changes found by separation,
4258 and new primal solutions now trigger a new round of node solving, starting with propagation; improved tuning of propagation and heuristic timings
4260 - make more use of SCIPmarkConsPropagate() to mark constraints for propagation and improved the internal handling of marked constraints
4261 - improve propagation of absolute-value expression in the case that the sign of the argument is fixed
4273 - `CONSINITLP` callback now has a new parameter `infeasible`, which is a pointer to store whether infeasibility
4280- the parameters of SCIPlpiChgObj(), SCIPlpiSetBase(), SCIPlpiSetState(), SCIPlpiSetNorms() have been declared as const
4286 - methods SCIPrandomPermuteArray() substitutes SCIPpermuteRandomArray() (marked to be deprecated)
4287 - methods SCIPrandomPermuteIntArray() substitutes SCIPpermuteRandomIntArray() (marked to be deprecated)
4303 - removed function SCIPcalcHashtableSize() since not required anymore for `SCIP_HASHTABLE` and `SCIP_HASHMAP`
4304 - based on the initial size `SCIP_HASHTABLE` and `SCIP_HASHMAP` choose an appropriate size internally to allow insertion of that
4306 - `SCIP_MULTIHASH` behaves like the old `SCIP_HASHTABLE` and SCIPcalcMultihashSize() should be used as replacement for
4313 - the following new methods return a bool indicating whether the given value is valid for the parameter instead of printing a warning
4320 - in param.c/h: the new methods return a bool whether the given value is valid for the parameter instead of printing a warning message
4330 - changed type of parameter `timingmask` from unsigned int to `SCIP_HEURTIMING` in SCIPincludeHeur(), SCIPincludeHeurBasic()
4340 - added parameter `completely` to SCIPtrySol(), SCIPtrySolFree(), SCIPcheckSol() to check all constraints when
4353- SCIPcreateNlpiProb(), SCIPupdateNlpiProb() and SCIPaddNlpiProbRows() to create and update a nonlinear relaxation
4354- SCIPgetNObjlimLeaves(), SCIPgetNFeasibleLeaves(), SCIPgetNInfeasibleLeaves() for statistics output
4356- SCIPcheckCopyLimits() which can be used to check that enough time and memory is left to run a sub-SCIP after
4357 subtracting time and memory used by the main-SCIP and SCIPcopyLimits() which copies these limits accordingly and disables
4359- SCIPcopyLargeNeighborhoodSearch() in heuristics.h that supports compressed copying and two kinds of problem copy: the MIP-relaxation or
4362- SCIPgetLastStrongbranchingLPSolstat() to query the LP statuses after strong branching on a variable
4368 - SCIPprintDebugMessage(), SCIPsetPrintDebugMessage(), SCIPstatPrintDebugMessage() that output debug messages and also print the
4369 subscip depth; the first two output via the message handler; also added macros SCIPdebugMsg(), SCIPsetDebugMsg(), SCIPstatDebugMsg()
4370 - SCIPdebugMsgPrint()/SCIPsetDebugMsgPrint() that output a message without `[debug]` prefix via the message handler (compare SCIPdebugPrintf())
4377 - library methods SCIPcopyConsCompression(), SCIPcopyOrigConsCompression() that accept an array of variables that are immediately
4379 - library methods SCIPenableConsCompression(), SCIPisConsCompressionEnabled(), SCIPcopyConsCompression(), SCIPcopyOrigConsCompression()
4383 - SCIPchgCardvalCardinality() to changes cardinality value of cardinality constraint (i.e., right hand side of cardinality constraint)
4388 - SCIPgetCardvalCardinality() to get the cardinality value of a cardinality constraint (i.e., right hand side of cardinality constraint)
4390 - SCIPgetLinvarMay{Decrease,Increase}Quadratic() to get index of a variable in linear term of quadratic constraint that may be decreased
4403- Interfaces for Python and Java are, among others, now available via http://www.github.com/scip-interfaces
4408- for users of the ampl interface, the display/logfile option has been added to set the name of a
4418- setting a value for a fixed parameter will no longer return with an error, if the new value equals the one to which the parameter is fixed
4419- changed value of parameter `separating/clique/cliquedensity` to 0.0 such that the separator always constructs a dense clique table
4421- parameters `misc/permutationseed`, `misc/permuteconss` and `misc/permutevars` changed to `randomization/permutationseed`,
4424- all parameters of the components presolver (starting with `presolving/components/`) are now parameters of the components
4430- `branching/sumadjustweight` to adjust branching scores by adding a sum epsilon in order to keep score differences
4431 near zero, which are otherwise completely disregarded (they are adjusted to at least sum epsilon)
4433- `constraints/cardinality/branchbalanced` to decide whether to use a balanced branching scheme in the enforcing of cardinality
4435- `constraints/cardinality/balanceddepth` to set the maximal depth until balanced branching is turned off
4436- `constraints/cardinality/balancedcutoff` to determine that balanced branching is only used if the branching cut off value
4438- `constraints/indicator/sepaperspective` to turn on separation of perspective cuts for indicator constraints
4439- `constraints/indicator/sepapersplocal` to decide whether local cuts can be used for perspective cuts for indicator constraints
4440- `constraints/quadratic/projectedcuts` to enable convex quadratics to generate gradients cuts at the
4443- `misc/referencevalue` to pass a reference value for further analysis of the tree search, see also in `features`
4444- `presolving/qpkktref/addkktbinary` to allow the presence of binary variables for the KKT update
4445- `presolving/qpkktref/updatequadbounded` to add the KKT conditions to QPs only if all variables are bounded
4446- `presolving/qpkktref/updatequadindef` to add the KKT conditions to QPs only if the quadratic matrix is indefinite
4448- `solvingphases/enabled` to activate adaptive behavior during the solution process; several further parameters
4449 in the solvingphases-section to control how to switch the parameters and whether a restart should be performed between the phases.
4453- new `SCIP_REGRESSION` data structure in pub_misc.h to incrementally compute a best-fit line through pairs of observations
4454- add maximum branch-and-bound tree depth constant `SCIP_MAXTREEDEPTH` (replaces SCIPgetDepthLimit() and SCIPtreeGetDepthLimit())
4457- separated header pub_misc.h from repeated methods for sorting and (weighted) median selection;
4478 - All objective files are now placed in `obj/static` or `obj/shared`, depending on `SHARED=false` or `SHARED=true`, respectively.
4479 - All internal and external libraries are placed in `lib/static` and `lib/shared`, the include files are in `lib/include`.
4480 - The binaries now contain an rpath to the SCIP directory, such that shared libraries are found.
4484 - External projects (including make.project) can use the makefile variable LINKCXXSCIPALL or LINKCCSCIPALL to link all SCIP libraries.
4485 - Building with `SHARED=true` automatically generates the combined library libscipsolver.so for easier linking
4496- fixed bug in event system: bound change events of the new focus node must be processed, even if the bound
4501- in the cmpres.awk (allcmpres.sh) output, the counts in the time column are now with respect to the
4502 whole set of processed instances (as with fail and solv), while before it was with respect to the
4504- writing of solutions or parameters to a file now works also with the message handler set to quiet
4511 - fixed bug with sorting of propagators in presolving: the order can be changed by calling probing; thus, there is a copy of the
4518 - fixed a few issues within redundant constraint detection of (specialized) linear constraint handlers
4523 - improved counting of memory consumption by using more block memory and counting all allocated memory
4529 - fixed bug while changing the objective value of an original value after transforming the problem
4534 - fixed two bugs in heur_indicator: use improvesols parameter now and update pointer to indicator constraint handler
4536 - correct handling of implicit integer variables with fractional solution value in simplerounding heuristic
4547- new `force` parameter in (root)redcost propagator to run the propagator also with active pricers
4553- modified implication graph analysis of SOS1 constraint handler; a new component allows to deduce zero fixings of variables
4554- made SOS1 constraint handler specific diving selection rule faster for the case that the SOS1 constraints do not overlap
4560- several improvements of SCIP-Jack (STP application): extended presolving for STP variants, STP-specific branching
4562 SCIP-Jack is now competitive with problem specific state-of-the-art solvers on several well-known STP variants,
4564- MultiObjective application renamed to PolySCIP; several improvements: better command line argument processing,
4574- add SCIPcomputeHyperplaneThreePoints() to compute a hyperplane containing three given 3-dimensional points
4579- added interactive shell command `display finitesolution` to print solution with infinite fixings removed,
4581- new interactive shell command `write history` to write the command line history (only when compiled with Readline)
4585- significantly improved Python interface to support user callbacks as well as linear and quadratic expressions
4589- `constraints/sos1/branchingrule` to decide whether to use neighborhood, bipartite, or SOS1 branching (this parameter
4590 replaces the old parameters `constraints/sos1/neighbranch`, `constraints/sos1/bipbranch`, and `constraints/sos1/sos1branch`)
4591- `constraints/sos1/depthimplanalysis` to limit the number of recursive calls of implication graph analysis
4592- `constraints/sos1/perfimplanalysis` to perform an implication graph analysis to deduce variable fixings and
4593 additional SOS1 constraints (this parameter replaces the old parameter `constraints/sos1/updateconflpresol`)
4594- `misc/transsolorig` for transfering transformed solutions to the original space (default: true)
4614- fixed a bug in merge step of cliques during clean up phase; method did not correctly handle infeasibility in the case of multiple
4616- fixed a previously untreated case in the linear cons simplification where coefficients only differ by slightly more than an epsilon
4621- fixed bug with transferring solutions to new runs (need to recompute objective before checking)
4626 - fixed wrong check when computing cuts for factorable quadratic functions bound tightening of a single variable
4629 - fixed bug during the computation of branching points for continuous variables which are almost fixed to +/- SCIPinfinity()
4630 - treated the case of integer variables as intermediate variables in the process of obtaining the active variable for a
4634 - fixed a bug in dive.c that occurred when lpsolvefreq was set to 1; after a cutoff, the solution values of the
4636 - do not analyse an infeasible LP for conflicts during diving mode when LHS/RHS of rows were changed
4643 - fixed bug in shiftandpropagate heuristic: the heuristic did not correctly handle intermediate, global bound changes of the selected variable
4651 - fixed a bug in shiftandpropagate where column positions after sorting are now correctly linked to their variables after sorting
4656 - fixed some problem with reoptimization when the problems are infeasible or have been solved in presolving
4657 - fixed endless loop in knapsack constraint handler when continuous variables change their types to binary during presolving
4658 - squares of binary variables might not have been replaced by the binary variable itself in presolve,
4659 if the variable was originally general integer and only became binary during presolve (due to bound tightening)
4663 - fixed numerical problems in computation of cuts for bivariate functions in quadratic constraint handler
4665 - fixed bug in nonlinear constraint handler when replacing a violated nonlinear constraint leads to an infinite
4667 - fixed wrong handling of negated variables in bound tightening procedure of SOS1 constraint handler
4670 - fixed issue: constraints being parallel to objective function (after restart) sometimes led to wrongly stating infeasible
4673 - fixed late change of type of slack variables in cons_indicator, if the bounds are not integral
4683- added reoptimization feature for optimization problems with changed objective function or tighter feasible region
4684- the original problem can now be permuted directly after reading (if `misc/permutationseed` has value >= 0)
4687- convex quadratic contraints can now generate gradient cuts which are supporting to the feasible region
4689- extended expression parsing to support power, realpower and signpower operators; started support for user-defined operators
4691- possibility to set a soft time limit which becomes active only after the first primal solution was found
4695- new plugin for reoptimizing a sequence of optimization problem that differ in the objective function, e.g., sequences arising from
4697- new plugin `compr` for rearranging the search tree, currently this only works on the reoptimization tree
4702 - we can also upgrade general quadratic constraints with a single negative eigenvalue to SOC constraints
4705 - tighter reliability notions introduced for reliability branching, based on pseudo-cost relative errors
4706 and comparing candidates with the best pseudo-candidate using a 2-sample student-T test. These methods
4707 are used in disjunction with the existing reliability notion that uses a fixed number as reliability
4708 threshold for every variable before turning off strong-branching. This means, the classical method
4711 - new distribution branching rule to base decisions on row activity (normal) distribution over domain space
4713 - new score in hybrid reliability pseudocost branching that prefers nonlinear variables when solving MINLPs
4714 - new branching rule multaggr which allows to branch on general disjunctions defined by fractional multi-aggregated variables
4715 - new branching rules for SOS1 constraints for branching on a neighborhood or a complete bipartite subgraph of
4716 the conflict graph. In addition to variable domain fixings, it is sometimes also possible to add complementarity
4717 constraints to the branching nodes. This results in a nonstatic conflict graph, which may change dynamically
4722 - the MPS reader can now read semi-integer variables, they are handled by creating bound disjunction constraints
4723 - the MPS reader can now handle objective constants given as (the negation of) the RHS of the objective row
4726 - obbt propagator applies now additional separation and propagation in order to learn stronger and more bound tightenings
4728 - improved separation procedure of SOS1 constraint handler, including bound (clique) cuts and implied bound cuts
4733 - Improved coordination of presolvers. There are three timings for presolvers now, FAST, MEDIUM and EXHAUSTIVE.
4734 Each presolving callback can specify one or more of these timings in which it will be called later.
4735 Within a presolving method, the current timing can be checked and the algorithms to be performed selected based on
4736 the timing. In one presolving round, first all presolving methods with timing FAST are called, sorted by priority.
4737 If they found enough reductions, a new round is started, otherwise, all presolving methods with timing MEDIUM are
4738 called. Again, with enough reductions, a new presolving round is started, too few reductions lead to running
4739 the EXHAUSTIVE presolvers. Similar to the delay concept used before, we are not neccessarily running all EXHAUSTIVE
4740 presolvers but stop as soon as one of them found enough reductions, starting a new presolving round immediately.
4741 - new presolving components for SOS1 constraints, including bound tightening and clique extension
4742 - new presolver tworowbnd for improving variable bounds and detecting redundant constraints added
4743 - new presolver dualagg for aggregating single up-/downlocked variables by a binary variable added
4750 - new heuristic distribution diving that bases its score function on the changes regarding solution density
4751 - variable histories can be transferred between sub-SCIPs solved by LNS heuristics and the component presolver
4753 - new heuristic heur_indicator that tries to make partial solutions with indicator constraints feasible. It also
4755 - new heuristic (heur_bound) which fixes all integer variables to their lower/upper bounds and solves the remaining LP
4757 - new primal heuristic for reoptimization 'ofins': objective function induced neighborhood heuristic
4758 - new heuristic for reoptimization which constructs solutions based in the changes between the objective function and the optimal
4762 - extended variable branching statistics in the interactive shell by sample variance of unit gains
4763 - extended statistic output of interactive shell by more information on diving heuristic behavior
4772 - improved vartype upgradability from continuous to implicit variables in cons_linear.c, depending on their objective coefficients
4776 - zi rounding heuristic uses buffer data structures, thereby decreasing total memory usage of SCIP
4777 - adjusted (hard) diving heuristics to solve fewer LPs. LP's are resolved only if a parameter-defined
4778 percentage of the variable bounds changed through domain propagation or at a predefined frequency.
4779 - some of the diving heuristics additionally consider indicator variables and SOS1 variables as candidate variables and try to
4783 - new presolving/propagation algorithm using the gcd for ranged rows and equations in cons_linear
4784 - added presolving levels (FAST, MEDIUM and EXHAUSTIVE) to allow better balancing of presolvers
4793- two new applications for multi-objective optimization (PolySCIP) and the Steiner Tree Problem in Graphs
4794- new application for solving Steiner tree problems: SCIP-Jack can handle both the classical Steiner tree problem in graphs
4803 constraint handler method to suggest dive bound changes during the generic diving algorithm, see type_cons.h for details
4809- SCIPintervalSign(), SCIPintervalAbs(), SCIPintervalMax(), SCIPintervalMin(), SCIPexprgraphGetNodePolynomialMonomialCurvature(),
4810 and SCIPexprgraphTightenNodeBounds() need an infinity value to decide whether an interval is empty or not
4811- SCIPgetFeasibilityQuadratic() and SCIPgetActivityQuadratic() returns now a `SCIP_RETCODE` and needs an additional `SCIP_Real*` to
4813- methods which support statistical tests in pub_misc.h, SCIPstudentTGetCriticalValue(), SCIPcomputeTwoSampleTTestValue() etc.
4827 - SCIPmakeSOS1sFeasible() based on solution values, fixes variables to zero to turn all SOS1 constraints feasible
4828 - removed `delay(presol)` parameter from SCIPinclude{Conshdlr,Presol,Prop}() and added `(presol)timing` parameter
4837 - Added parameter `consgetdivebdchgs` to SCIPincludeConshdlr() to provide a divebdchg-callback for the constraint handler
4846 - Added parameters `inds` and `ninds` to SCIPgetLPBInvRow(), SCIPgetLPBInvCol(), SCIPgetLPBInvARow(), SCIPgetLPBInvACol(), and
4852 - SCIPnodeGetVarSOS1() returns SOS1 variable associated to some given node in the conflict graph
4874- started support for user-defined operators in expression trees/graphs (see SCIPexprCreateUser()),
4879- SCIPcutGetLPActivityQuot() in pub_cutpool.h to get the potion of LP's where this cut was sharp in an optimal basis.
4880- SCIPpresolGetTiming(), SCIPpresolSetTiming(), SCIP{conshdlr,prop}GetPresolTiming(), and SCIP{conshdlr,prop}SetPresolTiming()
4881- SCIPdigraphSetNSuccessors() sets the number of successors of some digraph node to a given value
4884 - SCIPcreateDiveset() to add a diveset to a heuristic. Heuristics may have multiple divesets under different names
4885 - SCIPperformGenericDivingAlgorithm() that performs diving with periodic LP resolve according to the diveset argument.
4888 - new setter function SCIPsetConshdlrGetDiveBdChgs() in scip.h to set dive bound change callback for this constraint handler
4889 - SCIPaddDiveBoundChange() to add a diving bound change to the diving bound change storage of SCIP together with the information if this is a
4890 bound change for the preferred direction or not, to be used by constraint handlers inside the getDiveBdChgs-callback
4891 - SCIPchgCoefLinear() and SCIPdelCoefLinear() to modify linear constraint during problem creation
4895 BMSallocClearBufferMemoryArray(), SCIPallocClearBufferArray() to allocate arrays that are initialized to 0
4899 - added new sorting functions SCIPsortRealRealRealBoolBoolPtr(), SCIPsortDownRealRealRealBoolBoolPtr()
4900 - added new sorting functions SCIPsortIntIntIntReal(), SCIPsortDownIntIntIntReal(), SCIPsortRealIntInt(), SCIPsortDownRealIntInt()
4904 - SCIPcheckParam{Bool,Char,...}() to check whether a parameter value is within the feasible domain
4907 - SCIPchgLhsQuadratic(), SCIPchgRhsQuadratic(), SCIPchgLinearCoefQuadratic(), SCIPchgSquareCoefQuadratic(),
4909 - SCIPgetFeasibilityQuadratic() and SCIPgetActivityQuadratic() to get the feasibility and activity of a quadratic constraint in a given solution
4910 - SCIPaddSquareLinearization(), SCIPaddSquareSecant(), SCIPaddBilinLinearization() and SCIPaddBilinMcCormick()
4911 in cons_quadratic.h to compute linear under- and overestimation for bilinear and quadratic terms
4915- extended variable branching statistics and statistic output in the interactive shell (see Statistic section)
4921- in the AMPL interface, variable and constraint attributes (flags) can now be set via suffixes, where 0 (unset) stands
4922 for the default, 1 for TRUE and other values for FALSE; see SCIPcreateVar() and SCIPcreateCons() for their meaning;
4924 for constraints, `initial`, `separate`, `enforce`, `check`, `propagate`, `dynamic` and `removable` are recognized
4925- the AMPL interface now passes an initial guess, if specified, as a solution (that will be checked for feasibility) to SCIP
4929- rowrepswitch set to 2.0, so row representation is activated if LP has at least 2 times more rows than columns
4930- one can now set emphasis parameters at the beginning of a settings file; it should start with `emphasis:` and
4941- `branching/relpscost/confidencelevel` to set the confidence level to be used by statistical tests
4942- `branching/relpscost/higherrortol` to define the highest reliability threshold for relative error based reliability
4943- `branching/relpscost/lowerrortol` to define a lower reliability threshold for relative error based reliability
4945- `branching/relpscost/usedynamicconfidence` to use a dynamic confidence level based on the amount of
4946 strong-branching simplex-iterations compared to the overall simplex iterations (default is FALSE)
4947- `branching/relpscost/usehyptestforreliability` to enable strong branching decisions based on a 2-sample student-T test of all prior
4948 pseudo-cost observations between the best pseudo-candidate and the candidate for which to decide whether strong-branching should be applied
4950- `branching/relpscost/skipbadinitcands` for skipping strong-branching candidates whose estimated gain
4952- `constraints/linear/multaggrremove` to perform multi-aggregations in linear constraint handler only if the constraint can be removed afterwards
4953- `constraints/linear/rangedrowpropagation` to disabled newly implemented propagtion algorithm for ranged rows and equations
4954- `constraints/quadratic/advanced/interiorcomputation` to select the way of computing and interior point for gauge cuts
4955- `constraints/quadratic/gaugecuts` to enable convex quadratics to generate gradients cuts which are supporting
4957- `constraints/SOS1/addcomps` to add local complementarity constraints to the branching nodes (can be used in combination
4959- `constraints/SOS1/addbdsfeas` to define a minimal feasibility value for local bound (clique) inequalities in order to be
4961- `constraints/SOS1/addcompsdepth` to define the maximal depth for adding complementarity constraints
4962- `constraints/SOS1/addcompsfeas` to define a minimal feasibility value for local complementarity constraints in order to be
4964- `constraints/SOS1/autocutsfromsos1` to automatically switch to separating bound cuts from SOS1 constraints if the SOS1
4966- `constraints/SOS1/autosos1branch` to switch to SOS1 branching if the SOS1 constraints do not overlap
4971- `constraints/SOS1/boundcutsfromgraph` to define whether to separate bound (clique) inequalities from the conflict graph
4972- `constraints/SOS1/boundcutsfromsos1` to define whether to separate bound (clique) inequalities from SOS1 constraints
4973- `constraints/SOS1/fixnonzero`: If neighborhood branching is used, then fix the branching variable (if positive in sign)
4978- `constraints/SOS1/maxaddcomps` to define the maximal number of complementarity constraints added per branching node
4979- `constraints/SOS1/maxboundcuts` to define the maximal number of bound (clique) cuts separated per branching node
4980- `constraints/SOS1/maxboundcutsroot` to define the maximal number of bound (clique) cuts separated per iteration in the root node
4981- `constraints/SOS1/maximplcuts` to define the maximal number of implied bound cuts separated per branching node
4982- `constraints/SOS1/maximplcutsroot` to define the maximal number of implied bound cuts separated per iteration in the root node
4983- `constraints/SOS1/maxextensions` to define maximal number of extensions that will be computed for each SOS1 constraint in presolving
4984- `constraints/SOS1/maxsosadjacency` to define that the adjacency matrix of the conflict graph is not created in presolving if
4986- `constraints/SOS1/maxtightenbds` to define the maximal number of bound tightening rounds per presolving round
4988- `constraints/SOS1/nstrongiter` to define the maximal number LP iterations to perform for each strong branching round
4989- `constraints/SOS1/nstrongrounds` to define the maximal number of strong branching rounds to perform for each node (only
4991- `constraints/SOS1/sos1branch` to branch on a single SOS1 constraint, i.e., a clique of the conflict graph
4993- `constraints/SOS1/strthenboundcuts` to define whether to strengthen bound (clique) cuts in case bound variables are available
4994- `constraints/SOS1/updateconflpresol` to update the conflict graph during the presolving procedure
4995- `display/allviols` to print all violated constraints of the best solution during checksol in the scip shell
4996- `heuristics/indicator/improvesols` that turns on the improvement of external solutions by one-opt
4997- `heuristics/∗diving/lpresolvedomchgquot` to determine the percentage of changed domains since previous LP to trigger
4999- `heuristics/∗diving/lpsolvefreq` to determine the frequency for resolving LP's during the execution of
5000 this heuristic [default: 1, use 0 for a dynamic setting based on the number of domain reductions]
5002- `heuristics/shiftandpropagate/binlocksfirst` to set if binaries without locks should be preferred in ordering
5003- `heuristics/shiftandpropagate/maxcutoffquot` to select a maximum percentage of allowed cutoffs before stopping the heuristic (default is 0.0)
5004- `heuristics/shiftandpropagate/selectbest` to trigger if shiftandpropagate should select the best candidate in every round
5006- `limits/autororestart` for triggering an automatic restart after this many nodes, or -1 for no auto restart [default is -1]
5007- `limits/softtime` to set a soft time limit (active only after first primal solution was found)
5010- `misc/outputorigsol` to control whether at the end of a command line run the solution should be output in the orignal space
5011- `numerics/checkfeastolfac` to scale feasibility tolerance when checking the feasibility of best found solution
5013- `separating/cutselrestart` for cut selection during restart copy process (`a`ge, activity `q`uotient) [default is `a`]
5014- `separating/cutselsubscip` for cut selection for sub SCIPs (`a`ge, activity `q`uotient) [default is `a`]
5015- `separating/disjunctive/maxconsdelay` to delay separation of disjunctive cuts if number of SOS1 constraints is larger than predefined value
5017- `separating/disjunctive/maxinvcuts` to define the maximal number of disjunctive cuts investigated per iteration in a branching node
5018- `separating/disjunctive/maxinvcutsroot` to define the maximal number of disjunctive cuts investigated per iteration in the root node
5019- `separating/disjunctive/maxrank` to define the maximal permissible rank of a disjunctive cut that could not be scaled to integral coefficients
5020- `separating/disjunctive/maxrankintegral` to define the maximal permissible rank of a disjunctive cut that could be scaled
5022- `separating/disjunctive/maxrounds` to define the maximal number of separation rounds of disjunctive cuts in a branching node
5023- `separating/disjunctive/maxweightrange` to define the maximal valid range of simplex tableau row weights
5028- new struct `SCIP_DIVESET` that bundles options for SCIP's diving heuristics; all hard diving heuristics (those
5046- new parameter `DELHEADERS` for `uninstall`-target: scip headers are only removed when invoking `make uninstall DELHEADERS=true`
5047- added scripts check_xpress.awk, check_xpress.sh, evalcheck_xpress.sh and check_cluster_xpress.sh and target
5053- fixed bug in primal.c and tree.c by using SCIPinfinity() as a cutoffbound to delete child nodes
5057- fix behavior of `make install` which now sets symbolic links and short links to binaries and libraries
5071 - fix wrong comparisons of values larger/less than +/- SCIPinfinity() in branch.c, lp.c and sol.c
5078 - fixed wrong assert in cons_indicator (slack variables might be replaced by active variables that have nonzero objective)
5079 - fix late creation of auxiliary LP in cons_nonlinear.c, which lead to a segmentation fault with lpi_spx2.cpp
5081 - fixed setting of enforcement flag for constraints created by reformulation in nonlinear constraint handlers
5087 - fix potential memory leak in method detectRedundantConstraints() of the knapsack constraint handler
5091 - fixed bug in intervalarith.c: bivariate quadratic equations may have been solved wrongly if second variable is unbounded
5096 - fixed bug in cons_quadratic.c which leads to an overflow when SCIP allocates memory for a dense matrix
5128- forbid to call SCIPfixVar() in `SCIP_STAGE_PRESOLVED` stage, which is not allowed since it calls SCIPchgVarLb/Ub()
5146- added dialog for writing the finite solution (calling SCIPcreateFiniteSolCopy() before writing)
5154- changed default value of parameter `heuristics/proximity/minimprove` to 0.02; previous value was 0.25
5159- `timing/rareclockcheck` to call the system time less frequently, based on the current average time interval
5161- `timing/statistictiming` to enable/disable all timers for statistic output of SCIP; the default value is TRUE
5174- allow to turn off block and buffer memory by the makefile parameters NOBLKMEM, NOBUFMEM, NOBLKBUFMEM;
5182- fixed bug 697 (and 699), calling SCIPsolve() after the problem was already solved and SCIPfreeSolve() was called now
5184- added support for character `#` in variable names in old non-linear CIP format (i.e., names without `<` and `>`)
5186- branching for continuous variables with unbounded intervals now takes `branching/clamp` into account
5188- fixed bug 683, not recognizing errors/segfaults especially in free stage of SCIP by improving the check scripts
5192- another bug fix when computing the original variable sum of a given variable in SCIPvarGetOrigvarSum()
5196- fixed bug in SCIPpermuteProb(): if called before transforming the problem, data structures were not initialized yet
5197- fixed bug in aggregation procedure if two variables were of non-binary type but for one of the variables
5199- treat activities of pseudo solutions as invalid when containing positive and negative infinity contributions
5202- fixed bug in SCIPpermuteProb(), when called in transformed stage and non-active constraints exist
5211 - fixed the rare case that branching was performed even though strong branching found global bound changes leading to
5213 - fixed bug that objective limit was not reset correctly during SCIPfreeTransform() for maximization problems
5214 - fixed bug that hitting the time limit while solving a pure LP and then continuing the solving process lead to
5218 - fixed bug leading to an incorrect dual bound when solving probing LPs within a DURINGPRICINGLOOP heuristic
5219 - fixed bug in proximity heuristic which attempted to enter diving mode even at nodes without a constructed LP
5221 - fixed bug in heur_oneopt: avoid bound violations if shift value is negative due to infeasibilities
5222 - fixed bug that reaching a solution limit by beforenode heuristics lead to disregarding the current node if the
5229 - fixed bug in components presolver with handling of dual fixable variables: unboundedness was not detected,
5231 - issues in component solving by presol_components do not lead to stopping the overall process, anymore, the component
5243 - fixed bug in presolve of cons_nonlinear: wrong constraint upgrades may have been performed due to outdated bound
5246 - fixed bug in cons_sos1: locks and events were not initialized if constraint was added to transformed problem
5252 - fixed bug(?) in reader_mps: variables are now written in columns section even of they occur in no constraint
5255 - fixed bug in reader_lp which created two indicator constraints with the same name to trigger an equality
5256 - fixed bug when reading indicator constraints for linear constraints (equations/ranged rows) from MPS files
5265- new node selection rule UCT which balances exploration and exploitation by considering node visits
5266- added possibility to not set a cutoff bound in the LP solver (can be enabled by setting `lp/disablecutoff` to TRUE)
5270- added upgrade of continuous variables to implicit variables for linear equations even if the coefficient is
5277 - it is now possible to add an offset for the original problem instance, all original solutions will be initialized with
5279 - extended and corrected dual feasibility checks for LP solution (controlled by parameter `lp/checkdualfeas`)
5287 - additional vbc output added: branching information is printed earlier and also for nodes which were cut off
5288 - added support for strong branching with domain propagation in full strong and reliability pseudo cost branching
5289 - added strong branching with domain propagation support: in SCIPstartStrongbranch(), support for propagation can
5290 be enabled (uses the probing mode, some overhead compared to standard strong branching), after that
5291 SCIPgetVarStrongbranchWithPropagation() can be used to perform strong branching on a variable with previous domain
5294 - added possibility to store pricing norms of the LP solver (in addition to basis information) to speed up LP solving
5296 - a pricer can now return that no further pricing should be done but rather early branching, even if it added variables
5303 - added propagation method to cons_xor relying on Gaussian elimination, which can also produce feasible solutions
5311 - cumulative constraint handler adds disjunctive constraints (cumulative with capacity 1) for all jobs which cannot
5317 - XOR constraint handler can add two extended formulations (flow/asymmetric, parameter `addflowextended/addextendedform`)
5318 - added multi-aggregation for binary variables with at most two uplocks and two downlocks, which emerge from set-
5325 - all readers now take the global parameters `reading/dynamic{conss|cols|rows}` and `reading/initialconss` into account
5326 - added reader_pbm, which writes the constraint-variable incidence matrix in pbm format (possibly scaled to given size)
5328 - reader_lp and reader_mps are now able to write and-constraints in form of their (weak/strict) relaxation
5329 - added reading capability to GAMS reader (if compiling with GAMS=true, requires a GAMS system)
5330 - added capability of writing SOS1/2 constraints to GAMS reader (introduces extra variables and equations)
5334 - new LNS heuristic called `proximity`, which solves a problem in which a local branching constraint replaces the
5336 - new LP-based rounding heuristic (heur_randround) whose randomized rounding is biased towards the LP solution value;
5337 the heuristic uses the probing mode of SCIP to generate conflict clauses on the fractional variables
5341 - changed dualfix presolver to propagator such that dual fixing can also be applied during repropagation of the root node
5346 - added more presolving to cons_indicator, checking whether indicator/slack variables are aggregated
5347 - added presolve.{c,h} which should be used for all preprocessing mechanisms executed from within SCIP, corresponding to
5348 solve.{c,h} and also for presprocessing methods which can be called from different plugins or from the core to avoid
5350 - return error if variable should be fixed to infinity after presolving (LP-solvers do not handle this consistently)
5351 - in verblevel `SCIP_VERBLEVEL_FULL`, the number of non-zeros will be output for the original and presolved model
5352 - new presolving step for tightening logicor constraints using implication and clique information
5353 - several new presolving steps for linear and knapsack constraints, using gcd information and many more
5356 - added average gap based on primal-dual integral to solution statistics; can be disabled via parameter
5359 - added new statistic which distinguishes between internal nodes and leaves which got processed
5360 - new section `Root Node` in statistics, listing objective value, iterations and solving time for the first LP solved
5361 at the root node as well as final dual bound of the root node and LP iterations for processing the root node
5362 (those where listed in the `Solutions` section before, named `Root Dual Bound` and `Root Iterations`)
5369- apply lowerbound provided by pricers already during pricing loop, stop pricing if the lower bound computed by pricing
5377 - faster feasibility check of LP solutions (controlled by parameters `lp/checkprimfeas` and `lp/checkdualfeas`)
5381 - improved performance of method SCIPsolRetransform() when called during presolving with many aggregations
5393 - conflict consisting of exactly two binary variables will be handled as set-packing constraint instead of an logicor
5398 - improved multi-aggregation in linear constraint handler when only one variable in the aggregation has infinity
5410- removed all message length parameters in message.c and for printing error messages (not needed anymore)
5415 - added parameter `nmarkedconss` to SCIP_DECL_CONSPROP() callback which gives the number of constraints marked
5419 - Added parameter `nodeinfeasible` to SCIP_DECL_HEUREXEC() callback which states whether the current subproblem was
5420 already detected to be infeasible. In this case, the current LP solution might not respect local bounds and the
5424 - Added parameter `stopearly` to callback method SCIP_DECL_PRICERREDCOST(). This boolean pointer should be used by the pricer
5425 to state whether early branching should be performed, even if new variables were added in the current pricing round.
5428 - new possible return value `SCIP_DIDNOTFIND` for SCIP_DECL_BRANCHEXECLP(), SCIP_DECL_BRANCHEXECPS(), and
5429 SCIP_DECL_BRANCHEXECEXT() callbacks to state that the branching rule searched, but did not find a branching.
5433- SCIPcalcMIR() takes an additional parameter sidetypes to determine which side of the rows to use
5440 - SCIPgetLPBranchCands() can be used to retrieve the number of implicit integer variables with fractional LP solution
5441 value via an additional pointer; the corresponding implicit integer variables can be accessed together with their
5442 fractionalities and solution values in the same way as binary and integer variables before; the arrays are sorted such
5443 that binary and integer variables precede the implicit integer variables; the method SCIPbranchcandGetLPCands()
5447 - Added parameter `sidetypes` to SCIPcalcMIR() to specify the specify row side type to be used.
5448 - Added parameter `cutrank` to SCIPcalcMIR() and SCIPcalcStrongCG() which stores the rank of the returned cut;
5450 - Added parameter `infeasible` to SCIPaddCut() which is a pointer to store whether the cut is infeasible for the
5452 - SCIPgetLPObjval() now returns the LP value of the current (suboptimal) basis if the iteration limit is hit during LP
5453 solving (instead of -infinity); this value is not necessarily a valid dual bound and must not be used as such, but can
5454 be used as an objective estimate, e.g., if strong branching is simulated using the probing mode
5458 - Added parameter `lazyconss` to SCIPwriteMIP() to swith writing removable rows as lazy constraints.
5459 - Added parameter `enablepropagation` to SCIPstartStrongbranch(), which can be used to enable strong branching
5461 - SCIPstartStrongbranch() has a new parameter `propagate` to enable or disable propagation support for strong branching
5462 - New method SCIPgetVarStrongbranchWithPropagation() which performs strong branching with propagation on a variable.
5463 - Added parameter `endptr` to SCIPparseVar() which stores the final string position after parsing.
5467- added SCIPdebugCheckConss() to the debugging mechanism and therefore created a `SCIP_SOL` (in original space) in debug.c
5468- before copying solutions to the original solution candidate storage, infinite solution values can now be removed using SCIPcreateFiniteSolCopy()
5469- SCIPsortLongPtrRealBool(), SCIPsortLongPtrRealRealBool(), SCIPsortLongPtrRealRealIntBool() and corresponding
5472- SCIPwriteCliqueGraph() which allows to write a graph with node weights for fractional variables
5475 - SCIPconshdlrIncNCutsFound(), SCIPsepaIncNCutsFound() and SCIPsepaIncNCutsFoundAtNode() to increase the number of found cuts
5479 - New method SCIPconshdlrGetStrongBranchPropTime() which returns the time used for domain propagation methods
5481 - New method SCIPconsIsMarkedPropagate() which returns whether a constraint is marked for propagation.
5482 - New methods SCIPconsAddUpgradeLocks() and SCIPconsGetNUpgradeLocks() to increase or get the number of upgrade
5487 - New methods SCIPsparseSolGetFirstSol() and SCIPsparseSolGetNextSol() to get the first sparse solution
5489 - New methods for the `SCIP_QUEUE` data structure in pub_misc.h to handle a (circular) queue, e.g., SCIPqueueCreate(),
5490 SCIPqueueFree(), SCIPqueueInsert(), SCIPqueueRemove(), SCIPqueueFirst(), SCIPqueueIsEmpty(), SCIPqueueNElems()
5491 - New method SCIPgmlWriteNodeWeight() to write a node section including weight to a .gml graph file.
5492 - New methods for hash tables: SCIPhashtableRemoveAll(), SCIPhashtableGetNElements(), SCIPhashtableGetLoad()
5493 - New methods in pub_misc.h to handle a resource activity, e.g., SCIPactivityCreate(), SCIPactivityFree(),
5495 - New methods for digraphs: SCIPdigraphResize() to resize the graph and SCIPdigraphSetNodeDatas() and
5499 - New method SCIPpropGetStrongBranchPropTime() which returns the time spent by a domain propagator during strong branching.
5500 - New methods SCIPmarkConsPropagate() and SCIPunmarkConsPropagate() to (un)mark a constraint for propagation.
5503 - New methods SCIPchgRowLhsDive() and SCIPchgRowRhsDive() to change left and right hand side of a row during diving.
5504 - Added parameter `cutoff` to SCIPsolveDiveLP(), SCIPsolveProbingLP(), and SCIPsolveProbingLPWithPricing()
5505 which is a pointer to store whether the diving/probing LP was infeasible or the objective limit was reached.
5506 - SCIPgetFirstLP{Dual/Lower}boundRoot() which return the value of the first LP solved at the root node
5507 - SCIPgetNRootFirstLPIterations() which returns the number of LP iterations for the first LP solved at the root node
5508 - SCIPlpiGetNorms(), SCIPlpiSetNorms() and SCIPlpiFreeNorms() for getting the LP pricing norms from the LP
5510 - New method SCIPgetFirstLPTime() and SCIPgetNRootFirstLPIterations() to return time and iterations for the first LP solve
5511 and SCIPgetFirstLPDualboundRoot() and SCIPgetFirstLPLowerboundRoot() to return the first root LP dual and lower bound.
5512 - New method SCIPprintDualSol() which prints the dual solution for a pure LP (works only with preprocessing disabled).
5516 - the main output routine of message.c (`bufferMessage` now handleMessage) has been rewritten: it now does not need
5517 a copy of the string to be output anymore, which makes the code much simpler (and also faster); it is passed a
5531 - SCIPshrinkDisjunctiveVarSet(), which takes an set of variables with corresponding bounds and boundtypes, and
5532 tries to derive global boundchanges and also to shorten this set of variables by using cliqe, implication and
5539 - New method SCIPcreateFiniteSolCopy() to create a copy of a solution with infinite fixings removed.
5540 - New method SCIPadjustImplicitSolVals() which sets implicit integer variables to an integer value in the given
5542 - New method SCIPcopyOrig() to copy the original problem. Analoguosly, use SCIPcopyOrigProb(), SCIPcopyOrigVars(),
5543 and SCIPcopyOrigConss() to copy original problem data, variables, or constraints, respectively.
5547 - New method SCIPcopyImplicationsCliques() to copy implications and cliques to a copied SCIP instance.
5549 - Added parameter `endline` to SCIPprintDisplayLine() to switch printing a newline symbol at the end of the line.
5550 - New method SCIPgetNLimSolsFound() returning the number of feasible primal solution respecting the objective limit.
5561- add support for SOS1 and SOS2 constraints to AMPL interface (see `interfaces/check/testset/SOS/sos?a.mod` for example)
5562- added copy of GAMS interface from COIN-OR/GAMSlinks project; GAMS-reader in SCIP can now read model instances from .gms files
5563- beta version of a python interface for the scipoptsuite is now available under interfaces/python
5568- parameter `branching/scorefunction` has new value `q` for for `q`uotient branching score function
5569- replaced parameter `lp/checkfeas` by two parameters `lp/checkprimfeas` and `lp/checkdualfeas` to decide on primal and dual
5571- removed all local parameters `reading/(READER)/dynamic{conss|cols|rows}` and replaced them by global parameters
5573- changed default value of parameter `numerics/dualfeastol` to 1e-7 for safer dual bounds from LP solver
5574- new possible values for parameter `heuristics/shiftandpropagate/sortkey` for sorting variables w.r.t. their norm,
5578 - changed type of parameters `constraints/bivariate/scaling`, `constraints/quadratic/scaling`, `constraints/soc/scaling`
5580 - changed default for `constraints/{abspower,bivariate,nonlinear,quadratic,soc}/scaling` to off
5584 - changed default value of gomory cut separation parameter `separating/gomory/maxrank` from 0 to 3, to take also gomory
5590- `branching/checksol` and `branching/heursbsol` to specify whether the strong branching LP solution
5591 should be checked for feasibility and whether a simple rounding heuristic should be run on this solution
5593 investigated during strong branching (`u`p, `d`down, `a`uto) and whether always both children should be solved (only for
5594 strong branching with domain propagation, per default, the second child is not looked at when the first is infeasible)
5595- `conflict/fullshortenconflict` to decide whether we want to stop shortening a conflict set, when no
5597- `conflict/maxvarsdetectimpliedbounds` to decide whether the a valid conflict of what maximal length
5599- `constraints/{linear,knapsack}/detectcutoffbound` and `constraints/{linear,knapsack}/detectlowerbound`
5600 to enable/disable detection of constraint parallel to the objective function that will add an cutoffbound or an
5602- `constraints/and/upgraderesultant` to upgrade resultants of and constraints from binary to implicit binary variables, default is TRUE
5604- `constraints/indicator/scaleslackvar` for scaling of the slack variable in indicator constraints
5605- `constraints/indicator/trysolfromcover` for trying to construct a feasible solution from a cover
5606- `constraints/linear/checkrelmaxabs` for checking linear constraints with a side of 0.0 relative to
5607- `constraints/linear/detectpartialobjective` to enable/disable the detection of sub-equations of the objective function
5608- `constraints/logicor/strengthen`, should pairwise constraint comparison try to strengthen constraints by removing superflous non-zeros?
5611- `heuristics/<heurname>/lplimfac` for LNS heuristics to limit the number of LPs solved in a subproblem
5613- `heuristics/shiftandpropagate/fixbinlocks` for fixing binary variables with no locks in one direction to the corresponding bound
5614- `heuristics/shiftandpropagate/collectstats` which decides whether variable statistics are collected
5615- `heuristics/shiftandpropagate/impliscontinuous` to decide whether implicit integer variables are treated as continuous variables
5616- `heuristics/shiftandpropagate/preferbinaries` and `heuristics/shiftandpropagate/stopafterfeasible`,
5617 which decide whether binaries should be shifted first and the shifting should be stopped when no violations are left
5618- `lp/disablecutoff` to toggle usage of LP cutoff bound (0: enabled, 1: disabled, 2: auto = disabled if pricers are used)
5620- `misc/finitesolutionstore` to switch whether infinite fixings should be removed from solutions before
5622- `misc/permuteconss` and `misc/permutevars` to control whether variables and/or constraints should be permuted, if permutationseed != -1
5623- `presolving/components/feastolfactor` to increase the feasibility tolerance in all sub-SCIPs, when solving a component
5627- `reading/lpreader/aggrlinearization-ands` and `reading/mpsreader/aggrlinearization-ands` to enable/disable
5628 the printing of the weak or strict relaxation of and-constraints in LP and MPS format, respectively
5629- `reading/lpreader/linearize-and-constraints` and `reading/mpsreader/linearize-and-constraints` to
5631- `separating/feastolfac` to allow dynamic decrease of relaxation feasibility tolerance depending on feasibility to applied cuts,
5632 i.e., allow relaxation solutions to have a primal infeasibility of at most this factor times the infeasibility of applied cuts
5633- `separating/gomory/sidetypebasis` to decide whether the sides of ranged rows should be determined from the basis status
5634- `separating/oddcycle/cutthreshold` to run odd cycle separation if not enough cuts have been found
5637- `write/genericnamesoffset` when writing a generic problem to define an offset on the variable numbering
5658- default flag for ZIMPL is now `auto`, which means that it is built if and only if GMP is available (GMP=true)
5665- fixed bug when adding (global) clique, implications or variable bound information in solving stage that lead to
5666 global bound changes which contradict local bounds and therefore need to be stored as pending bound changes
5667- unlinking a solution now copies solution values smaller than SCIPepsilon() avoiding some feasible solution in the
5670- fixed bug when a bound change contradicts a local bound and is stored as pending, but the contradicting local
5671 bound becomes global afterwards (--> node where pending bound change is valid can be cut off)
5672- fixed statistics bug: externally given solutions and new solutions found while transforming existing ones
5687 - fixed bug that lead to resolving the LP after diving instead of restoring the buffered solution
5695 - fixed wrong presolving finished status which sometimes occurred when the time limit was hit during presolve
5701 - fixed bug in genvbounds propagator occurring when objective offset or scale changes after a restart
5702 - fixed bug in genvbounds propagator by replacing non-active variables on right-hand side after presolving
5706 - fixed several minor bugs with handling of memory when writing aggregated variables (reader_lp, reader_mps)
5709 - nonlinear readers now create auxiliary objective variables and constraints always as initial and not removable
5714 - do not multi-aggregate variables if the constant would be a huge value in order to avoid numerical troubles
5717 - improved handling of initial constraints: constraints which are initial, but added during the search to an already
5754- SCIPmarkColNotRemovableLocal() and SCIPmarkRowNotRemovableLocal() to forbid removal of an column/row
5776- fixed bug that duplicate solutions stopped copying of solutions to original solution candidate store
5777- forbid branching on variables with huge bounds; such huge values cannot be enumerated with fixed precision
5779- fixed bug that Ipopt's error message was not fully shown due to exiting before the message handler buffer was emptied
5780- unlinking a solution now copies solution values smaller than SCIPepsilon() avoiding some feasible solution in the
5782- allow to add columns (rows) with nonzero indices beyond current number of rows (columns) in SoPlex LPi
5788 - fixed bug in sepa_zerohalf.c where the maxcuts(root) parameters led to an invalid memory allocation call
5792 - fixed bug in heur_oneopt.c and heur_clique.c which was caused by side-effects when calling SCIPconstructLP(); when
5793 adding new variables in this method (e.g. adding new variables needed for a relaxation), this changes the variables
5796 - fixed bug in SCIPlpComputeRelIntPoint() with wrong iteration limit and with wrong recompution
5800 - fixed issues with ungraceful termination when encountering unsupported expression operands in AMPL interface
5804 - fixed potential performance issue with tree depth always assumed to be zero when propagating in probing mode
5808 - fixed bug in cons_and.c when a constraint was not correctly propagated which led to wrong dual-presolve reductions
5813 - fixed bug in presol_domcol: locks are now checked to see whether rounding was forbidden for a variable
5816 - fixed bug in reader_gms.c w.r.t. writing nonlinear expressions with polynomials with constants
5826 - fixed bug using a too hard comparison on the objective-infeasible-decision in constraint enforcement
5827 - fixed possible cycling in enforcement of nonlinear constraints due to too early removal of newly added cuts from LP
5829 - fixed bugs in cons_bivariate.c when the nonlinear function is not differentiable on the boundary of the domain
5831 - fixed bug in cons_integral: check integrality of implicit integer variables when a solution is checked for feasibility
5834 - fixed bug in intervalarith.c: bivariate quad. equations may have been solved wrongly if second variable is unbounded
5837 - fixed bug in sepa_zerohalf.c not copying the displays to the subscip, but still changing a display parameter there
5839 - fixed bug in sepa_closecuts: need to make sure that variable values of separation point satisfy bounds
5840 - fixed bugs in sepa_oddcylce: number of arcs have to be adjusted, handle implicit binary variables,
5850- added delayed cutpool which only gets separated if the sepastore is empty after a separation round
5867- when using an objective limit, heuristic characters are not displayed any longer for worse solutions
5884- fixed bug leading to removing a ranged row parallel to the objective function, although one of the sides was still needed
5888- fixed contra-intuitive behavior when using SCIP with objective limits and solution limit at the same time;
5889 SCIP now only stops when sufficiently many solutions better than the objective limit have been found
5892- fixed bug concerning different tolerances for reached objective limit in case of pricing with fastmip
5896 - ensure consistency of LP bounds during OBBT diving, i.e., that lower <= upper holds exactly
5898 - use tighter dual feasibility tolerance for LPs solved during optimization-based bound tightening
5907 - fixed bug resulting in trying to delete an upgraded linear constraint a second time in exitpre callback
5910 - fixed behaviour change of indicator constraint handler when solving another instance after solving one using the
5918 - fixed bug in CppAD when using signpower functions with expression pointers that do not fit into an unsigned int
5922 - methods SCIPlpiIs{PrimalFeasible,DualFeasible,DualUnbounded}() in SoPlex LPi now check that the LP is not perturbed,
5924 - fixed inconsistencies between methods SCIPlpiIs{PrimalFeasible,DualFeasible,Optimal,...} in SoPlex LPi
5927 - fixed bug when adding linear constraints with non active variables in solving process, during propagation this
5939 - fixed wrong solving status (OPTIMAL) in case an unbounded solution was provided or found by heuristic before presolve
5940 - fixed bug in heur_subnlp running with tightened tolerances: sumepsilon must be tightened like feastol and epsilon
5941 - fixed bug in nlp diving heuristic for fractional variables with values slightly outside of their domain
5946 - fixed feasibility decision bug when replacing inactive variables by their active counterparts, which might change the
5957- SCIPcomputeLPRelIntPoint() with normtype=`s` now uses homogenized LP for computing rel.int. point too and allow to
5960- digraph structure added to misc.c and pub_misc.h that can be used to handle directed graphs, compute undirected
5965- parameters can now be fixed, which means that their value cannot be changed unless they are unfixed, first;
5966 the fixing status of a parameter is copied to sub-SCIPs, which allows to ensure that certain parameters
5967 are also not changed when, e.g., heuristics change emphasis settings or also specific parameters
5968- automatic transfer of original solutions (e.g., provided by the user, from solution pool, after restart, from heuristic
5969 adding original solution during solve) to the transformed space (might fail due to, e.g., dual fixings)
5972- added zeroobj heuristic that solves a copy of the problem without an objective function and with quite strict limits
5974- complete reworking of the vbounds propagator: it now takes into account variable bounds, cliques and implications,
5975 stores bounds of variables which were changed and performs a forward propagation from these bounds, i.e., tries to
5976 derive new bounds for other variables; during propagation, bound changes are propagated in an (almost) topological order
5980 - new constraint handler `superindicator` for indicator constraints with slack constraints of arbitrary type
5982 - the conjunction and disjunction constraint handlers are now able to parse their CIP output format
5992 - added a presolving step in the disjunctive constraint handler, removing disjunction, where a sub-constraint was
5993 deleted, which means this sub-constraint is redundant, which again means it is always TRUE or will be enforced by
5995 - added new presolver convertinttobin, which converts bounded integer variables to their binary representation, e.g.
5996 for integer variable 0 <= x <= 10 the binary variables y0, y1, y2 and y3 are created, such that
5998 - added new presolver gateextraction, which tries to find and-gates/constraints which are linearized
5999 e.g. (x + y + z >= 1, x + y <= 1 and x + z <= 1 => x == AND(~y,~z)), in special cases it also detects set-partitioning
6000 constraints e.g. (x + y + z >= 1, x + y <= 1, x + z <= 1 and y + z <= 1 => x + y + z == 1));
6001 gate-extractor is also able to detect logicor constraints and set-packing/-partitioning constraints with the same
6003 - added new presolver components, that searches for independent components in the problem structure and solves
6004 these components as sub-SCIPs when they are small enough (per default <= 20 discrete variables, nodelimit of 10000)
6008 - CNF reader now creates feasibility instances per default, usage of an objective has to be set by a parameter
6015 - the statistics shows for a branching rule the number of calls for LP, extern and pseudo candidates
6016 - new switch `SCIP_STATISTIC` and new macros SCIPstatisticMessage(), SCIPstatisticPrintf() and SCIPstatistic() to output
6017 statistic and execute code lines which are only needed therefor. Works as `SCIP_DEBUG` and SCIPdebugXyz()
6018 - added statistics on the number of cuts/rows that have actually been applied to the lp for each constraint handler and separator;
6023 - new NLPI parameter `SCIP_NLPPAR_FASTFAIL` to enable convergence checks in NLP solver to stop early on seemingly
6030- if first root lp is solved and the optimality is rejected by SCIP, there won't be an unnecessary solving of the lp
6033- streamlined initlp functions in cons_indicator, cons_sos1, cons_sos2 (add rows only if needed)
6035- speed up in SCIPboolarrayExtend() in misc.c replacing a for loop with BMSmoveMemoryArray() call
6036- speed up in var.c changing some recursive calls into iterative calls and reducing the number of VARFIX event that are
6040- tighten primal and dual feasibility tolerances independently if they are not reached in LP solving
6044 - improved probing by ordering the variables differently and applying the one-branch before the zero-branch
6047 - improved scaling of linear constraints, linear constraints with integral variables will now be scale with
6048 1e+06/MAX(maximal absolute coefficient, 1.0) instead of 1e+03/MAX(maximal absolute coefficient, 1.0);
6050 - added clique presolving for and-constraints, which checks if two operands or one operand and the resultant are in a
6051 clique and then fixes the resultant to 0 and in the former case we can delete the and-constraint too
6053 - when all nonlinearities have been fixed and the number of nonfixed variables is 1 in cons_nonlinear/cons_quadratic/
6057 - automatically turn off separation in sepa_oddcycle if it was too unsuccessful within the last calls
6060 - changed emphasis settings: knapsack disaggregation is now allowed in fast presolving, CG-MIP separator disabled in
6068 - added parameters mincoveredrel and mincoveredabs to heur_undercover to only run if problem is sufficiently nonlinear
6070 - heur_undercover treats indicator constraints as nonlinear and fixes the binary variable for linearization
6076- the error messages are not handled via the message handler anymore; per default the error message a written to stderr
6082- allowed to start diving mode even if LP is not flushed, not solved, or not solved to optimality
6084- the resolve propagation methods for the constraint handler and propagator getting a new parameter called relaxedbd;
6089 - SoPlex LPI supports setting of `SCIP_LPPAR_DUALFEASTOL` when using SoPlex version 1.6.0.5 and higher.
6092 - Forbid problem modifications in `SCIP_STAGE_{INIT,EXIT}PRESOLVE` (see pre-conditions for corresponding methods in scip.h).
6096 - all objscip *.h file now use the default SCIP interface macros (this should avoid errors when changing the interface)
6101 - Added a propagation timing parameter `proptiming` to SCIP_DECL_CONSPROP(), giving the current timing at which
6103 - New optional callback methods in constraint handlers: `SCIP_DECL_CONSGETVARS` and `SCIP_DECL_CONSGETNVARS`.
6104 These callbacks, if implemented, should return an array of all variables and the number of all variables used
6108 - New NLPI callback SCIP_DECL_NLPISETMESSAGEHDLR() to set message handler in NLP solver interfaces.
6111 - Added a propagation timing parameter `proptiming` to SCIP_DECL_PROPEXEC(), giving the current timing at which this method is
6115 - added `basic` inclusion methods which have only fundamental data of the plug-ins as arguments; added setter functions
6116 for all non-fundamental callbacks of the plug-ins; the plug-in types with basic inclusion functions are:
6117 readers, constraint handlers, conflict handlers, presolvers, propagators, heuristics, separators, relaxation handlers,
6118 branching rules, node selectors and pricers; these methods should make the usage easier, sparing out optional callbacks and
6121 optional callbacks. For example SCIPsetConshdlrParse(), SCIPsetPropCopy() or SCIPsetHeurInitsol().
6124 - Added basic creation methods for all constraints types, e.g., SCIPcreateConsBasicLinear(); these methods should make the usage easier,
6130- tcliqueMaxClique has an additional parameter to store the number of used branch-and-bound nodes
6131- the code in `src/dijkstra` and `src/xml` has been changed to (increasingly) conform to the SCIP coding style;
6136 - Added parameter `relaxedbds` to conflict handler callback method SCIP_DECL_CONFLICTEXEC(). This array contains
6140 - Added a parameter `restart` to the SCIP_DECL_CONSEXITSOL() callback method, indicating whether this call was
6142 - Added a parameter `relaxedbd` to SCIP_DECL_CONSRESPROP() callback method. If explaining a given bound change
6144 - Removed parameters `isunbounded`, `isinfeasible` and `result` from SCIP_DECL_CONSINITPRE() and SCIP_DECL_CONSEXITPRE()
6145 callback methods. It is not allowed to determine unboundedness or infeasibility in these callbacks, anymore.
6146 - added a `SCIP_CONS*` parameter to SCIPcreateConsDisjunction() which can represent the linear relaxation of the whole
6149 - Renamed SCIPgetCountedSparseSolutions() to SCIPgetCountedSparseSols() in cons_countsols.{c,h}.
6152 - Changed the counting system within SCIP heavily. New method for `SCIP_SPARSESOL` usage, SCIPsparseSolCreate(),
6153 SCIPsparseSolFree(), SCIPsparseSolGetVars(), SCIPsparseSolGetNVars(), SCIPsparseSolGetLbs(), SCIPsparseSolGetUbs()
6157 - removed `targetscip` parameter from SCIPconvertCutsToConss(), now this function can only convert cuts on one instance,
6159 - added `ncutsadded` parameter to SCIPcopyCuts() to be able to store the number of copied/converted cuts
6160 - New functions SCIPcreateEmptyRowCons(), SCIPcreateEmptyRowSepa(), SCIPcreateRowCons(), and SCIPcreateRowSepa() that allow
6161 to set the originating constraint handler or separator of a row respectively; this is, for instance, needed for statistics
6162 on the number of applied cuts. If rows are created outside a constraint handler or separator use SCIPcreateRowUnspec() and
6164 - New functions SCIProwGetOrigintype(), SCIProwGetOriginCons(), and SCIProwGetOriginSepa() to obtain the originator
6170 - SCIPcolGetStrongbranchLPAge(), SCIPgetVarStrongbranchLPAge(), SCIPgetNLPs(), SCIPgetNPrimalLPs(), SCIPgetNDualLPs(),
6171 SCIPgetNBarrierLPs(), SCIPgetNResolveLPs(), SCIPgetNPrimalResolveLPs(), SCIPgetNDualResolveLPs(), SCIPgetNNodeLPs(),
6172 SCIPgetNNodeInitLPs(), SCIPgetNDivingLPs(), SCIPgetNStrongbranchs(), SCIPgetNRootStrongbranchs() now return a longint
6176 - New callback method SCIP_DECL_MESSAGEHDLRFREE() which is called when the message handler is freed.
6177 - The old callback method SCIP_DECL_MESSAGEERROR() was replaced by the callback method SCIP_DECL_ERRORPRINTING().
6178 - the follwing methods additionally need the SCIP pointer as parameter to make the output thread save:
6180 - the error printing method can be replaced using the method SCIPmessageSetErrorPrinting(); the default error message
6182 - Changed the message handler system within SCIP heavily such that it is thread-safe. SCIPcreateMessagehdlr() in
6183 scip.{c,h} was replaced by SCIPmessagehdlrCreate() in pub_message.h/message.c with a changed parameter list;
6187 - Error messages (SCIPerrorMessage()) are not handled via the message handler anymore; per default the error
6189 - the following methods need an additional message handler: SCIPdispLongint(), SCIPdispInt(), SCIPdispTime(), all message
6190 handler methods (see pub_message.h), SCIPhashtablePrintStatistics(), SCIPhashmapPrintStatistics(), SCIPlpiCreate()
6191 - SCIPprintCons() does not print termination symbol `;\n` anymore; if wanted, use SCIPinfoMessage() to print `;\n` manually
6192 - remove SCIPcolPrint() and SCIProwPrint(), please use SCIPprintCol() SCIPprintRow() see scip.h
6193 - method SCIPprintError() does not need the file stream anymore. The error is written via the error message callback.
6200 renamed SCIPhasContinuousNonlinearitiesPresent() to SCIPhasNLPContinuousNonlinearity() and allow call only during
6213 - Removed parameters `isunbounded`, `isinfeasible` and `result` from SCIP_DECL_PRESOLINITPRE() and
6214 SCIP_DECL_PRESOLSEXITPRE(). It is not allowed to determine unboundedness or infeasibility in these callbacks, anymore.
6218 - Added a parameter `restart` to SCIP_DECL_PROPEXITSOL() callback method, indicating whether this call was triggered
6220 - Added a parameter `relaxedbd` to SCIP_DECL_PROPRESPROP() callback method. If explaining a given bound change
6222 - Removed parameters `isunbounded`, `isinfeasible` and `result` from SCIP_DECL_PROPINITPRE() and
6223 SCIP_DECL_PROPEXITPRE() callback methods. It is not allowed to determined unboundedness or infeasibility in
6227 - The methods SCIPsortedvecInsert*() have an additional parameter which can be used to receive the position where
6229 - new parameter in SCIPcopyPlugins() to indicate whether the message handler from the source SCIP should be passed to the
6230 target SCIP (only the pointer is copied and the usage counter of the message handler is increased)
6232 should be passed to the target SCIP (only the pointer is copied and the usage counter of the message handler is
6243- setup timer to all plugins and therefore SCIP<plugin-type>GetSetupTime() methods in all pub_plugin-type.h to ask
6245- new GML(Graph Modeling Language) methods SCIPgmlWriteOpening(), SCIPgmlWriteCosing(), SCIPgmlWriteArc(), SCIPgmlWriteEdge(),
6249- SCIPcalcBinomCoef() in pub_misc.h and misc.c which calculates a binomial coefficient up to 33 over 16
6250- SCIPheurPassSolAddSol() in heur_trysol.c; solution which are passed via this method are just without any feasibility check
6251- SCIPgetGlobalPseudoObjval() which returns the global pseudo objective value which is all variables
6256- SCIPisUpdateUnreliable() to check whether an iteratively updated value should be recomputed from scratch
6258- SCIPisHugeValue() to check whether a value is huge and should be handled separately from other values
6259 (e.g., in activity computations) and SCIPgetHugeValue() to get the smallest value counting as huge
6268 - Added method SCIPisPresolveFinished() which returns whether the presolving process would be stopped after the
6269 current presolving round, given no further reductions will be found, can be used to ensure that a presolver is called very late
6272 - added forgotten implementation of SCIPfreeMemorySize(), SCIPfreeMemorySizeNull() in scip.h and BMSfreeMemorySize(),
6274 - SCIPmemccpy() in pub_misc.h and misc.c which copies either a specified number of charcters of a source
6276 - BMSmoveMemory(), BMSmoveMemoryArray(), BMSmoveMemorySize() and corresponding BMSmoveMemory_call() in
6280 - SCIPisConflictAnalysisApplicable() which return FALSE is the conflict will not runs; can be used
6282 - SCIPaddConflictRelaxedLb(), SCIPaddConflictRelaxedUb() and SCIPaddConflictRelaxedBd(); these methods
6283 can be used to give for a bound change which is part of an explanation a relaxed bound; this means the relaxed bound
6285 - SCIPisConflictVarUsed() returns TRUE if the given bound change is already part of the conflict set;
6287 - SCIPgetConflictVarLb() and SCIPgetConflictVarUb() returning the lower/upper bound of the given
6291 - SCIPvarsGetProbvar() in pub_var.h and var.c, which returns for a given array of variables the active, fixed
6293 - SCIPgetActiveVars() in scip.{h,c}, which returns for a given array of variables the active counterparts
6294 - SCIPgetNObjVars() which returns the number of variables which have a non-zero objective coefficient
6295 - SCIPenableVarHistory() and SCIPdisableVarHistory() which can be used to turn off and on the collection
6298 - SCIPvarGetAggregatedObj() which computes for a (not active) variable the corresponding objective value
6301 - SCIPvarGetBestRootSol(), SCIPvarGetBestRootRedcost(), SCIPvarGetBestRootLPObjval() which return the best
6302 combination for a variable w.r.t. root solution value, root LP objective value and root reduced cost
6303 - SCIPhaveVarsCommonClique() in scip.{h,c}, to check for common clique information on two given variables
6304 - added basic creation methods SCIPcreateVarBasic() and SCIPcreateProbBasic() and setter functions for
6309 - added public wrapper functions for calling constraint handler callback methods for a single constraint:
6310 SCIPactiveCons(), SCIPdeactiveCons(), SCIPinitlpCons(), SCIPsepalpCons(), SCIPsepasolCons(), SCIPpropCons(),
6316 - SCIPconshdlrIncNAppliedCuts() in cons.h to increase the number of applied cuts (used by sepastore.c)
6319 - New methods SCIPgetConsVars() and SCIPgetConsNVars() which return for a given constraint the involved variables and
6325 - SCIPmessagehdlrRelease() which releases and possibly frees a given message handler (decreases number of uses)
6331- in the interactive shell, parameters can be fixed and unfixed with `fix` (instead of `set`), e.g., `fix heuristics rens freq TRUE`;
6350- `constraints/%s/timingmask` for changing the timingmask for calling the propagtion method of all constraint plugins
6351- `constraints/and/dualpresolving` by default set to TRUE, enabling dual-presolving on and-constraints
6352- `constraints/indicator/{sepacouplingcuts,sepacouplinglocal}` to enable separation of (local) cuts
6353- `constraints/indicator/{maxsepacuts,maxsepacutsroot}` to restrict the number of separated cuts
6356 `constraints/setppc/cliqueshrinking`, first for enabling/disabling the clique lifting algorithm in cons_setppc.c,
6357 second parameter is for trying to create extra clique constraints in lifting algorithm, third parameter is for trying
6359- `limits/totalnodes` that allows to stop at the correct node if a restart occured; therefore the new
6361- `lp/{rootiterlim,iterlim}` to set a limit on the LP iterations spend in the initial root LP and each
6363- `misc/transorigsols` by default set to TRUE, that switches whether SCIP tries to transfer original
6364 solutions into the transformed space (in initsol and if a heuristic adds an original solution during solving)
6365- `numerics/hugeval` that defines the smalles value counting as huge (see new method SCIPisHugeValue())
6366- `numerics/recompfac` which denotes the factor, by which the absolute of an iteratively updated value has
6368- `presolving/convertinttobin/maxdomainsize` by default is set to `SCIP_LONGINT_MAX`, which deternmines
6370- `presolving/convertinttobin/onlypoweroftwo` by default is set to FALSE, that parameter allows you to
6372- `presolving/convertinttobin/samelocksinbothdirections` by default is set to FALSE, that parameter allows
6373 you to convert only integer variables to their binary representation, which have the same amount of up- and downlocks
6374- `presolving/gateextraction/sorting` by default is set to 1, that parameter determines if you want to try
6375 to extract big-gates(-1) or small-gates(1) at first by ordering bigger/smaller logicor constraint up front, or use
6377- `presolving/gateextraction/onlysetpart` by default is set to FALSE, that parameter allows you to
6379- `presolving/gateextraction/searchequations` by default is set to TRUE, that parameter allows you to
6381- `propagating/%s/timingmask` for changing the timingmask for calling the propagtion method of all propagator plugins
6382- `propagating/probing/maxdepth` to set the maximal depth until the probing propagation is executed
6383- `reading/cnfreader/useobj` to state whether an artificial objective, depending on the number of clauses
6384 a variable appears in, should be used, by default set to FALSE, old default behavior of reader corresponds to TRUE
6386- `separating/closecuts/maxlpiterfactor` for iteration limit in relative interior point computation
6394- added new stages `SCIP_STAGE_INITPRESOLVE`, `SCIP_STAGE_EXITPRESOLVE` and `SCIP_STAGE_FREE`; renamed `SCIP_STAGE_FREESOLVE`
6396- Changed the counting system within SCIP heavily. `SPARSESOLUTION` was renamed to `SCIP_SPARSESOL` and moved
6411- CppAD source code is now distributed with SCIP (`src/cppad`), so that `lib/cppad` is not used anymore;
6420- fixed bug in solve.c, applied bounding for the initial lp was only done if root-lp-solution was valid but another
6423- all plugins that solve sub-SCIPs now do not stop the whole solution process if there has been an error
6427 - fixed bug in shiftandpropagate w.r.t. SCIPconstructLP() which can have the side effect that variables are created
6428 - method SCIPvarGetProbvarSum() (and thus also SCIPgetProbvarSum()) returns +/-infinity if the variable resolves to a
6429 variable fixed to +/-infinity (depending on the sign of the scalar) but does not multiply with the scalar, anymore
6432 - fixed bug in sol.c with requesting values of transformed variables in original solution; previously this had only
6434 - fixed several bugs writing an mps file in the reader_mps.c, e.g. writing fixed variables which are not (yet) removed
6435 and writing integer variables even with an objective value of 0, if they only exist in non-linear constraints
6442 - fixed potential bugs in shiftandpropagate heuristic concerning the transformation update of a variable with free status
6447 - fixed bug in simple rounding heuristic with column generation for variables with strictly positive lower bound
6453 - fixed bug in Cplex LPI: after running simplex, solisbasic flag was always true, which might be wrong if Cplex hit a
6457 - fixed bug in SoPlex LPI where objective sense was not correct after reading LP from file in SCIPlpiReadLP()
6462 - fixed bug in cons_linear concerning huge activity values: besides infinite contributions, we now also treat huge
6463 contributions separately, count their occurences in a constraint and provide a relaxed activity value
6465 - fixed count of propagations in cons_indicator and only try to propagate if variables are not yet fixed
6466 - fixed some bugs in cons_disjunction.c (wrong assert, forgotten deletion of constraint, wrong SCIPreleaseCons() call)
6485- fixed performance issue in debug mode, where SCIPvarGetLPSol_rec() calculated a value to often, which in the end lead
6487- force cuts from linearizations of convex constraint in NLP relax solution into LP, thus allowing faster proving of
6493- fixed bug in varAddTransitiveImplic() in var.c, when adding implications on special aggregated, namely negated, variables
6496- fixed bug in SCIPsolveKnapsackExactly(), trying to allocate too much memory which led to an overflow and later to a segmentation fault
6500 - fixed bug in heur_undercover.c, where a variable with fixed bounds but not of status `SCIP_VARSTATUS_FIXED` was wrongly handled
6505 - fixed bug in cons_quadratic where bounds on activity of quadratic term were not always invalidated when quadratic variables were removed
6506 - fixed bug in cons.c, where after a restart the arrays for all initial constraints were corrected in the initsol process
6507 instead of the initpre process, this was to late because you might change the status in presolving which lead to an assert()
6511 - fixed bug in cons_xor.c which did not copy the artificial integer variable (used for the lp relaxation)
6519- the pseudo objective propagator can be forced to propagate if active pricers are present; this can be done
6520 if for all (known or unknown) variables follows that: they have positive (negative) objective coefficient
6527- improve SCIPintervalSolveBivariateQuadExpressionAllScalar() for ax=0 case if x has 0 in the interval for the linear coef.
6528- better domain propagation for quadratic constraints that consist of `non-overlapping` bilinear terms only
6529- ensure that a fixing of a variable in an abspower constraint is propagated to a fixing of the other variable
6530- improvements in undercover heuristic, e.g., bound disjunction constraints are considered when setting up the covering problem
6537- changed parameter `propagating/pseudoobj/maxcands` to `propagating/pseudoobj/minuseless` (see prop_pseudoobj.c)
6552- fixed handling of unbounded solutions, including double-checking their feasibility and that the primal ray is a
6553 valid unboundedness proof and reoptimizing the LP with modified settings if the solution is not feasible
6562 - fixed bug in reader_mps.c: INTEND marker is now also written, if COLUMNS section ends with non-continous variables
6579- New original solution storage capability, which allows transfering solutions between SCIP runs
6583- interval arithmetics for power, log, exp, bivariate quadratic expressions should be rounding safe now
6584- LP iterations in resolving calls can now be limited w.r.t. the average number of LP iterations in previous calls
6585 (after the root node); this is currently only done for the initial LP solve at a node and the corresponding parameter
6587- it is now possible in `SCIP_STAGE_TRANSFORMED` to call SCIPaddVarLocks() (i.e. to lock variables in initialization methods)
6588- changed computation of optimality gap which is now done in the same way as described in the MIPLIB 2010 paper: the gap
6589 is 0, if primalbound (pb) and dualbound (db) are equal (within tolerances), it is infinity if pb and db have opposite
6590 signs and (this changed), if both have the same sign, the difference between pb and db is devided by the minimum of
6592- functionality to use the bound flipping ratio test of SoPlex is available (requires at least version 1.5.0.7)
6593- there exists now a solution candidate store for the original problem; during transformation these solutions are tried;
6594 during free the transformed problem the best feasible solution of the transformed problem are copied to the solution
6595 candidate store of the original problem; this useful if you solve several problems iteratively, solutions get now
6597- reworked concept of lazy bounds: they can now also be used for problems where constraints and objective together
6598 ensure the bounds; to allow this also for diving heuristics that might change the objective and thus destroy this
6603- all C template files are now called <plugintype>_xyz.{c,h} instead of <plugintype>_xxx.{c,h}
6606 - reorganized computation of scores in cut filtering: instead of the computation at the time of addition, scores are now
6607 only computed w.r.t. the current LP solution and when cut filtering is performed; one can now fill the cut storage
6609 - New separator for close cuts and a new function to compute relative interior points of the LP
6610 - added first version of sepa_closecuts.{c,h} to separate cuts w.r.t. a point that is closer to the integral polyhedron
6613 - implement possibility to force a restart in cons_indicator if enough indicator variables have been fixed
6618 - added beta version of variable deletion: for branch-and-price application, variables can now be completely deleted
6619 from the problem; variables that are deletable have to be marked with SCIPvarMarkDeletable(), constraint handlers can
6620 implement the new `SCIP_DECL_DELVARS` callback that should remove variables from the constraints; at the moment, only
6621 the linear, the setppc and the knapsack constraint handler support this callback; furthermore, when using this
6622 feature, all used plugins have to capture and release variables they store in their data, this is currently only done
6623 for the aforementioned constraint handlers as well as the and, the varbound and the logicor constraint handler; for
6627 - added constraint handler for (absolute) power constraints (cons_abspower.{c,h}) to handle equations like z = sign(x)abs(x)^n, n > 1
6630 - new heuristic vbounds which use the variables lower and upper bounds to fix variable and performs a neighborhood search
6636 - added writing for pip files (linear, quadratic, polynomial nonlinear, polynomial abspower, polynomial bivariate, and
6642 - Extended reader for CIP models to handle various new constraints, including all types of linear constraints
6644 - changed opb(/wbo) reader which now creates pseudoboolean constraints instead of linear- and and-constraints, only a
6645 non-linear objective will create and-constraints inside the reader and while reading a wbo file the topcost constraint
6649 - Removed method SCIPreadSol(); call solution reading via SCIPreadProb() which calls the solution reader for .sol files.
6652 - Major extensions for nonlinear CIP, new option for n-ary branching on nonlinear variables (within pseudocost branching rule)
6653 - added BETA version of constraint handler for nonlinear constraints (cons_nonlinear.{c,h}) to handle nonlinear
6654 equations given by algebraic expressions using operands like addition, multiplication, power, exp, log, bivariate
6656 - added BETA version of constraint handler for bivariate nonlinear constraints (cons_bivariate.{c,h}) to compute tight
6657 estimators for 1-convex and convex-concave bivariate nonlinear functions (given as expression tree)
6664 - new presolving step `removeConstraintsDueToNegCliques` in locigor constraint handler which updates logicor constraints
6666 - new presolving step in cons_knapsack (detectRedundantVars, deleteRedundantVars) which determines redundant variables
6668 - cons_logicor is now able to replace all aggregated variables in presolving by there active or negation of an active
6674 - added counter for number calls and timing for resolve propagation calls for constraint handler and propagators
6676 - the probing presolver presol_probing.{c.h} is now a propagator prop_probing.{c,h}, all corresponding parameters moved as well
6677 - the redcost separator sepa_redcost.{c.h} is now a propagator prop_redcost.{c,h}, all corresponding parameters moved as well
6678 - outsourced propAndSolve() method in solve.c which calls domain propagation and solving of the lp and relaxation
6684 - Constraints section has new column named \#ResProp which show the number of resolve propagation calls of certain
6686 - Constraint Timing section has a new column \#ResProp which states the time spend in resolve propagation method of the
6689 - new section `Propagator Timing` which shows the time spend in different callbacks of the propagator
6690 - rearranged first two columns of Propagators section; \#Propagate and \#ResProp stating the number of call for
6691 propagation and resolve propagation; the Time column is moved into the new section Propagator Timings
6692 - Constraints section has new column named `MaxNumber` which the maximum number of active constraint of a certain
6694 - added two columns `Time-0-It` and `Calls-0-It` in the LP section which states the number of LP call and time spend for
6696 - The display of statistics for presolvers, propagators, constraints and LP solving has changed.
6701- Reorganized filtering process of separation storage (allows adding cuts for different solutions)
6706- child selection rules now get also applied when the relaxation value is equal to the bound changed in branching
6708- for continuous variables, the pseudo costs update and the pscost branching rule now use the same strategies for
6714- used SCIPallocMemoryArray() instead of SCIPallocBlockMemoryArray() which leads to fewer memory consumption in
6715 getLiftingSequence() in cons_knapsack, also improved cache use bei using an extra array instead blockmemory chunks
6716- switched FASTMIP from 1 to 2 for CPLEX and changed default pricing rule back to steepest edge pricing instead of
6720- considering inactive variables in undercover heuristic; limiting effort for solving covering problem
6721- if during probing mode the LP relaxation is solved from scratch, e.g., when calling the shiftandpropagate heuristic
6722 before root node solving, then we clear the resulting LP state, since it might be a bad starting basis for the next
6724- included LP simplifier into SoPlex LP interface, applied when solving from scratch (lpi_spx.cpp)
6725- new presolving steps in varbound constraint handler, tightening bounds, coefficients, sides and pairwise presolving
6731 - The emphasis setting types now distinguish between plugin-type specific parameter settings (default, aggressive, fast, off),
6732 which are changed by SCIPsetHeuristics/Presolving/Separating(), and global emphasis settings (default, cpsolver, easycip,
6737- added propagator timings `SCIP_PROPTIMING_BEFORELP`, `SCIP_PROPTIMING_DURINGLPLOOP` and `SCIP_PROPTIMING_AFTERLPLOOP` for
6738 all propagation callbacks (see propagators and constraint handlers) which lead to calling the propagation methods of a
6742 - Added parameter `separate` to conflict handler callback method SCIP_DECL_CONFLICTEXEC() that defines whether the conflict
6746 - The new constraint handler callback SCIP_DECL_CONSDELVARS() is called after variables were marked for deletion.
6747 This method is optional and only of interest if you are using SCIP as a branch-and-price framework. That means,
6748 you are generating new variables during the search. If you are not doing that just define the function pointer
6750 If this method gets implemented you should iterate over all constraints of the constraint handler and delete all
6754 - The callbacks SCIP_DECL_NLPIGETSOLUTION() and SCIP_DECL_NLPISETINITIALGUESS() got new parameters to get/set values of
6756 - The callback SCIP_DECL_NLPICOPY() now passes the block memory of the target SCIP as an additional parameter.
6759 - New parameters `isunbounded` and `isinfeasible` for presolving initialization (SCIP_DECL_CONSINITPRE(),
6760 SCIP_DECL_PRESOLINITPRE(), SCIP_DECL_PROPINITPRE()) and presolving deinitialization (SCIP_DECL_CONSEXITPRE(),
6762 constraint handlers and propagators, telling the callback whether the problem was already declared to be
6763 unbounded or infeasible. This allows to avoid expensive steps in these methods in case the problem is already
6774 are virtual functions. That means, if you are not adding the new parameters, your code will still compile, but these methods are not executed.
6775 - Propagators are now also called in during presolving, this is supported by the new callback methods SCIP_DECL_PROPINITPRE(),
6777 - The new parameters `nnewaddconss` and `naddconss` were added to the constraint handler callback method SCIP_DECL_CONSPRESOL()
6778 and the presolver callback method SCIP_DECL_PRESOLEXEC(). These parameters were also added to corresponding C++ wrapper
6782 - The callback SCIP_DECL_PROBCOPY() got a new parameter `global` to indicate whether the global problem or a local version is copied.
6786- implemented SCIPlpiGetPrimalRay() in SoPlex interface that has become available with SoPlex version 1.5.0.2
6788- various extensions and modifications for expressions and expression trees (too much to state here)
6789- The result value `SCIP_NEWROUND` has been added, it allows a separator/constraint handler to start a new separation round
6791- SCIPcalcNodeselPriority() got a new parameter `branchdir`, which defines the type of branching that was performed: upwards, downwards, or fixed.
6794 - Method SCIPincludeQuadconsUpgrade() of quadratic constraint handler got new parameter `active` to indicate whether the upgrading method is active by default.
6795 - Method SCIPseparateRelaxedKnapsack() in knapsack constraint handler got new parameter `cutoff`, which is a pointer to store whether a cutoff was found.
6798 - SCIPcreateNLPSol() now creates a `SCIP_SOL` that is linked to the solution of the current NLP relaxation
6799 - Various types and functions dealing with polynomial expressions have been renamed to use the proper terms `monomial` and
6800 `polynomial` in nonlinear expressions (nlpi/∗expr*); results in many renamings of types, structs and methods.
6801 - The methods SCIPnlpGetObjective(), SCIPnlpGetSolVals(), and SCIPnlpGetVarSolVal() have been removed, use SCIPgetNLPObjval(),
6804 - Removed methods SCIPmarkRequireNLP() and SCIPisNLPRequired(), because the NLP is now always constructed if nonlinearities
6806 - SCIPgetNLP() has been removed and NLP-methods from pub_nlp.h have been moved to scip.h, which resulted in some renamings, too.
6808 - renamed SCIPexprtreeEvalIntLocalBounds() to SCIPevalExprtreeLocalBounds() and now located in scip.h.
6809 - renamed SCIPexprtreeEvalIntGlobalBounds() to SCIPevalExprtreeGlobalBounds() and now located in scip.h.
6810 - The functions SCIPnlpiGetSolution() and SCIPnlpiSetInitialGuess() got additional arguments to get/set dual values.
6811 - The method SCIPgetNLPI() got a new parameter `nlpiproblem`, which is a pointer to store the NLP solver interface problem.
6814 - SCIPincludeProp() got additional parameters to set the timing mask of the propagator and the new callbacks and parameters
6816 - SCIPincludeConshdlr() got additional parameters to set the variable deletion callback function and the timing mask for
6822 - The method SCIPcopyProb() got a new parameter `global` to indicate whether the global problem or a local version is copied.
6825 - The methods SCIPwriteVarName(), SCIPwriteVarsList(), and SCIPwriteVarsLinearsum() got a new boolean parameter `type`
6827 - The methods SCIPparseVarName() and SCIPparseVarsList() got a new output parameter `endptr` that is filled with the position
6829 - The method SCIPwriteVarsList() got additionally a new parameter `delimiter` that defines the character which is used for delimitation.
6832 - SCIPmarkDoNotMultaggrVar()/SCIPvarMarkDoNotMultaggr() now allow to mark negated and aggregated variables
6833 - SCIPgetVarCopy() got a new parameter `success` that will be FALSE if method is called after problem creation stage and no hash map is
6835 - SCIPchgVarType() got an extra boolean parameter to store if infeasibility is recognized while upgrading a variable from continuous
6837 - SCIPdelVar() got a new parameter `deleted`, which stores whether the variable was successfully marked to be deleted.
6841- information about the quality of the solution of an LP (currently the condition number of the basis matrix) can now be:
6842 + requested from the LPI (currently only available for CPLEX): methods SCIPlpiGetRealSolQuality() and
6843 + SCIPprintLPSolutionQuality() command display lpsolquality in interactive shell display column lpcond to show
6846- SCIPsortRealRealIntInt() and corresponding sorting/inserting/deleting methods in pub_misc.h and necessary defines in misc.c
6847- SCIPsortRealIntLong(), SCIPsortPtrPtrRealInt() and corresponding sorting/inserting/deleting methods in
6850- SCIPstartSolvingTime() and SCIPstopSolvingTime() which can be used to start or stop the solving time clock
6851- SCIPstrToRealValue() and SCIPstrCopySection() in pub_misc.h; these methods can be used to convert a string
6853- SCIPgetBinvarRepresentatives() which gets binary variables that are equal to some given binary variables,
6854 and which are either active, fixed, or multi-aggregated, or the negated variables of active, fixed, or multi-aggregated variables
6855- SCIPhasPrimalRay() and SCIPgetPrimalRayVal() that return whether a primal ray is stored and which value a
6859- SCIPpropInitpre(), SCIPpropExitpre(), SCIPpropPresol() which initializes, exists and executes the presolving phase
6861- SCIPsolGetOrigObj() in pub_sol.h which returns for a solution in the original problem space the objective value
6866- SCIPsepastoreRemoveInefficaciousCuts() to remove non-efficious cuts from the separation storage
6870 - SCIPnodesSharePath() in pub_tree.h that determines whether two nodes are on the same leaf-root path
6871 - SCIPnodesGetCommonAncestor() in pub_tree.h that finds the common ancestor node for two given nodes
6875 - SCIPparseVarsLinearsum(), SCIPparseVarsPolynomial() and SCIPwriteVarsPolynomial() and for writing and
6879 - SCIPcreateMesshdlrPThreads() and SCIPfreeMesshdlrPThreads() for allocating and deleting necessary memory
6881 - SCIPallocClearMemoryArray() and BMSallocClearMemoryArray() for allocating cleared memory arrays in scip.h and memory.h
6884 - SCIPintervalPowerScalarInverse() to solve an equation y = x^p for given bounds on y and scalar exponent p
6886 - SCIPintervalSolveBivariateQuadExpressionAllScalar() to compute tight bounds on the solutions of a bivariate quadratic equation
6889 - SCIPcomputeVarCurrent{L,U}b{Local,Global}() to compute local or global lower or upper bounds of a
6892 - SCIPgetNegatedVars() which returns all negated variables for a given array of variables, if the negated
6894 - SCIPgetNTotalVars() that returns the total number of created vars, icluding variables that were deleted in the meantime
6895 - SCIPvarGetHashkey(), SCIPvarIsHashkeyEq(), SCIPvarGetHashkeyVal() in pub_var.h which can be used for `SCIP_HASHTABLE` of variables
6896 - SCIPvarGetNBdchgInfosLb() and SCIPvarGetNBdchgInfosUb() in pub_var.h returning the number of lower or upper bound changes on the active path
6897 - SCIPvarGetBdchgInfoLb() and SCIPvarGetBdchgInfoUb() returning the bound change information at the given position
6900 - SCIPvarMarkNotDeletable() that marks a variable to be non-deleteable (used within SCIP for forbidding
6902 - SCIPvarIsDeletable() that returns whether a variable is marked to be deletable (each variable is per default non-deletable)
6905 - SCIPgetNLPVarsNonlinearity() to get for each variable in the NLP the number of NLP rows in which this variable appears in a nonlinear way
6906 - SCIPnlrowGetDualsol(), SCIPgetNLPVarsLbDualsol(), SCIPgetNLPVarsUbDualsol() to retrieve dual values from an NLP solution
6911 - SCIPpropGetPresolPriority(), SCIPpropGetPresolTime(), SCIPpropWasPresolDelayed(), SCIPpropGetNFixedVars(),
6912 SCIPpropGetNAggrVars(), SCIPpropGetNChgVarTypes(), SCIPpropGetNChgBds(), SCIPpropGetNAddHoles(), SCIPpropGetNDelConss(),
6913 SCIPpropGetNAddConss(), SCIPpropGetNUpgdConss(), SCIPpropGetNChgCoefs(), SCIPpropGetNChgSides(), SCIPpropGetTimingmask(),
6915 - SCIPpropGetNRespropCalls() and SCIPconshdlrGetNRespropCalls() which return the number of times a
6917 - SCIPpropGetRespropTime() and SCIPconshdlrGetRespropTime() which return time spent for resolving a
6919 - SCIPcheckCumulativeCondition(), SCIPpropCumulativeCondition() and SCIPrespropCumulativeCondition() in
6920 cons_cumulative.h; these methods can be used to check, propagate, or resolve the propagation of a cumulative condition
6921 - SCIPpropagateCutoffboundVar() in prop_pseudoobj.h which can be used to propagate the cutoff bound for the given variables
6924 - added to linear constraint handler SCIPsetUpgradeConsLinear(), which (de-)activates the possibility to
6926 - SCIPconvertCutsToConss() and SCIPcopyCuts() to scip.{c,h} for copying cuts to linear constraints
6929 - SCIPconshdlrGetNAddConss() which returns the number of added constraints during presolving by a given constraint handler
6930 - SCIPpresolGetNAddConss() which returns the number of added constraints during presolving by a given presolver
6934- New funtionalities in the interactive shell (modify current CIP instance, write NLP relaxation)
6936- new dialog `change freetransproblem` to free transformed problem in the interactive shell before changing the problem
6948- moved parameters for pseudoboolean constraints from opb-reader to pseudoboolean constraint handler
6949- changed possible parameter values of `branching/pscost/strategy` from `bri` to `cdsu`: default is now `u`, i.e., to
6950 estimate the LP gain by a branching for external branching candidates (esp. continuous variables) the same way as
6952- added possible value `d` for `constraints/soc/nlpform` to choose a convex division form for SOC constraint
6954- renamed parameter `constraints/quadratic/linearizenlpsol` to `constraints/quadratic/linearizeheursol` and do
6956- renamed parameter `constraints/quadratic/mincutefficacyenfo` to `constraints/quadratic/mincutefficacyenfofac` and
6958- removed fastmip setting 2, which means the dualsolution would not be calculated but because SCIP always asks for the
6967- `branching/delaypscostupdate` to delay the update of pseudo costs for continuous variables behind the separation round: default is TRUE
6968- `branching/lpgainnormalize` to set the strategy how the LP gain for a continuous variable is normalized when updating the
6969 variables pseudocosts: default is to divide LP gain by reduction of variable's domain in sibling node
6970- `branching/pscost/nchildren` and `branching/pscost/nary*` to enable and customize n-ary branching on
6972- `conflict/bounddisjunction/continuousfrac` which defines the maximum percantage of continuous variables
6975- `constraints/{nonlinear,quadratic,soc,abspower}/sepanlpmincont` to specify minimal required fraction
6976 of continuous variables in problem to enable linearization of convex constraints in NLP relaxation solution in root
6977- `constraints/indicator/forcerestart` and `constraints/indicator/restartfrac` to control forced restart in cons_indicator
6978- `constraints/indicator/generatebilinear` to generate bilinear (quadratic) constraints instead of indicator constraints
6979- `constraints/indicator/maxconditionaltlp` to enable a quality check for the solution of the alternative LP
6980- `constraints/indicator/removeindicators` to remove indicator constraints if corresponding vub has been added
6981- `constraints/linear/nmincomparisons` and `constraints/linear/mingainpernmincomparisons` to influence
6983- `constraints/pseudoboolean/decompose`, for pseudoboolean constraints to transform pseudoboolean constraints into linear- and and-constraints
6984- `constraints/quadratic/binreforminitial` to indicate whether linear (non-varbound) constraints added due to reformulation of products with
6985 binary variables in a quadratic constraints should be initial (if the quadratic constraint is initial), default is FALSE
6986- `constraints/quadratic/checkfactorable` to disable check for factorable quadratic functions (xAx = (ax+b)*(cx+d)) in quadratic constraints
6987 and not to use of this information in separation (generates lifted tangent inequalities according to Belotti/Miller/Namazifar if also
6989- `constraints/quadratic/disaggregate` to split a block-separable quadratic constraint into several quadratic constraint
6990- `constraints/quadratic/maxproprounds` and `constraints/quadratic/maxproproundspresolve` to limit the
6991 number of propagations rounds for quadratic constraints within one propagation round of SCIP solve or during SCIP presolve
6992- `constraints/varbound/presolpairwise` that allows pairwise presolving of varbound constraints, default is TRUE
6993- `heuristics/shiftandpropagate/onlywithoutsol` to switch whether the heuristic should be called in case a primal solution is already present
6994- `limit/maxorigsol` which defines the size of the solution candidate store (default value is 10)
6995- `lp/resolverestore` controlling how LP solution is restored after diving: if TRUE by resolving them,
6996 if FALSE by buffering them; if `lp/freesolvalbuffers` is TRUE, we free the buffer memory each time (FALSE by default)
6997- `lp/clearinitialprobinglp` to clear LP state at end of probing mode, if LP was initially unsolved
6998- `lp/resolveitermin` and `lp/resolveiterfac` to limit the number of LP iterations in resolving calls:
6999 resolveiterfac is a factor by which the average number of iterations per call is multiplied to get the limit, but the
7000 limit is at least resolveitermin; default is -1 (no limit) for resolveiterfac and 1000 for resolveitermin
7001- `lp/resolverestore` and `lp/freesolvalbuffers` possibility to buffer and restore LP solution after diving without
7003- `misc/improvingsols` which states whether only solutions which have a better (or equal) primal bound
7004 as the best known are checked; this is of interest if the check of a solution is expensive; default value is FALSE
7005- `misc/resetstat` which state if the statistics should be reseted if the transformed problem is freed
7006 (in case of a benders decomposition this parameter should be set to FALSE) default value is TRUE
7007- `nodeselection/restartdfs/countonlyleafs` in node selector restart dfs which can be used to select the counting process of processed nodes
7009- `pricing/delvars` and `pricing/delvarsroot` that define, whether variables created at a node / the
7010 root node should be deleted when the node is solved in case they are not present in the LP anymore
7011- `propagating/%s/maxprerounds` for all propagators which allows to change to maximal number of rounds
7013- `propagating/%s/presoldelay` for all propagators which allows to change if the presolving call of the given propagator should be delayed
7014- `propagating/%s/presolpriority` for all propagators which allows to change the priority of calling the given propagator
7015- `propagating/pseudoobj/propfullinroot` for allowing to propagate all variables in the root node,
7017- `reading/gmsreader/bigmdefault` and `reading/gmsreader/indicatorreform` reader_gms is now able to write indicator
7019- `reading/gmsreader/signpower` to enable writing sign(x)abs(x)^n as the rarely used gams function signpower(x,n)
7027- add expression graph data structures and methods for reformulation, domain propagation, simple convexity check on
7034- added scripts check_gams.sh, evalcheck_gams.sh and check_gams.awk and target `testgams` in Makefile
7036- added Makefile option `VALGRIND=true` to enable running the SCIP checks (make test) through valgrind; valgrind errors
7038- moved *.test and *.solu files to subdirectory testset in check directory and adjusted test scripts
7046 - via `PARASCIP=true` as a `Makefile` option it is possible to compile SCIP threadsafe in DEBUG-mode, (in OPT-mode it's
7048 - the `make` parameter `PARASCIP=true` leads to threadsafe message handlers where you need to call
7049 SCIPcreateMesshdlrPThreads() and SCIPmessageSetHandler()/SCIPmessageSetDefaultHandler() and SCIPfreeMesshdlrPThreads();
7051 - new variable $(INSTALLDIR) in Makefile which define installation directory for the libraries, $(INSTALLDIR)/lib/,
7052 binary, $(INSTALLDIR)/bin and include headers, $(INSTALLDIR)/include, the default value is the empty string
7057 - to link against IPOPT, only the base directory of an Ipopt installation need to be specified now; additionally, if
7058 building with gnu compilers, the Ipopt libraries directory is stored in the SCIP binary, which should make it easier
7060 - to link against Clp, only the base directory of an Clp installation needs to be specified now
7065 - new target in Makefile `install` performs `make` and copies using the install command the include headers, binary, and
7067 - new target in Makefile `uninstall` removes libraries, binary and include headers form `INSTALLDIR`
7068 - removed target `lintfiles`, this target is now imitated by the `lint` target and a none empty variable `FILES`
7073- fixed bug in copying if the target SCIP already is in solving stage: it might be that the copy of a variable cannot be found/created
7076- LP solution status is now checked when checking root LP solution. Otherwise, due to different time measurements, it
7077 might happen that the LP solving was stopped due to the time limit, but SCIP did not reach the limit, yet.
7078- fixed bug trying to tighten multiaggregated variables, which have only one active representation and this variable is already tightened
7080- fixed issue with interactive shell in case (user) plugins are included after the default plugins
7081- fixed bug where mutiaggregating leads to an aggregation and both variables were of implicit or integral type
7086 - fixed bug in debug.c: removed tree nodes had not been checked if they were pruned due to an incumbent solution found by a diving heuristic
7089 - fixed bug which occured when changing a bound in the solving stage when this variables got upgraded from continuous to
7090 a integer type, where the bounds of this variable were still not integral; due to that SCIPchgVarType() has changed (see above)
7091 - fixed bug in handling of lazy bounds that resulted in putting the bounds explicitly into the LP
7094 - fixed assert in sepa_clique.c which is currently not valid because implicit binary variables in cliques are ignored
7095 - fixed bug in sepa_zerohalf.c concerning inconsistent construction of solution array of variables and fixed wrong assert about variable bounds
7098 - fixed not correct merging of variable in logicor constraint handler and changed the name of the method to a common
7101 - fixed bug in cons_linear.c, when scaling a constraint maxabscoef was not set correctly, furthermore the correction of
7103 - fixed bug in cons_indicator.c trying to copy a constraint where the pointer to the linear constraint did not point to
7104 the already transformed linear constraint (, happend when SCIPcopy() is used after transforming before presolving)
7105 - fixed numerical bug in linear constraint handler: polishing of coefficients after fixing variables led to wrong
7107 - fixed bug in cons_bounddisjunction where branching on multiaggregated variables was tried while all aggregation variables are fixed
7108 - fixed bug in presolving of cons_logicor.c: adding variable implications can lead to further reductions; added call to applyFixings()
7114 - fixed bug in reader_mps.c: if a variables first occurence is in the bounds section, then the corresponding variable bound was lost
7120 - fixed bug in copying NLPI interfaces that use block-memory (NLPI copy used block memory from source SCIP)
7123 - fixed memory leak in coloring part of maximum clique algorithm (tclique_coloring.c) in a better way
7126 - fixed bug which occured when the dual farkas multipliers were not available in the lpi because the LP could only be
7128 - fixed bug in ZI round heuristic that led to infeasible shiftings for numerically slightly infeasible rows with close-to-zero coefficients
7129 - fixed numerical issue in octane heuristic: close-to-zero values for ray direction could have led to bad computations
7132 - fixed bug in propagation of indicator constraints: cannot fix slack variable to 0 if linear constraint is disabled/not active
7133 - fixed bug in cons_linear.c while sorting the eventdatas during the binary variable sorting for propagation
7134 - fixed bug and wrong assert in heur_shiftandpropagate.c when relaxing continuous variables from the problem
7144- The interface contains several additional callback functions and parameters for plugins. Some effort may be required to compile your old
7145 projects with SCIP 2.1. For details see section `Changes between version 2.0 and 2.1` in the doxygen documentation.
7156- the SoPlex interface now has the capability to provide a primal ray, provided it is compiled against the next SoPlex release (>= 1.5.0.2)
7157- calculation of node priority now also works when variable's relaxation value is equal to a bound
7166 - knapsack constraints are now separated faster; SCIPsolveKnapsackExactly() now works faster and requires less memory
7167 - fasten knapsack separation by replacing SCIPallocBuffer(Array) through SCIPallocBlockMemory(Array)
7176- fixed bug in var.c where a possible multiaggregation was resolved to an aggregation but the variables types were not
7180- fixed wrong assert in var.c (replaced `==` through SCIPsetIsEQ()), real values do not have to be exactly the same when
7182- fixed bug in SCIPsolveIsStopped() where it could happen that TRUE was reported if a nodelimit was reached but
7184- fixed three bugs when writing in fzn format (wrongly splitted writing buffer, wrong variables was used, floats were printed to short)
7188 - fixed bug in DINS heuristic that occured when the incumbent solution value is outside the variable's current domain
7189 - fixed behavior of LNS heuristics when the subproblem aborts: continue in optimized mode, stop in debug mode
7190 - fixed segmentation fault in heur_subnlp.c which occured if resolving the NLP with a tighter feasibility tolerance
7192 - fixed bug in heur_subnlp.c where constraints forbidding variable fixations where added if a cutoff was used in the subproblem
7193 - fixed bug in heur_subnlp.c where wrong constraints forbidding variable fixations where added in case of general integers
7198 - fixed removal of fixed linear variables from a nonlinear row: a fixed variable may have not been removed if there was
7202 - implemented SCIPlpiGetPrimalRay() in SoPlex interface that has become available with SoPlex version 1.5.0.2
7203 - fixed two bugs at nodes with unbounded LP relaxation: don't check lp rows of infinite solution; don't analyze conflict
7205 - fixed wrong assumption that an optimal LP solution in the root is optimal for the problem if there are no active
7210 - fixed bug while after restarting possible the aggregted variables were not removed in setppc constraints
7211 - fixed bug in cons_knapsack: in seldom circumstances the relaxation of a linear constraint can detect infeasibility,
7213 - fixed bug w.r.t. to pricing variables in case new initial constraints come in during the price and cut loop
7214 - fixed bug in cons_soc.c w.r.t. upgrading from quadratic constraints with finite left-hand-side
7218 - fixed bug in cons_quadratic: in seldom cases, fixed variables may have been substituted out wrongly in presolve
7219 - fixed bugs in cons_countsols.c w.r.t. collecting feasible solutions and forbidding a found solution
7220 - fixed bug in cons_linear.c: multiaggregated variables were not removed when adding during solve, leading to a failing
7235- SCIP with SoPlex as LP solver now uses auto pricing by default (start with devex, switch to steepest
7236 edge after some iterations); this fixes timeouts on instances where devex converges very slowly
7237- fixing lifting of new knapsack items which are negated items of already included items, this could lead to very long presolving
7238- fixed performance issue in presolving w.r.t. to computing the number of new fixings, aggregated,
7242- changed parameter values in clique separator in order to avoid very large branch-and-bound trees
7253- replaced parameter `constraints/quadratic/minefficacy` by `constraints/quadratic/minefficacysepa` and `constraints/quadratic/minefficacyenfo`
7254- added possible values `a` and `e` for `constraints/soc/nlpform` to enable automatic choice and convex exponential-sqrt
7260- fixed bug w.r.t. looseobjval; the counting of number of loose variables in the LP data structure was incorrect in case
7262- fixed bug in copy method of objvardata which should only create a new `SCIP_VARDATA` if the implemented subclass create
7264- fixed bug in lp.c where in case of objlimit reached and fastmip not all variables where priced because of an incorrect
7267- fixed bugs in sepa_clique.c concerning incorrect way to ignore implicit binary variables in cliques and non-active
7270- fixed bug in vars.c which handled arrays with parts of original variables during resolving to active variables (using
7276 - fixed computation of node's objective value estimate when branching on continuous variables (see
7282 - fixed bug in reader_gms.c: linear coefficients for quadratic variables were not printed if they had no
7287 - fixed bugs in SCIPcopyConss: copy all active constraints (including disabled ones), *valid was not initialized to TRUE
7289 - fixed bug in cons.c which didn't allow the changing of the separation and enforcement flag of a constraint in the
7291 - corrected behavior of the copy function in cons_indicator.c: create artificial linear constraint if linear constraint
7293 - fixed bug in cons_indicator.c: presolving cannot delete linear constraints; several other minor bugfixes
7294 - fixed bugs in cons_bounddisjunction where the branching during the constraint enforcement was done incorrectly
7295 - fixed bugs in cons_orbitope.c: orbitopal fixing for the packing case had two bugs; also fixed one wrong assert
7297 - fixed bug in cons_logicor, implications on none `SCIP_VARTYPE_BINARY` variable were handled wrong
7303 - fixed bugs in SCIPnlpiOracleChgLinearCoefs() and SCIPnlpiOracleChgQuadCoefs() for the case where new coefficients where
7309 - fixed bug in heur_subnlp when initialized starting values of a fixed variable in the NLP of the subscip
7310 - fixed bug in heur_undercover: removed option globalbounds, since we are not allowed to relax bounds at a probing node
7312 - fixed numerical issue in some heuristics: nearly-integral values that are between the feasibility and the integrality
7314 - fixed bug in heur_guideddiving: best solution is now copied to avoid deletion in case of many new solutions
7315 - fixed bug in DINS heuristic, information storage for binary variables could lead to bad memory access in column
7317 - fixed bug in heur_shiftandpropagate.c: Now, the heuristic checks rows for global infeasibility at the beginning. This
7319 - fixed bug in heur_subnlp when forbidding a particular combination of integer variables in the main problem
7327- added relaxation structure to SCIP, it represents global relaxation information independent from a specific relaxator;
7328 at the moment, it contains information about the relaxation solution stored in the variables: objective value and
7331- SCIPsolveKnapsackExactly() got a new 12. parameter `SCIP_Bool* success` which stores if an error occured during
7333- SCIP can now handle problems with continuous variables w.r.t. to counting (the projection to the integral variables
7336- We do not distinguish between block memory for the original and the transformed problem anymore. The same
7338- added new sorting method SCIPsortLongPtr(), SCIPsortDownLongPtr() and all corresponding methods
7339- added new sorting method SCIPsortRealIntPtr(), SCIPsortDownRealIntPtr() and all corresponding methods
7343 - new undercover heuristic for MINLPs: fixes variables such as to obtain a linear or convex subproblem and solves this
7345 `SCIP_HEURTIMING_BEFOREPRESOL`. Note that solutions that are added before/during presolving, will be retransformed to
7347 - primal heuristics may now be called during presolving, using the new timing point `SCIP_HEURTIMING_DURINGPRESOLLOOP`
7350 - added new NLP heuristic (heur_subnlp.{c,h}) which solves the sub-NLP that is obtained by fixing all discrete variables
7356 - the MPS reader can now read MIQPs and MIQCPs where a quadratic objective function can be specified by a QMATRIX or
7360 - added support for bool_gt, bool_lt, bool_ge, bool_le, bool_ne, bool_not, int_times, int_minus, int_plus, int_negate,
7362 - the LP reader (.lp files) can now read MIQPs and MIQCPs and write quadratic and SOC constraints
7363 - the LP reader (.lp files) and MPS reader can now read semicontinuous variables, they are handled by creating bound
7365 - added new reader for polynomial mixed-integer programs (reader_pip.{c,h}) as used in the POLIP
7368 - SCIP can now handle indicator constraints (reading (from LP, ZIMPL), writing, solving, ...) see \ref cons_indicator.h.
7369 - the indicator constraint can now decompose the problem, i.e., not add the linear constraint to the problem if all of
7373 - cons_indicator allows to store information on other linear constraints that might help to separate cuts
7378 - The solution behavior of SCIP can be diversified by randomly permuting constraints and variables or randomly
7380 - `negated cliques` (1<=i<=n : sum (x_i) >= n-1) were added and we are using them now inside the knapsack constraint
7381 handler, the cliquepartitioning which is returned by SCIPcalcCliquePartition() contains now integer != 0, negatives ones
7383 - SCIP is now able to detect in DEBUG-mode whether a constraint or variables which will be added, was also created in
7385 - cons_knapsack is now able to detect negated cliques due to negated cliques on knapsack constraints
7387 - New constraint handlers for linking constraints (only Beta), cumulative constraints, and for breaking orbitopal symmetries
7389 SCIPcalcNegatedCliquePartition() resulting in new consdata members `negcliquepartition`, `negcliquepartitioned` and
7390 `nnegcliques`; changed SCIPcalcCliquePartition() so all cliquepartitions (calculated by SCIPcalcCliquePartition() or
7391 SCIPcalcNegatedCliquePartition(), which uses the first one) contain again not negative integers
7392 - `and`, `knapsack`, `linear`, `logic`, `or`, `quadratic`, `setpp`, `varbound`, `xor` and `clique` constraint handlers
7397 - added packing/partitioning orbitope constraint handler for symmetry handling (cons_orbitope.{c,h})
7400 - cons_quadratic can make solutions in CONSCHECK feasible for the quadratic constraints by moving values of linear
7402 - constraint handler can now register their upgrade functions for quadratic constraints to cons_quadratic (similar to
7407 - modified implementation of separation algorithms in cons_knapsack.c according to results of diploma thesis; including
7409 - uncommented decomposeProblem() in sepa_zerohalf.c (in default settings, not used anyway): was not adapted to the case
7411 - new separator rapid learning (sepa_rapidlearning.{c,h}) that produces conflicts, global bound changes, primal
7414 - added reader for 'Weigted Boolean Optimization': problems (reader_wbo.{c,h}), this reader needs the reader_opb files
7415 - new separator oddcycle (sepa_oddcycle.{c,h}) separates oddcycle inequalities using the implication/conflict graph and
7419 - Branching on externally given candidates, the \ref BRANCH 'branching rules' have a second new callback method
7420 (see type_branch.h for more details): SCIP_DECL_BRANCHEXECEXT(x) can be used to branch on external branching candidates,
7421 which can be added by a user's `relaxation handler` or `constraint handler` plugin, calling SCIPaddExternBranchCand().
7422 - added branchcands for relaxator solution, that can be added by the relaxator and used by branching rules
7423 - added relaxsol to variables, s.t. a relaxator can store a solution on which branching or separation can be done
7424 - SCIP can now branch on relaxation solutions that are either installed to the relaxsol field of the variables or added
7425 to the list of relaxation candidates, e.g., by constraint handlers. Branching on relaxation solutions is performed if
7426 the enforcement resulted in an unresolved infeasibility and there are no LP branching candidates, but before pseudo
7427 solution branching. The branching rules leastinf, mostinf, random and pscost implement the callback for branching on
7429 - SCIP can branch on continuous variables. The branching value x' must not be one of the bounds. Two children (x <= x',
7431 - the vbc visualization adds the branching type (lower or upper bound change) and the new bound to the node information
7435 - added statistic information about the first primal solution to SCIP statistic; in the statistic output a new line
7437 - now the statistic displays the number of calls of the feasibility checking method of each constraint handler and the
7443 - primal heuristics may now be called directly after the node's propagation loop, using the new timing point
7445 - following methods SCIPinferVarUbProp(), SCIPinferVarLbProp(), SCIPinferVarLbCons(), SCIPinferVarUbCons() have a new 6th
7446 parameter `SCIP_Bool force` which allows bound tightening even if the difference to the newbound is below bound
7448 - added propagator for variable lower and upper bounds (prop_vbounds.{c,h}); adjusted cons_varbound.c, var.c, and,
7462- reworked access to pseudo solution and inference value of variables in order to reduce function calls
7463- changed default value of parameter `nodeselection/restartdfs/selectbestfreq` to 0; this means if the current node has
7467- SCIP with CPLEX as LP solver now uses quickstart steepest edge pricing as default instead of steepest edge pricing
7469- improved zerohalf cut separator: more than one delta is tested for MIR cuts, better handling of dense base
7470 inequalities, faster scaling of fractional coefficients in rows (now enabled), improved parameter settings (presolving)
7486- Enhanced user interface for callable library: manual restarts, predefined settings and many other features
7487- Support of wbo format for weighted PBO problems, IBM's xml-solution format and pip format for polynomial mixed-integer programs
7489- new API for 'expressions interpreter': code that evaluates expression trees, including first and second derivatives
7494- adding and deletion of rows to the separation storage and to the LP can now be catched by events
7495 (`SCIP_EVENTTYPE_ROWADDEDSEPA`, `SCIP_EVENTTYPE_ROWDELETEDSEPA`, `SCIP_EVENTTYPE_ROWADDEDLP`, `SCIP_EVENTTYPE_ROWDELETEDLP`)
7499- new callback SCIP_DECL_BRANCHEXECRELAX(), together with new parameter in SCIPincludeBranchrule() for branching on a
7503 - Constraint handlers have two new callback methods. One for copying the constraint handler plugins
7505 - All plugins, like \ref BRANCH `branching rules` and \ref HEUR `primal heuristics`, have a new callback method (see, e.g.,
7509 - The main problem has a new callback method (see type_prob.h for more details) SCIP_DECL_PROBCOPY(x) when copying a
7511 - Variables have a new callback method (see type_var.h for more details) SCIP_DECL_VARCOPY(x) when copying a SCIP
7515 - The callback SCIP_DECL_PROBEXITSOL(x) in the main problem has one new parameter (see type_prob.h for more details):
7523 `SCIP_EVENTTYPE_ROWCOEFCHANGED`, `SCIP_EVENTTYPE_ROWCONSTCHANGED`, `SCIP_EVENTTYPE_ROWSIDECHANGED`)
7524- added new parameter `varcopy` to SCIPcreateVar() to add the function for copying variable data
7525- in case of using SCIPwriteTransProblem() the currently (locally) valid problem is written this now also includes the
7529 - The predefined setting files like `settings/cuts/off.set,aggressive.set,fast.set` have been replaced by
7530 interface methods like SCIPsetHeuristics(), SCIPsetPresolving(), SCIPsetSeparating(), and SCIPsetEmphasis() in
7534 - All functions for setting user parameters of different types like SCIPparamSetBool(), SCIPparamSetChar(),
7535 SCIPparamSetInt(), SCIPparamSetLongint(), and SCIPparamSetString() in pub_paramset.h have a new parameter
7539 - NLPIs can now be used without generating a SCIP instance (i.e., do not require a SCIP pointer), code moved into src/nlpi
7540 - NLPIs can now be managed like other SCIP plugins, i.e., they can be included into the SCIP core and accessed by
7541 methods SCIPincludeNlpi(), SCIPfindNlpi(), SCIPgetNNlpis(), SCIPgetNlpis(), SCIPsetNlpiPriority()
7544 - method SCIPgetVarPseudocostCurrentRun() now returns the pseudocost value of one branching direction, scaled to a unit
7547 SCIPintervalScalprodScalars()/SCIPintervalScalprod() and redesigned them in intervalarith.c including new methods
7551 - The usage of strong branching changed. Now, SCIPstartStrongbranch() and SCIPendStrongbranch() must be
7553 - The methods SCIPgetVarPseudocost() and SCIPgetVarPseudocostCurrentRun() in \ref scip.h now return the pseudocost value of
7554 one branching direction, scaled to a unit interval. The former versions of SCIPgetVarPseudocost() and
7555 SCIPgetVarPseudocostCurrentRun() are now called SCIPgetVarPseudocostVal() and SCIPgetVarPseudocostValCurrentRun(), respectively.
7556 - The methods SCIPgetVarConflictScore() and SCIPgetVarConflictScoreCurrentRun() in \ref scip.h are now called
7558 - The methods SCIPvarGetNInferences(), SCIPvarGetNInferencesCurrentRun(), SCIPvarGetNCutoffs(), and
7559 SCIPvarGetNCutoffsCurrentRun() are now called SCIPvarGetInferenceSum(), SCIPvarGetInferenceSumCurrentRun(),
7560 SCIPvarGetCutoffSum(), and SCIPvarGetCutoffSumCurrentRun(), respectively. Furthermore, they now return
7562 - The method SCIPgetVarStrongbranch() has been replaced by two methods SCIPgetVarStrongbranchFrac() and
7566 - Every new callback method resulted in a new parameter of the include function for the corresponding plugin,
7569 `SCIP_DECL_VARCOPY` and `SCIP_DECL_PROBCOPY` led to new parameters in SCIPcreateVar() and SCIPcreateProb() in
7571 - W.r.t. to copy and the C++ wrapper classes there are two new classes. These are `ObjCloneable` and `ObjProbCloneable`.
7572 The constraint handlers and variables pricers are derived from `ObjProbCloneable` and all other plugin are derived from `ObjCloneable`.
7573 Both classes implement the function `iscloneable()` which return whether a plugin is clone able or not. Besides that each class has a
7574 function named `clone()` which differ in their signature. See objcloneable.h, objprobcloneable.h, and the TSP example for more details.
7575 - SCIPincludeHeur() and SCIPincludeSepa() in \ref scip.h, as well as scip::ObjSepa() and scip::ObjHeur(), have a new parameter:
7576 `usessubscip`: It can be used to inform SCIP that the heuristic/separator to be included uses a secondary SCIP instance.
7581 - `maxmksetcoefs`: If the mixed knapsack constraint obtained after aggregating LP rows contains more
7583 - `delta`: It can be used to obtain the scaling factor which leads to the best c-MIR cut found within
7584 the cut generation heuristic. If a `NULL` pointer is passed, the corresponding c-MIR cut will already be
7585 added to SCIP by SCIPcutGenerationHeuristicCmir(). Otherwise, the user can generate the cut and add it to SCIP
7587 - `deltavalid`: In case, the user wants to know the best scaling factor, i.e., `delta` passed is not `NULL`,
7588 `deltavalid` will be `TRUE` if the stored scaling factor `delta` will lead to a violated c-MIR cut.
7592- added SCIPcalcNegatedCliquePartition() to scip.c to calculate a clique partition on negations of all given binary
7595- SCIPgetRandomSubset() that draws a random subset of disjoint elements from a given set of disjoint elements
7599- SCIPlpRecalculateObjSqrNorm() which is used when the old calculated square norm was unreliable
7603 - SCIPvarIsBinary() which checks if a variable is (implicit) binary (see var.c for more details)
7604 - SCIPvarGetHolelistOriginal(), SCIPvarGetHolelistGlobal(), SCIPvarGetHolelistLocal() to get the original, global and local holes, respectively
7605 - SCIPvarGetProbvarHole() to tranform a given domain hole to the corresponding active, fixed, or multi-aggregated variable
7613 - for heuristics SCIPheurSetFreq() to change the frequency of the heuristic (pub_heur.h, heur.c)
7617 - SCIPeventGetHoleLeft() and SCIPeventGetHoleRight() for accessing the left right interval bound of a domain hole added or removed event
7618 - SCIPholelistGetLeft() and SCIPholelistGetRight()to get the left and right interval bounds of the open hole interval
7622 - added SCIPsortPtrPtrLongIntInt(), SCIPsortLongPtrPtrIntInt() and corresponding sorting/inserting/deleting methods in
7624 - added SCIPsortLongPtrInt() and corresponding sorting/inserting/deleting methods in pub_misc.h and necessary defines in misc.c
7625 - added SCIPsortPtrPtrInt() (and various other) and corresponding sorting/inserting/deleting methods in pub_misc.h and
7627 - SCIPsortPtrBool() and corresponding sorting/inserting/deleting methods in pub_misc.h and necessary defines in misc.c
7634 - SCIPmarkDoNotUpgradeConsLinear() in cons_linear.?, which allows to forbid upgrading of linear constraints
7636 - SCIPconshdlrGetCheckTime() and SCIPconshdlrGetNCheckCalls() which returns the running time in the feasibility checking of the
7637 corresponding constraint handler respectively the number of calls of the checking method (implemented in cons.c)
7641 - SCIPcopyPlugins(), SCIPcopyParamSettings(), SCIPcopyVars(), SCIPcopyConss(), SCIPgetVarCopy() to copy
7643 - SCIPcopyProbData() and SCIPprobCopyProbData() which copies the probdata from a sourcescip to a targetscip
7646 - two new functions SCIPgetVarsStrongbranchesFrac()/SCIPgetVarsStrongbranchesInt() for computing strong branching
7648 - SCIPbranchruleGetNRelaxCalls() to get the total number of times, a particular branching rule was called on a relaxation solutions
7651 - SCIPbranchGetBranchingPoint() and SCIPgetBranchingPoint() to select branching point for a variable, e.g.,
7653 - SCIPexecRelpscostBranching() in branch_relpscost.{c,h}; this method allows of calling the reliability
7655 - SCIPinitVarBranchStats() to initialize the branching statistics (such as pseudo costs, VSIDS, inference values) of a variable
7656 - SCIPselectBranchVarPscost() in branch_pscost.{c,h}; this method selects from a given candidate array a
7662 - the Flatzinc reader can now handle the output annotations of the Flatzinc format; the method SCIPprintSolReaderFzn()
7664 - SCIPprintSolReaderFzn() which prints the best solution in Flatzinc format w.r.t. to the output annotations
7668 - SCIPwriteVarsLinearsum() which writes an array of variables and coefficients as linear sum in cip-Format to given stream
7671 - SCIPapplyRens() in \ref heur_rens.h has a new parameter `uselprows`. It can be used to switch from LP rows
7676 - SCIPsetEmphasis() which sets parameter to detect feasibility fast, handle hard LP, solves easy CIPs fast, behaves like a
7677 CP solver, set parameter for a valid counting process; the desired behavior is triggered via a parameter of the function
7681 - added SCIPsortRealRealRealPtr() and corresponding sorting/inserting/deleting methods in pub_misc.h and necessary defines in misc.c
7682 as basis for the subSCIP, setting ist to TRUE (uses LP rows) will lead to same version as before
7683 - SCIPsetHeuristics(), SCIPsetSeparating(), SCIPsetPresolving() which set the heuristics to aggressive, fast, off, or
7690- added new dialog for setting the SCIP parameters for hardlp, optimality, easy CIP, CP like search
7691- added new dialog for setting the SCIP parameters for feasibility problems `SCIP> set emphasis feasibility`
7692- added new dialog for setting the SCIP parameters for counting `SCIP> set emphasis counting`
7695- added new dialog for writing all solutions which are collected during the counting process (see cons_countsols.{c,h})
7703- the SoPlex interface now includes equilibrium scaling on lp's solved from scratch without starting basis
7705- the SoPlex interface has the option to restore basis only after entire strong branching phase instead of after each
7706 strong branch (off, because it mostly appears to increase strong branching time and iterations) (lpi_spx.cpp)
7711- changed parameter `lp/fastmip` from boolean to integer, possible values are 0 (off), 1 (medium, default), 2 (full,
7716- `branching/clamp` to set the minimal fractional distance of a branching point to a continuous variable' bounds
7718- `constraints/indicator/addCouplingCons` that allows to add variable upper bounds if addCoupling is true
7720- `constraints/indicator/maxCouplingValue` for the maximal value of the coefficient in a coupling inequality/constraint
7721- `constraints/indicator/noLinconsCon` which controls whether the linear constraint is not explicitly
7723- `constraints/knapsack/dualpresolving` to switch dualpresolving on/off inside the knapsack constraint handler, default is TRUE
7724- `constraints/knapsack/presolpairwise` that allows pairwise presolving of knapsack constraints, default is TRUE
7725- `constraints/knapsack/presolusehashing` that allows fast pairwise presolving of knapsack constraints, default is TRUE
7726- `heuristics/crossover/dontwaitatroot` that allows to call crossover at root node independently from nwaitingnodes
7727- `heuristics/rens/uselprows` that allows to switch between LP row and SCIP constraints as basis for the
7729- `lp/rowrepswitch` telling simplex solver to switch to row representation of the basis (if possible),
7730 if number of rows divided by number of columns exceeds this value (default value infinity, i.e. never switch)
7731- `lp/threads` to change the number of threads used to solve the LP relaxation (default is 0: automatic)
7732- `misc/lexdualstalling` that turns on the lex dual algorithm if the separation process is stalling
7733- `misc/usevartable` and `misc/useconstable` which turns on/off the usage of hashtables mapping from
7734 variable/constraint names to the variables/constraints; when turned off, SCIPfindVar() and SCIPfindCons() may not be
7735 used; the hashtables can be turned off for subMIPs to improve the performance, default value TRUE
7736- `misc/usesmalltables` which results in using smaller tables for names, cliques and cuts and improves
7738- `misc/permutationseed` to change the permutation seed value for permuting the problem after the
7740- `reading/zplreader/usestartsol` which allows to switch ZIMPL start solutions off, default value TRUE
7741- `vbc/dispsols` to propose if the nodes where solutions are found should be visualized in the branch and bound tree
7746- new data structures and methods to handle nonlinear expressions in NLPI ({type_, struct_, pub_}expression.{h,c}):
7752- minor changes on several evaluation scripts (new statuses: better, solved, sollimit, gaplimit) and short-mode for cmpres.awk
7753- support for FreeBSD (32- and 64-bit) including minor changes in several scripts in the check-directory
7760- added scripts check_*.sh, evalcheck_*.sh and check_*.awk for blis, glkp, gurobi and symphony (including targets in
7762- added target `lintfiles` which allows to call flexelint with a list of file, for example, make lintfiles
7764- the NLP solver interfaces and expression interpreter are located in a separate library (libnlpi.*; similar to the lpi
7765 library) and is required to link against the SCIP library also projects that use SCIP via `make/make.project` need to
7766 change their Makefile (!!!): in the $(MAINFILE) target, add $(NLPILIBFILE) behind $(LPILIBFILE) in the dependencies
7781- fixed bug in rapid learning with wrong ordering of dual and primal bound update, primal bound is now updated inside
7784- fixed potential bug where SCIPselectSimpleValue() returns a value slightly outside of the given bounds due to rounding
7785 errors (probably cancelation in subtraction in SCIPfindSimpleRational), now use rounding control and check result
7787- fixed bug in var.c: SCIPvarChgLbOriginal() and SCIPvarChgUbOriginal() cannot access original bounds if the variable is
7790- fixed bug with multiaggregations whose infimum and supremum are both infinite: in such a case multiaggregation is now
7792- fixed numerical issue with multiaggregations which are infinite in one direction: value of multiaggregated variable
7795- fixed bug concering the incorrect assumption that every solution computed in SCIPlpGetUnboundedSol() is integral (we
7797- fixed bug while breaking an clique down to their impications (in SCIPcliquetableCleanup() in implics.c) where the
7798 variable was not of vartype `SCIP_VARTYPE_BINARY`, instead of adding an implication we add a variable bound
7799- fixed bug with debugging a solution: during restarts erroneously it was claimed that the primal solution is cut off
7806 - fixed bug in scip.c w.r.t. to call of conflict analysis for LPs which reached the objective limit in case of diving
7809 - fixed bug in lp.c w.r.t. objective limit reached and the chosen comparison (fixed buglist entry 40)
7810 - fixed bug in lp.c: if in SCIPlpSolveAndEval() the LP has to be solved from scratch due to numerical troubles, reset
7812 - fixed bug in lp.c SCIProwGetObjParallelism() due to a wrong parallelism value which arised from cancellations during
7814 - fixed bug in lp.c: SCIPlpGetUnboundedSol() did not ensure that unbounded solution lies withing the bounds of the
7819 - fixed bug in solve.c where relaxation branching candidates were cleared, but the relaxation was still marked solved
7821 - fixed bugs in solve.c: even with LP solving disabled, the root LP was solved in case continous variables are
7823 - fixed bug in solve.c: make sure SCIP terminates correctly also when a user interrupt or gap limit is reached, i.e.,
7827 - fixed bug in tree.c: if an explicit branching point is given, we may not recompute a better centering point
7831 - corrected several asserts in linear and quadratic constraint handler concerning parsing of CIP format
7832 - fixed bug while deleting redundant variables, which have no influence on changing the feasibility of the linear
7833 constraints, we need to update the sides of the constraint at each step, bug number 51 in bugzilla
7834 - fixed bug in copy procedure of AND constraint handler, negated variables have been copied to their originals
7835 - fixed bug when deleting a constraint where the update was delayed and not processed yet (in cons.c)
7837 - fixed bug in cons_quadratic.c: curvature of bivariate quadratic constraints was not detected correctly
7839 - fixed bug in propagation of cons_sos2.c: the node can be cut off at more places: the previous version was not
7841 - fixed bug in cons_linear.c:applyFixings() which could lead to lhs/rhs smaller/larger than -/+infinity
7842 - fixed bug in cons_linear.c in detectRedundantConstraints() and corrected old bug fix in SCIProwCreate(): we want lhs
7843 <= rhs to be satisfied without numerical tolerances in order to avoid numerical problems in the LP solver
7848 - fixed bug in cons_knapsack.c: In SCIPseparateRelaxedKnapsack() not all variables need to be active in deeper regions
7850 - fixed bug in cons_knapsack.c and sepa_clique.c: the assumption that implications are always nonredundant and contain
7851 only active variables is not correct anymore as the corresponing vbound might be missing because of numerics
7855 - fixed bug in cutpool.c: hashkey of a row changed during the solving process (if a row is made integral after creation,
7859 - fixed bugs in sepa_zerohalf.c, e.g., handling of intscaling and substitution of variable bounds
7864 - fixed bug in SoPlex autopricing due to which autopricing had behaved like steepest edge pricing so far
7865 - fixed bug in lpi_clp.cpp: SCIPlpiChgBounds() checks if the column status exists in Clp before using it
7866 - fixed wrong assert in Cplex LPI: Due to numerical inaccuracies, a few pivots might be performed after refactorization
7867 - fixed bug concerning assert(!SCIPlpDivingObjChanged(lp)) which was caused by wrong infinity double parameters for
7873 - fixed bug in presolving of linear constraint handler: in redundancy detection, two different numerical epsilons were used
7874 - fixed bug in presolving while not applying a bound change on a variable in a single-variable constraint (e.g. x1 =
7875 0.03) in cons_linear which is too small, that lead to another bound change in presol_trivial which is not allowed, so
7877 - fixed SCIPvarIsTransformedOrigvar() in var.c (variables generated by presol_inttobinary returned false)
7878 - fixed bug w.r.t. an assert in presol_inttobinary.c; it was assumed that the aggregation which is performed there will
7880 - fixed bug in presol_trivial.c trying to fix continuous variables, now uses a less stricter comparison to fix variables
7881 - fixed bug in cons_bounddisjunction.c: presolve may have tried to tighten bounds on a multiaggregated variable (now
7890 - fixed buglist entry 35, which was caused by a wrong read in correction when the reading buffer was full in
7898 - fixed bugs do to `HEUR_TIMING SCIP_HEURTIMING_AFTERPROPLOOP` which appeared during repropagation
7899 - fixed bug in trivial heuristic: the locking solution might have falsely initialized some values to zero
7900 - fixed bug in heur_oneopt.c w.r.t. to SCIPtrySol(); it is necessary that the bound of the solution is check otherwise,
7906 - fixed bug in sub-MIP heuristics with parameter change if some default plugins are not included
7907 - fixed bug in trivial heuristic with bounds that are greater than the heuristic's infinity value
7925- adjusted hard memory limit to (soft memory limit)*1.1 + 100mb in check.sh, checkcount.sh, check_cplex.sh,
7928- now it's possible to write strings with more than `SCIP_MAXSTRLEN` amount of characters in all message.c functions
7930- added new preprocessing step (mergeMultiples) in cons_setppc.c where equal variables are merged
7931- Black-box lexicographic dual simplex algorithm; can now run lexicographical dual algorithm (parameter `lp/lexdualalgo`)
7934 - SCIP now has `lazy bounds`, which are useful for column generation: see @ref PRICER_REMARKS `pricer remarks` for an explanation.
7935 Each variable has now two additional `SCIP_Real` parameter which define a lazy lower and upper bound; lazy means that
7936 there exists constraints which implies these (lazy) bounds. If the lazy lower or upper bound is greater or less than
7937 the local lower or upper bound, respectively, then the corresponding bound is not put into the LP. The bounds are set
7938 to minus and plus infinity per default which yields the same behavior as before. With the methods SCIPchgVarLbLazy()
7939 and SCIPchgVarUbLazy() these bounds can be set. This is of interest if SCIP gets used as a branch-and-price
7940 framework. Attention! The lazy bounds need to be valid for each feasible LP solution. If the objective function
7941 implies bounds on the variables for each optimal LP solution, but these bounds may be violated for arbitrary LP
7943 - interval arithmetic functions can work with unbounded intervals added new functions to allow more operations on
7947 - extended hybrid relpscost branching rule by usage of the average length of conflicts a variable appears in
7948 - `early branching`-functionality added: in a branch-and-price code, the user can stop pricing at a node although there
7949 may exist variables with negative reduced costs. In this case, the lp-lowerbound will not be used. The pricer has,
7953 - Copy constructors and i/o functionality for constraints: all linear type constraint handlers are able to copy
7955 - the linear constraint handler is able to parse a string in CIP format and create a corresponding linear constraint
7967 - added heuristic that performs a local search in an NLP (takes only linear and quadratic constraints into account so far)
7969 - new trivial heuristic: tries zero solution, lower and upper bound solution and some variable lock based fixing
7970 - added new timing point, `SCIP_HEURTIMING_DURINGPRICINGLOOP`, for calling heuristics; If this timing point is used the
7971 corresponding heuristics is called during the pricing loop of variables; we also added this timing point to
7972 heur_simplerounding.{h,c} which has the effect that a LP solution which satisfies all integrality conditions during
7976 - added first version of an interface to NLP solvers (type_nlpi.h, struct_nlpi.h, nlpi.h, nlpi.c, nlpi_oracle.h, nlpi_oracle.c)
7977 - Preliminary support of non-convex MIQCPs: Constraint handler for quadratic constraints, NLP heuristic and
7990- in sepa_cmir.c, if mksetcoefs is invalid for delta=1 no other values of delta are tested anymore
7992- removed changing of update rule to `ETA` from standard soplex update `Forrest-Tomlin` in lpi_spx.cpp
7996- improved performance in tightenWeightsLift() and SCIPseparateRelaxedKnapsack() in cons_knapsack.c, due to now
7997 sparse-cleaning `global` arrays instead of using BMSclearMemory... functions for cleaning local arrays each time
8016 + A `result` pointer determines whether the pricer guarantees that there exist no more variables. This allows for early branching.
8019- The \ref CONS `constraint handlers` have two new callback methods (see type_cons.h for more details):
8025- SCIPcalcMIR() in scip.h has two new parameter `mksetcoefsvalid` and `sol`. The parameter `mksetcoefsvalid` stores
8026 whether the coefficients of the mixed knapsack set (`mksetcoefs`) computed in SCIPlpCalcMIR() are valid. If the mixed
8027 knapsack constraint obtained after aggregating LP rows is empty or contains too many nonzero elements the generation of the
8028 c-MIR cut is aborted in SCIPlpCalcMIR() and `mksetcoefs` is not valid. The input parameter `sol` can be used to separate a
8031- some interval arithmetic method take an additional argument to denote which value stands for infinity in an interval
8034 - SCIPgetVarClosestVlb() and SCIPgetVarClosestVub() in scip.h have a new parameter `sol`. It can be used to obtain the closest
8036 - new parameters `lowerbound` and `result` in type_pricer.h: lowerbound can save a lower bound computed by the pricer,
8037 result indicates whether the pricer guarantees that there exist no more variables if no variable was found
8042- new methods in pub_misc.h/misc.c to access hash map lists and elements of a hash map list and to clear all entries in a hash map
8052 - detectRedundantConstraints() in cons_xor.c and necessary hash-functions for fast pairwise presolving
8057 - SCIPisLPRelax() and SCIPisRootLPRelax() in scip.c and scip.h returning whether the current/root LP is a
8059 - SCIPlpSetIsRelax() and SCIPlpSetRootLPIsRelax() in lp.c and lp.h to set the information, whether the lp is a valid relaxation;
8060 this information is per default set to true and constraint be used. The aggregated version has only 2 linear constraints the
8064 - extended the sort template functions in sorttpl.c with a `five` array; now it possible to used this template to sort
8067 - added SCIPsortPtrPtrLongInt() and corresponding sorting/inserting/deleting methods in pub_misc.h and necessary defines
8071 - SCIPprintNodeRootPath() in scip.h This method prints all branching decisions on variables from the root to the given node
8072 - SCIPnodeGetParentBranchings(), SCIPnodeGetAncestorBranchings(), SCIPnodeGetAncestorBranchingPath(); These methods return
8073 the set of variable branchings that were performed in the parent node / all ancestor nodes to create a given node
8074 - SCIPchgVarLbLazy() and SCIPchgVarUbLazy() in scip.h; These methods can be used to change the lazy lower or
8075 upper bound of a variable; This might has the consequences that the bounds of the corresponding variable is not in
8076 LP. This is the case if the lazy lower or upper bound is greater or less than the local lower or upper bound, respectively
8077 - SCIPvarGetLbLazy() and SCIPvarGetUbLazy() in pub_var.h; These methods return the lazy lower or upper bound, respectively
8078 - SCIPvarCompareActiveAndNegated() and SCIPvarCompActiveAndNegated() in pub_var.h for comparing variables
8081 - SCIPgetNFixedonesSetppc() and SCIPgetNFixedzerosSetppc() in cons_setppc.{h,c}; these methods returns
8083 - SCIPgetVarConflictlengthScore(), SCIPgetVarAvgConflictlength(), SCIPgetAvgConflictlengthScore() and their pendants for the current run
8084 - added function SCIPvarsGetProbvarBinary() in pub_var.h; gets active, fixed, or multi-aggregated problem variables of
8096 - adjusted interface to ZIMPL (reader_zpl.{c,h} for ZIMPL version 2.10; this interface should also work with older ZIMPL versions
8098 - added first version of an interface to Ipopt (only QCP, no deletion of vars/cons allowed; nlpi_ipopt.(h|c))
8115- `constraints/and/presolusehashing` in cons_and.c, should pairwise presolving use hashing?, default TRUE
8116- `constraints/countsols/sollimit` in cons_countsols.c, counting stops, if the given number of solutions were found (-1: no limit)
8117- `constraints/xor/presolusehashing` in cons_xor.c, should pairwise presolving use hashing?, default TRUE
8132- fixed bug with enforcement of pseudo solutions: if pseudo solution is choosen because LP hit a limit, it has to be
8134- fixed potential bug in coloring example: SCIPcreateChild() is now given an estimate in terms of the transformed
8135 problem by SCIPgetLocalTransEstimate(), no longer the estimated original problem value. Also clarified this in the
8137- fixed compiler warning `warning: dereferencing type-punned pointer will break strict-aliasing rules` which resuts in
8141- fixed bug with objective limit in lp.c: previously the infinity value of SCIP was used as default - now the value of
8145- fixed bug with incorrect pseudo activities when objective of a variable switches sign in linear constraint handler
8147- fixed `GGT-Kaibel-Bug` in var.c, prop_pseudoobj.c and cons_varbound.c that occured while computing new values using
8152 - fixed bug in solve.c: in case lowerbound >= upperbound, SCIPsolveIsStopped() returned `SCIP_STATUS_GAPLIMIT`
8155 - fixed bug in SCIPsolveNode() concerning the case that the time limit was hit while solving the LP relaxation of a
8162 - fixed bug in SCIPgetSolVals() similar to SCIPgetSolVal(): try to get original variables of transformed ones if the
8167 - fixed bug in SCIPlpSolveAndEval(): if fastmip and pricers enabled and objlimit was reached but CPLEX did not perform
8168 the final pivot step in order to exceed the objlimit, do one additional simplex step with pricing strategy steepest
8169 edge, if this doesn't suffice, turn off fastmip temporarily and solve again. Also consider solstat of the new
8176 - fixed bug with exponential complexity for reallocating memory in SCIPvarGetActiveRepresentatives() in var.c
8177 - fixed casting of void* pointers in memory.h for C++, adjusted the same for C in memory.h and due to that adjusted all
8178 header files(set whole files in extern `C`) and cpp-files(removed unnecessary extern `C` lines)
8179 - removed memory leak in connection with freeing branch and bound nodes: focusnode was not freed if both children could
8183 - corrected bug in reader_lp.c: earlier read bounds were thrown away (implementation was not conforming to standard)
8184 - fixed bug in reader_lp.c with respect to constraint and variable names which start with two or more dots `..`
8190 - fixed bug in case of reading an objective function in opb format with multiple occurrences of the same variable
8191 - fixed bug in case of reading an objective function in lp format with multiple occurrences of the same variable
8192 - fixed a wrong fix of a reading bug, which was in reality a writing bug in MPS format; integer variables in mps format
8193 without bounds are binary variables, if the bound of an integer variable is infinity you have to write this bound
8196 - fixed bug in sepa_cmir.c, sepa_mcf.c and sepa_flowcover.c: sol different to LP solution is now separated
8197 - corrected two asserts in sepa_redcost.c (reduced costs can be negative for fixed variables: qsopt uses this)
8198 - fixed bug in sepa_zerohalf.c; replacement of own sorting functions by template functions was incorrect
8199 - fixed bug in var.c, cons_knapsack.c and sepa_flowcover.c: variable bounds corresponding to implication are not
8200 generated if coefficient is large, variable bounds with large coefficients are ignored for construction of knapsack
8205 - fixed bug in sepa_cmir.c concerning uninitialized mksetcoefs (if MIR-cut generation is aborted because the aggregated
8208 - fixed bug in sepa_impliedbounds.c and sepa_intobj.c: if separating a sol, this sol is now also given to SCIPaddCut()
8214 - fixed exponential calculation of solution values during check of original solution, therefore changed
8215 SCIPvarGetActiveRepresentatives() in var.c and flattened all multiaggregated vars at the end of presolving in
8219 - fixed bug in SCIPconsSetInitial() that occurred in pairwise presolving: add or delete constraint in initconss when
8226 - fixed bug in cons_countsols.c we respect to warning message that `The current parameter setting might cause ...`
8229 - fixed wrong assert in cons_knapsack.c and handled a special this case in simplifyInequalities()
8234 - fixed bug in cons_knapsack.c caused by having a multi-aggregated variable in a knapsack constraint, now applyFixing is
8239 - fixed bug in cons_linear.c: do not select variable as slack variable for multiaggregation in convertLongEquality if it
8241 - fixed bug in cons_linear.c: also do not multiaggregate variables in dual preproccessing if it has been marked as
8243 - fixed bug in cons_linear.c: slight decrease of epsilon in order to make sure that scaled coefficients are really
8245 - fixed bug in chgRhs() and chgLhs() of cons_linear.c: after changing lhs or rhs of a constraints lhs <= rhs has to be
8250 - fixed bug in oneopt heuritic with start solution which has become infeasible due to global bound changes
8254 - fixed potential interface bug: time limits of 0.0 are not anymore passed to the LP solver, which may have caused
8265- SCIP can now count integer feasible solutions for IPs/CIPs (without continuous variables) (see SCIPcount())
8267- struct `SCIP_Stat` has now two additional variables: `nprobboundchgs`, `nprobholechgs`; these are used to fix the domain
8268 reduction counts in sepa.c, cons.c, branch.c and prop.c; this means, that now the domain reduction counts are reduced
8277 - Extended the capabilities of SCIP to output problems in different formats (LP, MPS, CIP, ...). You can output the original and
8279 - The feasibility test for solutions at the end of the execution now outputs more useful information.
8284 - new presolver boundshift (presol_boundshift.{c,h}); this presolver is currently turned off with default parameter setting
8287 - linear constraint handler now detects continuous variables that are implicit integer in dual presolve
8288 - replaced some old sorting methods in cons_knapsack.c, heur_octane.c, sepa_flowcover.c and presol_probing.c through
8308 - added FASTMIP settings in lpi_clp.cpp that try to improve the performance of Clp as much as possible
8314 - adjusted all predefined settings files, e.g., `settings/cuts/fast.set`, such that they are consistent wrt removed,
8327 - The preprocessing has been revised. It now applies bound computations in a numerically more stable way. The pairwise
8330 - fixed performance bug with large number of unnamed constraints that will kill the name hash table (now, unnamed
8335 - improved performance of SCIPvarGetLPSol(), which affects many parts of the code, in particular Gomory and strong CG cuts
8336 - do not calculate MIR and StrongCG cut aggregations if number of nonzeros in aggregated row is too large
8339 - improved pairwise presolving in cons_linear.c: reduced cache misses, reduced number of SCIPisStopped() calls and
8341 - tighter memory limits in knapsack presolve lifting procedure to avoid overly expensive presolving
8342 - included detecting of redundant constraints with hash table in advance in cons_logicor.c and limit other pairwise
8344 - included detecting of redundant constraints with hash table in advance in cons_setppc.c and limit other pairwise
8351- Added an example for the graph coloring problem in `examples/Coloring`, showing the usage of column generation.
8360- New callback method SCIP_DECL_READERWRITE(x) in type_reader.h; this method is called to write a problem to file
8361 stream in the format the reader stands for; useful for writing the transformed problem in LP or MPS format. Hence,
8363- The callback \ref CONSCHECK (SCIP_DECL_CONSCHECK()) in the constraint handlers now has a new parameter `printreason` that tells
8364 a constraint handler to output the reason for a possible infeasibility of the solution to be checked using
8365 SCIPinfoMessage(). Have a look at one of the constraint handlers implemented in SCIP to see how it works. This
8366 methodology makes it possible to output the reason of a violation in human readable form, for instance, for the check
8367 at the end of a SCIP run, where the obtained best solution is checked against the original formulation.\n This change
8368 often has little effect on C-implementations, since this parameter can be safely ignored with respect to the
8369 correctness of the code. The corresponding C++ method scip::ObjConshdlr::scip_check(), however, has to be extended
8371- added new LPI pricing option `SCIP_PRICING_LPIDEFAULT`, such that every LP interface can set the default pricing
8372 strategy on its own (`auto` is not useful for this, because for CPLEX, for example, SCIP seems to be worse with `auto`
8378- SCIPgetVarRedcost() now returns 0 for variables that have been aggregated out or removed in presolving.
8385 - new parameters `extension` in SCIPreadProb() defining a desired file format or `NULL` if file extension should be use
8386 - New parameters `extension` and `genericnames` in SCIPprintTransProblem(), SCIPprintOrigProblem(),
8387 SCIPwriteOrigProblem(), and SCIPwriteTransProblem() defining the requested format or `NULL` for default CIP format
8389 - SCIPprintTransProblem(scip, NULL, NULL, TRUE) displays the transformed problem in CIP format with
8391 - SCIPprintOrigProblem(scip, NULL, `lp`, FALSE) displays the original problem in LP format with
8397 - replaced sorting methods SCIPbsort...() by faster (quicksort/shellsort) algorithms SCIPsort...() Note that the order
8401 - SCIPcheckSolOrig() is restructured. The last two parameters have changed. They are now bools indicating
8402 whether the reason for the violation should be printed to the standard output and whether all violations should be
8403 printed. This reflects the changes in the constraint handlers above, which allow the automation of the feasibility
8405 - the parameter list of the method SCIPcheckCons() (scip.h) has changed; the new advatage is, that SCIP can print the
8407 - the parameter list of the method scip_check() (objconshdlr.h) has an additional parameter `printreason` see for
8412- LPI now has a function SCIPlpiGetSolverPointer() that returns a solver dependent pointer. This can be used to directly
8413 access the LP solver. This should, of course, only be used by people that know exactly what they are doing.
8414- added capabilities to avoid multi-aggregation of a single variable by setting a corresponding flag (SCIPmarkDoNotMultaggrVar())
8424- SCIPgetCutoffdepth() which returns the depth of first node in active path that is marked being cutoff
8428- SCIPgetVarFarkasCoef() and SCIPgetColFarkasCoef() to get the farkas coefficient of a variable (analogon of
8429- SCIPgetRepropdepth() to get the depth of first node in active path that has to be propagated again
8430- SCIPmajorVersion(), SCIPminorVersion() and SCIPtechVersion() returning the corresponding version
8433 - SCIPprintSysError() which encapsulates the strerror_r calls, the NO_STRERROR_R flag switches between the use
8436 - SCIPreaderCanRead() and SCIPreaderCanWrite() in pub_reader.h, these return TRUE if the corresponding
8438 - SCIPwriteOrigProblem(), e.g., SCIPwriteOrigProblem(scip, `orig.lp`, NULL, FALSE) prints the original
8440 - SCIPwriteTransProblem(), e.g., SCIPwriteTransProblem(scip, NULL, NULL, FALSE) displays the transformed problem in CIP format
8450 SCIPsortedvecDelPosDown...(), SCIPsortedvecFind...() and SCIPsortedvecFindDown...() to manage sorted vectors or
8459- Many changes in the SoPlex interface: The current one is tailored towards SoPlex 1.4 (aka 1.3.3). All SoPlex functions
8460 (where applicable) should now have an exception handling. The Bugfix for adding columns has been moved to SoPlex. One
8465- changed default frequency parameters for RINS, Local Branching, Crossover and Mutation heuristic This should not
8473- `constraints/and/linearize` to enable linearization of all <and> constraints (in presolving),
8474- `constraints/and/initiallp` to turn on, off, or `auto` that the LP relaxation of the AND constraints are in the initial LP;
8477- `constraints/indicator/branchIndicators` to decide whether it is branched on indicator constraints in enforcing
8478- `constraints/indicator/genLogicor` to decide whether logicor constraints instead of cuts are generated
8479- `constraints/indicator/sepaAlternativeLP` to decide whether separation takes place using the alternative LP
8480- `constraints/linear/aggregatevariables` to search for aggregations in equations in the presolving step
8481- `constraints/linear/dualpresolving` to disable dual presolving step in the linear constraint handler; default value is TRUE
8482- `constraints/linear/simplifyinequalities` to enable a simplification step for inequalities; default value is set to FALSE = disabled
8490- `constraints/linear/presolusehashing` to use hashing comparison in cons_linear.c; default value is TRUE
8491- `constraints/logicor/presolusehashing` to use hashing comparison in cons_logicor.c; default value is TRUE
8492- `constraints/setppc/presolusehashing` to use hashing comparison in cons_setppc.c; default value is TRUE
8493- `constraints/SOS1/branchNonzeros` to decide whether SOS1 constraint with largest number of nonzero variables is picked for branching
8499- `separating/orthofunc` to choose function for scalar product computation in orthogonality test
8504- updated mmm.{test,solu}, mittelmann.{test,solu}, miplib3.solu, miplib.solu, shortmiplib.test and added
8517- added possibility to compile shared libraries in makefiles (and added `make/make.linux.x86.gnu.opt-shared`)
8518- replaced <string> by <cstring> in all C++-interfaces to get `strlen()` included (gcc-4.3 gave an error)
8524 - new flag GMP with values (`auto`, `true and `false`); in case of `auto` the library gmp is linked if ZIMPL is
8529 - modified makefiles to accept ZIMPLOPT and LPSOPT flags (with values `opt` or `dbg` and default being `opt`), and
8537- added checks whether a plugin (handler) has already been included to avoid later complications e.g. with parameters.
8539- forced full propagation in presolving -> this fixes a bug that implied that variable locks became inconsistent
8540- replaced calls to perror() by SCIP error message using strerror(errno); this avoids problems with the error output
8543- fixed bug with errors occurring in sub-MIPs. Search is only aborted in dbg mode, in opt mode a warning will be printed
8546- fixed bug in SCIPtightenVarLb/Ub() in scip.c concering forcing a bound change (bound improvement is checked now)
8548- fixed usage of command test for string comparison in check-scripts (now compatible with ubuntu)
8551- fixed bug in SCIPvarGetOrigvarSum() concerning the corner case the a negated variable has no parent variable in
8556 - fixed bug in aggregateActiveIntVars(): If a < 0, multiply a*x + b*y == c by -1 (algo for finding initial solution does
8558 - avoiding aggregation that removes information about implicitly integer variables (removes bug)
8560 - corrected bug in var.c occuring during applying boundchanges in varUpdateAggregationBounds method
8563 - fixed bug that a missing CONSTRANS in constraint handler leads to `NULL` pointer as constraint data for the copied
8564 constraints instead of pointer copies of the consdata (as explained in the constraint handler `HowTo`)
8565 - fixed bugs in second part of consdataTightenCoefs(): Removed min/maxleftactisinfinity (definition was not correct),
8566 fixed calculation of min/maxleftactivity and removed asserts concerning whether all redundant vars were deleted (led
8568 - fixed typo in documentation: default value for `dynamic` parameter is FALSE for all constraint handlers!
8572 - fixed bug in applyFixings() in cons_varbound.c concerning tightening the bound of a variable left in a redundant
8577 - removed bug for values greater than (-)infinity, heur_shifting.c, heur_intshifting.c, heur_rounding.c, heur_oneopt.c
8578 - fixed bug with errors occurring in heuristic LPs. In opt mode a warning will be printed, abort in dbg mode
8581 - fixed bug with wrong update of activities in linear constraints after global upper bound changes
8582 - fixed bug in preprocessConstraintPairs() in cons_linear.c concerning updating the flags of the constraint that stayes
8584 - fixed bug in cons_linear.c caused by comparing two infinity values during checking of using variable as slackvariable
8588 - removed BOUNDSCALETOL adjustment in cons_linear.c. This fixes bug with slightly infeasible variable fixings in
8590 - removed `epsilontic` bug in cons_linear.c due to adjusting left/right hand side in applyfixing
8591 - fixed bug with multi-aggregated variables in cons_logicor: instead of fixing them, a linear constraint will be created
8592 - corrected bug in cons_linear.c:applyFixings() [if variable was fixed to infinity the rhs/lhs were wrong]
8593 - fixed bugs in pairwise presolving of cons_linear.c concerning deletion of upgraded constraints and inconsistent update
8595 - fixed false assert and corrected a bug caused by deleting a constraint on `firstchanged` position in pairwise
8599 - fixed handling of unbounded variables with 0 objective in SCIPlpGetModifiedPseudo[Proved]Objval() (lp.c)
8602 - fixed bug in SCIPlpSolveAndEval(): added extra simplex step if objlimit reached, fastmip and pricers enabled in order
8605 - fixed bug in SCIPlpSolveAndEval(): allow more than one extra simplex step for getting an objlimit exceeding solution
8609 - corrected invalid memory access in tcliqueIsEdge: added check whether node1 has no neighbors (tclique_graph.c)
8612 - tried to fix memory leak in dialog.c occuring from different versions of the readline/history libraries
8616 - fixed numerical issue in linear constraint propagation: need slightly more aggressive tightening such that probing
8619 - avoid fixing variables to infinity in order to get rid of numerical inconsistencies in the original model
8623 - fixed bug with writing the MIP relaxation to a file concerning the objective function; in case the original objective
8624 function is requested, the transformed objective function gets re-transformed (scaling, offset)
8625 - fixed bug with wrong objective sense output for transformed problem. The transformed problem is always a minimization
8636 - fixed bug with multi-aggregated variables which are de facto aggregated or fixed after flattening the aggregation tree
8637 - fixed bug with bound changes of variables in modifiable constraints during full dual presolving of linear conshdlr
8638 - increased compiler compatibility for C++ wrapper classed by adding extern `C` in obj*.cpp files and changing strlen
8644 - corrected imlementation of SCIPlpiGetBasisInd() in lpi_clp.cpp (this fixes the bug that almost no Gomory cuts are
8648 - fixed bugs in sorttpl.c: fixed wrong arraysize in shellsort; in case an has at most one element, then no sorting is
8651 - fixed obvious bug in linear constraint data sorting. Most part of the code assumed pure index sorting, but in fact, it
8666- new C templates disp_xxx.h and dialog_xxx.h and C++ wrapper classes objdisp.h and objdialog.h, respectively
8667- modified reader `sol`, st. files which where created via typing the order of commands `set log *.sol`,
8682 - the documentation has now a TAB Modules; there you can find list of available constraint handles, presolvers,
8687 - presolving, cut separation, primal heuristics and strong branching now better respect time limit
8706- removed performance bottleneck with non-bfs based node selectors and large leaf queues at the cost of a small memory
8707 overhead (2 ints per node in the leaf queue); this improves performance quite a bit on instances that take a large
8709- improved performance of linear constraint propagation by delaying some floor/ceil calculations
8727- SCIPwrite{LP,MIP} may no longer be called after solving, since the LP data structures may not be valid
8729 This does not influence the performance of SCIP, but the position of the parameter in the settings menu.
8731 You should add the corresponding flag to the SCIP<datatype>Param() calls in your own source code.
8734 - modified `SCIP_SUBVERSION` to be a number instead of a string (to be able to use `SCIP_SUBVERSION >= ...`)
8738 - new parameter `estimate` for SCIPcreateChild() giving an estimate for value of best feasible solution in the subtree to
8746 - SCIPgetVarStrongbranch() now also returns lperror == TRUE if the solving process should be stopped, e.g., because of a
8750 - replaced methods SCIPvarGetClosestVlb() and SCIPvarGetClosestVub() from pub_var.h by new methods
8766 SCIPboundchgGetBoundtype(), SCIPboundchgIsRedundant(), SCIPdomchgGetNBoundchgs(), SCIPdomchgGetBoundchg()
8771- SCIPgetRootNode() (in combination with SCIPcutoffNode(), this allows the immediate finishing of the optimization)
8780- parameters are now separated into basic and advanced, the latter ones have been moved to extra submenus
8781- priority parameters are now restricted to be in [INT_MIN/4,INT_MAX/4] to avoid overflow errors in comparison methods
8782- increased priority of `estimate` node selector, such that this is the new default node selector
8783- changed meaning of parameter setting `nodeselection/childsel = l`; old meaning is now called `r`
8796- changed default value of `numerics/boundstreps` to 0.05 in order to avoid very long propagation loops on continuous variables
8807- `heuristics/∗diving/backtrack` to activate 1-level backtracking for most of the diving heuristics
8820- added version numbers to library files (There will be a softlink generated in the lib/ and bin/ directories without
8823- removed the `.static` extension associated to the LINK variable from the Makefile system (If you want to build
8824 makefiles for shared library generation, use the OPT variable. For example, you could create a makefile
8830 - made `ZIMPL=true` the default; if you do not want to include ZIMPL support, call `make ZIMPL=false`
8840- SCIPgetAvgPseudocostCount() and SCIPgetAvgPseudocostCountCurrentRun() now return the average over all integer
8841 variables instead of all variables, since pseudo costs are not recorded for continuous variables
8848- fixed bug in ZIMPL file reader for multiple occurrences of a single variable in the objective function
8849- fixed bug with deleting variables from the transformed problem that are contained in the implication graph
8850- fixed bug in root reduced cost fixing propagator that leads to an empty domain for a variable as a proof of optimality
8858 - fixed wrong status code in presence of user objective limit and a feasible solution that is not better than the limit
8875 - significantly improved performance of c-MIR and Gomory cuts by caching closest VLB and VUB info
8883 - fixed potential bugs in SCIPpriceLoop() and priceAndCutLoop(), st. now all LP solution stati are handled appropriately
8889 - fixed bug in variable bound constraint handler with changing bounds on multi-aggregated variables
8890 - fixed bug in linear constraint handler: only tight cuts are transformed into linear constraints after restart
8891 - fixed bug in bounddisjunction constraint handler with propagation of multi-aggregated variables
8892 - fixed bug with numerics in linear constraint handler due to non-representable `BOUNDSCALETOL`
8893 - fixed bug with almost integral multi-aggregation in dual presolve of linear constraint handler
8897 - fixed bug in intshifting and oneopt heuristic with variables which are currently not in the LP
8898 - fixed bug with primal heuristics reducing the cutoff bound such that the current node is cut off
8899 - fixed bug in oneopt heuristic: must not be called on pseudo nodes if continuous variables are present
8909- the EXITSOL callback of the plugins is now called before the LP and the global cut pool are freed
8913 - primal heuristics that run before the node is solved now know already whether the LP will be solved at the current
8918 - in the root node of the very first run, heuristics with timing `AFTERNODELPNODE`, `AFTERLPPLUNGE`, `AFTERPSEUDONODE`, and
8919 `AFTERPSEUDOPLUNGE` are now called before the enforcement of the constraint handlers, in particular before the branching
8921 - if a heuristic found a better solution after the LP loop (and in particular the `AFTERNODE` heuristics in the root node
8922 of the very first run, see above), domain propagation and LP solving is triggered again; this allows for additional
8928 - modified guided diving heuristic such that it equals the original version of the heuristic (i.e., round in direction of the
8933 - c-MIR cuts try now to scale the cut to integral values; however, cuts are still generated if this fails
8934 - hard-coded relative objective gain to consider a separation loop to be stalling is now changed from 1e-3 to 1e-4,
8936 - modified c-MIR cut separator to more closely resemble the original version of Marchand and Wolsey
8950- replaced callback parameter `inlploop` and `inplunging` by `heurtiming` in `SCIP_DECL_HEUREXEC`
8951- slightly changed the meaning of the result codes returned by external relaxators: if they modify the LP or tighten
8952 bounds of variables, they are not automatically be called again (it is assumed that they already made use of these
8953 changes). They are only called again, if they returned `SCIP_SUSPENDED` or if some other plugin modified the LP.
8959- new calls SCIPgetLPBInvCol() and SCIPgetLPBInvACol() to access the basis inverse and simplex tableau columnwise
8961- new parameters `fixintegralrhs`, `maxfrac`, `mksetcoefs` and `fracnotinrange` in SCIPcalcMIR()
8962- modified SCIPfixVar() such that in problem creation stage it will change the bounds as requested even if the fixing
8964- replaced parameters `pseudonodes`, `duringplunging`, `duringlploop` and `afternode` by `timingmask` in
8965 SCIPincludeHeur() and constructor of ObjHeur() class use the following table to translate old settings into the new
8969|-------------|----------------|--------------|-----------|---------------------------------------------------------------|
8988 - renamed all occurences of `removeable` by the correct English word `removable`: SCIPconsIsRemovable(),
8990 - new parameter `sticktonode` in SCIPcreateCons(), SCIPcreateConsAnd(), SCIPcreateConsBounddisjunction(),
8992 SCIPcreateConsVarbound(), SCIPcreateConsXor(), SCIPcreateConsSetpart(), SCIPcreateConsSetpack(),
8993 SCIPcreateConsSetcover(): usually, you should set this to FALSE; if you want to add constraints as node markers with
8994 node data and, e.g., use the `activate` and `deactivate` callbacks to get informed about the activation and
8995 deactivation of the node, you should set this flag to TRUE in order to make sure, that the constraint will always be
8997 - slightly changed semantics of SCIPaddConsNode() and SCIPaddConsLocal(), such that a constraint which is added to the
9004- SCIPgetGlobalCutpool(), SCIPgetPoolCuts(), SCIPcutpoolGetCuts(), SCIPcutGetRow() and SCIPcutGetAge()
9009- command shell now understands escape characters `\``,`'` and `\` which makes it possible to read in files with spaces in the
9023- parameter `heuristics/feaspump/maxsols` is now strict, i.e., if n solutions were already found, the feasibility pump
9036- `presolving/restartminred` which forbids another restart if the last one was not successful enough
9054- fixed bug with string pointer copy instead of string content duplication in constructors of C++ wrapper classes
9055- fixed bug in CPLEX interface with basis access methods that dualopt has to be called for more error status codes
9056- fixed bug with inserting two variable bounds of the same type on the same variable with the same bounding variable but
9057 with different sign of coefficient (e.g., `x <= 10*z + 5` and `x <= -5*z + 10`); in previous version, one of the two was
9058 removed, although both have a useful meaning; now, we keep both and detect a stronger global bound in the implication graph presolving
9059- objective function is now also checked for integrality after problem transformation (fixed a bug that a solution which
9060 was generated between transformation and presolving for an integral objective function did not reduce the cutoff bound by one)
9061- fixed a bug with cmir cut efficacy calculation (however, on my first tests, the performance reduced slightly!)
9062- fixed bug that SCIPvarGetAvgSol() always returned the upper bound (affected guided diving heuristic)
9063- fixed bug in RENS, RINS, Local Branching, Crossover and Mutation heuristics with wrong variable-subvariable assignments
9064- fixed bug in infeasible/bound-exceeding LP conflict analysis if the bounds were relaxed in diving (happens in intshifting heuristic)
9067 - fixed bug with adding constraints with `INITIAL=true` and separating them afterwards, which lead to a second addition of
9069 - separation LPs are now immediately resolved after a bound change was generated by a cut separator; before, the
9070 separation round was prematurely aborted, which means that a separation round limit was sometimes reached very quickly
9077 - fixed bug in cmir cut separator with weights fixed to zero, thus making the current aggregation invalid
9089- new propagator `rootredcost` which applies reduced cost fixing at the root node whenever a best new primal solution was found
9093 - extensions to the LP are kept even if the LP is not solved at the current node; however, if the LP turned out to be
9100 - now, conflict constraints are also created if they were generated in strong branching or diving with insertion depth
9105 - renamed `sol` file reader to `fix` file reader (reads partial solution files and fixes variables to the given values)
9106 - added `sol` file reader which reads complete solution files and adds the solutions to the solution pool
9110 - knapsack presolver now generates cliques in the clique table (this essentially solves `neos1.mps`)
9128- methods SCIPisLbBetter() and SCIPisUbBetter() have an additional parameter and slightly different meaning (they now
9131- method SCIPreadProb() does not call SCIPfreeTransform() anymore; file readers that want to extend the existing problem
9136- method SCIPsplitFilenames() now treats both versions of slashes, `/` and `\`, as directory delimiters (under MinGW and
9137 CygWin, both are valid; so, we cannot treat file names anymore where the other slash is used as a regular character)
9140 - marking a constraint to be `initial` now means in addition, that if the constraint is added to a local node it will
9141 enter the LP at the time the node is first processed, even if parameters forbid separation at this node
9155- SCIPtransformProb() to create the transformed problem; enables the user, e.g., to add primal solutions before the presolving begins
9162 - SCIPgetLhsVarbound(), SCIPgetRhsVarbound(), SCIPgetVarVarbound(), SCIPgetVbdvarVarbound(), and
9184 - SCIPgetWeightsKnapsack(), SCIPgetNVarsKnapsack(), SCIPgetVarsKnapsack() and SCIPgetWeightsKnapsack()
9191- command line syntax changed to support batch modus without piping stdin with `<` or `|` operators
9197 - `-b <batchfile>`: load and execute dialog command batch file (can be used multiple times)
9204- removed parameter `propagating/redcostfreq`, because reduced cost strengthening is now an external separator plugin
9214- in bfs node selector, parameter `minplungedepth` is now stronger than `maxplungedepth` if they conflict
9232- removed ncurses and pthread libraries from the Makefile; pthread is now only linked if CPLEX is used
9240- fixed bug that unexpected end of stdin (Ctrl-D or piped-in file without `quit` command) gives a segmentation fault
9241- fixed bug with inconsistent data structures after a global bound was changed at a local subproblem and the local
9246 - fixed bug in knapsack presolving with redundancy check after applyFixings() [thanks to Anders Schack-Nielsen]
9248 - fixed bug in knapsack constraint disaggregation that may lead to acceptance of infeasible solutions
9249 - fixed bug in knapsack constraint handler where a modifiable constraint may be declared redundant
9252 - fixed bug with missing LP size updates after pricing or cut separation in probing [thanks to Marc Nuenkesser]
9253 - fixed bug in CPLEX interface with getting basis information after the LP was modified and restored
9255 - fixed bug that SCIPgetLPSolstat() returns a valid status code even if the LP was not yet constructed for the current node
9258 - fixed bug with invalid lazy updates after a restart where the LP is not solved again (e.g., due to all variables being fixed)
9259 - fixed bugs resulting from inactive general integer variables being member of the variable bounds array of a variable
9260 - fixed bug in updatePseudocost() with wrong lpgain distribution on multiple branching variables [thanks to Anders Schack-Nielsen]
9261 - fixed bug in objconshdlr.h where member variable scip_maxprerounds_ was declared as an `SCIP_Bool` instead of an int
9262 - branching on nearly-integral variables is now avoided in relpscost branching, which lead to a numerical assertion
9265 - fixed bug with adding implications that fix the implication variable to the opposite value (due to the bug, it was
9278 - it is now possible to branch on constraints without the risk of going into an infinite loop, because constraints marked as `initial`
9279 will be put to the LP relaxation (of the child nodes) even if separation is prohibited by the parameter settings
9280 - fixed bug that locally valid varbound constraints produce VLB/VUB entries [thanks to Anders Schack-Nielsen]
9297 - modified bookkeeping of locally added and disabled constraints such that the order of enabling and disabling constraints stays the same
9298 - logic or constraint handler now adds implications on clauses with 2 literals to the implication graph
9300 - xor constraint handler now uses stronger LP relaxation without auxiliary variable for xor constraint with 2 operands
9307 - LP file reader now accepts the keyword `Integer` for defining the start of the integer variables section
9321- callback method `CONSSEPA` of constraint handler was split into two methods `CONSSEPALP` and `CONSSEPASOL`
9322- callback method `SEPAEXEC` of separator was split into two methods `SEPAEXECLP` and `SEPAEXECSOL`
9327- additional parameter `sol` for methods SCIPaddCut(), SCIPgetCutEfficacy() and SCIPisCutEfficacious()
9329- primal solutions may now contain values marked to be unknown (value is `SCIP_UNKNOWN`); unknown values don't contribute
9330 to the objective value of the solution; an unknown solution value should be treated as an arbitrary value in the
9331 variable's bounds, e.g., in the calculation of the feasibility of a constraint, a value inside the variable's bounds
9333- new parameter `printzeros` for methods SCIPprintSol(), SCIPprintTransSol(), SCIPprintBestSol() and SCIPprintBestTransSol()
9336 - replaced method SCIPconshdlrWasSeparationDelayed() by two methods SCIPconshdlrWasLPSeparationDelayed() and
9362- heuristics with `freq = 0` and `freqofs > 0` are now called in depth level freqofs instead of being called in the root
9365- new parameter values `p`rimal simplex and `d`ual simplex in `lp/initalgorithm` and `lp/resolvealgorithm`
9382- also removed history_length, if `NO_REMOVE_HISTORY` is defined to support older versions of the readline library
9393 - fixed bug in LP file reader with signed values without space between sign and value (e.g. `+2x` instead of `+ 2x`)
9398 - fixed numerics in probing and linear constraint handler (rentacar was detected to be infeasible in presolving)
9409- if one uses column generation and restarts, a solution that contains variables that are only present in the
9410 transformed problem (i.e., variables that were generated by a pricer) is not pulled back into the original space
9420- changed restart dfs nodeselector to sort leaves by node number instead of node depth to aviod jumping around in the
9426- added possibility to disable certain features by using `make USRFLAGS=-DNO_REMOVE_HISTORY`, `make
9432 - conflict clauses are now collected in a conflict store, redundant clauses are eliminated and only the best `conflict/maxclauses`
9433 clauses are added permanently to the problem; the remaining clauses are only added temporarily, if they can be used for repropagation
9436 - if CPLEX returns that the LP exceeds the bound and if no additional LP solves are allowed in conflict analysis, we
9437 have to perform one additional simplex iteration to get the dual solution that actually violates the objective limit
9440 - reactivated multiaggregation in cons_linear.c on binary variables again (possible due to bug fix below)
9442 - linear constraint handler now catches events of variables after the problem was completely transformed in order to
9443 avoid the whole bunch of `LOCKSCHANGED` events that are generated at problem transformation stage
9447 - changed linear constraint presolving s.t. redundant sides are not removed if constraint is an equality
9449 - modified probing presolver to not add implications that are already included in the implication graph and clique table
9455 - removed `objfeaspump` heuristic, because the functionality can be achieved by using the `feaspump` heuristic
9458 - slightly changed feaspump heuristic, s.t. after finding a new best solution the target integral solution is modified randomly
9464 - cut pool is now also separated in root node (to find cuts again that were removed from the LP due to aging)
9475- new callback parameter `validnode` for the `CONFLICTEXEC` method of conflict handlers, which should be passed to
9486- new parameter `duringlploop` of SCIPincludeHeur(): heuristics can now run during the price-and-cut loop at a node
9495- SCIPsolveProbingLP() to solve the LP in a probing node (enables mixing of propagation and LP solving for diving heuristics)
9519 - new file i/o methods SCIPfopen(), SCIPfclose(), SCIPfprintf(), ... that operate on the data type `SCIPFILE`; these
9561- replaced parameter `presolving/restartbdchgs` with parameters `presolving/maxrestarts` and `presolving/restartfac`
9562- replaced parameter `constraints/linear/maxpresolaggrrounds` with `constraints/linear/maxpresolpairrounds`
9563- parameters `constraints/agelimit` and `constraints/obsoleteage` now iterprete the value 0 as a dynamic setting
9567 - changed default values of `heuristics/∗/maxdiveavgquot` and `heuristics/∗/maxdiveavgquotnosol` to 0
9569 - changed default values of `heuristics/objpscostdiving/maxsols` and `heuristics/rootsoldiving/maxsols` to -1
9572 - changed default value of `constraints/linear/maxaggrnormscale` to 0.0, which means to not apply aggregation
9603- `separating/cmir/maxfails`, `separating/cmir/maxfailsroot` and `separating/cmir/trynegscaling`
9607- MAJOR CHANGE: preceeded all data types with `SCIP_`: you may use shell script reptypes_scip.sh to rename the SCIP
9608 data types in your own source code (But use with care! Create a backup copy of your source first!)
9622- variables that are being multiaggregated are now automatically removed from all other variables' variable bound and
9623 implication arrays; this fixes bugs with methods, that rely on the fact, that the entries in the variable bound and
9625- aggregations are now always performed in a way, such that the variable of more general type is aggregated (with type
9626 generality being cont > implint > int > bin); in this way, a binary variable's representant is always binary (which
9635- fixed bug that if diving heuristic that changes the objective values finds a solution, the cutoff is reinstalled in
9636 the LP solver (although the objective value has no meaning due to the objective function modification)
9639 - LP primal feasibility for bounds is now defined as absolute measure (was relative to the bound before); this fixes a bug (see alu8_9.mps),
9640 that an LP with an integral variable fixed to a large value yields an accepted solution with that variable slightly different than the fixed
9641 value; the integrality feasibility condition is measured with absolute differences, which leads to the fixed integer variable being fractional;
9643 - fixed bug with redundant self implications that wrongly lead to the detection of infeasibility
9651 - locally fixed variables are no longer used as branching candidates even if their LP solution value is fractional (due
9654 - removed bug that an LP might be declared to be solved even if it was marked erroneous due to numerical problems
9658 - fixed bug with constraint handlers that can only enforce their constraints by adding cuts, but the maximal number of
9659 cuts to separate is set to 0; now, cuts that are generated in the constraint enforcement are used in any case
9662 - fixed bug in linear constraint handler that global activities are not updated after global bound changes
9665 - global bound changes now lead to the removal of redundant implications (such that the asserts in sepa_implbounds.c are now correct)
9666 - due to usage of variable bounds, SCIPcalcMIR() may return LOOSE variables in the cut -> modified sepa_cmir.c, sepa_gomory.c and
9667 sepa_strongcg.c to use SCIPcreateEmptyRow() and SCIPaddVarsToRow() instead of SCIPcreateRow() which only works for COLs
9669 - increased performance of clique separator by allowing only a certain number of zero-weighted fill ins
9679- aging and cleanup now only remove non-basic columns and basic rows, s.t. resolving can be applied with 0 simplex iterations
9683- changed implementation of automatic minplungedepth and maxplungedepth calculation in bfs node selector
9696 - changed implementation of reliability value calculation in reliability branching; slightly modified influence of
9698 - changed implementation of maximal strong branching iterations calculation in reliability branching
9701 - if verblevel is at least `NORMAL`, an automatical check of the best solution is performed in the original problem, and
9703 - due to the new constraint handler `cons_cumulative.{c,h}` SCIP can resource-constraint scheduling problem
9704 - during probing, propagation of bounds is now always performed in linear constraint handler, ignoring the parameter `tightenboundsfreq`
9709 - new implementation of the feasibility pump heuristic by Timo Berthold (replaces old implementation); old
9711 - diving heuristics now compare their number of LP iterations with the number of node LP iterations instead of the total
9713 - modified the automatic objfactor setting of feaspump heuristic to let the objective function have stronger influence
9725- new callback methods `INITSOL` and `EXITSOL` for variable pricers, primal heuristics, conflict handlers, relaxators,
9727- callback method `CONFLICTEXEC` of conflict handlers receive additional parameters `dynamic` and `removeable`
9728- constraint handler callback methods `CONSLOCK` and `CONSUNLOCK` are replaced by a single method `CONSLOCK` with the number
9734- SCIPreadProb() does not free the current problem, this is done in SCIPcreateProb() now, which is usually
9735 called by a problem reader; in this way, a reader can generate `extra information` for the current problem, s.t. the
9737- SCIPgetVarStrongbranch() and SCIPgetVarStrongbranchLast() now have two additional parameters that can be used
9739- SCIPgetBinvarRepresentative() now returns the fixed or multi-aggregated variable instead of returning `NULL` or
9745 `objscip.h` by `objscip/objscip.h`; This should allow a user to have include files of the same name as the ones
9755 - SCIPvarLock(), SCIPvarLockDown(), SCIPvarLockUp(), SCIPvarLockBoth(), SCIPvarUnlock(), SCIPvarUnlockDown(),
9756 SCIPvarUnlockUp() and SCIPvarUnlockBoth() are replaced by SCIPaddVarLocks() which returns a `RETCODE`
9757 - SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), SCIPvarGetLbLocal() and SCIPvarGetUbLocal() now return the
9758 corresponding values of the transformed problem or current subproblem even for original problem variables
9759 - SCIPvarGetProbvar(), SCIPvarGetProbvarBinary() now return the fixed or multi-aggregated variable instead of
9760 returning `NULL` or aborting with an error message; in SCIPvarGetProbvarBinary(), the fixing of a fixed variable does
9762 - SCIPvarGetProbvarBound() returns the multi-aggregated variable instead of aborting with an error message
9763 - SCIPvarGetProbvarSum() does not set *var to `NULL` for fixed variables anymore; it may also return a
9765 - SCIPaddVarImplication() now also adds variable lower and upper bounds, if the implied variable is non-binary
9769 - SCIPvarLockDownCons(), SCIPvarLockUpCons(), SCIPvarUnlockDownCons() and SCIPvarUnlockUpCons() are replaced by
9772 - SCIPconshdlrGetNConss() is replaced by SCIPconshdlrGetNActiveConss() (returning the number of active
9773 constraints); method SCIPconshdlrGetNConss() does now return the total number of existing constraints, active and inactive
9816 - SCIPisLPSolBasic() to check, whether the current LP solution is basic (i.e. due to a simplex algorithm or barrier with crossover)
9858- changed default priority of Gomory cut separator to -1000 (will now be called after constraint handlers!)
9900- `lp/cleanupcolsroot` and `lp/cleanuprowsroot` to distinguish cleanup settings between root node and other nodes
9902- `lp/initalgorithm` and `lp/resolvealgorithm` for switching between simplex and barrier algorithm
9913- new possible result `SCIP_DELAYED` for `EXEC` method of separators, presolvers and propagators and `SEPA`, `PROP` and
9920- removed bug with applying reduced cost strengthening before pricing in all necessary variables
9924- fixed bug that after a resolve and further preprocessing, existing primal solutions may get corrupted due to
9926- fixed bug with primal bound becoming wrong, if in a prior run the optimal solution was found and the cutoff bound was
9932- fixed bug with wrong euclidean norm calculation of row, if multiple coefficients for the same variable are added and
9934- fixed bug with adding implications: wrong insertion position, if only the lower bound change was present but not the
9941 - LP error on forced LP resolve (due to 0 unfixed integers) now leads to an error (instead of accepting the pseudo
9946 - fixed bug that presolving time is not counted to solving time, if presolving is called explicitly with SCIPpresolve()
9948 - removed bug with dual presolver, that declared a problem to be unbounded or infeasible, if it could fix a variable to
9950 - fixed bug in knapsack constraint handler that fixed variables are sometimes not removed in presolving
9953 - fixed bug with unresolved numerical troubles in LP that don't render the LP useless at the current node
9957 - fixed bugs in separation store with single coefficient cuts that are converted into bound changes
9958 - at least one cut per separation round is added to the LP to avoid cycling, even if the cut is redundant
9959 - fixed bug in SCIProwCalcIntegralScalar() with rows consisting of only continuous variables (appeared in gomory cut
9964 - fixed bug in implied bound cut separator: only implications between binary variables were generated before
9967 - removed bug in knapsack constraint handler with merging multiple items if more than two items of the same variable
9969 - removed bug in knapsack constraint handler with merging negated variables of equal weight at the end of the variables' array
9970 - fixed bug in linear constraint handler with eventdatas, if the original constraint has no variables
9971 - fixed bug that `CONSLOCK` method of constraint handlers that don't need constraints is not called
9972 - fixeg bug in setppc constraint handler with pairs of aggregated variables in the same constraint
9973 - fixed bug with globally deleting constraints, that have attached rows which are therefore not released in exitsol methods
9986- improved knapsack relaxation in linear constraint handler separator to scale the constraint in order to get integral
9988- improved presolving of linear constraint handler: aggregation of two constraints with equal coefficient vector into
9990- improved presolving of knapsack constraint handler: aggregation of equal or negated variables in same constraint
9993 + priority of separators, propagators and presolvers decide whether the plugin is called before the corresponding
9994 constraint handler methods or after: plugins with nonnegative priorities are called before, plugins with negative
9996 + new plugin class for relaxators (external relaxations, that can be used in parallel with LP relaxations)
9997 + if more than one result code applies to a plugin's execution, it should return the one that is higher in the call's
10003- even in optimized mode, the simple functions that are implemented as defines in the include files exist in the
10004 library, s.t. one can include the include files without `NDEBUG` and use the optimized library
10013- SCIPisIntegral(), SCIPisFracIntegral(), SCIPfloor(), SCIPceil() and SCIPfrac() don't use the feasibility
10014 tolerance anymore (default: 1e-06); instead, they are using epsilon (default: 1e-09); instead, for handling
10015 integrality of a variable `in feasibility tolerances`, new methods SCIPisFeasIntegral(), SCIPisFeasFracIntegral(),
10017- in LPI, the semantics of SCIPlpiHasPrimalRay() and SCIPlpiHasDualRay() changed: methods return TRUE, if a ray exists
10018 and the solver can return it; new methods SCIPlpiExistsPrimalRay() and SCIPlpiExistsDualRay() check whether a ray
10027- SCIPisScalingIntegral() to check, whether the scaling of a value would lead to an integral value, measured
10029- SCIPgetRealarrayMinIdx(), SCIPgetRealarrayMaxIdx(), SCIPgetIntarrayMinIdx(), SCIPgetIntarrayMaxIdx(),
10030 SCIPgetBoolarrayMinIdx(), SCIPgetBoolarrayMaxIdx(), SCIPgetPtrarrayMinIdx() and SCIPgetPtrarrayMaxIdx()
10035- SCIPfindObj...() and SCIPgetObj...() in C++ wrapper interface to get the corresponding plugin object
10039- slightly changed the meaning of parameter `presolving/abortfac` a value of 0 now means to abort presolving only after
10045- assigning a value to a fixed variable in a solution with SCIPsetSolVal() does not return an error anymore, if the
10048- removed bugs with calling SCIPtightenVarLb(), SCIPtightenVarUb(), SCIPinferVarLbCons(), SCIPinferVarUbCons(),
10052 - solving loop is now immediately aborted, if a node on the active path is marked to be cut off
10055 - removed bug with aborted solving in root node (e.g. due to time limit) that is tagged to be restarted
10058 - fixed bug in all-fullstrong branching with getting strong branching information for columns not in current LP
10062 - changed numerics for integrality check of coefficients (fixed bug with accumulated errors in rows s.t. the row's
10064 - slightly changed numerics in linear constraint handler presolving to fix a bug with coefficients detected to be scaled
10065 to an integral value, that are not integral after scaling due to a large scalar that increased the integrality gap to
10070 - fixed wrong assertion in xor constraint handler with switching both watched variables to unwatched
10071 - fixed bugs in constraint handlers (and, logicor, or, setppc, xor) with calling conflict analysis during presolving
10072 - removed bug in knapsack constraint handler that appears if a variable is fixed to zero in knapsack presolving, which
10077 - fixed bug in presolving with wrong number of newly fixed/aggregated/... variables/bounds/... after a restart
10094- method SCIPgetGap() and SCIPgetTransGap() now return infinity, if primal and dual bound have opposite sign (this
10103- `lp/colagelimit` and `lp/rowagelimit` may now be set to -1 to disable deletion of columns/rows due to aging
10110- the file names in the archive file are now preceeded with a directory `scip-<version>/`
10111- the compiler is now also represented in the LP solver library names (e.g. you have to rename the softlink
10117- removed bug in conflict analysis that appears if the conflict is only active at the current depth level
10118- missing SCIPlpiIsPrimalFeasible() and SCIPlpiIsDualFeasible() implemented in lpi_spx.cpp and lpi_spx121.cpp
10122 - removed wrong assert `assert(eventfilter->len == 0 || eventfilter->eventmask != 0x00000000)` from event.c
10123 - removed wrong assert in conflict analysis (appeared on analyzing diving LP conflicts with both bounds of a non-binary variable changed)
10151- SCIPprintStatus() outputs the solution status (beware, that the old SCIPprintStatus() method is now called SCIPprintStage())
10155- changed default frequency offset of pscostdiving `heuristics/pscostdiving/freqofs` to 2 and frequency offset of fracdiving
10156 `heuristics/feaspump/freqofs` to 0 in order to not call pscostdiving in root node, where nearly all pseudo costs are uninitialized.
10160- new parameter `separating/efficacynorm` to choose between Euclidean, maximum, sum and discrete norm in efficacy
10171- SCIP returned `gap limit reached` even if the problem was solved to optimality, if the optimal solution was found at a
10173- after conversion of the focus node into a junction (e.g. in case of numerical troubles while solving the node's LP), the child
10174 nodes got the wrong LP fork attached (the common LP fork of the old and new focus node instead of the old focus node's LP fork)
10177 - bug reconvergence clauses in conflict analysis if bounds on non-binary variables were the reason for the fixing of the